hcitool lescan显示I/O错误

arp*_*wal 37 raspberry-pi bluetooth-lowenergy bluez

我正在尝试使用覆盆子pi上的hcitool做一个lescan.

该命令打印出来

Set scan parameters failed: Input/output error. 
Run Code Online (Sandbox Code Playgroud)

我不确定,这里究竟发生了什么.我的iPhone在这里做广告.

我正在使用IOGear的BLE加密狗.

但是,如果我重新启动我的机器,它会在我发出lescan命令后显示一个MAC地址,并在我发出一次lescan命令后再开始显示相同的错误.是不是,lescan命令不能发出多次?

Rob*_*son 44

这经常发生在我身上.我正在开发它,它不时发生.我也能在5分钟内重现你的错误;-)我正在运行bluez v.5.17.但是,如果没有此错误,我可以运行lescan一次以上.

hcitool lescan
Set scan parameters failed: Input/output error
Run Code Online (Sandbox Code Playgroud)

尝试:

hciconfig hci0 down
hciconfig hci0 up
Run Code Online (Sandbox Code Playgroud)

并检查后的状态.

如果这不起作用或挂起处于DOWN状态,请尝试:

service bluetooth restart
service dbus restart
Run Code Online (Sandbox Code Playgroud)

(所有命令均为超级用户)

并关闭所有可能访问蓝牙的应用程序.例如hcidump.

如果这不起作用,通常必须拔掉它.但还有另一个肮脏的黑客做到这一点.它的工作原理是将授权设置为0并再次设置为1.这迫使usb加密狗初始化.

lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. 
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
Bus 001 Device 004: ID 0a5c:21e8 Broadcom Corp. 


cd /sys/bus/usb/devices/

grep -i -s -r 0a5c *
…
1-1.2/idVendor:0a5c
…

cd 1-1.2

echo 0 > authorized
echo 1 > authorized
Run Code Online (Sandbox Code Playgroud)

  • 还有`sudo hciconfig hci0 reset`. (8认同)
  • ``hciconfig hci0 down```然后```up```对我有用,谢谢。 (2认同)
  • ***`service dbus restart`*** *crashed* kali (2认同)

Alo*_*ink 11

对于那些使用蓝牙 5.x 设备并遇到相同错误的用户, sudo hcitool lescan将抛出Set scan parameters failed: Input/output error.“针对蓝牙 5.x LE 设备”的错误,这hcitool已被弃用。

如果您想使用较新的蓝牙 5.x 设备进行蓝牙 LE(低功耗)扫描,请尝试使用bluetoothctl

bluetoothctl scan le
Run Code Online (Sandbox Code Playgroud)

正如其他人提到的,确保您拥有最新bluez版本也是值得的。如果您的蓝牙设备特别新,则较新版本的linux-firmwareLinux 内核也可能会有所帮助。


Jas*_*art 6

我有同样的错误hcitool,虽然bluetoothctl工作得很好。然后我看到这篇文章指出所有“使用原始套接字的工具都应被视为已弃用”(hcitool、hcicfg 等)。

所以也许只是打开bluetoothctl并发出scan on命令。


ZX9*_*ZX9 5

升级到bluez v5.43修复了这个问题.

要升级到最新的bluez,您需要进行"手动"安装(不是 apt-get),从bluez网站下载.如果您是新安装软件包或需要帮助,我建议您观看此视频演练.

在安装了最新的bluez之后,我必须在它运行之前运行几个命令.

  1. systemctl daemon-reload :重新启动系统守护程序.

  2. sudo service bluetooth restart :重新启动蓝牙服务.

  3. sudo hciconfig hci0 up:这是我的Raspberry Pi 3所需要的,内置的BT可以在hci0.

在这些命令之后,sudo hcitool lescan它的变体似乎都有效.