Linux의 Bluetooth는 엉망입니다. 몇 시간 동안 블루투스를 켜려고 시도한 후, grub에 블루투스를 추가하면 문제가 해결되었고 이제 어떤 장치와도 페어링되지는 않지만 적어도 켜집니다.
나는 GRUB의 이전 버전을 재구성하고 /etc/default/grub
추가했습니다.
GRUB_CMDLINE_LINUX_DEFAULT=btusb.enable_autosuspend=n
하지만 이것이 실제로 무엇을 하는지, 왜 작동하는지 말해 줄 수 있는 사람이 있나요?
내 생각엔 블루투스가 자동 일시 중지되지 않도록 지시하는 것 같은데, 아치 장치를 켤 때 블루투스가 먼저 이 작업을 수행하는 이유는 무엇입니까?
Intel Centrum 1000 N이 설치된 Dell에서 Arch Linux를 사용하고 있습니다.
답변1
먼저 실제로 가지고 있는 Bluetooth 어댑터가 무엇인지 살펴보겠습니다. Intel Centrino WirelessN 1000 어댑터의 네트워크 사양 고려블루투스를 지원하지 않습니다이것은PCIe 하프 미니 카드, 위에 언급된 btusb 매개변수가 설정에 영향을 미치는 경우 출력을 보고 lsusb -tv
Dell에 어떤 USB Bluetooth 어댑터가 설치되어 있는지 확인해야 합니다. 사용하고 있지 않은지 확인해야 합니다.btusb.enable_autosuspend
설정에 관계없이 다양한 일시 중지 및 재개 문제가 있는 것으로 알려진 가짜 Barrot 8041A02 복제본.
최신 안정 커널(작성 당시 v5.12)에서는 btusb.enable_autosuspend
부울 커널 매개변수가 usb_enable_autosuspend
호출 여부에 영향을 미칩니다.btusb 장치를 감지하는 경우.
에 기록된 대로USB 전원 관리 커널 문서:
드라이버는 다음 명령을 호출하여 장치에 대해 자동 일시 중지를 활성화할 수 있습니다.
usb_enable_autosuspend(struct usb_device *udev);
그들의
probe()
장치가 올바르게 일시중단 및 재개될 수 있다는 것을 알고 있으면 루틴을 수행할 수 있습니다. 이는auto
장치의 속성을 작성하는 것과 정확히 같습니다power/control
. 마찬가지로 드라이버는 다음을 호출하여 자동 일시 중지를 비활성화할 수 있습니다.usb_disable_autosuspend(struct usb_device *udev);
on
이는 속성을 작성하는 것과 정확히 같습니다power/control
.경우에 따라 드라이버는 자동 일시 중단 중에 원격 깨우기가 활성화되도록 해야 합니다. 예를 들어, 사용자가 키보드를 입력하여 원격으로 키보드를 깨울 수 없는 경우 키보드를 자동으로 일시 중단하는 것은 별 의미가 없습니다. 드라이버가 1로 설정된 경우
intf->needs_remote_wakeup
원격 깨우기를 사용할 수 없는 경우 커널은 장치를 자동으로 일시 중단하지 않습니다. (그러나 장치가 자동 일시 중지된 경우 이 플래그를 설정해도 커널이 자동으로 다시 시작하지 않습니다. 일반적으로 드라이버는 감지 방법에서 이 플래그를 설정하여 장치가 자동 일시 중지되지 않도록 보장합니다.)
귀하의 Dell에 대한 자세한 내용이 없고 위의 문서만 보면 다음과 같이 가정할 수 있습니다.
- 검색될 만큼 오랫동안 전원이 켜져 있었지만 다른 장치와의 페어링 프로세스를 완료하기 전에 자동으로 중단된 USB Bluetooth 장치가 있습니다.
- 성공적으로 페어링되었지만 어댑터가 절전 모드로 전환되어 HID 키보드/마우스가 어댑터를 다시 깨울 수 없습니다.
grep . /sys/bus/usb/devices/*/power/wakeup
출력과 출력을 비교하여 lsusb -tv
출력이 Bluetooth 어댑터에 /sys/bus/usb/devices/${Bus}-${Port}/power/wakeup
적합한 지 확인 해야 합니다 . enabled
다음 명령을 사용하면 커널 부팅 매개변수를 조정하거나 재부팅하지 않고도 테스트 목적으로 모든 USB 장치에서 wake on을 활성화할 수 있습니다.
echo enabled | sudo tee -a /sys/bus/usb/devices/*/power/wakeup