Difference between revisions of "AFE R750 Development"

From ESS-WIKI
Jump to: navigation, search
 
(33 intermediate revisions by 2 users not shown)
Line 11: Line 11:
 
</pre>
 
</pre>
  
==BootCount==
 
 
== Tools ==
 
== Tools ==
 
[[File:750agx-1.png|600px|border]]
 
[[File:750agx-1.png|600px|border]]
Line 17: Line 16:
  
 
<span style="color:#FF0000;">'''JP6.2'''</span>
 
<span style="color:#FF0000;">'''JP6.2'''</span>
 +
 +
==== '''HDMI''' ====
 +
Set on debug port
 +
<pre>
 +
$ export DISPLAY=:0
 +
$ xrandr
 +
</pre>
 +
Image resolution : Full HD 1920 x 1080 pixels
 +
<pre>
 +
$ xrandr -d :0 --output HDMI-0 --mode 1920x1080 -r 60.00
 +
</pre>
 +
Image resolution : 4K 3840 x 2160 pixels
 +
<pre>
 +
$ xrandr -d :0 --output HDMI-0 --mode 3840x2160 -r 60.00
 +
</pre>
 +
[[File:021-xrandr.png|600px|border]]
 +
 +
==== '''FAN''' ====
 +
Set value 0~255
 +
<pre>
 +
$ sudo su
 +
$ echo 255 > /sys/class/hwmon/hwmon0/pwm1
 +
</pre>
  
 
==== '''CAN''' ====
 
==== '''CAN''' ====
Line 59: Line 81:
 
</pre>
 
</pre>
  
(1)產生randon code
+
(1) generate randon code
 
<pre>$ sudo su
 
<pre>$ sudo su
 
</pre>
 
</pre>
Line 65: Line 87:
 
</pre>
 
</pre>
  
(2) 對指定檔案 msg.dat 加密
+
(2) encrypted target file msg.dat
 
<pre>root@linux:/home/ubuntu# tpm2_createprimary -C p -c platform_primary.ctx
 
<pre>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_create -C platform_primary.ctx -G rsa2048 -u key.pub -r key.priv
Line 77: Line 99:
 
</pre>
 
</pre>
  
(3) 將資料儲存至 tpm 內存
+
(3) store data into tpm  
 
<pre>root@linux:/home/ubuntu# tpm2_nvdefine -Q 0x1500031 -C o -s 32 -a "ownerread|policywrite|ownerwrite"
 
<pre>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# echo "write_tpm_adv" >  adv.data
Line 85: Line 107:
 
</pre>
 
</pre>
  
(4) 確認已經寫入儲存區域 
+
(4) check the data has been stored tpm 
 
<pre>root@linux:/home/ubuntu# tpm2_nvreadpublic > nv.out
 
<pre>root@linux:/home/ubuntu# tpm2_nvreadpublic > nv.out
 
root@linux:/home/ubuntu# cat nv.out
 
root@linux:/home/ubuntu# cat nv.out
Line 102: Line 124:
 
1. Please remove all internet.
 
1. Please remove all internet.
 
<pre>
 
<pre>
$ sudo su
+
$ sudo timedatectl
# date 010610452023 && hwclock -w && date
+
</pre>
# date 010100002000 && hwclock -r && date
+
 
# hwclock -s && date
+
==== '''DIO GPIO''' ====
# reboot
+
[[File:750 dio gpio.jpg|600px|border]]
$ sudo su
+
<br/>
# hwclock -s && date
+
[[File:750 dio gpio 1.jpg|600px|border]]
 +
<br/>
 +
 
 +
<pre>
 +
$ gpioinfo
 +
</pre>
 +
 
 +
GPI_1~GPI_8 (gpio300~gpio307) Can only be set input
 +
<pre>
 +
$ gpioget gpiochip2 0
 +
</pre>
 +
 
 +
GPO_1~GPO_8(gpio308~gpio315) Can only be set output
 +
<pre>
 +
$ gpioset gpiochip2 8=1
 
</pre>
 
</pre>
  
Line 140: Line 176:
 
<br/> COM1_SW1 ON-OFF-ON-OFF
 
<br/> COM1_SW1 ON-OFF-ON-OFF
 
<pre>
 
<pre>
stty -F /dev/ttyTHS1 speed 115200
+
$ sudo su
cat /dev/ttyTHS1 &
+
# stty -F /dev/ttyTHS1 speed 115200
echo "1234" > /dev/ttyTHS1
+
# cat /dev/ttyTHS1 &
 +
# echo "1234" > /dev/ttyTHS1
 
</pre>
 
</pre>
  
<Transmit> In other device terminal, run below command
+
<Transmit> In other terminal, run below command
<br/> COM1_SW1 ON-OFF-ON-OFF
+
<br/> COM2_SW1 ON-OFF-ON-OFF
 
<pre>
 
<pre>
stty -F /dev/ttyTHS2 speed 115200
+
$ sudo su
cat /dev/ttyTHS2 &
+
# stty -F /dev/ttyTHS2 speed 115200
echo "1234" > /dev/ttyTHS2
+
# cat /dev/ttyTHS2 &
 +
# echo "1234" > /dev/ttyTHS2
 
</pre>
 
</pre>
  
Line 163: Line 201:
 
</pre>
 
</pre>
  
<Transmit> In other device terminal, run below command
+
<Transmit> In other terminal, run below command
<br/> COM1_SW1 ON-ON-ON-OFF
+
<br/> COM2_SW1 ON-ON-ON-OFF
 +
<pre>
 +
$ sudo su
 +
# stty -F /dev/ttyTHS2 speed 115200 raw -echo
 +
# cat /dev/ttyTHS2 &
 +
# echo "1234" > /dev/ttyTHS2
 +
</pre>
 +
 
 +
==== '''IMU''' ====
 +
 
 +
===== '''BMI088''' =====
 +
Please reference : https://docs.nvidia.com/jetson/archives/r36.4/DeveloperGuide/SD/Kernel/Bmi088ImuIioDriver.html?highlight=bmi088
 
<pre>
 
<pre>
 
$ sudo su
 
$ sudo su
# stty -F /dev/ttyTHS1 speed 115200 raw -echo
+
# echo 0 > /sys/bus/iio/devices/iio\:device0/scan_elements/in_timestamp_en
# cat /dev/ttyTHS1 &
+
# /usr/local/bin/IMU/iio_generic_buffer -a -c 10 --device-name accelerometer -g
# echo "1234" > /dev/ttyTHS1
+
# /usr/local/bin/IMU/iio_generic_buffer -a -c 10 --device-name gyroscope -g
 +
</pre>
 +
 
 +
===== '''MTi''' =====
 +
<pre>
 +
$ sudo chmod 777 /dev/ttyTHS3
 +
$ stty -F /dev/ttyTHS3 speed 115200 raw -echo
 +
$ cat /dev/ttyTHS3 | xxd -g1 | grep -i "fa ff 36"
 +
</pre>
 +
[[File:MTi.png|600px|border]]
 +
 
 +
==== '''AIW Tool''' ====
 +
===== AIW-357 =====
 +
For JP6.1 first need to soft link source for build driver
 +
<pre>
 +
$ cd /lib/modules/<kernel version>/build/arch/
 +
$ sudo ln -s arm64 aarch64
 +
</pre>
 +
Tar file
 +
<pre>
 +
$ cd /usr/local/bin/AIW-357
 +
$ sudo tar -xvf AIWS00LTX0317.tar.bz2
 +
</pre>
 +
Build driver
 +
<br/>
 +
Please reference AIW [https://docs.aiw-module.advantech.com/assets/files/AIW-Tool_UserGuide_v1.0-cc56524ec46f5992c290edbe56f94bf3.pdf Document]
 +
 
 +
<br/>
 +
For JP6.2 RealTime setting sop
 +
<br/>
 +
Please reference [https://docs.nvidia.com/jetson/archives/r36.4.3/DeveloperGuide/SD/Kernel/KernelCustomization.html#using-the-jetson-linux-real-time-kernel-package NVRealTime]
 +
<br/>
 +
Add the RT kernel repository
 +
<pre>
 +
$ sudo vi /etc/apt/sources.list.d/nvidia-l4t-apt-source.list
 +
</pre>
 +
deb https://repo.download.nvidia.com/jetson/rt-kernel r36.4 main
 +
<br/>
 +
[[File:RT.png|600px|border]]
 +
<br/>
 +
<pre>
 +
$ sudo apt update
 +
$ sudo apt install nvidia-l4t-rt-kernel nvidia-l4t-rt-kernel-headers nvidia-l4t-rt-kernel-oot-modules nvidia-l4t-display-rt-kernel
 +
</pre>
 +
Cold reboot the device.
 +
<br/>
 +
Need to soft link source for build driver
 +
<pre>
 +
$ sudo ln -sf /usr/src/linux-headers-5.15.148-rt-tegra-ubuntu22.04_aarch64/3rdparty/canonical/linux-jammy/kernel-source /lib/modules/5.15.148-rt-tegra/build
 +
$ cd /lib/modules/5.15.148-rt-tegra/build/arch/
 +
$ sudo ln -s arm64 aarch64
 +
</pre>
 +
Tar file
 +
<pre>
 +
$ cd /usr/local/bin/AIW-357
 +
$ sudo tar -xvf AIWS00LTX0317.tar.bz2
 +
</pre>
 +
Build driver
 +
<br/>
 +
Please reference AIW [https://docs.aiw-module.advantech.com/assets/files/AIW-Tool_UserGuide_v1.0-cc56524ec46f5992c290edbe56f94bf3.pdf Document]
 +
 
 +
===== EWM-W179M201E =====
 +
First need to install WIFI module
 +
<pre>
 +
$ cd /usr/local/bin/EWM-W179
 +
$ sudo su
 +
# modprobe cfg80211
 +
# insmod rtk_btusb.ko
 +
# insmod 8852be.ko
 +
</pre>
 +
 
 +
===== AIW-170 =====
 +
First need to install WIFI module
 +
<pre>
 +
$ cd /usr/local/bin/AIW-170
 +
$ sudo su
 +
# insmod btbcm.ko
 +
# insmod btintel.ko
 +
# insmod btqca.ko
 +
# insmod btrtl.ko
 +
# insmod btusb.ko
 +
# modprobe cfg80211
 +
# insmod wlan_cnss_core_pcie.ko
 +
# insmod wlan.ko
 
</pre>
 
</pre>
  
Line 224: Line 356:
 
$ cd /home/ubuntu
 
$ cd /home/ubuntu
 
$ sudo ./enable-otocamera.sh
 
$ sudo ./enable-otocamera.sh
 +
</pre>
 +
 +
 +
===== '''Orbbec Camera''' =====
 +
 +
Camera type : Orbbec Gemini 335Lg
 +
<br/>
 +
Model : G40055-270
 +
<br/>
 +
HW setting : Camera link to GMSL port
 +
<br/>
 +
AGX Orin :
 +
<br/>
 +
[[File:Orbcam agx.png|600px|border]]
 +
<br/>
 +
Orin Nx :
 +
<br/>
 +
[[File:Orbcam nx.png|600px|border]]
 +
<br/>
 +
Please install camera driver first
 +
<br/>
 +
<pre>
 +
$ cd /usr/local/bin/gemini335lg
 +
</pre>
 +
 +
Choose your module
 +
<pre>
 +
$ sudo ./set_gemini335lg_agxorin_64g_32g.sh
 +
</pre>
 +
<pre>
 +
$ sudo ./set_gemini335lg_orinnx_16g.sh
 +
</pre>
 +
 +
Cold reboot the device.
 +
<br/>
 +
 +
Check Video channel "video0"...
 +
<pre>
 +
$ ls /dev/video*
 +
</pre>
 +
 +
Preview command
 +
<br/>
 +
Attention : <span data-darkreader-inline-color="" style="color: rgb(205, 0, 0); --darkreader-inline-color: #ff3d3d;">Ports 6 and 8 of the AGX Orin are unavailable, this is a limitation. </span>
 +
<br/>
 +
<pre>
 +
$ gst-launch-1.0 v4l2src device=/dev/video2 ! 'video/x-raw,width=1280,height=720,framerate=30/1' ! autovideosink
 
</pre>
 
</pre>
  
 
== Reference ==
 
== Reference ==
 
[[AFE-R750|AFE-R750]]
 
[[AFE-R750|AFE-R750]]

Latest revision as of 09:13, 19 January 2026

Attention

Account & Password

Account number

ubuntu

In device used "sudo" or "sudo su" to root. Password required.

ubuntu

Tools

750agx-1.png

Test Command

JP6.2

HDMI

Set on debug port

$ export DISPLAY=:0
$ xrandr

Image resolution : Full HD 1920 x 1080 pixels

$ xrandr -d :0 --output HDMI-0 --mode 1920x1080 -r 60.00

Image resolution : 4K 3840 x 2160 pixels

$ xrandr -d :0 --output HDMI-0 --mode 3840x2160 -r 60.00

021-xrandr.png

FAN

Set value 0~255

$ sudo su
$ echo 255 > /sys/class/hwmon/hwmon0/pwm1

CAN

Hardware setting for AGX Orin
750-can-1.png
750-can-2.png

<Receive> In terminal, run below command

$ sudo su
# modprobe can
# modprobe can-dev
# modprobe mttcan
# ip link set can0 type can bitrate 500000
# ip link set can0 up
# candump can0

<Transmit> In other terminal, run below command

$ sudo su
# modprobe can
# modprobe can-dev
# modprobe mttcan
# ip link set can1 type can bitrate 500000
# ip link set can1 up
# cansend can1 123#abcdabcd

WatchDog

$ sudo su
# sync; sleep 2; sync; echo c > /proc/sysrq-trigger

TPM

Pre-install TPM-tools

$ sudo apt install --yes tpm2-tools

(1) generate randon code

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

(2) encrypted target file 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) store data into 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) check the data has been stored tpm 

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

RTC

1. Please remove all internet.

$ sudo timedatectl

DIO GPIO

750 dio gpio.jpg
750 dio gpio 1.jpg

$ gpioinfo

GPI_1~GPI_8 (gpio300~gpio307) Can only be set input

$ gpioget gpiochip2 0

GPO_1~GPO_8(gpio308~gpio315) Can only be set output

$ gpioset gpiochip2 8=1

UART

AGX-Orin COM1: ttyTHS1 COM2: ttyTHS2
750-com-1.png

Switch to 232, 422, 485

Select the mode and refer to the table
COM1 :
750-com-2.png
COM2 :
750-com-3.png

RS-232

COM1_SW1 OFF-OFF-OFF-OFF

$ sudo su
# stty -F /dev/ttyTHS1 speed 115200 raw -echo
# cat /dev/ttyTHS1 &
# echo "1234" > /dev/ttyTHS1
RS-422

<Receive> In terminal, run below command
COM1_SW1 ON-OFF-ON-OFF

$ sudo su
# stty -F /dev/ttyTHS1 speed 115200
# cat /dev/ttyTHS1 &
# echo "1234" > /dev/ttyTHS1

<Transmit> In other terminal, run below command
COM2_SW1 ON-OFF-ON-OFF

$ sudo su
# stty -F /dev/ttyTHS2 speed 115200
# cat /dev/ttyTHS2 &
# echo "1234" > /dev/ttyTHS2
RS-485

<Receive> In terminal, run below command
COM1_SW1 ON-ON-ON-ON

$ sudo su
# stty -F /dev/ttyTHS1 speed 115200 raw -echo
# cat /dev/ttyTHS1 &
# echo "1234" > /dev/ttyTHS1

<Transmit> In other terminal, run below command
COM2_SW1 ON-ON-ON-OFF

$ sudo su
# stty -F /dev/ttyTHS2 speed 115200 raw -echo
# cat /dev/ttyTHS2 &
# echo "1234" > /dev/ttyTHS2

IMU

BMI088

Please reference : https://docs.nvidia.com/jetson/archives/r36.4/DeveloperGuide/SD/Kernel/Bmi088ImuIioDriver.html?highlight=bmi088

$ sudo su
# echo 0 > /sys/bus/iio/devices/iio\:device0/scan_elements/in_timestamp_en
# /usr/local/bin/IMU/iio_generic_buffer -a -c 10 --device-name accelerometer -g
# /usr/local/bin/IMU/iio_generic_buffer -a -c 10 --device-name gyroscope -g
MTi
$ sudo chmod 777 /dev/ttyTHS3
$ stty -F /dev/ttyTHS3 speed 115200 raw -echo
$ cat /dev/ttyTHS3 | xxd -g1 | grep -i "fa ff 36"

MTi.png

AIW Tool

AIW-357

For JP6.1 first need to soft link source for build driver

$ cd /lib/modules/<kernel version>/build/arch/
$ sudo ln -s arm64 aarch64

Tar file

$ cd /usr/local/bin/AIW-357
$ sudo tar -xvf AIWS00LTX0317.tar.bz2

Build driver
Please reference AIW Document


For JP6.2 RealTime setting sop
Please reference NVRealTime
Add the RT kernel repository

$ sudo vi /etc/apt/sources.list.d/nvidia-l4t-apt-source.list

deb https://repo.download.nvidia.com/jetson/rt-kernel r36.4 main
RT.png

$ sudo apt update
$ sudo apt install nvidia-l4t-rt-kernel nvidia-l4t-rt-kernel-headers nvidia-l4t-rt-kernel-oot-modules nvidia-l4t-display-rt-kernel

Cold reboot the device.
Need to soft link source for build driver

$ sudo ln -sf /usr/src/linux-headers-5.15.148-rt-tegra-ubuntu22.04_aarch64/3rdparty/canonical/linux-jammy/kernel-source /lib/modules/5.15.148-rt-tegra/build
$ cd /lib/modules/5.15.148-rt-tegra/build/arch/
$ sudo ln -s arm64 aarch64

Tar file

$ cd /usr/local/bin/AIW-357
$ sudo tar -xvf AIWS00LTX0317.tar.bz2

Build driver
Please reference AIW Document

EWM-W179M201E

First need to install WIFI module

$ cd /usr/local/bin/EWM-W179
$ sudo su
# modprobe cfg80211
# insmod rtk_btusb.ko
# insmod 8852be.ko
AIW-170

First need to install WIFI module

$ cd /usr/local/bin/AIW-170
$ sudo su
# insmod btbcm.ko
# insmod btintel.ko
# insmod btqca.ko
# insmod btrtl.ko
# insmod btusb.ko
# modprobe cfg80211
# insmod wlan_cnss_core_pcie.ko
# insmod wlan.ko

GMSL

oToBrite Camera

Camera type : oToCAM222-C120M
HW setting : Camera link to GMSL port
AGX Orin :
750agx-gmsl.png
Orin Nx :
750-gmsl.png
Please install camera driver first
Attention : can only be executed once command to setup camera
Then system will reboot

$ cd /usr/local/bin/otocam

Choose your module

$ sudo ./set_otocam_agxorin_64g.sh
$ sudo ./set_otocam_agxorin_32g.sh
$ sudo ./set_otocam_orinnx.sh

Insmod driver

$ cd /home/ubuntu
$ sudo ./insmod-otocam.sh

Check Video channel "video0"...

$ ls /dev/video*

Preview command

$ cd /home/ubuntu
$ sudo ./enable-otocamera.sh


Orbbec Camera

Camera type : Orbbec Gemini 335Lg
Model : G40055-270
HW setting : Camera link to GMSL port
AGX Orin :
Orbcam agx.png
Orin Nx :
Orbcam nx.png
Please install camera driver first

$ cd /usr/local/bin/gemini335lg

Choose your module

$ sudo ./set_gemini335lg_agxorin_64g_32g.sh
$ sudo ./set_gemini335lg_orinnx_16g.sh

Cold reboot the device.

Check Video channel "video0"...

$ ls /dev/video*

Preview command
Attention : Ports 6 and 8 of the AGX Orin are unavailable, this is a limitation.

$ gst-launch-1.0 v4l2src device=/dev/video2 ! 'video/x-raw,width=1280,height=720,framerate=30/1' ! autovideosink

Reference

AFE-R750