Nvidia Jetson 36.2 Developer Preview on Turing PI
I have finally received my Turing PI; I will post more about it on my Blog, especially in combination with Synology. But for now, I will not keep any of you waiting. I solved installing Nvidia Jetson Linux 36.2 Developer Preview on an Orin NX 16 GB on a Turing PI carrier board. Please note that the fix included in this post relates to Waiting for target to boot-up, will probably also work in your case when you are not using a Turing PI or even an Orin NX.
In December 2023, Nvidia released Nvidia Jetson Linux 36.2.
Nvidia Release Page: https://developer.nvidia.com/embedded/jetson-linux-r362
Requirements
- Ubuntu 22.04 Host Machine (Bare Metal)
- Get a USB-A > USB-A 2.0 Cable
- Connect Host to Turing PI on the USB_OTG Port (version Turing PI v2.4, this is the vertical USB port next to the HDMI port)
Preparation
Update System
sudo apt update
sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt install -y qemu-user-static nano openssh-server openssh-client
sudo reboot
Prepare Flash
mkdir ~/nvidia
cd ~/.nvidia
Download BSP & RootFS
wget -O bsp.tbz2 -L https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v2.0/release/jetson_linux_r36.2.0_aarch64.tbz2
wget -O rootfs.tbz2 -L https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v2.0/release/tegra_linux_sample-root-filesystem_r36.2.0_aarch64.tbz2
Extract BSP & RootFS
tar -xvpf bsp.tbz2
sudo tar -xvpf rootfs.tbz2 -C Linux_for_Tegra/rootfs/
Patch Firmware (Turing PI)
This step is required on Turing PI because it does not have a EEPROM.
sed -i 's/cvb_eeprom_read_size = <0x100>/cvb_eeprom_read_size = <0x0>/g' Linux_for_Tegra/bootloader/generic/BCT/tegra234-mb2-bct-misc-p3767-0000.dts
Prepare Firmware
cd Linux_for_Tegra
sudo ./apply_binaries.sh
sudo ./tools/l4t_flash_prerequisites.sh
Prepare Username, Password, Hostname
sudo ./tools/l4t_create_default_user.sh --accept-license -u <username> -p <password> -a -n <hostname>
Example
sudo ./tools/l4t_create_default_user.sh --accept-license -u ubuntu -p turing -a -n node4
Patch nv_enable_remote.sh
Now we are going to patch nv_enable_remote.sh
this patch will fix the Waiting for target to boot-up
. If you are experiencing this error, this patch might also work for you.
nano tools/kernel_flash/initrd_flash/nv_enable_remote.sh
Press: CTRL + SHIFT + _
this will give you a Goto line menu. Enter: 222
. This will jump you straight to line 222
.
The cursor will now be on an empty line between the following to lines: the |
simulates your cursor.
echo "${cfg_str:1}" > "${cfg}/strings/0x409/configuration"
|
echo "${udc_dev}" > UDC
Now on the empty line insert following:
echo on > /sys/bus/usb/devices/usb2/power/control
Result:
echo "${cfg_str:1}" > "${cfg}/strings/0x409/configuration"
echo on > /sys/bus/usb/devices/usb2/power/control
echo "${udc_dev}" > UDC
Save the file with CTRL + X
Prepare Turing PI for Flashing
Log into the BMC with SSH and run the following commands, replace {NODE}
with the Node ID you want to flash.
tpi power off
tpi usb -n {NODE} flash
tpi power -n {NODE} on
Now, on the Host machine, you are going to use to flash the module, run lsusb
Check that the Nvidia Module is now in recovery flash mode. The lsusb
the command will be a device called NVIDIA Corp. APX. When you see this, it means you have successfully put your module into flash mode.
Flash Firmware
Run the following command to flash the module; please note that the command provided here assumes you are going to flash to an NVMe drive. Furthermore, the command provided also includes the option --erase-all
to clear any previous data from the drives.
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 \
-c tools/kernel_flash/flash_l4t_external.xml -p "-c bootloader/generic/cfg/flash_t234_qspi.xml" \
--showlogs --network usb0 --erase-all jetson-orin-nano-devkit internal
Please get some coffee will the flashing finishes.
Post Flashing Firmware
!IMPORTANT! Do not forget these steps.
After you are done flashing, the Turing PI still keeps the module in recovery/flash mode. We need to turn off the module and boot it normally.
Log into your newly flashed node with SSH and turn it off with:
sudo shutdown -h now
Now log into the BMC and reset the USB to normal mode.
tpi power -n {NODE} off
tpi usb -n {NODE} device
tpi power -n {NODE} on
Your Nvidia will now boot up normally with Jetson Linux 36.2 Developer Preview installed.