При выполнении sudo hcitool lescan
я получаю:
Set scan parameters failed: Input/output error
Выполняя bluetoothctl
и используя команду show
, нацеленную на контроллер ключа, я заметил, что это " Работает: нет ". При включении sudo hcitool lescan
работает должным образом.
Я использую ArchLinux со следующим стеком bluetooth:
~ ❯❯❯ 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
Есть ли способ исправить plug & play и сделать контроллер bluetooth получает питание, когда он подключается? (если я позволю ему подключиться, он будет работать, как ожидалось, после загрузки, без отключения)
Вы можете автоматизировать программу bluetoothctl, чтобы она включала устройство при подключении к компьютеру.
Лучшим вариантом будет использование чего-то более легко настраиваемого. Bluetoothctl требует, чтобы вы отправляли команды в stdin, что немного странно.
С этим должно справиться правило udev для обнаружения подключенного устройства.
Обратите внимание, что на машинах со встроенным bluetooth-радио, очень вероятно, что hci0
будет относиться не к внешнему blueotoh-ключу, а к встроенному.
В подобных случаях замените 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
Источники: