diff --git a/_posts/2021-12-04-tips-usb-ethernet-gadget.md b/_posts/2021-12-04-tips-usb-ethernet-gadget.md index 9494bb3..ec16cd2 100644 --- a/_posts/2021-12-04-tips-usb-ethernet-gadget.md +++ b/_posts/2021-12-04-tips-usb-ethernet-gadget.md @@ -25,10 +25,96 @@ excerpt: PC と USB ケーブル1本で接続できる便利な仕組みとそ # USB コントローラーの動作モードを変更する 初期状態では Brain の USB コントローラーはホストとして動作するため、このままではデバイスになることができません。 -2021年2月23日現在ではまだありませんが、コントローラーの動作モードを簡単に切り替えるスクリプトを用意する予定です。 +2022年1月8日現在ではまだありませんが、コントローラーの動作モードを簡単に切り替えるスクリプトを用意する予定です。 -手動で変更するには、Device Tree Compiler を使用します。 +手動で変更するには、以下の手順に従ってください。 +1. SDカードの第1パーティションを`/boot`にマウントします + + ``` + sudo mount /dev/mmcblk1p1 /boot + ``` + +2. 元のdtsをバックアップします + + {機種名の数字}は適宜置き換えてください。(例:PW-SH5→imx28-pwsh5.dtb) + ``` + sudo cp /boot/imx28-pwsh{機種名の数字}.dtb /boot/imx28-pwsh{機種名の数字}.dtb.orig + ``` + +3. dtbファイルをテキスト形式に変換します + + ``` + dtc -I dtb -O dts /boot/imx28-pwsh{機種名の数字}.dtb > dts 2> /dev/null + ``` + +## コピペ用 + +1〜3の手順をまとめると以下のようになります + +``` +sudo mount /dev/mmcblk1p1 /boot +sudo cp /boot/imx28-pwsh{機種名の数字}.dtb /boot/imx28-pwsh{機種名の数字}.dtb.orig +dtc -I dtb -O dts /boot/imx28-pwsh{機種名の数字}.dtb > dts 2> /dev/null +``` + +4. 設定を書き換えます + + ``` + nano dts + ``` + + `usb@80080000`ノードの中から`dr_mode = "host"`の箇所を探し、`dr_mode = "peripheral"`に書き換えます。スペルに注意しましょう。 + + 書き換え後は以下のようになります。 + + ```diff + ahb@80080000 { + usb0: usb@80080000 { + pinctrl-names = "default"; + pinctrl-0 = <&usb0_id_pins_a>; + vbus-supply = <®_usb0_vbus>; + - dr_mode = "host"; + + dr_mode = "peripheral"; + status = "okay"; + }; + }; + + ``` + 書き換えられたら保存してエディタを終了します。`Ctrl+O`の次に`Enter`を押して保存して、`Ctrl+X`で終了します。 + +5. 編集したものをバイナリ形式に変換します + + ``` + dtc -I dts -O dtb dts > dtb 2> /dev/null + ``` + + ``` + sudo mv dtb /boot/imx28-pwsh{機種名の数字}.dtb + ``` + +6. SDカードの第1パーティションアンマウントします + + ``` + sudo umount /boot + ``` + +7. 再起動します + + ``` + sudo reboot + ``` + +## コピペ用 + +5〜7の手順をまとめると以下のようになります。 + +``` +dtc -I dts -O dtb dts > dtb 2> /dev/null +sudo mv dtb /boot/imx28-pwsh{機種名の数字}.dtb +sudo umount /boot +sudo reboot +``` # Brain に Ethernet Gadget を喋らせる