とうとう我が家もJetsonをお迎えしました!!
Jetson nanoです!!
新品価格 |
先ほどまでセットアップを実施していたのですが、どうやらotgデバイスモードを用いることが出来る模様。
試しに使ってみましたが、躓いたこところがあったのでまとめておこうと思います!!
- ■Jetsonとは??
- ■Jetson Nanoセットアップ手順
- ■otgデバイスモードでのファイル共有を動かしてみる
- ■なぜJetson側からのwrite動作が行えないのか?
- ■対処!!
- ■せっかくなので
- ■最後に
- ■参考
■Jetsonとは??
Wikipediaにはこちらのように記載されております。
NVIDIA社の組み込みシングルボードコンピュータのシリーズである。
Jetsonは、機械学習アプリケーションを目的として設計され、画像認識、機械学習や自動運転などを高速に実行するための、GPUを備えた並列処理用の組込み用コンピューティングボードである。
※参考:https://ja.wikipedia.org/wiki/NVIDIA_Jetson
■Jetson Nanoセットアップ手順
セットアップですが、こちらに記載されております。
qiita.com
まぁ、
・NVIDIAのホームぺージでイメージファイルをダウンロードしてきて、μSDにイメージファイルを書き込む
・μSDをJetson nanoに挿入し電源ONすればセットアップ画面が表示されるので設定する
で終了。
ベースがUbuntuだったので、後はUbuntuを設定するようにWifi設定などを実施すればOKです。
イメージファイルはこちらに格納されております(ダウンロードするためにはNVIDIAへのアカウント登録が必要になります)。
https://developer.nvidia.com/embedded/downloads
■otgデバイスモードでのファイル共有を動かしてみる
では本題に移っていきます。
otgデバイスモードでのファイル共有ですが、
Jetson側のMicroUSBポートとPCのUSBポートを接続
すれば、エクスプローラが表示され、ファイルの共有が行えるようになります。
初期状態は、”version”フォルダのみ存在しております。
何だ、簡単じゃん。
と思ったのですが、困ったことがありました😅。
PCからフォルダ追加やファイル修正等wireが出来ず、readのみ対応しているのはまぁよいのです。
ただ、Jetson側からもフォルダ内の書き込み・修正、すなわちwire動作が行えなかったのです。。。
■なぜJetson側からのwrite動作が行えないのか?
どうやら、
/opt/nvidia/l4t-usb-device-mode/filesystem.img
がループバックデバイスと登録されており、こちらのイメージファイルがマウントされて使用されている模様。
さらに
lsblk -f
でループバックデバイスを確認したところ、
/dev/loop0
がヒット。
ということで試しに、
sudo mount /dev/loop0 /mnt
を実行。
すると、
can't read superblock on /dev/loop0
とエラーになりマウントできず。。。
では、filesystem.imgをループバックマウントしたれ!!と思い実行。
sudo mount -t vfat -o loop /opt/nvidia/l4t-usb-device-mode/filesystem.img /mnt
すると、マウントは出来たのですが今度はこちらのようにReadOnlyである旨のエラーが出力。。。
mount: /mnt: WARNING: device write-protected, mounted read-only.
ということでJetson側からのファイル書き込みが行えない状態でしたとさ。
■対処!!
流石にこのままだと使い物にならないのでどうにかしてJetson側はWrite可能にしたいと思います!!
コマンドはこちらです。
sudo /opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode-stop.sh sudo losetup -D sudo mount -t vfat -o loop /opt/nvidia/l4t-usb-device-mode/filesystem.img /mnt sudo losetup --show --find /opt/nvidia/l4t-usb-device-mode/filesystem.img sudo /opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode-start.sh
実施していることですが、
sudo /opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode-stop.sh sudo losetup -D
にてotgデバイスモードを一旦停止かつデバイスのデタッチを実行。
そして、
sudo mount -t vfat -o loop /opt/nvidia/l4t-usb-device-mode/filesystem.img /mnt sudo losetup --show --find /opt/nvidia/l4t-usb-device-mode/filesystem.img sudo /opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode-start.sh
にて
"ループバックマウントを行った後にループバックデバイスとして登録、otgデバイスモード起動"
を実行しております。
起動時は、
ループバックデバイス登録⇒otgデバイスモード登録⇒ループバックマウント
の順になっていたためにReadOnlyになってしまっていたのですね。
なので、
ループバックマウント⇒ループバックデバイス登録⇒otgデバイスモード登録
とすることで解決させることが出来ます。
■せっかくなので
せっかくなのでループバックデバイスの新規作成手順についてもまとめておきます。
まず、ループバックデバイスが
/opt/nvidia/l4t-usb-device-mode/filesystem.img
となっているのは、
/opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode-config.sh
ファイル末尾の
# The disk image to export as a USB Mass Storage device fs_img="${script_dir}/filesystem.img"
にてコンフィグ設定されております。
もしfilesystem.imgではなくて別のファイル名がいい!!ですとか、
ファイルパスを変更したい!!
という場合にはこちらのコードを変更下さい。
さらにイメージファイルを作成する手順ですが、こちらのサイトに記載されている通り、
https://forums.developer.nvidia.com/t/how-to-set-tx2-otg-usb-as-device-mode/50771/48
sudo /opt/nvidia/l4t-usb-device-mode/nv-l4t-usb-device-mode-stop.sh sudo losetup -D sudo truncate /opt/nvidia/l4t-usb-device-mode/filesystem.img --size=2147483648 sudo losetup --show --find /opt/nvidia/l4t-usb-device-mode/filesystem.img sudo gdisk /dev/loop0 n クリック3回 w Y sudo mkfs.vfat /dev/loop0
になります。
n クリック3回 0700 w Y
ですが、gdiskを実行するといくつか入力を求められるのでこちらを実行下さい。ということです。
(分かりにくくてすいません😢)
/opt/nvidia/l4t-usb-device-mode/filesystem.imgファイルパスですが各自使用したいファイル名・パスに読み替えてください。
こちらのコマンド群ですがまず、
sudo truncate /opt/nvidia/l4t-usb-device-mode/filesystem.img --size=2147483648
にてイメージファイルを作成。
そして、
sudo gdisk /dev/loop0
にてパーティション作成。
sudo mkfs.vfat /dev/loop0
でvfatでフォーマットを実行。
になります。