SPI setup issues with Jetson Nano B01 DevKit

Kevin - I didn’t get a response on Friday and have now lost the weekend. I’d really appreciate it if you could respond today to my last question. As I mentioned before, I am very short on time to get this issue resolved.

For the method 1, you should refer to the following instruction to download and build the kernel.
NVIDIA Jetson Linux Developer Guide : Kernel Customization | NVIDIA Docs

Could you also share the dmesg after you load the spidev module?
and also the image of your connections for further check.

Thanks. I’ll attempt to build the kernel per those instructions and update you after. Here is the other requested information with the current state:

dmesg | grep -i gpio

[    0.568708] gpio gpiochip0: gpio-line-names specifies 240 line names but there are 256 lines on the chip
[    0.569866] GPIO line 6 (system-suspend-gpio) hogged as output/high
[    0.569908] GPIO line 151 (camera-control-output-low) hogged as output/low
[    0.569941] GPIO line 152 (camera-control-output-low) hogged as output/low
[    0.570306] gpiochip_setup_dev: registered GPIOs 0 to 255 on device: gpiochip0 (tegra-gpio)
[    0.627971] GPIO line 505 (spmic-default-output-high) hogged as output/high
[    0.628287] gpiochip_setup_dev: registered GPIOs 504 to 511 on device: gpiochip1 (max77620-gpio)
[    0.653980] extcon-gpio-states extcon:extcon@1: Cable state:0, cable id:0
[    3.708377] tegradc tegradc.1: No hpd-gpio in DT
[    4.134783] i2c-mux-gpio cam_i2cmux: 2 port mux on Tegra I2C adapter adapter
[    4.241260] FAN:gpio request success.
[    4.278028] sdhci-tegra sdhci-tegra.0: Got CD GPIO
[    4.492816] input: gpio-keys as /devices/gpio-keys/input/input1

dmesg | grep -i spi

[    0.466428] iommu: Adding device 7000d400.spi to group 7
[    0.466705] iommu: Adding device 7000d600.spi to group 8
[    0.466992] iommu: Adding device 70410000.spi to group 9
[    3.810138] tegra-qspi 70410000.spi: Prod settings list not found
[    3.818076] qspi_mtd spi32766.0: MX25U3235F (4096 Kbytes)
[    3.818086] qspi_mtd spi32766.0: mtd .name = spi32766.0, .size = 0x400000 (4MiB) .erasesize = 0x00001000 (4KiB) .numeraseregions = 0

dmesg | grep -i dts

[    0.240158] DTS File Name: /dvs/git/dirty/git-master_linux/kernel/kernel-4.9/arch/arm64/boot/dts/../../../../../../hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-b00.dts
[    0.448838] DTS File Name: /dvs/git/dirty/git-master_linux/kernel/kernel-4.9/arch/arm64/boot/dts/../../../../../../hardware/nvidia/platform/t210/porg/kernel-dts/tegra210-p3448-0000-p3449-0000-b00.dts
[    0.474200] tegra-pmc 7000e400.pmc: scratch reg offset dts data not present

Image of connections:

Please just provide the full dmesg as file here.

Could you share the right side(respect to the above image) of your board?
and share the result of the following command.

$ ls -l /boot/
$ ls -l /boot/dtb/

Full dmesg file and image attached.

ls -l /boot

total 60404
drwxr-xr-x 2 root root     4096 Sep 25 10:50 dtb
drwxr-xr-x 2 root root     4096 Sep 28 08:38 extlinux
drwxr-xr-x 2 root root     4096 Sep 10 11:03 grub
-rw-r--r-- 1 root root 34707464 Sep 10 10:37 Image
-rw-r--r-- 1 root root  7159654 Sep 10 10:37 initrd
lrwxrwxrwx 1 root root       24 Sep 10 11:02 initrd.img -> initrd.img-4.9.337-tegra
-rw-r--r-- 1 root root 15293431 Sep 10 11:03 initrd.img-4.9.337-tegra
-rw-r--r-- 1 root root   237352 Sep 10 10:37 kernel_tegra210-p3448-0000-p3449-0000-b00.backup
-rw-r--r-- 1 root root   237352 Sep 25 09:51 kernel_tegra210-p3448-0000-p3449-0000-b00.dtb
-rw-r--r-- 1 root root   238621 Sep 19 15:35 kernel_tegra210-p3448-0000-p3449-0000-b00-user-custom.backup
-rw-rw-r-- 1 bsm  bsm    238670 Sep 20 13:05 kernel_tegra210-p3448-0000-p3449-0000-b00-user-custom.dtb
-rw-rw-r-- 1 root root   238574 Sep 25 10:48 kernel_tegra210-p3448-0000-p3449-0000-b00-user-custom-EditedStep2.dtb
-rw-rw-r-- 1 root root   238574 Sep 25 20:18 kernel_tegra210-p3448-0000-p3449-0000-b00-user-custom-EditedStep2_rsvd.dtb
-rw-rw-r-- 1 bsm  bsm    238581 Sep 28 08:35 kernel_tegra210-p3448-0000-p3449-0000-b00-user-custom-kevin.dtb
-rw-r--r-- 1 root root   238670 Sep 25 09:57 kernel_tegra210-p3448-0000-p3449-0000-b00-user-custom-user-custom.dtb
-rw-r--r-- 1 root root     1077 Jun  8 21:25 tegra210-jetson-tx1-p2597-2180-a01-devkit-adafruit-sph0645lm4h.dtbo
-rw-r--r-- 1 root root     1073 Jun  8 21:25 tegra210-jetson-tx1-p2597-2180-a01-devkit-adafruit-uda1334a.dtbo
-rw-r--r-- 1 root root     1856 Jun  8 21:25 tegra210-jetson-tx1-p2597-2180-a01-devkit-csi.dtbo
-rw-r--r-- 1 root root   488509 Jun  8 21:25 tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb
-rw-r--r-- 1 root root     2831 Jun  8 21:25 tegra210-jetson-tx1-p2597-2180-a01-devkit-fe-pi-audio.dtbo
-rw-r--r-- 1 root root     1304 Jun  8 21:25 tegra210-jetson-tx1-p2597-2180-a01-devkit-hdr30.dtbo
-rw-r--r-- 1 root root     3076 Jun  8 21:25 tegra210-jetson-tx1-p2597-2180-a01-devkit-hdr40.dtbo
-rw-r--r-- 1 root root     2111 Jun  8 21:25 tegra210-jetson-tx1-p2597-2180-a01-devkit-m2ke.dtbo
-rw-r--r-- 1 root root     2103 Jun  8 21:25 tegra210-jetson-tx1-p2597-2180-a01-devkit-respeaker-4-mic-array.dtbo
-rw-r--r-- 1 root root     2139 Jun  8 21:25 tegra210-jetson-tx1-p2597-2180-a01-devkit-respeaker-4-mic-lin-array.dtbo
-rw-r--r-- 1 root root   489038 Jun  8 21:25 tegra210-jetson-tx1-p2597-2180-a02-devkit-24x7.dtb
-rw-r--r-- 1 root root   228299 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a00.dtb
-rw-r--r-- 1 root root     1085 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a01-adafruit-sph0645lm4h.dtbo
-rw-r--r-- 1 root root     1081 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a01-adafruit-uda1334a.dtbo
-rw-r--r-- 1 root root   228259 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a01.dtb
-rw-r--r-- 1 root root     2839 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a01-fe-pi-audio.dtbo
-rw-r--r-- 1 root root     3700 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a01-hdr40.dtbo
-rw-r--r-- 1 root root     2119 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a01-m2ke.dtbo
-rw-r--r-- 1 root root     3344 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a01-mcp251x.dtbo
-rw-r--r-- 1 root root     2111 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a01-respeaker-4-mic-array.dtbo
-rw-r--r-- 1 root root     2147 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a01-respeaker-4-mic-lin-array.dtbo
-rw-r--r-- 1 root root     1121 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a02-adafruit-sph0645lm4h.dtbo
-rw-r--r-- 1 root root     1117 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a02-adafruit-uda1334a.dtbo
-rw-r--r-- 1 root root   228845 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a02.dtb
-rw-r--r-- 1 root root     2875 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a02-fe-pi-audio.dtbo
-rw-r--r-- 1 root root     3740 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a02-hdr40.dtbo
-rw-r--r-- 1 root root     2155 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a02-m2ke.dtbo
-rw-r--r-- 1 root root     3400 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a02-mcp251x.dtbo
-rw-r--r-- 1 root root     2147 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a02-respeaker-4-mic-array.dtbo
-rw-r--r-- 1 root root     2183 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-a02-respeaker-4-mic-lin-array.dtbo
-rw-r--r-- 1 root root   237352 Jun  8 21:25 tegra210-p3448-0000-p3449-0000-b00.dtb
-rw-r--r-- 1 root root   228655 Jun  8 21:25 tegra210-p3448-0002-p3449-0000-a02.dtb
-rw-r--r-- 1 root root   237198 Jun  8 21:25 tegra210-p3448-0002-p3449-0000-b00.dtb
-rw-r--r-- 1 root root     1077 Jun  8 21:25 tegra210-p3448-0003-p3542-0000-adafruit-sph0645lm4h.dtbo
-rw-r--r-- 1 root root     1073 Jun  8 21:25 tegra210-p3448-0003-p3542-0000-adafruit-uda1334a.dtbo
-rw-r--r-- 1 root root   229155 Jun  8 21:25 tegra210-p3448-0003-p3542-0000.dtb
-rw-r--r-- 1 root root     2831 Jun  8 21:25 tegra210-p3448-0003-p3542-0000-fe-pi-audio.dtbo
-rw-r--r-- 1 root root     3696 Jun  8 21:25 tegra210-p3448-0003-p3542-0000-hdr40.dtbo
-rw-r--r-- 1 root root     2103 Jun  8 21:25 tegra210-p3448-0003-p3542-0000-respeaker-4-mic-array.dtbo
-rw-r--r-- 1 root root     2139 Jun  8 21:25 tegra210-p3448-0003-p3542-0000-respeaker-4-mic-lin-array.dtbo
-rw-r--r-- 1 root root     2780 Jun  8 21:25 tegra210-p3448-all-p3449-0000-camera-imx219-dual.dtbo
-rw-r--r-- 1 root root     3036 Jun  8 21:25 tegra210-p3448-all-p3449-0000-camera-imx477-dual.dtbo
-rw-r--r-- 1 root root     2959 Jun  8 21:25 tegra210-p3448-all-p3449-0000-camera-imx477-imx219.dtbo
-rw-r--r-- 1 root root     2795 Jun  8 21:25 tegra210-p3448-common-imx219.dtbo
-rw-r--r-- 1 root root     2930 Jun  8 21:25 tegra210-p3448-common-imx477.dtbo

ls -l /boot/dtb

total 468
-rw-r--r-- 1 root root 237352 Sep 10 10:37 kernel_tegra210-p3448-0000-p3449-0000-b00.backup
-rw-r--r-- 1 root root 238670 Sep 21 21:13 kernel_tegra210-p3448-0000-p3449-0000-b00-user-custom.backup

Note that the extlinux.config file currently points to:
FDT /boot/kernel_tegra210-p3448-0000-p3449-0000-b00-user-custom-kevin.dtb

TIMEOUT 30
DEFAULT JetsonIO

MENU TITLE L4T boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 nv-auto-config 

# When testing a custom kernel, it is recommended that you create a backup of
# the original kernel and add a new entry to this file so that the device can
# fallback to the original kernel. To do this:
#
# 1, Make a backup of the original kernel
#      sudo cp /boot/Image /boot/Image.backup
#
# 2, Copy your custom kernel into /boot/Image
#
# 3, Uncomment below menu setting lines for the original kernel
#
# 4, Reboot

# LABEL backup
#    MENU LABEL backup kernel
#    LINUX /boot/Image.backup
#    INITRD /boot/initrd
#    APPEND ${cbootargs}

LABEL JetsonIO
	MENU LABEL Custom Header Config: <HDR40 User Custom [2023-09-25-095756]>
	LINUX /boot/Image
	FDT /boot/kernel_tegra210-p3448-0000-p3449-0000-b00-user-custom-kevin.dtb
	INITRD /boot/initrd
	APPEND ${cbootargs} root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 nv-auto-config

dmesg.txt (62.1 KB)

I was unable to get the git approach to work with method 1 for downloading the kernel, but I was able to download it manually. I got as far as step 7 in the 32.7.4 Developer Guide you shared. When I try this step, I get the following error:

sudo make ARCH=arm64 O=$TEGRA_KERNEL_OUT modules_install INSTALL_MOD_PATH=~/Linux_for_Tegra/rootfs/
make: *** No rule to make target 'modules_install'.  Stop.

Have you configured the toolchain correctly?

Could you reflash JP4.6.4(R32.7.4) to the board with SDKM and let me instruct you step-by-step in the following few hours?

Have you configured the toolchain correctly?

From the instructions, it appeared that this step was only necessary if I was doing it on a non-Jetson system. Is that guidance wrong?

Could you reflash JP4.6.4(R32.7.4) to the board with SDKM and let me instruct you step-by-step in the following few hours?

That would be great, but unfortunately I have other commitments tonight. Can we plan for this tomorrow at the start of your day?

Also, to be clear, are you asking me to reflash the standard Jetpack4.6.4 using the SDKManager ahead of time and we work from there, or are you planning to walk me through the kernel build and flash process from the start?

Are you build the kernel image on the ubuntu host PC or on Jetson Nano?

Yes, I wish you could start from the clean state and will lead you with method 2 because it has been verified on the devkit and should be easier for your use case.

Are you build the kernel image on the ubuntu host PC or on Jetson Nano?

From the instructions I was under the impression that I should build the kernel image from the Nano. Was I supposed to build it on a host PC instead?

Yes, I wish you could start from the clean state and will lead you with method 2 because it has been verified on the devkit and should be easier for your use case.

OK - I will install it one more time from scratch and have this ready before your day starts tomorrow. I’m not optimistic given past results, but I appreciate you making the time to work through it together so I will try again. Please reach out as soon as you are available tomorrow.

Yes, I would suggest sync and build the kernel image from the host PC because you still need to flash them from the host PC.

May I know why you do that from scratch?
Do you use ubuntu 18.04 or 20.04 as your host PC with SDKM to flash your board?

Okay, I worked at UTC+8hrs, and will start at 9am.

Do you use ubuntu 18.04 or 20.04 as your host PC with SDKM to flash your board?

My host PC has ubuntu 18.04 on it. This is what I’ve been using to flash the initial Jetpack4.6.4 onto the Nano via SDKManager.

May I know why you do that from scratch?

I’m afraid I don’t understand this question - You asked me to start from a “clean slate”. This is the same meaning to me. I think you’re asking me to erase the SD card and reinstall a fresh version of Jetpack4.6.4 using my host PC and SDKManager - Is this correct? If you are expecting me to do something different than this then please clarify.

Okay, I worked at UTC+8hrs, and will start at 9am

Thanks. Sounds good.

Yes, it is correct. Please just use Ubuntu18.04 with SDKM to flash your board.

Steps I took today:

  1. Reformatted the SD card with a complete erase to ensure there was nothing left on it (Note that this is a change compared to what I have been doing for the past few weeks. In the past I wasn’t hard-erasing the SD card. I was simply re-flashing Jetpack over the top of what was there.)
  2. Updated SDKManager to version (2.0.0.11402) on my host PC (Ubuntu 18.04)
  3. Connected to the micro-usb port and attempted to install a fresh version of Jetpack4.6.4 on the newly formatted SD card using the SDKManager.

Unfortunately things seem to have gotten worse. At this point I can no longer even complete the flash using the SDKManager. It fails ~40% of the way through the flash and says it can no longer find the Nano.

I’ve tried 4 times today with the same results each time. I even tried uninstalling and re-installing the SDKManager, but the failure is consistent.

Flash log attached. Any suggestions for where to go from here?

NV_L4T_FLASH_NANO_WITH_OS_IMAGE_COMP_20231004.log (20.6 KB)

Something is now very wrong. I wanted to get back to a known state so I took the SD card and used Balena etcher to install the SD image of 4.6.1 (last image available for download on the NVIDIA site for the Nano). The Balena flash and verification did not report any errors, but now my Jetson Nano won’t even boot to the standard OEM config any more. The green LED on the board lights up but nothing else happens at all at power up…

Okay, I worked at UTC+8hrs, and will start at 9am

I believe it is now 9:15am in UTC+8 timezone, correct? Were you planning on contacting me via the forum or Email or by some other means?

By the way, I did another force recovery restart while connected to the SDKManager host machine and the Jetpack4.6.4 install appears to be moving forward again. It still threw errors during the flash, though. It is currently at 67% complete so I can update again when it finishes. Can you please comment on the flash log errors in the file I shared above in the mean time?

[ 166.6349 ] Writing partition APP with system.img
[ 166.8990 ] [                                                ] 000%

It seems writing APP partition (rootfs) on the SD card failed.

Do you format the SD card as ext4?

Please let me know when you install JP4.6.4 successfully.

Do you format the SD card as ext4 ?

Yes.

It seems writing APP partition (rootfs) on the SD card failed.

By the way, this is the same section that it failed in in the log file I shared with you back on September 21st. I expect I’ll probably see the same failure again when the current installation completes since I’m starting from the same conditions. Can you please share what the next troubleshooting steps are for this type of error?

1 Like

If you still flash the board with SDKM failed, you could also put the device in force recovery state and run the following command to flash the board.

$ cd /home/iflybri/nvidia/nvidia_sdk/JetPack_4.6.4_Linux_JETSON_NANO_TARGETS/Linux_for_Tegra/
$ sudo ./flash.sh jetson-nano-devkit mmcblk0p1

Or try to use another SD card.

How did you resolve this issue before?