doc:appunti:hardware:rtl8852be_on_debian_12
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
doc:appunti:hardware:rtl8852be_on_debian_12 [2024/10/04 11:30] – [Creating the chroot environment] niccolo | doc:appunti:hardware:rtl8852be_on_debian_12 [2025/05/26 09:34] (current) – [DKMS self compiled module does not work!] niccolo | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== RTL8852BE WiFi adapter on Debian 12 Bookworm ====== | ====== RTL8852BE WiFi adapter on Debian 12 Bookworm ====== | ||
+ | |||
+ | ===== DKMS self compiled module does not work! ===== | ||
+ | |||
+ | :!: **WARNING**! The recipe explained in this page actually does not work! At the end you will have a kernel module and a firmware blob that enable the WiFi adapter, they even support the WiFi scanning function, showing the available ESSIDs, but if you try to associate with an access point, the action fails with the following messages in loop: | ||
+ | |||
+ | < | ||
+ | wlan0: authenticate with b2: | ||
+ | wlan0: 80 MHz not supported, disabling VHT | ||
+ | </ | ||
+ | |||
+ | What actually does work is installing **kernel 6.12** from Bookworm backports, along with the **firmware-realtek** package: | ||
+ | |||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
+ | |||
+ | ===== Compiling the module with DKMS ===== | ||
+ | |||
+ | :!: **WARNING**! The kernel module obtained with this procedure actually does not work! | ||
The Realtek WiFi Network Controller **RTL8852BE** is not supported by the **6.1.0 Linux kernel** shipped with **Debian 12 Bookworm**. In this page you can find the steps required to compile and install the required kernel module and firmware. | The Realtek WiFi Network Controller **RTL8852BE** is not supported by the **6.1.0 Linux kernel** shipped with **Debian 12 Bookworm**. In this page you can find the steps required to compile and install the required kernel module and firmware. | ||
Line 8: | Line 26: | ||
* Download and install the **rtw8852b_fw-1.bin** firmware. | * Download and install the **rtw8852b_fw-1.bin** firmware. | ||
+ | {{ .: | ||
A **self compiled kernel module** is strictly tied to the running kernel, so **it must be re-compiled** whenever the kernel package is upgraded. The official Debian kernel is properly signed, so it runs even if the **Secure Boot** option is enabled into the BIOS. But the self compiled kernel module is a non-trusted software running at kernel level, so it requires that the Secure Boot into the BIOS to be disabled. | A **self compiled kernel module** is strictly tied to the running kernel, so **it must be re-compiled** whenever the kernel package is upgraded. The official Debian kernel is properly signed, so it runs even if the **Secure Boot** option is enabled into the BIOS. But the self compiled kernel module is a non-trusted software running at kernel level, so it requires that the Secure Boot into the BIOS to be disabled. | ||
+ | Debian provides the **[[wp> | ||
===== Creating the chroot environment ===== | ===== Creating the chroot environment ===== | ||
- | Starting from the recent Realtek driver sources it is possible to create a DKMS source package for the **rtw_8852be** kernel module. This operation requires the installation of several packages; if you don't want to **clutter the target host**, you can do this task on a different host or into a **chroot environment**. | + | |
+ | It is possible to create a DKMS source package for the **rtw_8852be** kernel module | ||
+ | |||
+ | Using the **debootstrap** command (from the Debian package of the same name) it is possibile to initialize a separate (chroot) environment for this task. The target host will not be cluttered by the packages installed into the chroot environment and the resulting DKMS package can be used on several target hosts. The drawback is that you will consume about 1.2 Gb of disk space. | ||
< | < | ||
+ | apt install debootstrap | ||
mkdir -p / | mkdir -p / | ||
debootstrap bookworm / | debootstrap bookworm / | ||
Line 22: | Line 45: | ||
===== Creating the dkms source package into the chroot ===== | ===== Creating the dkms source package into the chroot ===== | ||
+ | |||
+ | To enter the chroot environment is as simple as issuing the command: | ||
< | < | ||
chroot / | chroot / | ||
</ | </ | ||
+ | |||
+ | You exit the chroot using the **exit** command. | ||
+ | |||
+ | Into the chroot install the required packages: | ||
< | < | ||
Line 32: | Line 61: | ||
apt install dh-dkms debhelper build-essential devscripts git-build-recipe | apt install dh-dkms debhelper build-essential devscripts git-build-recipe | ||
</ | </ | ||
+ | |||
+ | Then download the source code of the kernel module and compile the DKMS Debian package: | ||
< | < | ||
Line 41: | Line 72: | ||
dpkg-buildpackage -us -uc | dpkg-buildpackage -us -uc | ||
</ | </ | ||
+ | |||
+ | The **%%git clean -xfd%%** does a complete cleanup of the source tree. The **git-deborig(1)** script (provided by the **devscripts** Debian packages), creates the **../ | ||
+ | |||
+ | At the end of the process you will find the **../ | ||
+ | |||
+ | ===== Installing the DKMS package into the target system ===== | ||
+ | |||
+ | Into the target host you need some packages that are required to build the kernel module from the DKMS sources. You need also to install the Linux headers of the same version of your running kernel: | ||
+ | |||
+ | < | ||
+ | apt install dkms linux-headers-6.1.0-25-amd64 | ||
+ | </ | ||
+ | |||
+ | Now you are ready to install the DKMS package, this will automatically compile the binaries of the kernel modules and install them into **/ | ||
+ | |||
+ | < | ||
+ | dpkg -i / | ||
+ | </ | ||
+ | |||
+ | If you want to load the kernel module without a reboot, just run the commands: | ||
+ | |||
+ | < | ||
+ | depmod -a | ||
+ | modprobe rtw_8852be | ||
+ | </ | ||
+ | |||
+ | You may encounter a problem if Secure Boot is disabled: | ||
+ | |||
+ | < | ||
+ | modprobe: ERROR: could not insert ' | ||
+ | </ | ||
+ | |||
+ | You can inspect the status of Secure Boot with the **mokutil** utility (from the same name Debian package): | ||
+ | |||
+ | < | ||
+ | mokutil --sb-state | ||
+ | SecureBoot enabled | ||
+ | </ | ||
+ | |||
+ | ===== Providing the firmware ===== | ||
+ | |||
+ | If you have installed the non-free Debian package **firmware-realtek**, | ||
+ | |||
+ | < | ||
+ | rtw89_8852be 0000: | ||
+ | rtw89_8852be 0000: | ||
+ | rtw89_8852be 0000: | ||
+ | rtw89_8852be 0000: | ||
+ | rtw89_8852be 0000: | ||
+ | </ | ||
+ | |||
+ | But this is a non working fall-back, you can confirm that the WiFi adapter is not working: | ||
+ | |||
+ | < | ||
+ | ifconfig wlan0 up | ||
+ | iwlist wlan0 scan | ||
+ | wlan0 | ||
+ | </ | ||
+ | |||
+ | You can download the required firmware from the **[[https:// | ||
+ | |||
+ | ===== Signal level not reported ===== | ||
+ | |||
+ | If everything is working, you can check for available WiFi networks using **iwlist**: | ||
+ | |||
+ | < | ||
+ | rfkill unblock wlan | ||
+ | ifconfig wlan0 up | ||
+ | iwlist wlan0 scan | ||
+ | </ | ||
+ | |||
+ | The current module (rtw89 1.0.2) does not support the signal level reporting, for every ESSID you see the following: | ||
+ | |||
+ | < | ||
+ | Quality=70/ | ||
+ | </ | ||
+ | |||
===== Web References ===== | ===== Web References ===== |
doc/appunti/hardware/rtl8852be_on_debian_12.1728034231.txt.gz · Last modified: by niccolo