Jetson USB OTG
Jetson開発者キットはflush向けにデバイスモードのUSBポートを必ず用意しており、L4TではUSB Gadgetを使ってデバイスとして振る舞わせることが出来る。
/opt/nvidia/l4t-usb-device-mode/
にスクリプトがあるので細かいところはそちらを参照。
XavierNXまではMicro USB Type-B(2.0)だったが、Orin Nano開発者キットではUSB-Cになっていたし、デバイスツリーもUSB3.0っぽい書き方になっていたのでOTGでも本当にSSでつながるのかを確認する。
dmesgは以下の通り。
デフォルトでは16MBのfilesystem.img
では計測が難しそうなので2GBに増やしている。
PCからはsdb
として見えているのでここに対してhdparmでREAD計測してみる。
[ 1000.676448] usb 2-2: new SuperSpeed USB device number 4 using xhci_hcd
[ 1000.697212] usb 2-2: New USB device found, idVendor=0955, idProduct=7020, bcdDevice= 0.02
[ 1000.697222] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1000.697227] usb 2-2: Product: Linux for Tegra
[ 1000.697230] usb 2-2: Manufacturer: NVIDIA
[ 1000.697233] usb 2-2: SerialNumber: 1420923007007
[ 1000.797881] rndis_host 2-2:1.0 usb0: register 'rndis_host' at usb-0000:05:00.3-2, RNDIS device, 46:9b:0d:a5:4d:0b
[ 1000.798762] cdc_acm 2-2:1.2: ttyACM0: USB ACM device
[ 1000.799636] usb-storage 2-2:1.4: USB Mass Storage device detected
[ 1000.799934] scsi host1: usb-storage 2-2:1.4
[ 1000.820895] cdc_ncm 2-2:1.5: MAC-Address: 72:b0:fc:2d:2b:42
[ 1000.821301] cdc_ncm 2-2:1.5 usb1: register 'cdc_ncm' at usb-0000:05:00.3-2, CDC NCM, 72:b0:fc:2d:2b:42
[ 1000.844294] cdc_ncm 2-2:1.5 enx72b0fc2d2b42: renamed from usb1
[ 1000.988269] IPv6: ADDRCONF(NETDEV_CHANGE): enx72b0fc2d2b42: link becomes ready
[ 1001.825078] scsi 1:0:0:0: Direct-Access Linux File-Stor Gadget 0510 PQ: 0 ANSI: 2
[ 1001.825650] sd 1:0:0:0: Attached scsi generic sg1 type 0
[ 1001.826183] sd 1:0:0:0: Power-on or device reset occurred
[ 1001.826867] sd 1:0:0:0: [sdb] 4194304 512-byte logical blocks: (2.15 GB/2.00 GiB)
[ 1001.827509] sd 1:0:0:0: [sdb] Write Protect is on
[ 1001.827517] sd 1:0:0:0: [sdb] Mode Sense: 0f 00 80 00
[ 1001.827869] sd 1:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 1001.831340] sdb:
[ 1001.833631] sd 1:0:0:0: [sdb] Attached SCSI removable disk
USB3.0
USB3.0対応のケーブルで繋ぐと以下のようにSSで認識
$ lsusb -t
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 10000M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
|__ Port 2: Dev 4, If 0, Class=Communications, Driver=rndis_host, 5000M
|__ Port 2: Dev 4, If 1, Class=CDC Data, Driver=rndis_host, 5000M
|__ Port 2: Dev 4, If 2, Class=Communications, Driver=cdc_acm, 5000M
|__ Port 2: Dev 4, If 3, Class=CDC Data, Driver=cdc_acm, 5000M
|__ Port 2: Dev 4, If 4, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 2: Dev 4, If 5, Class=Communications, Driver=cdc_ncm, 5000M
|__ Port 2: Dev 4, If 6, Class=CDC Data, Driver=cdc_ncm, 5000M
$ sudo /sbin/hdparm -t /dev/sdb
/dev/sdb:
Timing buffered disk reads: 868 MB in 3.00 seconds = 289.15 MB/sec
実測値は2313.2Mpbsで安定している
USB2.0
同じケーブルをゆっくり差し込むとUSB2.0でつながる。
こちらは480Mbpsとなった。
lsusb -t
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 10000M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
|__ Port 3: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M
|__ Port 1: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 2: Dev 6, If 4, Class=Mass Storage, Driver=usb-storage, 480M
|__ Port 2: Dev 6, If 2, Class=Communications, Driver=cdc_acm, 480M
|__ Port 2: Dev 6, If 0, Class=Communications, Driver=rndis_host, 480M
|__ Port 2: Dev 6, If 5, Class=Communications, Driver=cdc_ncm, 480M
|__ Port 2: Dev 6, If 3, Class=CDC Data, Driver=cdc_acm, 480M
|__ Port 2: Dev 6, If 1, Class=CDC Data, Driver=rndis_host, 480M
|__ Port 2: Dev 6, If 6, Class=CDC Data, Driver=cdc_ncm, 480M
$ sudo /sbin/hdparm -t /dev/sdb
/dev/sdb:
Timing buffered disk reads: 108 MB in 3.00 seconds = 35.96 MB/sec
実測は287.68 Mbps
結論
Orin Nano リファレンスキャリアボードのOTGポートはSuperSpeedでつながる