Bluetooth исчезает после сна

Вопрос или проблема

Опубликовано на Bugzilla по совету @ArtemS.Tashkinov

На моем ноутбуке HP, при запуске Linux, Bluetooth адаптер исчезает после сна (всегда) и появляется снова после перезагрузки (тоже всегда), так что я предполагаю, что решение может быть связано с тем, что происходит с Bluetooth при загрузке. Это происходит как в Ubuntu, так и в Fedora, но не в Windows. В данный момент я использую Fedora, поэтому, если решение специфично для дистрибутива, оно должно удовлетворять этому.
Я пробовал обновить bluez, использовать modprobe, перезапустить bluetooth.service, ничего не сработало.

Характеристики:
HP Notebook 15-dy1751ms (больше)
Fedora 37 на Linux 6.2.7-200.fc37.x86_64
Realtek RTL8821CE 802.11b/g/n/ac (1×1) Wi-Fi и Bluetooth 4.2 Комбо

Следующие 2 вывода получены, когда Bluetooth работает (после загрузки до сна). Когда Bluetooth не работает, он не отображается ни в одном из них:

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 04f3:2753 Elan Microelectronics Corp. Touchscreen
Bus 001 Device 003: ID 0408:5365 Quanta Computer, Inc. HP TrueVision HD Camera
Bus 001 Device 005: ID 0bda:b00a Realtek Semiconductor Corp. Realtek Bluetooth 4.2 Adapter
Bus 001 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ rfkill list
0: hci0: Bluetooth
        Soft blocked: no
        Hard blocked: no
1: phy0: Wireless LAN
        Soft blocked: no
        Hard blocked: no

lspci -vvv показывает то же самое, независимо от того, работает Bluetooth или нет, за исключением одной строки, после его сбоя (сна),
DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
становится
DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-

01:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8821CE 802.11ac PCIe Wireless Network Adapter
        DeviceName: Realtek Wireless LAN + BT
        Subsystem: Hewlett-Packard Company Device 831a
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0, Cache Line Size: 64 bytes
        Interrupt: pin A routed to IRQ 138
        Region 0: I/O ports at 3000 [size=256]
        Region 2: Memory at 80500000 (64-bit, non-prefetchable) [size=64K]
        Capabilities: [40] Power Management version 3
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
        Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
                Address: 00000000fee00458  Data: 0000
        Capabilities: [70] Express (v2) Endpoint, MSI 00
                DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us, L1 <64us
                        ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 10W
                DevCtl: CorrErr- NonFatalErr- FatalErr- UnsupReq-
                        RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
                        MaxPayload 128 bytes, MaxReadReq 512 bytes
                DevSta: CorrErr+ NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
                LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <2us, L1 <64us
                        ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp-
                LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
                        ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
                LnkSta: Speed 2.5GT/s, Width x1
                        TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
                DevCap2: Completion Timeout: Not Supported, TimeoutDis+ NROPrPrP- LTR+
                         10BitTagComp- 10BitTagReq- OBFF Via message/WAKE#, ExtFmt- EETLPPrefix-
                         EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
                         FRS- TPHComp- ExtTPHComp-
                         AtomicOpsCap: 32bit- 64bit- 128bitCAS-
                DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis+ LTR+ 10BitTagReq- OBFF Disabled,
                         AtomicOpsCtl: ReqEn-
                LnkCap2: Supported Link Speeds: 2.5GT/s, Crosslink- Retimer- 2Retimers- DRS-
                LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
                         Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
                         Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
                LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete- EqualizationPhase1-
                         EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
                         Retimer- 2Retimers- CrosslinkRes: unsupported
        Capabilities: [100 v2] Advanced Error Reporting
                UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
                UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
                CESta:  RxErr+ BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
                CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
                AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
                        MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
                HeaderLog: 00000000 00000000 00000000 00000000
        Capabilities: [148 v1] Device Serial Number 00-e0-4c-ff-fe-c8-21-01
        Capabilities: [158 v1] Latency Tolerance Reporting
                Max snoop latency: 3145728ns
                Max no snoop latency: 3145728ns
        Capabilities: [160 v1] L1 PM Substates
                L1SubCap: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1- L1_PM_Substates-
                L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
                L1SubCtl2:
        Capabilities: [170 v1] Precision Time Measurement
                PTMCap: Requester:- Responder:+ Root:-
                PTMClockGranularity: Unimplemented
                PTMControl: Enabled:+ RootSelected:-
                PTMEffectiveGranularity: Unknown
        Capabilities: [17c v1] Vendor Specific Information: ID=0003 Rev=1 Len=054 <?>
        Kernel driver in use: rtw_8821ce
        Kernel modules: rtw88_8821ce

dmesg:

$ dmesg | grep -i blue
[    2.142933] usb 1-10: Product: Bluetooth Radio 
[   17.314811] Bluetooth: Core ver 2.22
[   17.314847] NET: Registered PF_BLUETOOTH protocol family
[   17.314849] Bluetooth: HCI device and connection manager initialized
[   17.314854] Bluetooth: HCI socket layer initialized
[   17.314857] Bluetooth: L2CAP socket layer initialized
[   17.314866] Bluetooth: SCO socket layer initialized
[   17.432626] Bluetooth: hci0: RTL: examining hci_ver=08 hci_rev=000c lmp_ver=08 lmp_subver=8821
[   17.433613] Bluetooth: hci0: RTL: rom_version status=0 version=1
[   17.433618] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821c_fw.bin
[   17.441377] Bluetooth: hci0: RTL: loading rtl_bt/rtl8821c_config.bin
[   17.442234] Bluetooth: hci0: RTL: cfg_sz 10, total sz 34926
[   17.940640] Bluetooth: hci0: RTL: fw version 0x75b8f098
[   18.531332] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   18.531338] Bluetooth: BNEP filters: protocol multicast
[   18.531344] Bluetooth: BNEP socket layer initialized
[   18.533915] Bluetooth: MGMT ver 1.22
[   45.633522] Bluetooth: RFCOMM TTY layer initialized
[   45.633530] Bluetooth: RFCOMM socket layer initialized
[   45.633536] Bluetooth: RFCOMM ver 1.11

Я сталкиваюсь с той же проблемой на моем ноутбуке HP-15dy1051wm. Я использовал как Fedora, так и Ubuntu и увидел ту же проблему на обоих. Эта проблема, однако, никогда не возникала при использовании Windows.

Я даже попытался изменить правила питания ‘udev’ для Bluetooth, но все равно не смог решить проблему. Если кто-то еще столкнулся с той же проблемой, пожалуйста, расскажите, как вы с ней справились.

Сейчас я использую Bluetooth-адаптер. Когда я открываю ноутбук после сна, мне приходится перек подключить даже адаптер, чтобы он заработал. Так что это определенно какая-то проблема, связанная с тем, как Linux обрабатывает Bluetooth в режиме сна, а не с аппаратной проблемой.

Ответ или решение

Проблема исчезновения Bluetooth после перехода в спящий режим на ноутбуках HP, работающих под управлением Linux, может быть связана с несколькими факторами, включая настройку драйверов, конфигурацию энергосбережения и совместимость с вашим оборудованием. Давайте рассмотрим основные шаги, которые могут помочь вам решить данную проблему.

1. Понимание проблемы

Пользователи, такие как вы, сообщают о том, что Bluetooth-адаптер перестает работать после выхода из спящего режима. Эта проблема наблюдается на Fedora и Ubuntu, что подразумевает более широкий вопрос об управлении питанием даже при разнообразии дистрибутивов. Поскольку проблема не возникает под Windows, это скорее всего указывает на особенности взаимодействия драйверов и служб в Linux.

2. Проверка драйверов

Убедитесь, что установлены последние версии драйверов для вашего Wi-Fi и Bluetooth-адаптера (Realtek RTL8821CE). Вы можете попробовать обновить драйверы с помощью следующей команды:

sudo dnf update

Если вы используете драйвер через rtw_8821ce, убедитесь, что все его зависимости установлены.

3. Настройки энергосбережения

Одной из основных причин, по которой адаптер Bluetooth может не распознаваться после выхода из спящего режима, являются настройки управления питанием. Проверьте, отключено ли управление питанием на уровне BIOS/UEFI. Встаньте в BIOS/UEFI и настройте параметры управления питанием, изменив состояние "S3" на "S2", если это доступно.

Изменение параметров системы

Также можно попробовать отключить управление питанием для Bluetooth через систему Linux. Откройте файл конфигурации:

sudo nano /etc/modprobe.d/rtl8821ce.conf

И добавьте следующую строку:

options rtw_8821ce ips=0

Сохраните изменения и перезагрузите систему:

sudo reboot

4. Установка udev правил

Система udev управляет событиями устройства, и неправильные настройки могут вызвать проблемы. Попробуйте создать или изменить правила для вашего Bluetooth-адаптера. Вы можете создать файл правил 99-bluetooth.rules в каталоге /etc/udev/rules.d/ со следующим содержимым:

ACTION=="add", SUBSYSTEM=="bluetooth", RUN+="/bin/systemctl start bluetooth"

Это правило заставит вашу систему автоматически перезапускать службу Bluetooth при добавлении устройства.

5. Проверка служб

Убедитесь, что служба Bluetooth активна и работает корректно. Используйте команду:

systemctl status bluetooth.service

Если служба не активна, попробуйте её перезапустить:

sudo systemctl restart bluetooth.service

6. Логи и диагностика

Анализируйте логи системы для выявления ошибок, связанных с Bluetooth. Используйте команду:

dmesg | grep -i blue

Ищите сообщения об ошибках или предупреждениях, которые могут указать на источник вашей проблемы.

Заключение

Если указанные методы не принесли успеха, рекомендуется рассмотреть возможность использования Bluetooth-донгла, как уже сделано предыдущим пользователем. Это может быть временным решением, пока не будет найдено стабильное программное решение для вашего интегрированного адаптера. В любом случае, продолжайте следить за обновлениями ядра и драйверов, так как проблема может быть исправлена в будущих релизах.

Если у вас есть другой опыт или полезная информация, свяжитесь с сообществом пользователей, чтобы наладить обмен знаниями.

Оцените материал
Добавить комментарий

Капча загружается...