wiki.brainux.org/_posts/2021-12-04-tips-usb-etherne...

2.3 KiB

title categories tags
USB Ethernet Gadget
Linux
Linux
USB
周辺機器

USB Gadget とは?

コンピューターがあたかも USB デバイスであるかのように振る舞う仕組みです。

Why USB Gadget?

インターネットに接続可能なパソコンに USB で Brain を接続するだけで Brain からインターネットに出たり、パソコンと Brain で双方向に SSH したりできるようになります。電池切れの心配もありません。

USB コントローラーの動作モードを変更する

初期状態では Brain の USB コントローラーはホストとして動作するため、このままではデバイスになることができません。 2021年2月23日現在ではまだありませんが、コントローラーの動作モードを簡単に切り替えるスクリプトを用意する予定です。

手動で変更するには、Device Tree Compiler を使用します。

Brain に Ethernet Gadget を喋らせる

  1. 以下のスクリプトを vi や nano でホームディレクトリに保存します

     #!/bin/sh
    
     g=/sys/kernel/config/usb_gadget/eth
    
     mkdir ${g}
    
     mkdir ${g}/functions/rndis.rn0
     echo "8a:15:8b:44:3a:02" > ${g}/functions/rndis.rn0/dev_addr
     echo "8a:15:8b:44:3a:01" > ${g}/functions/rndis.rn0/host_addr
    
     mkdir ${g}/configs/c.1
     ln -s ${g}/functions/rndis.rn0 ${g}/configs/c.1/
    
     echo "ci_hdrc.0" > ${g}/UDC
    
     sleep 1
     ifconfig usb0 up
     sleep 1
     dhclient
    
  2. スクリプトに実行属性を付けます

    ここではスクリプト名を gadget.sh としています。1. で保存した名前に置き換えてください。

    $ chmod +x gadget.sh
    
  3. 実行します

    次回起動時からはこのスクリプトを都度実行します。

    $ ./gadget.sh
    

パソコン側の対応作業

Windows / Mac / Linux すべてで利用可能です。(注: 2021年2月23日現在、上記スクリプトでは Windows と macOS で認識しないことを確認しており、修正予定です)

パソコンを通してインターネットに出るために、ネットワーク接続の共有設定が必要になります。OS ごとに設定方法は異なりますので、別途設定してください。