| Summary: | Не работает сопряжение по Bluetooth на модуле RTL8852AE | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | Branch p10 | Reporter: | Sergey Ivanov <zagagyka> | ||||||||||||
| Component: | firmware-linux | Assignee: | Vitaly Chikunov <vt> | ||||||||||||
| Status: | REOPENED --- | QA Contact: | qa-p10 <qa-p10> | ||||||||||||
| Severity: | normal | ||||||||||||||
| Priority: | P5 | CC: | antohami, klark, maksimenkovda, mike, monastirskiyii | ||||||||||||
| Version: | не указана | ||||||||||||||
| Hardware: | x86_64 | ||||||||||||||
| OS: | Linux | ||||||||||||||
| Attachments: |
|
||||||||||||||
Для bluetooth используется rtl_bt/rtl8852au_config.bin: [ 6.802631] Bluetooth: hci0: RTL: loading rtl_bt/rtl8852au_config.bin rtl8852au_config.bin не обновлялся: https://git.altlinux.org/gears/f/firmware-linux.git?p=firmware-linux.git;a=history;f=rtl_bt/rtl8852au_config.bin;h=91d3f4402289e7b0efd395c7fcc8b4789465aba6;hb=7721a339fcddaa0e28c9a85bfd5fbce4535a1070 Ошибки у модуля ядра: [ 6.825981] rtw89_8852ae: disagrees about version of symbol rtw89_pci_fill_txaddr_info [ 6.825996] rtw89_8852ae: Unknown symbol rtw89_pci_fill_txaddr_info (err -22) [ 6.826012] rtw89_8852ae: disagrees about version of symbol rtw89_pci_recognize_intrs [ 6.826015] rtw89_8852ae: Unknown symbol rtw89_pci_recognize_intrs (err -22) [ 6.826021] rtw89_8852ae: disagrees about version of symbol rtw89_pci_config_intr_mask [ 6.826022] rtw89_8852ae: Unknown symbol rtw89_pci_config_intr_mask (err -22) [ 6.826026] rtw89_8852ae: disagrees about version of symbol rtw89_pci_ltr_set [ 6.826027] rtw89_8852ae: Unknown symbol rtw89_pci_ltr_set (err -22) [ 6.826042] rtw89_8852ae: disagrees about version of symbol rtw89_pci_enable_intr [ 6.826045] rtw89_8852ae: Unknown symbol rtw89_pci_enable_intr (err -22) [ 6.826050] rtw89_8852ae: disagrees about version of symbol rtw8852a_chip_info [ 6.826051] rtw89_8852ae: Unknown symbol rtw8852a_chip_info (err -22) [ 6.826054] rtw89_8852ae: disagrees about version of symbol rtw89_pci_disable_intr [ 6.826055] rtw89_8852ae: Unknown symbol rtw89_pci_disable_intr (err -22) [ 6.842576] rtw89_8852ae 0000:01:00.0: enabling device (0000 -> 0003) [ 6.848297] rtw89_8852ae 0000:01:00.0: Firmware version 0.13.36.0, cmd version 0, type 1 [ 6.848304] rtw89_8852ae 0000:01:00.0: Firmware version 0.13.36.0, cmd version 0, type 3 Этот модуль требует rtw89/rtw8852a_fw.bin И оно также не обновлялось. Точно проблема воспроизводится после обновления firmware-linux? Приведите dmesg, когда всё хорошо. (Ответ для Антон Мидюков на комментарий #1) > Этот модуль требует rtw89/rtw8852a_fw.bin > И оно также не обновлялось. Да, но обновился rtl_bt/rtl8852au_fw.bin (который судя по dmesg так же загружается) [ 6.803849] Bluetooth: hci0: RTL: loading rtl_bt/rtl8852au_fw.bin > Точно проблема воспроизводится после обновления firmware-linux? > Приведите dmesg, когда всё хорошо. Прикладываю dmesg с версией firmware-linux-20231204-alt2 (на котором сопряжение не работает) и с версией firmware-linux-20231019-alt1 (на котором сопряжение работает) Также, помимо отката на предыдущую версию пакета firmware-linux, помогает замена файла /lib/firmware/rtl_bt/rtl8852au_fw.bin на предыдущую версию файла (из пакета firmware-linux-20231019-alt1) После чего сопряжение начинает работать Created attachment 15495 [details]
dmesg-firmware-linux-20231204-alt2
Created attachment 15496 [details]
dmesg-firmware-linux-20231019-alt1
Образ: alt-server-10.4-rc4-x86_64.iso Версия пакета: firmware-linux-20240510-alt1 Ошибка актуальна Столкнулся с очень похожим на Yadro Kvadra TAU Mini 12th/13th. Из dmesg: Linux version 6.1.141-un-def-alt1 (builder@localhost.localdomain) (gcc-10 (GCC) 10.3.1 20210703 (ALT Sisyphus 10.3.1-alt2), GNU ld (GNU Binutils) 2.35.2.20210110) #1 SMP PREEMPT_DYNAMIC Wed Jun 25 13:33:05 UTC 2025194 ro resume=/dev/disk/by-uuid/8ca57ea3-1650-429b-aeca-cb120507a7f5 panic=30 quiet loglevel=3 splash ... Bluetooth: hci0: RTL: examining hci_ver=0b hci_rev=000b lmp_ver=0b lmp_subver=8852 Bluetooth: hci0: RTL: rom_version status=0 version=1 Bluetooth: hci0: RTL: loading rtl_bt/rtl8852bu_fw.bin Bluetooth: hci0: RTL: loading rtl_bt/rtl8852bu_config.bin Bluetooth: hci0: RTL: bad EPATCH signature Из inxi: Bluetooth: Device-1: Realtek Bluetooth Radio driver: btusb v: 0.8 type: USB rev: 1.0 speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-14:4 chip-ID: 0bda:b85b class-ID: e001 serial: 00e04c000001 Report: hciconfig ID: hci0 rfk-id: 0 state: down bt-service: enabled,running rfk-block: hardware: no software: no address: 00:00:00:00:00:00 Info: acl-mtu: 0:0 sco-mtu: 0:0 link-mode: peripheral accept Альт Рабочая станция 10.4, firmware-linux-20250311-alt0.p10.1 Здесь похожая модель, но другой ID и другая прошивка рядышком. Прсмотрел в ядре код, создающий эту ошибку: "bad EPATCH signature" (btctl.c). Прошивка не грузится по причине несовпадения ни одной из двух сигнатур: Realtech или RTBTCore. Что странно, учитывая, что наш rtl_bt/rtl8852bu_fw.bin начинается с этих восьми байт: RTBTCore. После ухода в спящий или ждущий режим, BT полностью перестаёт работать и находить устройства. Данная ошибка полностью уходит, если заменить два файла прошивки, вытащив их из произвольной Убунты. В ней сигнатура начинается с Realtech. Прилагаю архив с этими двумя файлами. Пока не создаю отдельный баг, т.к. предполагаю, что проблема общая и у нас просто пакуется другой набор файлов. Created attachment 18985 [details]
Аналогичные файлы из Убунты с другой сигнатурой
Created attachment 18986 [details]
dmesg после загрузки, после hibernation и после suspend
Также добавлю, что хотя в p11/Сизифе добавилось сжатие, там файлы тоже с сигнатурой RTBTCore. После замены firmware из комлекта Убунты работа Bluetooth нормализуется, хотя в dmesg попадают другие ошибки: hci0: Failed to read codec capabilities (-22) и hci0: Opcode 0x0c1a failed: -22. Но одно дело -- наше ядро и сторонняя firmware, а другое дело -- наше ядро совсем отказывается грузить нашу. Есть полностью все логи с этих двух машин, если что. (In reply to Leonid Krivoshein from comment #9) > Но одно дело -- наше ядро и сторонняя firmware, а другое дело -- наше ядро > совсем отказывается грузить нашу. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/bluetooth/btrtl.c?h=v6.1.143#n440 Дело в том, что две сигнатуры проверяются только в более новых ядрах. А в ядре 6.1 проверяется только одна сигнатура Realtech, у нас же в прошивке другая, вот они и не стыкуются. Убунтовый[1] файл rtl8852bu_fw.bin вроде бы совпадает с нашим. 55276 байт это версия от 2022-03-18 [1] https://kernel.ubuntu.com/forgejo/kernel/linux-firmware (In reply to Vitaly Chikunov from comment #11) > Убунтовый[1] файл rtl8852bu_fw.bin вроде бы совпадает с нашим. > 55276 байт это версия от 2022-03-18 Это версия которая была с 2022-03-18 до 2023-05-03. "RTBTCore" стало с 2024-07-17. (In reply to Vitaly Chikunov from comment #12) > Это версия которая была с 2022-03-18 до 2023-05-03. "RTBTCore" стало с > 2024-07-17. Да. Видимо суть ошибки описана в комментарии: https://bugzilla.altlinux.org/show_bug.cgi?id=49230#c10 Т.е. версия модуля ядра из p10 готова работать с более старыми версиями firmware, это хорошо видно прямо по исходникам. Да, я использовал более старую Ubuntu. И с нашей же более старой firmware модуль начнёт более корректно работать. Более новые firmware требуют поддержки в ядре (и новых ядер), как и поддержка нового оборудования, и апстрим принципиально не бэкпортиурет эту поддержку в старые ядра. Так что скопировать более новое firmware было рискованной затеей. Нужно откатывать или весь пакет, или только эти блобы. Новый формат v2 добавили в ядро в v6.4. Посмотрел как Убунту обновляет свой пакет linux-firmware для старых бранчей: https://kernel.ubuntu.com/forgejo/kernel/linux-firmware/src/branch/noble - Файл ./rtl_bt/rtl8852bu_fw.bin они там не обновляли дальше чем 2023-05-02. Но, при этом, обновляют отдельные блобы. Бывает у них и возврат к старому блобу: https://kernel.ubuntu.com/forgejo/kernel/linux-firmware/commit/3cd51cff42cbc00e8f6623c07adcc67858921182 Если откатать отдельные бобы для p10, то видимо всё это заведомо нерабочее firmware-linux (sisyphus)$ git grep -rl RTBTCore rtl_bt/rtl8851bu_fw.bin rtl_bt/rtl8852btu_fw.bin rtl_bt/rtl8852bu_fw.bin rtl_bt/rtl8852cu_fw_v2.bin rtl_bt/rtl8922au_fw.bin (In reply to Vitaly Chikunov from comment #16) > Если откатать отдельные бобы для p10, то видимо всё это заведомо нерабочее > > firmware-linux (sisyphus)$ git grep -rl RTBTCore > rtl_bt/rtl8851bu_fw.bin > rtl_bt/rtl8852btu_fw.bin > rtl_bt/rtl8852bu_fw.bin > rtl_bt/rtl8852cu_fw_v2.bin > rtl_bt/rtl8922au_fw.bin Именно об этом и речь. Я только не понимаю, почему диагностика в наших двух случаях (о сигнатуре) не совпадает. Дальше-то понятно, что раз загрузить не получилось, в зависимости от модели, ядро работает без прошивки как-то, совсем не работает или работает без нареканий. Два случая -- это rtl8922au и rtl8922bu. (In reply to Leonid Krivoshein from comment #17) > [...] Два случая -- это rtl8922au и rtl8922bu. Нет, не оттуда скопировал. Правильно: в баге упоминаются rtl8852au и rtl8852bu. (In reply to Vitaly Chikunov from comment #14) > Более новые firmware требуют поддержки в ядре (и новых ядер), как и > поддержка нового оборудования, и апстрим принципиально не бэкпортиурет эту > поддержку в старые ядра. Так что скопировать более новое firmware было > рискованной затеей. Нужно откатывать или весь пакет, или только эти блобы. Или собрать kernel-image-6.12 в p10. Кажется это лучшей идеей. (Ответ для Leonid Krivoshein на комментарий #19) > (In reply to Vitaly Chikunov from comment #14) > > Более новые firmware требуют поддержки в ядре (и новых ядер), как и > > поддержка нового оборудования, и апстрим принципиально не бэкпортиурет эту > > поддержку в старые ядра. Так что скопировать более новое firmware было > > рискованной затеей. Нужно откатывать или весь пакет, или только эти блобы. > Или собрать kernel-image-6.12 в p10. Кажется это лучшей идеей. И удалить ядра std-def и un-def? Вот как выглядело задание на сборку 6.12 https://git.altlinux.org/tasks/archive/done/_368/377694/ VS откатить 5 блобов (In reply to Антон Мидюков from comment #20) > (Ответ для Leonid Krivoshein на комментарий #19) > > Или собрать kernel-image-6.12 в p10. Кажется это лучшей идеей. > И удалить ядра std-def и un-def? Не, собрать как дополнительное в отдельный flavour, даже не беря на поддержку вот на такие редкие случаи, хотя бы. Просто, хотя бы подумать в этом направлении, может и не стоит овчинка выделки. (In reply to Vitaly Chikunov from comment #21) > VS откатить 5 блобов Если есть возможность, это выглядит конечно проще. (In reply to Leonid Krivoshein from comment #17) > (In reply to Vitaly Chikunov from comment #16) > > Если откатать отдельные бобы для p10, то видимо всё это заведомо нерабочее > > > > firmware-linux (sisyphus)$ git grep -rl RTBTCore > > rtl_bt/rtl8851bu_fw.bin > > rtl_bt/rtl8852btu_fw.bin > > rtl_bt/rtl8852bu_fw.bin > > rtl_bt/rtl8852cu_fw_v2.bin > > rtl_bt/rtl8922au_fw.bin > Именно об этом и речь. Я только не понимаю, почему диагностика в наших двух > случаях (о сигнатуре) не совпадает. О каком несовпадении речь? (In reply to Leonid Krivoshein from comment #23) > (In reply to Vitaly Chikunov from comment #21) > > VS откатить 5 блобов > Если есть возможность, О какой возможности или невозможности речь? (In reply to Vitaly Chikunov from comment #24) > (In reply to Leonid Krivoshein from comment #17) > > (In reply to Vitaly Chikunov from comment #16) > > > Если откатать отдельные бобы для p10, то видимо всё это заведомо нерабочее > > > firmware-linux (sisyphus)$ git grep -rl RTBTCore > > > rtl_bt/rtl8851bu_fw.bin > > > rtl_bt/rtl8852btu_fw.bin > > > rtl_bt/rtl8852bu_fw.bin > > > rtl_bt/rtl8852cu_fw_v2.bin > > > rtl_bt/rtl8922au_fw.bin > > Именно об этом и речь. Я только не понимаю, почему диагностика в наших двух > > случаях (о сигнатуре) не совпадает. > О каком несовпадении речь? rtl8852au и rtl8852bu. Первый изначально был в баге, его нет в этом списке. Второй это я добавил. Уже разобрался: хотя регрессия очевидна в обоих случаях, только во втором она связана с несовпадением сигнатуры. Так что, всё может быть сложнее, чем откат только этих пяти блобов. (In reply to Vitaly Chikunov from comment #25) > (In reply to Leonid Krivoshein from comment #23) > > (In reply to Vitaly Chikunov from comment #21) > > > VS откатить 5 блобов > > Если есть возможность, > О какой возможности или невозможности речь? Имел ввиду, что предлагаемый вариант вернуть старые версии пяти блобов в новую сборку firmware-linux выглядят проще. Тестовое задание 389494. (In reply to Vitaly Chikunov from comment #27) > Тестовое задание 389494. Спасибо! Попросил проверить на железе. (In reply to Vitaly Chikunov from comment #27) > Тестовое задание 389494. Согласно #183927#note-26, оно полностью решило проблему на аналогичном железе с таким же реалтеком, причём, в отличии от Убунтовской firmware, ошибки убрались полностью и сопряжение с телефоном работает (успешная передача и приём файла). firmware-linux-20250311-alt0.p10.2 -> p10: Fri Jul 11 2025 Vitaly Chikunov <vt@altlinux> 20250311-alt0.p10.2 - Revert RTL8852B BT USB firmware to 0xDBC6_B20F (ALT#49230). Переоткрываю, т.к. для ноутбука HP Laptop 15s-eq2028ur с модулем rtw89_8852ae ошибка еще воспроиизводится. Версия пакета: firmware-linux-20250311-alt0.p10.2 С версией firmware-linux-20250311-alt0.p10.2 починился Bluetooth на другом стенде с модулем rtw89_8852be |
Created attachment 15439 [details] dmesg Ноутбук: HP Laptop 15s-eq2028ur Версия пакета: firmware-linux-20231204-alt2.noarch Образ: alt-kworkstation-10.1-install-x86_64.iso (обновленный до p10) Версия ядра: 6.1.74-un-def-alt1 Bluetooth модуль: RTL8852AE # lspci -v 01:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8852AE WiFi 6 802.11ax PCIe Adapter DeviceName: Realtek Wireless LAN + BT Subsystem: Hewlett-Packard Company Device 88e2 Flags: bus master, fast devsel, latency 0, IRQ 82, IOMMU group 7 I/O ports at f000 [size=256] Memory at fcf00000 (64-bit, non-prefetchable) [size=1M] Capabilities: [40] Power Management version 3 Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+ Capabilities: [70] Express Endpoint, MSI 00 Capabilities: [100] Advanced Error Reporting Capabilities: [148] Device Serial Number 00-e0-4c-ff-fe-88-52-01 Capabilities: [158] Latency Tolerance Reporting Capabilities: [160] L1 PM Substates Kernel driver in use: rtw89_8852ae Шаги воспроизведения: 1. Удалить все ранее добавленные устройства Bluetooth 2. Открыть Bluetooth -> Добавить новое устройство. 3. Выбрать телефон, после чего подтвердить сопряжение и на компьютере, и на телефоне. Ожидаемый результат: успешное сопряжение устройств. Фактический результат: Появляется ошибка "Не удалось настроить устройство" (dmesg приложил) На телефоне появляется ошибка: "Не удалить подключиться к устройству из-за неверного PIN или ключа доступа" (Пробовал с несколькими Bluetooth устройствами) Данная ошибка начала воспроизводиться после обновления firmware-linux с версии 20231115-alt2 до версии 20231204-alt2 Причем если до обновления телефон уже был сопряжен (добавлен), то после обновления firmware-linux и перезагрузке системы подключение по Bluetooth к телефону выполняется корректно