背景
組込み用計算機Nvidia Jetson AGX Orinにはデバッグ用のUSBポートがあります。Twitter(現在X)で下記の呟きを見かけたので試したところ、sshログインやシリアル通信でのログインができました。
Jetson Orin Nano (に限らないとは思うけど)のはよくよく考えたらUSBポート経由でsshできる(PCからは192.168.55.0/24のネットワークに見える)のでデバッグに便利だ pic.twitter.com/bkT1KLPnBM
— Kenta Urano (@UranoVrano) December 5, 2024
備忘録として試した内容や関連情報を記事に残します。
使ったもの
- Jetson AGX Orin
Jetpack6.0.1をインストールしたものを使いました。 - USBを繋ぐ元のPC
ubuntu22.04をインストールしたノートPCで動作確認しました。 - USBケーブル A to C
- USBケーブル A to microB
type Cのケーブルがあるならそれで十分です。
microBでは閉じたネットワークはできません。
USB A to Cケーブルを繋ぐと、閉じたネットワーク、デバッグ用のシリアル、関連情報を含むメディアが作られる
場所: GPIO端子の横
GPIO端子の横のtypeCポートがそれです。
lsusb情報
lsusbで見れる接続情報はこちらです。Bus 002 Device 009: ID 0955:7020 NVIDIA Corp. L4T (Linux for Tegra) running on TegraProductIDはtypeCとmicroBで異なっており、typeCは7020、microBは7045でした。
メディア
メディア L4T-READMEがマウントされ、読み取り専用のバージョン情報が書かれたファイルを見れます。
更新日時が74年後の2098年のファイルがあるのは謎です。
閉じたネットワーク
USBネットワーク装置としても認識され、linuxのip aコマンドで見るとネットワークが増えているのを確認できます。17: enx5204524cc0c0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether 52:04:52:4c:c0:c0 brd ff:ff:ff:ff:ff:ff
inet6 fe80::45dd:3697:182c:379/64 scope link noprefixroute
valid_lft forever preferred_lft forever
18: enx5204524cc0c2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:04:52:4c:c0:c2 brd ff:ff:ff:ff:ff:ff
inet 192.168.55.100/24 brd 192.168.55.255 scope global dynamic noprefixroute enx5204524cc0c2
valid_lft 12sec preferred_lft 12sec
inet6 fe80::a133:ef31:564d:f9bf/64 scope link noprefixroute
valid_lft forever preferred_lft forever
閉じたネットワークとして192.168.55.*が作られています。
Jetsonはそれの1番 192.168.55.1として存在しています。
繋ぐ元のPCがubuntuなら下記のコマンドで存在を確認できます。
sudo nmap -sP 192.168.55.*
ということで、Jetsonのユーザー設定が済んでいるならsshでログインできます。
ssh [jetsonのユーザー名]@192.168.55.1
ネットワークなので、RDPを設定すればリモートデスクトップ接続もできます。
Nvidia Jetson AGX OrinにRDPでリモートデスクトップ接続
ログイン可能なシリアルポート
USBシリアルポートが1つ作られます。PCに他の装置をつなげていなければ、ubuntuの場合は/dev/ttyACM0です。
udevadm info -q all -n /dev/ttyACM0 | grep -E "(ID_MODEL|ID_VENDOR)"
E: ID_VENDOR_ID=0955
E: ID_MODEL_ID=7020
E: ID_VENDOR_FROM_DATABASE=NVIDIA Corp.
E: ID_MODEL_FROM_DATABASE=L4T (Linux for Tegra) running on Tegra
E: ID_VENDOR=NVIDIA
E: ID_VENDOR_ENC=NVIDIA
E: ID_MODEL=Linux_for_Tegra
E: ID_MODEL_ENC=Linux\x20for\x20Tegra
開発ガイドにも説明があります。
Board Automation - NVIDIA Jetson Linux Developer Guide 1 documentation
screenコマンドなどを利用してポートを開き、ユーザー名とパスワードを入力するとログインできます。
シリアル接続でログインするときの操作はraspberry piと同じなので、screenコマンドの扱い方は下記の記事が参考になると思います。
Raspberry Pi UART接続(ログイン)時の操作メモ
USB A to microBケーブルを繋ぐと、デバッグ用のシリアルと用途不明のシリアルポートが作られる
場所: Display Portの横
Display Portの横のmicroBポートがそれです。
lsusb情報
lsusbで見れる接続情報はこちらです。Bus 002 Device 013: ID 0955:7045 NVIDIA Corp. Tegra On-Platform OperatortypeCの説明の繰り返しになりますが、ProductIDはtypeCとmicroBで異なっており、typeCは7020、microBは7045でした。
ログイン可能なシリアルポート2つ、用途不明2つ
microB接続時はシリアルポートが4つ作られます。ubuntuの場合は/dev/ttyACM0 ~ ttyACM3です。
udevadmの製品情報はtypeCのときとは異なるものの、4つ全て同じでした。
udevadm info -n /dev/ttyACM0 | grep -E "(ID_MODEL|ID_VENDOR)"
E: ID_VENDOR_ID=0955
E: ID_MODEL_ID=7045
E: ID_VENDOR_FROM_DATABASE=NVIDIA Corp.
E: ID_MODEL_FROM_DATABASE=8 Series USB xHCI HC
E: ID_VENDOR=NVIDIA
E: ID_VENDOR_ENC=NVIDIA
E: ID_MODEL=Tegra_On-Platform_Operator
E: ID_MODEL_ENC=Tegra\x20On-Platform\x20Operator
シリアル接続でログインするときの操作はraspberry piと同じなので、screenコマンドの扱い方は下記の記事が参考になると思います。
Raspberry Pi UART接続(ログイン)時の操作メモ
ネットワークに関する説明が見当たらない
背景で紹介した呟きで情報を知り、typeCポートを繋ぐとネットワーク機器として認識されて追加のプログラムなど無しですぐにsshログインできたものの、関連情報が見当たらなかったので実機で試すまで半信半疑でした。説明資料を求めているフォーラムでも、USBで作られるネットワークに関する詳細情報は提示されてなかったです。
JP6 has no IP over USB 192.168.55.1 anymore
どなたか詳しい説明ページをご存知でしたら、教えていただけるとうれしいです。
おわり
Jetson AGX OrinのtypeCポートにUSBケーブルを繋ぐと閉じたネットワークやシリアルポートが作られ、Jetsonにログインできました。困った時にモニタ無しで内部状況を確認できて便利です。
参考
USBケーブルを繋ぐとネットワークが作られると知った呟きBoard Automation - NVIDIA Jetson Linux Developer Guide 1 documentation
JP6 has no IP over USB 192.168.55.1 anymore
Raspberry Pi UART接続(ログイン)時の操作メモ
0 件のコメント :
コメントを投稿