Support Aetina AIB-MX13/23 Carrier board for Jetson Orin AGX

Hi, we are trying to build Balena OS image for an Aetina Carrier board for Xavier Orin AGX: https://www.aetina.com/products-detail.php?i=512

We are trying to build an image based on L4T 35.1.0, and the BSP worked well with Jetpack 5.0.2.
The BSP replaces some files in Linux_for_tegra folder:

  1. tegra234-p3701-0004-p3737-0000.dtb
  2. Image inside kernal folder
  3. Some dtsi files inside the bootloader folder

Based on other previous topics for other carrier boards, we tried to modify balena-jetson-orin/layers/meta-balena-jetson/recipes-kernel/linux/linux-tegra_%.bbappend, and it built, but it when we deployed it to the board, it won’t boot and won’t show up on balena cloud.

Can I get some help to apply the BSP for building Balena OS?

1 Like

Hello @changkk welcome to the balena community!

Did you follow the instructions from here? Customer Board Support - Balena Documentation

Let us know in what step do you get issues and feel free to share the logs.

Hi @mpous ! Thanks for the reply.

Yes, I read the instructions and I believe this repo (GitHub - balena-os/balena-jetson-orin: Balena integration repository for Jetson Orin devices) did most of the job for the basic bsp for Jetson Orin AGX. But I am trying to modify this a bit like replacing a dtb, a kernel image, and some dtsi files.

I believe we can try something like this: Support Connect-tech Rogue AGX Carrier board for Jetson Xavier - #7 by codewithcheese, and I am thinking to add dtb file inside balena-jetson-orin/layers/meta-balena-jetson/recipes-kernel/linux (please correct me if I am wrong), but not sure about where I can replace dtsi files. So it would be really helpful if I you could direct me where to look at!

1 Like

@changkk let me forward your message to the balena Devices team, so they probably can help you more here :slight_smile:

Hi @changkk , if the device boots with the standard balenaOS image for the AGX Orin and you can see the device online by connecting it to the internet trough a USB ETH or WiFi dongle, you can try follow the steps in I2C and Other Interfaces - Balena Documentation to place the pre-compiled dtb for the Aetina carrier board in /mnt/sysroot/active/current/boot/ and then type the dtb name in the dashboard configuration panel. Might be that the Aetina kernel has some other drivers, but that’s not visible by looking at the pre-compiled kernel image. You’d have to compare the Aetina kernel changes against the standard Nvidia kernel to determine this.

1 Like

Thank you for the reply, @acostach !
I tried to boot the board up with the standard balenaOS image, but it didn’t boot up. The changes in the BSP between the standard Nvidia kernel are

  1. tegra234-p3701-0004-p3737-0000.dtb
  2. Image inside kernal folder
  3. Some dtsi files inside the bootloader folder

So it would be really helpful if I can have some guidance about where I can replace these files or at least where to look at in the balena image building process.

Hi @changkk , are you able to see where the boot process hangs? You mention “Some dtsi files inside the bootloader folder” so if you see an error like this on debug UART:

E> Top caller module: I2C_DEV, error module: I2C, reason: 0x0d, aux_info: 0x05

then you can download the BSP archive locally: jetson-flash/resin-jetson-flash.js at master · balena-os/jetson-flash · GitHub

then open it and inside modify Linux_for_Tegra/bootloader/tegra234-mb2-bct-common.dtsi to set cvb_eeprom_read_size from 0x100 to 0x0 as per Jetson AGX Orin Platform Adaptation and Bring-Up — Jetson Linux Developer Guide documentation and make sure the file is updated inside the local archive jetson_linux_r35.1.0_aarch64.tbz2 after closing the editor.

Finally modify this line jetson-flash/resin-jetson-flash.js at master · balena-os/jetson-flash · GitHub to point to a local webserver which serves the modified BSP archive: http://127.0.0.1/jetson_linux_r35.1.0_aarch64.tbz2 and then try to flash the board.

1 Like

Thank you so much @acostach! Your answer was really helpful. I finally made it to show up on the Balena dashboard.

When I flashed with standard Orin Balena image with original jetson BSP, the message said the flash was successful, but the board didn’t reboot after the flash (remained as the recovery mode), and the fan didn’t spin.

So this time, I flashed with standard Orin Balena image with patched jetson BSP (I replaced dtb, dtsi, image file, and downloaded from the local webserver), and the message said the flash was successful, and the board rebooted, and fan was spinning, but the device didn’t show up on the dashboard with the directly connected ethernet. So I connected the ethernet via usb, now it shows up on the dashboard!

Thank you so much for your help!

Hi @acostach , I have been working on the board thanks to your help, I have additional question coming up. Per your advice above, I needed to use usb ethernet converter to connect to the internet. The board has two ethernet interfaces and those two showed up on ls -l /sys/class/net/eth*/device with the normal Jetpack Ubuntu with BSP, but not with the Balena.

Could you guide me where to look at for this stuff?

Adding the dmesg from the device:
dmesg_aetina.txt (68.4 KB)

@changkk I suspect that this happens because the flashed image loads the Devkit dtb. Can you please confirm if you placed the Aetina dtb inside /mnt/sysroot/active/current/boot/ and then set the FDT in the dashboard configuration page as per I2C and Other Interfaces - Balena Documentation ?

@acostach Thanks so much for your help so far. I tried to place the Aetina dtb and changed the dashboard configuration, but it didn’t boot up the board, and I had to flash again. However, we could make the board working with the internet interface that we have without USB dongle. Just for those who are trying to do the similar things, let me share the process we took below:

  1. Download the standard Balena OS AGX Orin image
  2. Download the Nvidia’s Orin BSP from their server using the url inside jetson-flash/resin-jetson-flash.js at master · balena-os/jetson-flash · GitHub
  3. Apply Aetina’s Jetpack BSP to the downloaded Nvidia Orin BSP
  4. Upload the modified Orin BSP to the local server and update the BSP url to the local server url in resin-jetson-flash.js
  5. Connect the ethernet cable to the board via USB dongle, and flash.
  6. Once the device shows up on Balena dashboard, shutdown the ethernet interface of USB dongle (Balena connection will be off), move the ethernet cable to the native ethernet interface available (for now, just only one of two ethernet interfaces shows up though), and reboot.

What we still didn’t get yet are:

  1. When we place the Aetina dtb inside the directory you mentioned /mnt/sysroot/active/current/boot/ with the device configuration, it didn’t boot up.
  2. Still we couldn’t get the one of the ethernet interface.

Thank you!