执行时sudo hcitool lescan
我得到:
Set scan parameters failed: Input/output error
执行bluetoothctl
并使用show
针对加密狗控制器的命令时,我注意到它是“已通电:否”。打开电源即可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
有没有办法修复即插即用并使蓝牙控制器在插入时供电? (如果我让它插入,它在启动后按预期工作,无需断开连接)
答案1
当设备连接到计算机时,您可以自动使用 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
资料来源: