Benutzer-Werkzeuge

Webseiten-Werkzeuge


raspberry-pi-qualcomm-ncm865-wcm7850

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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki