RaspbianカーネルでOTG USBドライバを変更する必要はありますか?
あなたの最初の質問への答えは「それが依存」ではありませんが、お使いのデバイス があまりにも珍しい何もしないならば、これは可能性がありませ:あなたはカーネルモジュールやカーネルのソースコードを変更しないで 必要です。
RaspbianがConfigFSをサポートする最新のカーネルをサポートしていることは幸いです。あなたがdtoverlay=dwc2
で設定されたら、あなたはそうのようなルートとしてFunctionFSバルクエンドポイントを開くことができます:あなたがより密接に他のデバイスをエミュレートする必要がある場合は
modprobe libcomposite
modprobe usb_f_fs
cd /sys/kernel/config/usb_gadget
mkdir -p myperipheral; cd myperipheral
echo 0x1234 > idVendor # put actual vendor ID here
echo 0xabcd > idProduct # put actual product ID here
mkdir configs/c.1
mkdir configs/c.1/strings/0x409
echo "My Peripheral" > configs/c.1/strings/0x409/configuration
mkdir functions/ffs.my_func_name
ln -s functions/ffs.my_func_name configs/c.1/
mkdir -p /tmp/mount_point
mount my_func_name -t functionfs /tmp/mount_point
# compile ffs-test from source, then copy and run it from /tmp/mount_point
ls /sys/class/udc > UDC
、それはbcdDevice
、bcdUSB
、シリアルを設定するのはあなた次第です数字、製造元、製品文字列、最大電力、os_desc
、およびおそらく他のフィールド。
AFAIK FunctionFSは、アイソクロナスエンドポイント、割り込み転送、または通常とは異なる制御転送をサポートしていません。これが必要な場合は、ソースコードhereを使用して既存のガジェットモジュールを拡張する必要があります。
更新:これをテストするために家に帰ったとき、私はRaspbianと深刻な警告を受けました。 usb_f_fsはデフォルトでは有効になっていないため、最初はffs.my_func_name
の作成に失敗します。カーネルモジュールを変更する必要はありませんが、別の設定でrecompileにする必要があります。 USBドライバー - > USBサポート - > USBガジェットサポート - > configfs/Functionファイルシステム(FunctionFS)を介して設定可能なUSB機能+テストするいくつかの他のモジュール。新しいカーネル/モジュールをアップロードした後、上記のスクリプトをRaspbian 8でテストしました。ConfigFSの代わりにより簡単なg_ffs
レガシーモジュールを使用する場合は、USB Gadget Drivers/Function Filesystemを(M)に設定することをお勧めします。