スレーブデバイスとして機能するRaspberry Pi ZeroのUSBホストとして機能するAndroidデバイスがあります。 USBスレーブデバイスと対話するためにAndroid APIを使用することはまったく問題ありません。
明らかにドライバーが必要です。ガジェットシリアルドライバRaspberry Piで、次のコマンドを使用して起動時にロードします。
sudo modprobe g_serial
システムは明らかに/dev/ttyGS0
ドライバ用のデバイスノードを作成する必要がありますが、これは発生しません。その理由は何ですか?
ドライバが正常にロードされたら、ドライバとそのノードを使用してプログラムをどのように書くことができますか?可能ですか、または直接ドライバを作成する必要がありますか?この問題を解決する他の方法はありますか?私はLinuxに初めて触れたので、ターミナルコマンドの答えはとても役に立ちます。よろしくお願いします。
答え1
Raspberry Piに問題があるかどうかはわかりませんが(私はRaspberry Piがないため)、シリアルガジェットドライバをテストして使用する方法を教えてください。まず、プライマリコンピュータで次のことを試してください。
USBガジェットの仮想(エミュレートされた)ホストコントローラドライバをロードします。
sudo modprobe dummy_hcd
これはガジェットドライバのフレームワークとして機能し、lsusb
コンピュータに表示される新しい「一般」USBバス(確認)とこれらのバス間のループバックを提供します。
これでシリアルガジェットドライバをロードします。
sudo modprobe g_serial
バスと/dev/ttyGS0
ガジェットドライバに新しいデバイスを表示する必要があります。また、新しいデバイスによってシリアルクライアントのカーネルドライバがロードされるため、返品デバイスを購入してください/dev/ttyACM0
。
これらのデバイスに書き込んで読み取ることができ、通信が可能かどうかを確認できます。たとえば、cat /dev/ttyACM0
あるウィンドウで実行し、echo foo > /dev/ttyGS0
別のウィンドウで実行します。
私疑うRaspberry PiをUSBクライアントモードに設定し、ガジェットドライバが接続できるように正しいHCDドライバをロードする必要があります。そうしないと、ガジェットドライバは観察したように何もしません。しかし、Raspberry Piに適したものが何であるかわかりません。