Стек протоколов Bluetooth для Linux проверяет две возможности. Возможности - это еще не распространенная система управления некоторыми привилегиями. Они могут обрабатываться модулем PAM или через расширенные атрибуты файла. (см. http://lxr.free-electrons.com/source/net/bluetooth/hci_sock.c#L619 )
$> sudo apt-get install libcap2-bin
устанавливает средства управления возможностями linux
$> sudo setcap 'cap_net_raw,cap_net_admin+eip' `which hcitool`
устанавливает недостающие возможности исполняемого файла так же, как бит setuid.
$> getcap !$
getcap `which hcitool`
/usr/bin/hcitool = cap_net_admin,cap_net_raw+eip
так что нам пора
$>hcitool -i hci0 lescan
Set scan parameters failed: Input/output error
Да, ваш BT-адаптер не поддерживает BLE
$>hcitool -i hci1 lescan
LE Scan...
Это делает, продолжайте и нажмите кнопку на вашем устройстве.
Хорошо, по крайней мере я частично обнаружил, почему hcitool требует привилегий root для сканирования LE, но не для обычного сканирования. Частично это означает, что я обнаружил системный вызов, который не выполняется из-за недостаточных привилегий при запуске сканирования LE от имени обычного пользователя.
Ошибка «Операция не разрешена» генерируется системным вызовом writev с блокировкой стека вызовов следующим образом (все функции, реализованные в hci.c , см. В исходном коде bluez):
Обычное сканирование («сканирование hcitool»), по-видимому, не должно отправлять какие-либо запросы на контроллер, но использует выделенный запрос ioctl , вызывая:
Кажется, что доступ на запись к контроллеру Bluetooth ограничен, но почему и как я могу это отключить?
источник
Я не установил это, но хорошо написанная подсистема устройства обычно имеет группу, связанную с этим. Добавьте пользователя в группу, и вы получите доступ к устройству (например,
disk
группа разрешает доступ к жесткому диску). Просто сделайтеls -l
в/dev
чтобы проверить это. Если это не так, и устройство принадлежит кroot
группе, вы можете изменить это, изменивudev
правила, которые определяют имена, разрешения и действия на оборудовании при обнаружении (не спрашивайте меня, как).Это касается прямого доступа к устройству, который вам, вероятно, понадобится в этом случае. Нормальная функциональность bluetooth обычно обрабатывается с помощью демона с его собственной конфигурацией, группами, разрешениями и так далее. Проверьте вашу документацию по распространению, группы могут немного отличаться.
источник