Raspberry Piでhcitoolを使用してlescanを実行しようとしています。
コマンドが出力されます
Set scan parameters failed: Input/output error.
ここで正確に何が起こるかわかりません。私のiPhoneはここで宣伝しています。
IOGearのBLEドングルを使用しています。
ただし、マシンを再起動すると、lescan
コマンドを発行した後にMACアドレスが表示され、lescanコマンドをさらに数回発行すると同じエラーが表示され始めます。 lescanコマンドを複数回発行することはできませんか?
それは私にとって頻繁に起こります。私はそれを使って開発していますが、それは時々起こります。 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
(すべてのコマンドはスーパーユーザーとして)
そして、Bluetoothにアクセスする可能性のあるすべてのアプリケーションを閉じます。たとえば、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
Bluez v5.43にアップグレードすると、これが修正されました。
最新のbluezにアップグレードするには、「手動」インストールを行う必要があります(notapt-get)、 bluezウェブサイトからダウンロード 。パッケージの新規インストールまたはヘルプが必要な場合は、 このビデオウォークスルー をお勧めします。
最新のbluezをインストールした後、機能する前にいくつかのコマンドを実行する必要がありました。
systemctl daemon-reload
:システムデーモンを再起動します。
Sudo service bluetooth restart
:Bluetoothサービスを再起動します。
Sudo hciconfig hci0 up
:これは、Raspberry Pi 3に必要でした。hci0
。
これらのコマンドの後、Sudo hcitool lescan
とそのバリアントはすべて機能しているようです。
現在この質問を見つけている人にとっては、Bluez v5.41で修正されています。必要なのは、ダウンロードしてインストールすることだけです。 http://www.bluez.org/download/ から最新バージョンをダウンロードできます。
私にとってうまくいったのは、UbuntuでBluetooth設定を開き、未使用のデバイスを手動で削除することです。すぐにlescanが動作を開始しました。
hcitool
でも同じエラーが発生しましたが、bluetoothctl
は正常に機能しました。それから私はこれに出くわしました すべての「生のソケットを使用しているツールは非推奨とみなされる」と述べている記事 (hcitool、hcicfgなど)。
したがって、bluetoothctl
を開いてscan on
コマンド。
HCIが現在使用されている可能性があります。私の場合、Node-Redを停止する必要があり、機能します。 HCIが使用されていないことに注意してください。
HCIを再起動することは、一時的に問題を解決する方法ですが、問題を正しく解決しません。