raspberry-pi-qualcomm-ncm865-wcm7850
Inhaltsverzeichnis
Raspberry Pi 5 mit Qualcomm NCM 865 / WCM7850
Um den Raspberry Pi 5 mit Qualcomm NCM 865 / WCM7850 zu betreiben sind einige Vorbereitungen nötig. Stand 14.04.2025 ist das notwendige Kernelmodul nicht Teil des Kernels der in Raspberry Pi OS (Stand Debian testing/trixie) enthalten ist.
Aktuelle Kernelkonfiguration prüfen
pi@wifitux:~ $ sudo modprobe configs pi@wifitux:~ $ zless /proc/config.gz ... # CONFIG_ATH11K is not set <- Wi-Fi 6E # CONFIG_ATH12K is not set <- Wi-Fi 7 -- z.B. Qualcomm NCM 865 / WCM7850 ... pi@wifitux:~ $ uname -a Linux wifitux 6.12.20+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.20-1+rpt1~bpo12+1 (2025-03-19) aarch64 GNU/Linux
lspci -vvv (ohne passendes Kernelmodul)
Das Wireless-Modul wird korrekt erkannt, es muss später beachtet werden dass Änderungen in der /boot/firmware/config.txt notwendig sind, damit es korrekt geladen werden kann.
0001:01:00.0 Network controller: Qualcomm Technologies, Inc WCN785x Wi-Fi 7(802.11be) 320MHz 2x2 [FastConnect 7800] (rev 01) Subsystem: Quectel Wireless Solutions Co., Ltd. Device 8000 Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Region 0: Memory at 1b00000000 (64-bit, non-prefetchable) [disabled] [size=2M] Capabilities: [40] Power Management version 3 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME- Capabilities: [50] MSI: Enable- Count=1/32 Maskable+ 64bit- Address: 00000000 Data: 0000 Masking: 00000000 Pending: 00000000 Capabilities: [70] Express (v2) Endpoint, IntMsgNum 0 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 0W TEE-IO- DevCtl: CorrErr+ NonFatalErr+ FatalErr+ UnsupReq+ RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend- LnkCap: Port #0, Speed 8GT/s, Width x2, ASPM L0s L1, Exit Latency L0s <1us, L1 <64us ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+ LnkCtl: ASPM Disabled; RCB 64 bytes, LnkDisable- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 8GT/s, Width x1 (downgraded) TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+ 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt- EETLPPrefix- EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit- FRS- TPHComp+ ExtTPHComp- AtomicOpsCap: 32bit- 64bit- 128bitCAS- DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- AtomicOpsCtl: ReqEn- IDOReq- IDOCompl- LTR+ EmergencyPowerReductionReq- 10BitTagReq- OBFF Disabled, EETLPPrefixBlk- LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS- LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis- Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+ EqualizationPhase1+ EqualizationPhase2+ EqualizationPhase3+ LinkEqualizationRequest- Retimer- 2Retimers- CrosslinkRes: unsupported Capabilities: [100 v2] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UncorrIntErr- BlockedTLP- AtomicOpBlocked- TLPBlockedErr- PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked- UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UncorrIntErr+ BlockedTLP- AtomicOpBlocked- TLPBlockedErr- PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- UncorrIntErr+ BlockedTLP- AtomicOpBlocked- TLPBlockedErr- PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr- CorrIntErr- HeaderOF- CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+ CorrIntErr+ HeaderOF+ AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn- MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap- HeaderLog: 00000000 00000000 00000000 00000000 Capabilities: [148 v1] Secondary PCI Express LnkCtl3: LnkEquIntrruptEn- PerformEqu- LaneErrStat: 0 Capabilities: [158 v1] Transaction Processing Hints No steering table available Capabilities: [1e4 v1] Latency Tolerance Reporting Max snoop latency: 0ns Max no snoop latency: 0ns Capabilities: [1ec v1] L1 PM Substates L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+ PortCommonModeRestoreTime=70us PortTPowerOnTime=0us L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1- T_CommonMode=0us LTR1.2_Threshold=86016ns L1SubCtl2: T_PwrOn=10us
Anpassungen in /boot/firmware/config.txt
# Wi-Fi 7 test dtparam=pciex1 dtparam=pciex1_gen=3 # ath12k / mt7925e dtoverlay=pcie-32bit-dma dtoverlay=pciex1-compat-pi5,no-mip
Eigenen Kernel bauen (derzeit 6.12.22)
Ich führe dies auf meiner arm64 (Apple M1 via UTM) Debian VM aus. MLO steht in diesem Kernel-Tree nicht zur Verfügung.
benny@debian:~$ mkdir linux6.12 benny@debian:~$ cd linux6.12 benny@debian:~/linux6.12$ git clone --depth=1 --branch rpi-6.12.y https://github.com/raspberrypi/linux Cloning into 'linux'... remote: Enumerating objects: 92719, done. remote: Counting objects: 100% (92719/92719), done. remote: Compressing objects: 100% (85549/85549), done. remote: Total 92719 (delta 9801), reused 25006 (delta 6182), pack-reused 0 (from 0) Receiving objects: 100% (92719/92719), 256.07 MiB | 8.04 MiB/s, done. Resolving deltas: 100% (9801/9801), done. Updating files: 100% (87504/87504), done. benny@debian:~/linux6.12$ ls linux benny@debian:~/linux6.12$ cd linux/ benny@debian:~/linux6.12/linux$ ls arch COPYING Documentation include ipc kernel MAINTAINERS net rust security usr block CREDITS drivers init Kbuild lib Makefile README samples sound virt certs crypto fs io_uring Kconfig LICENSES mm README.md scripts tools benny@debian:~/linux6.12/linux$ KERNEL=kernel_2712 benny@debian:~/linux6.12/linux$ make bcm2712_defconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/confdata.o HOSTCC scripts/kconfig/expr.o LEX scripts/kconfig/lexer.lex.c YACC scripts/kconfig/parser.tab.[ch] HOSTCC scripts/kconfig/lexer.lex.o HOSTCC scripts/kconfig/menu.o HOSTCC scripts/kconfig/parser.tab.o HOSTCC scripts/kconfig/preprocess.o HOSTCC scripts/kconfig/symbol.o HOSTCC scripts/kconfig/util.o HOSTLD scripts/kconfig/conf # # configuration written to .config # benny@debian:~/linux6.12/linux$ make menuconfig HOSTCC scripts/kconfig/mconf.o HOSTCC scripts/kconfig/lxdialog/checklist.o HOSTCC scripts/kconfig/lxdialog/inputbox.o HOSTCC scripts/kconfig/lxdialog/menubox.o HOSTCC scripts/kconfig/lxdialog/textbox.o HOSTCC scripts/kconfig/lxdialog/util.o HOSTCC scripts/kconfig/lxdialog/yesno.o HOSTCC scripts/kconfig/mnconf-common.o HOSTLD scripts/kconfig/mconf *** End of the configuration. *** Execute 'make' to start the build or try 'make help'. benny@debian:~/linux6.12/linux$ benny@debian:~/linux6.12/linux$ benny@debian:~/linux6.12/linux$ make -j4 Image.gz modules dtbs
Eigenen Kernel bauen (derzeit 6.14.xx)
MLO steht in diesem Kernel-Tree nicht zur Verfügung.
benny@debian:~$ mkdir linux6.14 benny@debian:~$ cd linux6.14 benny@debian:~/linux6.14$ ls benny@debian:~/linux6.14$ git clone --depth=1 --branch rpi-6.14.y https://github.com/raspberrypi/linux Cloning into 'linux'... remote: Enumerating objects: 93971, done. remote: Counting objects: 100% (93971/93971), done. remote: Compressing objects: 100% (86561/86561), done. remote: Total 93971 (delta 10026), reused 25590 (delta 6391), pack-reused 0 (from 0) Receiving objects: 100% (93971/93971), 258.42 MiB | 8.54 MiB/s, done. Resolving deltas: 100% (10026/10026), done. Updating files: 100% (88708/88708), done. benny@debian:~/linux6.14$ cd linux benny@debian:~/linux6.14/linux$ KERNEL=kernel_2712 benny@debian:~/linux6.14/linux$ benny@debian:~/linux6.14/linux$ make bcm2712_defconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/confdata.o HOSTCC scripts/kconfig/expr.o LEX scripts/kconfig/lexer.lex.c YACC scripts/kconfig/parser.tab.[ch] HOSTCC scripts/kconfig/lexer.lex.o HOSTCC scripts/kconfig/menu.o HOSTCC scripts/kconfig/parser.tab.o HOSTCC scripts/kconfig/preprocess.o HOSTCC scripts/kconfig/symbol.o HOSTCC scripts/kconfig/util.o HOSTLD scripts/kconfig/conf # # configuration written to .config # benny@debian:~/linux6.14/linux$ benny@debian:~/linux6.14/linux$ make menuconfig HOSTCC scripts/kconfig/mconf.o HOSTCC scripts/kconfig/lxdialog/checklist.o HOSTCC scripts/kconfig/lxdialog/inputbox.o HOSTCC scripts/kconfig/lxdialog/menubox.o HOSTCC scripts/kconfig/lxdialog/textbox.o HOSTCC scripts/kconfig/lxdialog/util.o HOSTCC scripts/kconfig/lxdialog/yesno.o HOSTCC scripts/kconfig/mnconf-common.o HOSTLD scripts/kconfig/mconf *** End of the configuration. *** Execute 'make' to start the build or try 'make help'. benny@debian:~/linux6.14/linux$ benny@debian:~/linux6.14/linux$ benny@debian:~/linux6.14/linux$ make -j4 Image.gz modules dtbs
raspberry-pi-qualcomm-ncm865-wcm7850.txt · Zuletzt geändert: 2025/04/14 16:32 von benny