Not-Root-User

藍牙 LE 以非 root 身份掃描?

  • September 23, 2020

要對藍牙 LE 設備執行掃描,hcitool顯然需要 root 權限。對於普通使用者,輸出如下:

$ hcitool lescan
Set scan parameters failed: Operation not permitted

為什麼hcitool需要 root 權限才能進行 LE 掃描?

是否有可能以非 root 身份執行 LE 掃描?

Linux 的藍牙協議棧檢查兩個功能。功能是管理某些特權的尚未通用的系統。它們可以由 PAM 模組或通過擴展文件屬性處理。(見https://elixir.bootlin.com/linux/v5.8.10/source/net/bluetooth/hci_sock.c#L1307

$> 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...

這個可以,繼續並按下設備上的按鈕。

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