AIR 030 Development

From ESS-WIKI
Revision as of 08:13, 26 September 2023 by Liszt.kao (talk | contribs)
Jump to: navigation, search

Flash Image

Change the SW2 to ON and press power button.
Air030 recovery button.jpg
Connect a linux OS host wired AIR-030 with usb-otg cable.
In the Host PC, make sure the AIR-030 (NVidia Corp) has detectd.

[ubuntu@linux 11:55:43 ~]$ lsusb 
Bus 002 Device 002: ID 8087:8000 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0bda:0161 Realtek Semiconductor Corp. Mass Storage Device
Bus 001 Device 024: ID 0955:7223 NVidia Corp.
Bus 001 Device 002: ID 8087:8008 Intel Corp.
Please Check there is 7223 NVidia Corp

For Jackpack 5.1.1
1.Extracted tarball file

$ sudo apt install build-essential python libxml2-utils abootimg sshpass binutils -y
$ sudo tar -zxvf air030_image_XXXXXX.tar.gz
$ cd Linux_for_Tegra

2. Flash

$ sudo ./flash.sh -d rootfs/boot/tegra234-air030.dtb jetson-agx-orin-devkit mmcblk0p1​​

To NVME

$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c ./tools/kernel_flash/flash_l4t_external.xml -S 32GB --erase-all --showlogs jetson-agx-orin-devkit nvme0n1p1

Tools

JTOP

install

$ sudo apt update
$ sudo apt install python3-pip
$ sudo pip3 install -U jetson-stats

Run

$ sudo jtop

Test Command

GPIO Expander

Test GPIO high/low
Air030 gpio expander io.png
1).Switch to root

ubuntu@localhost:~ sudo -s

2).Commnad : where <GPIO> : GPIO0(GPIO300)~GPIO15(GPIO315) and <LEVEL> : high(1)/low(0)
For example, pull up GPIO0 to high.

root@localhost:/home/ubuntu# echo 300 > /sys/class/gpio/export
root@localhost:/home/ubuntu# echo out > /sys/class/gpio/gpio300/direction
root@localhost:/home/ubuntu# echo 1 > /sys/class/gpio/gpio300/value

WatchDog

root@linux:/home/ubuntu$ sudo -s
root@linux:/home/ubuntu# sync; sleep 2; sync; echo c > /proc/sysrq-trigger

RTC

DUT AC on:
1. Power on DUT and boot into OS.
2. Connect a LAN cable from the DUT to DHCP server.
3. Get a dynamic IP from DHCP server.
4. Type cmd to disable ntp service in DUT.

# sudo timedatectl set-ntp false

5. Synchronize system time and RTC time with NTP server.

# ntpdate tock.stdtime.gov.tw <===安裝ntpdate方式: $sudo apt-get install ntpdate <enter> 
# hwclock -w 

6. Keep the DUT on for 24 hours.
7. Synchronize system time and RTC time with NTP server again and check inaccuracies.

# ntpdate tock.stdtime.gov.tw && hwclock -s &&ntpdate -u tock.stdtime.gov.tw 

TPM

(1)產生randon code

root@linux:/home/ubuntu# tpm2_getrandom --hex 20

(2) 對指定檔案 msg.dat 加密

root@linux:/home/ubuntu# tpm2_createprimary -C p -c platform_primary.ctx
root@linux:/home/ubuntu# tpm2_create -C platform_primary.ctx -G rsa2048 -u key.pub -r key.priv
root@linux:/home/ubuntu# tpm2_load -C platform_primary.ctx -u key.pub -r key.priv -c key.ctx
root@linux:/home/ubuntu# echo "my test" >msg.dat
root@linux:/home/ubuntu# tpm2_rsaencrypt -c key.ctx -o msg.enc msg.dat
root@linux:/home/ubuntu# cat msg.enc
root@linux:/home/ubuntu# tpm2_rsadecrypt -c key.ctx -o msg.ptext msg.enc
root@linux:/home/ubuntu# cat msg.ptext 
root@linux:/home/ubuntu# cat msg.dat

(3) 將資料儲存至 tpm 內存

root@linux:/home/ubuntu# tpm2_nvdefine -Q 0x1500031 -C o -s 32 -a "ownerread|policywrite|ownerwrite"
root@linux:/home/ubuntu# echo "write_tpm_adv" >  adv.data
root@linux:/home/ubuntu# tpm2_nvwrite -Q 0x1500031 -C o -i adv.data
root@linux:/home/ubuntu# tpm2_nvread -Q 0x1500031 -C o -s 32 -o read.data
root@linux:/home/ubuntu# cat read.data

(4) 確認已經寫入儲存區域 

root@linux:/home/ubuntu# tpm2_nvreadpublic > nv.out
root@linux:/home/ubuntu# cat nv.out

Error

ERROR: Esys_NV_DefineSpace(0x14C) - tpm:error(2.0): NV Index or persistent object already defined
ERROR: Failed to create NV index 0x1500031.

fixed

root@linux:/home/ubuntu# tpm2_nvundefine 0x1500031

LAN

LAN1USB12 - eth01
LAN2USB34 - eth02
LAN3 - eth00

UART

COMPort.png
COMPortSwitchDefine.png
RS232 (COMX_SW1 : OFF-OFF-X-X)

 

COM Port Command (Please switch to root first before test)
COM1 stty -F /dev/ttyTHS0 speed 115200 raw -echo
cat /dev/ttyTHS0 &
echo "1234" > /dev/ttyTHS0
COM2 stty -F /dev/ttyTHS4 speed 115200 raw -echo
cat /dev/ttyTHS4 &
echo "1234" > /dev/ttyTHS4
COM4 stty -F /dev/ttyTHS3 speed 115200 raw -echo
cat /dev/ttyTHS3 &
echo "1234" > /dev/ttyTHS3
COM5 stty -F /dev/ttyTHS1 speed 115200 raw -echo
cat /dev/ttyTHS1 &
echo "1234" > /dev/ttyTHS1

RS422
Send and Received port
(COM<PORT>_SW1 : ON-OFF-ON-OFF)

RS485
Send port
(COM<inPort>_SW1 ON-ON-ON-OFF)
Received port
(COM<outPort>_SW1 ON-ON-ON-ON)

Setup up baudrate

# stty -F /dev/ttyTHS<SEND_UART_NO> speed 115200
# stty -F /dev/ttyTHS<RECEIVE_UART_NO> speed 115200

Test

# cat /dev/ttyTHS<RECEIVE_UART_NO> &
# echo "1234" > /dev/ttyTHS<SEND_UART_NO>

Software control
(COM<inPort>_SWx ON-ON-OFF-ON)
AIR-030 RTSGPIO號碼

UART1_RTS L51 GPIO3_PR.04 gpio-460 (PR.04)
UART2_RTS G58 GPIO3_PY.07 gpio-477 (PY.07)
UART4_RTS L4 GPIO3_PH.05 gpio-396 (PH.05)
UART5_RTS K58 GPIO3_PX.06 gpio-468 (PX.06)

舉起每個COMRTS pin的方式如下(UART1 RTS來說)

1.權限

ubuntu@localhost:~$ sudo –s

2.設定

root@localhost:/home/ubuntu# echo 460 > /sys/class/gpio/export
root@localhost:/home/ubuntu# ls /sys/class/gpio/
export gpiochip300 gpiochip316 gpiochip348 PR.04 unexport
root@localhost:/home/ubuntu# echo out > /sys/class/gpio/PR.04/direction
root@localhost:/home/ubuntu# echo 1 > /sys/class/gpio/PR.04/value

3.驗證

root@localhost:/home/ubuntu# cat /sys/kernel/debug/gpio | grep PR.04
gpio-460 (PR.04 |sysfs ) out hi

Audio

HDMI output

$ aplay -D hw:0,3 <WAV file>

Line-Out

$ aplay -D hw:1,0 <WAV file>

FAN

Change PWM value ${PWM} from 1 ~ 255.

ubuntu@localhost:~$ sudo -s
For R35.1.0
root@localhost:/home/ubuntu# echo ${PWM} > /sys/class/hwmon/hwmon3/pwm1
For R35.3.1
root@localhost:/home/ubuntu# echo ${PWM} > /sys/class/hwmon/hwmon4/pwm1

Before test this item, please disable fan-control service.(Only for R35.1.0)

$ sudo systemctl disable nvfancontrol.service

nVidia:fan-profile-control

CAN

030CAN.png
CAN LoopbackTest.png

$ modprobe can
$ modprobe can-dev
$ modprobe mttcan
$ ip link set can0 type can bitrate 500000
$ ip link set can0 up
$ ip link set can1 type can bitrate 500000
$ ip link set can1 up

In other terminal, run below command

$ candump can1

then run

$ cansend can0 123#abcdabcd

USB

To test U-Disk read speed

$ sudo -s
# fio --ioengine=libaio --prio=0 --numjobs=1 --direct=1 --iodepth=32 --runtime=<runtime> --bwavgtime=5000 --time_based --rw=read --bs=128k --group_reporting --name=<device_path>

Where:
<runtime> : how long the test time (ms), ex : 30 second :  --runtime=30000
<device_path> : ex: --name=/dev/sda1

Camera

The imx219 mode:
Size: Discrete 3280x2464 Interval: Discrete 0.048s (21.000 fps)
Size: Discrete 3280x1848 Interval: Discrete 0.036s (28.000 fps)
Size: Discrete 1920x1080 Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1640x1232 Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1280x720 Interval: Discrete 0.017s (60.000 fps)

Preview command:
3280x2464

$ gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=3280, height=2464, format=NV12, framerate=21/1' ! nv3dsink

3280x1848

$ gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=3280, height=1848, format=NV12, framerate=28/1' ! nv3dsink

1920x1080

$ gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=1920, height=1080, format=NV12, framerate=29/1' ! nv3dsink

1640x1232

$ gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=1640, height=1232, format=NV12, framerate=29/1' ! nv3dsink

1280x720

$ gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=1280, height=720, format=NV12, framerate=59/1' ! nv3dsink

Power Mode

Supported-modes-and-power-efficiency

Flash Mac

I225 Flash Tool
Copy and extract I225_Flash_Tool.zip in the device.

ubuntu@localhost:~$ unzip I225_Flash_Tool.zip

Chanage the tool execution permission.

<pre>ubuntu@localhost:~$ sudo chmod a+x ./EepromAccessTool

Check All Intel-226 Module in PCI bus, The BDF(bus number/device number/function number) value will be first column.

ubuntu@localhost:~$ lspci
0004:00:00.0 PCI bridge: NVIDIA Corporation Device 229c (rev a1)
0004:01:00.0 PCI bridge: ASMedia Technology Inc. Device 2806 (rev 01)
0004:02:00.0 PCI bridge: ASMedia Technology Inc. Device 2806 (rev 01)
0004:02:06.0 PCI bridge: ASMedia Technology Inc. Device 2806 (rev 01)
0004:02:0e.0 PCI bridge: ASMedia Technology Inc. Device 2806 (rev 01)
0004:04:00.0 Ethernet controller: Intel Corporation Device 15f2 (rev 03)
0004:05:00.0 Ethernet controller: Intel Corporation Device 15f2 (rev 03)

Check NIC value with EepromAccessTool tool.

ubuntu@localhost:~$ ./EepromAccessTool
Intel(R) EEPROM Access Tool NVM/OTP Programming Example Tool   Version 0.8.0
Provided under the terms of a CNDA.  Do Not Distribute.
Copyright(C) 2017-2020 by Intel(R) Corporation
NIC     BUS     DEV     FUN     Silicon Memory Type Present
===     ===     ===     ===     =====   ======================
Check Command open to write error
 1      4        0       0      I225         FLASH
Check Command open to write error
 2      5        0       0      I225         FLASH

Flash Mac Address To get -nic value and BDF value please using above method.

$ sudo -s
# setpci -s 0004:04:00.0 COMMAND=0007
# ./EepromAccessTool -nic=1 -f=FXVL_15F2_LM_2MB_ARK_1.82_D.bin -mac=D4E5F6123456

The other Intel-I226

#setpci -s 0004:05:00.0 COMMAND=0007 
#./EepromAccessTool -nic=2 -f=FXVL_15F2_LM_2MB_ARK_1.82_D.bin -mac=D4E5F6123457 

Please do cold reboot after flash mac address.

How to check whether the flash proccess is success or not

  • lspci command - If it is 0x125f value, it failed.
  • ifconfig -a - Check the nerwork interface is available. ex: eth0, eth1 and so on.

Boot On Off

The boot count message will be printed before log-in.
Air030 bootcount.jpg
Reset the boot count please remove bootCount.tt.

$ rm bootCount.tt

THERMAL / EMI Burning

Install prerequisite packages

$ sudo apt install --yes nvidia-jetpack

pva engine

/opt/nvidia/vpi2/samples/05-benchmark/vpi_sample_05_benchmark

GPU
matrixMul (Depreciated)

/usr/local/cuda-11.4/samples/0_Simple/matrixMul/

More power consumption version (nVidia suggestion + 0001-half-matrixMulCUBLAS.patch)
matrixMulCUBLAS

/usr/local/cuda-11.4/samples/0_Simple/matrixMulCUBLAS/

emc  engine

sudo apt install mbw

cpu

sudo apt install stress

dla0 dla1  engine

/usr/src/tensorrt/bin/trtexec

nvenc engine - USB camera

$ gst-launch-1.0  v4l2src device=/dev/video0 ! 'video/x-raw,width=1280,height=720' ! nvvidconv ! 'video/x-raw(memory:NVMM)' ! nvvidconv ! 'video/x-raw(memory:NVMM)' ! nvv4l2h264enc ! fakesink

nvdec engine - play 4K H264 video

gst-launch-1.0 filesrc location=/usr/local/bin/4k264.mp4 ! qtdemux ! queue ! h264parse ! nvv4l2decoder ! 'video/x-raw(memory:NVMM), format=(string)NV12' ! queue ! fakesink

ape  engine

aplay -D hw:1,0 /usr/local/bin/1kHz.wav

Module

AW-CB375NF(EWM-W159M201E)

Adjust dip switch

  • LAN3_MKE_SW1 - SW1 : ON
  • UART5_SW1 - SW1 : OFF

AIR030_LAN3_MKE_SW1.jpg Air030_uart5_selection.jpg

Wi-Fi
Start interface

$ sudo ifconfig wlan0 up

$ Scan AP

$ sudo iw dev wlan0 scan ap-force

Bluetooth

$ bluetoothctl
[bluetooth]# agent on
[bluetooth]# scan on

AW-CB511NF

Adjust dip switch

  • LAN3_MKE_SW1 - SW1 : ON
  • UART5_SW2 - SW1 : OFF

Wi-Fi
Start interface

$ sudo ifconfig wlan0 up

$ Scan AP

$ sudo iw dev wlan0 scan ap-force

Bluetooth

$ sudo -s
# hciattach /dev/ttyTHS1 bcm43xx 3000000 flow -t 20
# bluetoothctl
[bluetooth]# agent on
[bluetooth]# scan on

AIW-355

Air030_uart5_selection.jpg Check the module is available.

ubuntu@localhost:~$ lsusb
Bus 002 Device 002: ID 05e3:0625 Genesys Logic, Inc. USB3.2 Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 2cb7:0104
buntu@localhost:~$ ifconfig usb0
        usb0: flags=4227<UP,BROADCAST,NOARP,MULTICAST> mtu 1500
        ether 00:33:34:37:35:33  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
ubuntu@localhost:~$ sudo dmesg | grep usb0 
[ 14.115707] GobiNet 1-3.4:1.4 usb0: register 'GobiNet' at usb-3610000.xhci-3.4, GobiNet Ethernet Device, d2:77:82:0c:af:59

Switch mode:

$ sudo minicom -D /dev/ttyUSBx

ATcommand : at+gtusbmode=32
30 : mbim
32 : rmnet(gobinet)

Image

The test image is available HERE. The 1st and 2nd image is only available for AGX-ORIN devkit.

  Image Release Note
1 air030_image_20221006.tar.gz The first boot up image verified on AGX-ORIN Devkit.
2 air030_image_20221006_bootonoff.tar.gz Based on air030_image_20221006.tar.gz added boot on off feature (The system will power off after 40 seconnds)
3 air030_image_20221020_burning_test.tar.gz For power/thermal/SI power sequence used
Burning Testing SOP
4 air030_image_20221110.tar.gz  
5 air030_image_20221110_burning.tar.gz For Power/Thermal/EMI test using.
6 air030_image_20221123.tar.gz fix HDMI hotplug in HD (4K:TBD)
7 air030_image_20221128_dqatest.tar For DQA & QA using
QA Testing SOP
8 air030_image_20221201_poweronoff_at_mode.tar.gz Power On OFF test with AT mode + BOOT count
9 air030_image_20221201_poweronoff_atx_mode.tar.gz Power On OFF test with ATX mode + BOOT count
10 air030_image_20221216.tar.gz fix:
1).Date and Time 的時間只要reboot 後就會又回到 April 21.
2).QA - USB3.2 port 1/2 speed 及 Type C port performance 太低, 約 40MB/s
3).開機後第1次接(或接著disk開機), OS的左側工作列看得到disk符號(lsblk也看得到), 熱插拔後再接上 OS 左側工作列看不到disk(lsblk也看不到), 試過兩台type c USB disk(Sandisk and Seagate) 一樣問題.
4).USB3.2 port1/2接 Sandisk USB3.2 gen2 x1 500G disk (E80)熱插拔後認不到, 接Seagate USB3.2 gen2x2 500G disk完全偵測不到(reboot 也沒用).
11 air030_image_20221226.tar.gz Added HDMI hotplug patch.
Added EWM-W159 outbox driver.
12 air030_image_20221229.tar.gz Modify dp_aux pinmux for HDMI.
13 air030_image_20230204_factory_test.tar For factory test used.
Air030_factory_test.pdf
14 air030_image_20230220_factory_test.tar For factory test used.
Add flash/read mac address, rtc time, watchdog
Air030_factory_test_20230217.pdf
15 air030_image_20230303_dqatest.tar.gz  
16 air030_image_20230307_burning.tar.gz For SE / PV using.
17 air030_image_20220324_dqatest.tar.gz For DQA using (Jetpack 5.1/L4T 35.2.1)
Its only provided camera feature.
The test commnand please check the camera section.
18 air030_image_20230410_thermal.tar.gz (Jetpack 5.1.1/L4T 35.3.1)
19 air030_image_20230411_dqatest.tar.gz (Jetpack 5.1.1/L4T 35.3.1)
20 air030_image_20230412_factory_test.tar.gz (Jetpack 5.1.1/L4T 35.3.1)
21 air030_image_20230428_poweronoff_atx_mode.tar.gz (Jetpack 5.1.1/L4T 35.3.1)
Patched the mb1_35.3.1_overlay.tbz2 for the issue "Can't Boot in Cold Start Test".
22 air030_image_20230503_poweronoff_atx_mode.tar.gz (Jetpack 5.1.1/L4T 35.3.1)
Patched the mb1_35.3.1_overlay.tbz2 for the issue "Can't Boot in Cold Start Test".
23 air030_image_20230508_dqatest.tar.gz (Jetpack 5.1.1/L4T 35.3.1)
fix COM2 function.".
24 air030_image_20230509_factory_test.tar.gz (Jetpack 5.1.1/L4T 35.3.1)
Note:
[Audio]Remove "hit a enter" before testing audio playback.
[Burning]Add function timeout after 2hr.
25 air030_image_20230510_poweronoff_at_mode.tar.gz (Jetpack 5.1.1/L4T 35.3.1)
26 air030_image_20230516_dqatest.tar.gz (Jetpack 5.1.1/L4T 35.3.1)
Note:
[UI]Fix "System hang by adjusting date time widget".
27 air030_image_20230518_poweronoff_atx_mode.tar.gz (Jetpack 5.1.1/L4T 35.3.1)
Note: Patch optee.
28 air030_image_20230703_dqatest.tar.gz (Jetpack 5.1.1/L4T 35.3.1)
Note: Fix com2 function error for 64GB.