hcitool lescan显示I / O错误

时间:2014-02-27 07:38:12

标签: raspberry-pi bluetooth-lowenergy bluez

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

命令打印出来

Set scan parameters failed: Input/output error. 

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

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

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

10 个答案:

答案 0 :(得分:40)

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

hcitool lescan
Set scan parameters failed: Input/output error

尝试:

hciconfig hci0 down
hciconfig hci0 up

并检查后面的状态。

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

service bluetooth restart
service dbus restart

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

关闭所有可能访问蓝牙的应用程序。例如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

答案 1 :(得分:5)

升级到bluez v5.43为我解决了这个问题。

要升级到最新的bluez,您需要进行“手动”安装( apt-get),从the bluez website下载。如果您是新安装软件包或需要帮助,我建议this video walkthrough

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

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

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

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

  4. 在这些命令之后,sudo hcitool lescan及其变体似乎都有效。

答案 2 :(得分:1)

对于那些现在发现这个问题的人,从Bluez v5.41开始修复。您只需下载并安装即可。您可以从http://www.bluez.org/download/下载最新版本。

答案 3 :(得分:0)

HCI目前正在使用中。在我的情况下,我必须停止Node-Red,它的工作原理。因此,请注意HCI未使用。

重启HCI是一种方法,暂时解决问题,但它没有解决问题吧。

答案 4 :(得分:0)

我在hcitool上遇到了相同的错误,而bluetoothctl正常工作。然后,我遇到了这个article stating that all "tools using raw socket shall be considered deprecated"(hcitool,hcicfg等)。

因此,也许只需打开bluetoothctl并发出scan on命令即可​​。

答案 5 :(得分:0)

对我有用的是在Ubuntu上打开蓝牙设置并手动删除未使用的设备。 Lescan立即开始工作。

答案 6 :(得分:0)

sudo service bluetooth restart帮助我熟悉Raspibian Buster。

如果Set scan parameters failed: Input/output error.中发生sudo hcitool lescan错误。

但是它又是随机发生的,因此某些系统库可能存在一些问题。

答案 7 :(得分:0)

我已经删除了Bluez,然后又重新安装了它,并且对我有用:

In [120]: timeit df_mi_filtered = df_mi.loc[ind_1_filtered]                                          
4.73 s ± 10.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [121]: df_mi_filtered                                                                             
Out[121]: 
                val
ind_1 ind_2        
0     0           0
      1           1
      2           2
      3           3
      4           4
...             ...
998   995    998995
      996    998996
      997    998997
      998    998998
      999    998999

[999000 rows x 1 columns]

然后

sudo apt remove --purge bluez bluez-* -y


apt install bluez

那应该足够了。

答案 8 :(得分:0)

我正在使用5.53版 我有两个蓝牙设备(hic0和hic1) 我尝试了各种方法来重置设备... 唯一可行的方法是物理拔出并重新插入hic1加密狗。 这是支持ble的一种。然后工作,直到我重新启动。 我真的希望有一种纯软件解决方案来做到这一点。

答案 9 :(得分:-4)

sudo hcitool lescan

只需使用sudo&将扫描