Bug 50471

Summary: Direct firmware load for rtl_bt/rtl8822cu_fw.bin failed with error -2
Product: Branch p10 Reporter: Leonid Krivoshein <klark>
Component: kernel-image-un-defAssignee: Vitaly Chikunov <vt>
Status: REOPENED --- QA Contact: qa-p10 <qa-p10>
Severity: normal    
Priority: P5 CC: kovalevvv, pivkindyu, shevchenkodyu
Version: не указана   
Hardware: x86_64   
OS: Linux   

Description Leonid Krivoshein 2024-05-27 11:31:47 MSK
bluetooth устройства не видятся, модуль rtl_bt не может загрузить firmware на ранеей стадии загрузки. Из dmesg, на 3-й секунде загрузки:

bluetooth hci0: Direct firmware load for rtl_bt/rtl8822cu_fw.bin failed with error -2
Bluetooth: hci0: RTL: firmware file rtl_bt/rtl8822cu_fw.bin not found

Не было этой проблемы на ядре: 6.1.71-un-def-alt1

Ядра, где воспроизводится: 6.1.85-un-def-alt1, 6.1.90-un-def-alt1
Файл /etc/modprobe.d/blacklist-rtl8821ce.conf удалён.
Пакет rtl8821ce-blacklist удалён.
Пакетная база свежая, включая firmware-linux.

На этих ядрах вывод одинаковый:

# modinfo -F firmware btrtl
rtl_bt/rtl8851bu_config.bin
rtl_bt/rtl8851bu_fw.bin
rtl_bt/rtl8852cu_config.bin
rtl_bt/rtl8852cu_fw.bin
rtl_bt/rtl8852bu_config.bin
rtl_bt/rtl8852bu_fw.bin
rtl_bt/rtl8852au_config.bin
rtl_bt/rtl8852au_fw.bin
rtl_bt/rtl8822b_config.bin
rtl_bt/rtl8822b_fw.bin
rtl_bt/rtl8821a_config.bin
rtl_bt/rtl8821a_fw.bin
rtl_bt/rtl8761a_config.bin
rtl_bt/rtl8761a_fw.bin
rtl_bt/rtl8723ds_config.bin
rtl_bt/rtl8723ds_fw.bin
rtl_bt/rtl8723cs_xx_config.bin
rtl_bt/rtl8723cs_xx_fw.bin
rtl_bt/rtl8723cs_vf_config.bin
rtl_bt/rtl8723cs_vf_fw.bin
rtl_bt/rtl8723cs_cg_config.bin
rtl_bt/rtl8723cs_cg_fw.bin
rtl_bt/rtl8723bs_config.bin
rtl_bt/rtl8723bs_fw.bin
rtl_bt/rtl8723b_config.bin
rtl_bt/rtl8723b_fw.bin
rtl_bt/rtl8723a_fw.bin

Проблема решается выгрузкой и загрузкой модуля btusb, например, или можно добавить руками прошивку в initrd:

echo 'PUT_FILES += /lib/firmware/rtl_bt/rtl8822cu_fw.bin' >> /etc/initrd.mk
make-initrd && reboot

Проблема уже решена в апстриме: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bb23f07cb63975968bbabe314486e2b087234fc5
Comment 1 Pivkin Denis 2024-06-03 14:02:57 MSK
Проверил на ноутбуке HP 255 G7:
Процессор: AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx
Видеокарта (встроенная): AMD Picasso/Raven 2 [Radeon Vega Series / Radeon Vega Mobile Series]
Wireless driver: rtl8821ce

Ядро: kernel-image-un-def-6.1.90-alt1

Bluetooth:
  Device-1: Realtek Bluetooth 4.2 Adapter driver: btusb type: USB

Удалил Пакет rtl8821ce-blacklist, модуль заменился на rtw_8821ce.

При двух вариантах bluetooth устройства видятся и работают корректно.

Проверил на ноутбуке HP ProBook x360 435 G8:
Процессор: AMD Ryzen 5 5600U with Radeon Graphics
Видеокарта (встроенная): AMD Cezanne [Radeon Vega Series / Radeon Vega Mobile Series]
Wireless driver: rtw_8822ce

Ядро: kernel-image-un-def-6.1.90-alt1

Bluetooth:
  Device-1: Realtek Bluetooth Radio driver: btusb type: USB

bluetooth устройства видятся и работают корректно

Какой у Вас установлен модуль?
Comment 2 Leonid Krivoshein 2024-06-03 15:13:29 MSK
Переоткрываю баг, поскольку ошибка в ядре найдена, в апстриме уже исправлена, а у нас в 6.1 нет. И есть подтверждение неработоспособности на конкретных конфигурациях:

Ноутбук Huawei Matepad 14 late 2021 amd (ryzen 5), ALT Workstation K 10.

На ядре 6.1.90-alt1 вывод modinfo -F firmware btrtl показывает:

rtl_bt/rtl8851bu_config.bin
rtl_bt/rtl8851bu_fw.bin
rtl_bt/rtl8852cu_config.bin
rtl_bt/rtl8852cu_fw.bin
rtl_bt/rtl8852bu_config.bin
rtl_bt/rtl8852bu_fw.bin
rtl_bt/rtl8852au_config.bin
rtl_bt/rtl8852au_fw.bin
rtl_bt/rtl8822b_config.bin
rtl_bt/rtl8822b_fw.bin
rtl_bt/rtl8821a_config.bin
rtl_bt/rtl8821a_fw.bin
rtl_bt/rtl8761a_config.bin
rtl_bt/rtl8761a_fw.bin
rtl_bt/rtl8723ds_config.bin
rtl_bt/rtl8723ds_fw.bin
rtl_bt/rtl8723cs_xx_config.bin
rtl_bt/rtl8723cs_xx_fw.bin
rtl_bt/rtl8723cs_vf_config.bin
rtl_bt/rtl8723cs_vf_fw.bin
rtl_bt/rtl8723cs_cg_config.bin
rtl_bt/rtl8723cs_cg_fw.bin
rtl_bt/rtl8723bs_config.bin
rtl_bt/rtl8723bs_fw.bin
rtl_bt/rtl8723b_config.bin
rtl_bt/rtl8723b_fw.bin
rtl_bt/rtl8723a_fw.bin

Видно, что нет среди них прошивки "rtl_bt/rtl8822cu_fw.bin", которая запрашивается ядром при загрузке. Она в коде ядра запрашивается, но через MODULE_FIRMWARE() не экспортируется, из-за этого не попадает в stage1 при генерации initrd. Ошибка исправлена в апстримном ядре 6.4 (ссылка на коммит выше), в нашем 6.6 ошибки уже нет, но она очевидна даже в коде 6.1:

https://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-def.git;a=blob;f=drivers/bluetooth/btrtl.c;h=ead632595ce06f5ab02ffc5af70c91952d4b4d33;hb=1699fff4d6a560f358500cfff3b2bd1131f6df16#l210

https://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-def.git;a=blob;f=drivers/bluetooth/btrtl.c;h=ead632595ce06f5ab02ffc5af70c91952d4b4d33;hb=1699fff4d6a560f358500cfff3b2bd1131f6df16#l1062

Решение: убедить апстрим бэкпортировать исправление в 6.1 LTS: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bb23f07cb63975968bbabe314486e2b087234fc5

Есть и другая ошибка с ядерным modalias btusb, с ней сложнее. Стек bluetooth вообще не должен попадать в stage1, ему там нечего делать. Сейчас это происходит во многих конфигурациях по причине, названной здесь: https://lists.altlinux.org/pipermail/make-initrd/2024-May/001066.html

> Какой у Вас установлен модуль?
См. также: РМ 135441, 135339, если доступно -- тут вся диагностика