Armadilloフォーラム

USBバスのリセット

kihara

2016年6月16日 10時02分

木原です。
お世話になっております。

Armadillo-840でUSBデバイスの認識が上手くいかず困っております。

デバイスをUSBポートに物理的に接続した状態で、
USBデバイス → Armadillo
の順で電源を入れると認識されるのですが、
Armadillo → USBデバイス
の順で電源を入れると認識されません。(lsusbしても表示されない)

USBバスだけをリセットする方法はないでしょうか?
(USBデバイスのbind、unbindの手法は使えませんでした。)

宜しくお願い致します。

コメント

at_takashi.sasayama

2016年7月25日 14時33分

笹山です。

> USBバスだけをリセットする方法はないでしょうか?

libusb-1.0 を用いて USB ポートのリセットプログラムを作成してみました。
ただ、システムで認識されていないデバイスには効果がないかもしれません。

Armadillo上でプログラムを実行するには、 libusb-1.0.so.0 が必要になりますので、
ATDE5の以下パスにあるものを、Armadillo 上の /lib 配下にコピーしてください。
(添付ファイルにも同ファイルを含めています)

[ATDE5]$ /usr/arm-linux-gnueabihf/lib/libusb-1.0.so.0

プログラムを以下の手順で実行すると、USB上段、下段のポートがそれぞれリセットされ、
デバイスが再認識されます。

[armadillo840]# chmod +x usb-port-reset
[armadillo840]# ./usb-port-reset

プログラムは添付のソースを、以下のコマンドでビルドしています。

[ATDE5]$ arm-linux-gnueabihf-gcc usb-port-reset.c -o usb-port-reset -lusb-1.0
ファイル ファイルの説明
usb-port-reset-for-a840.zip Armadillo-840用USBポートリセットプログラム