USBガジェットの状態変化を検出

USBガジェットの状態変化を検出

質問:ガジェット自体からホストコンピュータにガジェットが接続されている時期をどのように検出できますか?

背景:g_mass_storageLinuxカーネルモジュールは、USB OTGポートを介して大容量記憶装置を提供するために使用できます。私はこれを使ってUSB経由でLinuxとこのモジュールを実行しているデバイスにファイルを転送できるようにしたいと思います。

残念ながら、これは私のモジュールで直接サポートされておらず、クライアントとホストの両方からストレージにアクセスすることは、せいぜい不安定になる可能性があります。ただし、USBホストが接続されていない場合にのみリポジトリから読み書きするようにLinuxシステム(USBクライアント)を制御すると、この問題を回避できます。

非常に素朴な解決策は、dmesg出力を解析することです。少なくとも挿入された時期ははっきりとわかりますが、削除された時期は不明です。

私の研究では、/sys/そこにどこかにガジェットステータスフラグがあることがわかりました。このチェーンを見てくださいが、どこにいるのかよくわかりません。

代わりに、ガジェットをLinuxシステムに接続すると使用できることがわかりますが、udevモニターudevにはガジェット自体の状態が表示されないようです。

答え1

/sys/class/udc/YOUR_UDC/stateを見てください。

また、見ることができますhttps://www.kernel.org/doc/Documentation/ABI/stable/sysfs-class-udcsysfs APIの詳細。

関連情報