====== 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- SERR-
===== 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