Arch-Linux

插入時藍牙加密狗未通電,僅在啟動時

  • February 5, 2017

執行時sudo hcitool lescan我得到:

Set scan parameters failed: Input/output error

執行bluetoothctl和使用show針對加密狗控制器的命令,我注意到它是“Powered: no”。打開電源可以sudo hcitool lescan按預期工作。

我在 ArchLinux 上使用以下藍牙堆棧:

~ ❯❯❯ pacman -Qs bluetooth
extra/bluez 5.43-2
   Daemons for the bluetooth protocol stack
extra/bluez-firmware 1.2-8
   Firmwares for Broadcom BCM203x and STLC2300 Bluetooth chips
extra/bluez-libs 5.43-2
   Deprecated libraries for the bluetooth protocol stack
extra/bluez-utils 5.43-2
   Development and debugging utilities for the bluetooth protocol stack
extra/gnome-bluetooth 3.20.0+6+g3bac4f9-1
   The GNOME Bluetooth Subsystem
extra/pulseaudio-bluetooth 10.0-2
   Bluetooth support for PulseAudio
community/python2-pybluez 0.22-2
   Python wrapper for the BlueZ Bluetooth stack
extra/sbc 1.3-1
   Bluetooth Subband Codec (SBC) library

有沒有辦法修復即插即用並在插入時使藍牙控制器供電?(如果我讓它插上電源,它會在啟動後按預期工作,而不會斷開連接)

電源控制器開啟

當設備連接到電腦時,您可以自動化 bluetoothctl 程序為您打開設備電源。

更好的選擇是使用更容易編寫腳本的東西。Bluetoothctl 要求您將命令回顯到標準輸入,這有點奇怪。

檢測所插入設備的 udev 規則應該能夠處理此問題。

請注意,在帶有內置藍牙無線電的機器上,很可能hci0不是指外部藍牙適配器,而是指內置藍牙適配器。 在這種情況下,請在以下文件內容中 hci0替換為。hci1

創建這個文件:/etc/udev/rules.d/10-local.rules

內容:

ACTION=="add", KERNEL=="hci0", RUN+="/usr/bin/hciconfig %k up"

如果這不起作用,您可以嘗試編寫 bluetoothctl 腳本。

udev 規則如下所示:

ACTION=="add", KERNEL=="hci0", RUN+="/usr/local/bin/PowerOnBluetooth"

創建這個文件:/usr/local/bin/PowerOnBluetooth

內容:

#!/bin/bash
echo -e 'power on\nquit\n' | bluetoothctl

不要忘記將文件標記為執行檔:

chmod +x /usr/local/bin/PowerOnBluetooth

資料來源:

ArchWiki

Archlinux 使用者有同樣的問題

引用自:https://unix.stackexchange.com/questions/342413