Difference between revisions of "AIR 030 Development"

From ESS-WIKI
Jump to: navigation, search
Line 35: Line 35:
 
root@localhost:/home/ubuntu# echo out > /sys/class/gpio/gpio300/direction
 
root@localhost:/home/ubuntu# echo out > /sys/class/gpio/gpio300/direction
 
root@localhost:/home/ubuntu# echo 1 > /sys/class/gpio/gpio300/value
 
root@localhost:/home/ubuntu# echo 1 > /sys/class/gpio/gpio300/value
 +
</pre>
 +
 +
==== '''WatchDog''' ====
 +
<pre>
 +
root@linux:/home/ubuntu$ sudo -s
 +
root@linux:/home/ubuntu# sync; sleep 2; sync; echo c > /proc/sysrq-trigger
 
</pre>
 
</pre>
  

Revision as of 09:03, 8 February 2023

Flash Image

Keep pressing recovery button 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.

Extract image

$ tar -zxvf air030_image_XXXXXX.tar.gz

Flash image

$ cd bootloader
$ sudo -s
# source flashcmd.txt

Tools

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

Air030 uart mapping table.jpg
Air030_uart5_selection.jpg
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>

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
root@localhost:/home/ubuntu# echo ${PWM} > /sys/class/hwmon/hwmon3/pwm1

Before test this item, please disable fan-control service.

$ sudo systemctl disable nvfancontrol.service

nVidia:fan-profile-control

CAN

$ 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

$ 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

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

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

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