Bug 49230 - Не работает сопряжение по Bluetooth на модуле RTL8852AE
Summary: Не работает сопряжение по Bluetooth на модуле RTL8852AE
Status: REOPENED
Alias: None
Product: Branch p10
Classification: Unclassified
Component: firmware-linux (show other bugs)
Version: не указана
Hardware: x86_64 Linux
: P5 normal
Assignee: Vitaly Chikunov
QA Contact: qa-p10@altlinux.org
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-01-30 12:43 MSK by Sergey Ivanov
Modified: 2025-07-25 11:49 MSK (History)
5 users (show)

See Also:


Attachments
dmesg (76.97 KB, text/plain)
2024-01-30 12:43 MSK, Sergey Ivanov
no flags Details
dmesg-firmware-linux-20231204-alt2 (76.15 KB, text/plain)
2024-02-07 10:59 MSK, Sergey Ivanov
no flags Details
dmesg-firmware-linux-20231019-alt1 (76.29 KB, text/plain)
2024-02-07 11:01 MSK, Sergey Ivanov
no flags Details
Аналогичные файлы из Убунты с другой сигнатурой (33.61 KB, application/x-compressed-tar)
2025-07-09 02:18 MSK, Leonid Krivoshein
no flags Details
dmesg после загрузки, после hibernation и после suspend (20.76 KB, application/gzip)
2025-07-09 02:21 MSK, Leonid Krivoshein
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey Ivanov 2024-01-30 12:43:32 MSK
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 к телефону выполняется корректно
Comment 1 Антон Мидюков 2024-01-30 19:42:34 MSK
Для 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, когда всё хорошо.
Comment 2 Sergey Ivanov 2024-02-07 10:58:24 MSK
(Ответ для Антон Мидюков на комментарий #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)
После чего сопряжение начинает работать
Comment 3 Sergey Ivanov 2024-02-07 10:59:41 MSK
Created attachment 15495 [details]
dmesg-firmware-linux-20231204-alt2
Comment 4 Sergey Ivanov 2024-02-07 11:01:02 MSK
Created attachment 15496 [details]
dmesg-firmware-linux-20231019-alt1
Comment 5 Монастырский Илья 2025-02-16 12:40:46 MSK
Образ:
alt-server-10.4-rc4-x86_64.iso

Версия пакета:
firmware-linux-20240510-alt1

Ошибка актуальна
Comment 6 Leonid Krivoshein 2025-07-09 02:08:56 MSK
Столкнулся с очень похожим на 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. Прилагаю архив с этими двумя файлами. Пока не создаю отдельный баг, т.к. предполагаю, что проблема общая и у нас просто пакуется другой набор файлов.
Comment 7 Leonid Krivoshein 2025-07-09 02:18:07 MSK
Created attachment 18985 [details]
Аналогичные файлы из Убунты с другой сигнатурой
Comment 8 Leonid Krivoshein 2025-07-09 02:21:53 MSK
Created attachment 18986 [details]
dmesg после загрузки, после hibernation и после suspend
Comment 9 Leonid Krivoshein 2025-07-09 02:29:32 MSK
Также добавлю, что хотя в p11/Сизифе добавилось сжатие, там файлы тоже с сигнатурой RTBTCore. После замены firmware из комлекта Убунты работа Bluetooth нормализуется, хотя в dmesg попадают другие ошибки: hci0: Failed to read codec capabilities (-22) и hci0: Opcode 0x0c1a failed: -22. Но одно дело -- наше ядро и сторонняя firmware, а другое дело -- наше ядро совсем отказывается грузить нашу. Есть полностью все логи с этих двух машин, если что.
Comment 10 Leonid Krivoshein 2025-07-09 03:50:37 MSK
(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, у нас же в прошивке другая, вот они и не стыкуются.
Comment 11 Vitaly Chikunov 2025-07-09 04:25:28 MSK
Убунтовый[1] файл rtl8852bu_fw.bin вроде бы совпадает с нашим.
55276 байт это версия от 2022-03-18


[1] https://kernel.ubuntu.com/forgejo/kernel/linux-firmware
Comment 12 Vitaly Chikunov 2025-07-09 04:29:48 MSK
(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.
Comment 13 Leonid Krivoshein 2025-07-09 15:58:30 MSK
(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 модуль начнёт более корректно работать.
Comment 14 Vitaly Chikunov 2025-07-09 16:43:08 MSK
Более новые firmware требуют поддержки в ядре (и новых ядер), как и поддержка нового оборудования, и апстрим принципиально не бэкпортиурет эту поддержку в старые ядра. Так что скопировать более новое firmware было рискованной затеей. Нужно откатывать или весь пакет, или только эти блобы.
Comment 15 Vitaly Chikunov 2025-07-09 17:02:13 MSK
Новый формат 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
Comment 16 Vitaly Chikunov 2025-07-09 17:05:25 MSK
Если откатать отдельные бобы для 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
Comment 17 Leonid Krivoshein 2025-07-09 19:00:43 MSK
(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.
Comment 18 Leonid Krivoshein 2025-07-09 19:05:02 MSK
(In reply to Leonid Krivoshein from comment #17)
> [...] Два случая -- это rtl8922au и rtl8922bu.
Нет, не оттуда скопировал. Правильно: в баге упоминаются rtl8852au и rtl8852bu.
Comment 19 Leonid Krivoshein 2025-07-09 19:09:03 MSK
(In reply to Vitaly Chikunov from comment #14)
> Более новые firmware требуют поддержки в ядре (и новых ядер), как и
> поддержка нового оборудования, и апстрим принципиально не бэкпортиурет эту
> поддержку в старые ядра. Так что скопировать более новое firmware было
> рискованной затеей. Нужно откатывать или весь пакет, или только эти блобы.
Или собрать kernel-image-6.12 в p10. Кажется это лучшей идеей.
Comment 20 Антон Мидюков 2025-07-09 19:42:03 MSK
(Ответ для Leonid Krivoshein на комментарий #19)
> (In reply to Vitaly Chikunov from comment #14)
> > Более новые firmware требуют поддержки в ядре (и новых ядер), как и
> > поддержка нового оборудования, и апстрим принципиально не бэкпортиурет эту
> > поддержку в старые ядра. Так что скопировать более новое firmware было
> > рискованной затеей. Нужно откатывать или весь пакет, или только эти блобы.
> Или собрать kernel-image-6.12 в p10. Кажется это лучшей идеей.

И удалить ядра std-def и un-def?
Comment 21 Vitaly Chikunov 2025-07-09 19:48:22 MSK
Вот как выглядело задание на сборку 6.12 https://git.altlinux.org/tasks/archive/done/_368/377694/
VS откатить 5 блобов
Comment 22 Leonid Krivoshein 2025-07-09 19:55:55 MSK
(In reply to Антон Мидюков from comment #20)
> (Ответ для Leonid Krivoshein на комментарий #19)
> > Или собрать kernel-image-6.12 в p10. Кажется это лучшей идеей.
> И удалить ядра std-def и un-def?
Не, собрать как дополнительное в отдельный flavour, даже не беря на поддержку вот на такие редкие случаи, хотя бы. Просто, хотя бы подумать в этом направлении, может и не стоит овчинка выделки.
Comment 23 Leonid Krivoshein 2025-07-09 19:59:56 MSK
(In reply to Vitaly Chikunov from comment #21)
> VS откатить 5 блобов
Если есть возможность, это выглядит конечно проще.
Comment 24 Vitaly Chikunov 2025-07-10 10:22:18 MSK
(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
> Именно об этом и речь. Я только не понимаю, почему диагностика в наших двух
> случаях (о сигнатуре) не совпадает.

О каком несовпадении речь?
Comment 25 Vitaly Chikunov 2025-07-10 10:23:22 MSK
(In reply to Leonid Krivoshein from comment #23)
> (In reply to Vitaly Chikunov from comment #21)
> > VS откатить 5 блобов
> Если есть возможность,

О какой возможности или невозможности речь?
Comment 26 Leonid Krivoshein 2025-07-10 15:59:34 MSK
(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 выглядят проще.
Comment 27 Vitaly Chikunov 2025-07-11 08:45:56 MSK
Тестовое задание 389494.
Comment 28 Leonid Krivoshein 2025-07-12 17:51:04 MSK
(In reply to Vitaly Chikunov from comment #27)
> Тестовое задание 389494.
Спасибо! Попросил проверить на железе.
Comment 29 Leonid Krivoshein 2025-07-13 19:07:03 MSK
(In reply to Vitaly Chikunov from comment #27)
> Тестовое задание 389494.
Согласно #183927#note-26, оно полностью решило проблему на аналогичном железе с таким же реалтеком, причём, в отличии от Убунтовской firmware, ошибки убрались полностью и сопряжение с телефоном работает (успешная передача и приём файла).
Comment 30 Repository Robot 2025-07-24 17:51:53 MSK
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).
Comment 31 Dmitry Maksimenkov 2025-07-25 11:49:12 MSK
Переоткрываю, т.к. для ноутбука HP Laptop 15s-eq2028ur с модулем rtw89_8852ae ошибка еще воспроиизводится.

Версия пакета:
firmware-linux-20250311-alt0.p10.2

С версией firmware-linux-20250311-alt0.p10.2 починился Bluetooth на другом стенде с модулем rtw89_8852be