Stos protokołu Bluetooth dla systemu Linux sprawdza dwie możliwości. Możliwości nie są jeszcze powszechnym systemem do zarządzania niektórymi uprawnieniami. Mogą być obsługiwane przez moduł PAM lub poprzez rozszerzone atrybuty pliku. (patrz http://lxr.free-electrons.com/source/net/bluetooth/hci_sock.c#L619 )
$> sudo apt-get install libcap2-bin
instaluje narzędzia do manipulacji możliwościami systemu Linux.
$> sudo setcap 'cap_net_raw,cap_net_admin+eip' `which hcitool`
ustawia brakujące możliwości w pliku wykonywalnym podobnie jak bit setuid.
$> getcap !$
getcap `which hcitool`
/usr/bin/hcitool = cap_net_admin,cap_net_raw+eip
więc możemy iść:
$>hcitool -i hci0 lescan
Set scan parameters failed: Input/output error
Tak, twój adapter BT nie obsługuje BLE
$>hcitool -i hci1 lescan
LE Scan...
Ten robi, kontynuuj i naciśnij przycisk na urządzeniu.
Ok, przynajmniej częściowo odkryłem, dlaczego hcitool wymaga uprawnień roota do skanowania LE, ale nie do normalnego skanowania. Częściowo oznacza to, że zlokalizowałem wywołanie systemowe, które kończy się niepowodzeniem z powodu niewystarczających uprawnień podczas uruchamiania skanowania LE jako zwykły użytkownik.
Błąd „Operacja niedozwolona” jest generowany przez wywołanie systemowe writev z blokowaniem stosu wywołań w następujący sposób (wszystkie funkcje zaimplementowane w hci.c , patrz kod źródłowy bluez):
Normalne skanowanie („skanowanie hcitool”) najwyraźniej nie musi wysyłać żadnych żądań do kontrolera, ale używa dedykowanego żądania ioctl , wywołując:
Wydaje się, że dostęp do zapisu do kontrolera Bluetooth jest ograniczony, ale dlaczego i jak mogę to wyłączyć?
źródło
Nie mam tego zainstalowanego, ale do dobrze napisanego podsystemu urządzeń zwykle jest powiązana z nim grupa. Dodaj użytkownika do grupy, aby uzyskać dostęp do urządzenia (na przykład
disk
grupa umożliwia dostęp do surowego dysku twardego). Wystarczy zrobićls -l
w/dev
celu sprawdzenia tego. Jeśli tak nie jest, a urządzenie należy doroot
grupy, możesz to zmienić, dostosowującudev
reguły dotyczące nazewnictwa, uprawnień i działań na sprzęcie w momencie wykrycia (nie pytaj mnie, jak to zrobić).Dotyczy to bezpośredniego dostępu do urządzenia, którego prawdopodobnie potrzebujesz w tym przypadku. Normalna funkcjonalność bluetooth jest zwykle obsługiwana przez demona z własną konfiguracją, grupami, uprawnieniami i tak dalej. Sprawdź dokumentację dystrybucji, grupy mogą się nieznacznie różnić.
źródło