Everytime I use the sudo /opt/nvidia/jetson-io/jetson-io.py tool to enable the Adafruit SPH0645 microphone, and reboot the the device, I see that the pin configuration goes back to the default settings. At the same time, the microphone is not functioning. When I watch on a scope, I don’t see any activity on those pins, even though this configuration was working before on some other Jetson Xavier boards.
How can I verify if the pins are actually configured properly?
may I know what’s your approaches to load the device tree blob. are you using FDT entry in the /boot/extlinux/extlinux.conf?
it should be *.dtbo generated after you’ve complete the Jetson-IO settings, please check the kernel logs to ensure those *.dtbo has being loading while kernel init.
I haven’t done anything special, just a clean flashing of the Jetpack 4.6, and then running the jetson-io.py script and selection the options.
This is what is in the extlinux.conf file:
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=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 rootfstype=ext4
# 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 Adafruit SPH0645LM4H>
LINUX /boot/Image
FDT /boot/kernel_tegra194-p2888-0001-p2822-0000-user-custom.dtb
INITRD /boot/initrd
APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0 rootfstype=ext4
This makes no sense to me, I swear on other versions of Jetpack you just run the utility, enabled the SPH0645 mic setting, and off you went. Any ideas?
there’s boot menu with the customize FDT entry. could you please have another try to boot into system by select JetsonIO label ?
btw, I cannot download the dmesg for checking, you may upload the logs as text attachment.
Thank you Jerry, your idea was very helpful! I booted up with the serial console attached, and noticed something very strange. (BTW, If I send a keystroke during boot I just get into the Cboot console, so I’m not sure where to select the extlinux boot options. This is a headless unit)
[0004.613] I> Loading extlinux.conf ...
[0004.613] I> Loading extlinux.conf binary from rootfs ...
[0004.615] I> rootfs path: /sd/boot/extlinux/extlinux.conf
[0008.745] I> lookup_linear_dir:447: Invalid file block num
[0008.746] I> ext2_walk:142: 'boot' lookup failed
[0008.746] I> ext4_open_file:666: '/boot/extlinux/extlinux.conf' lookup failed
[0008.747] E> file /sd/boot/extlinux/extlinux.conf open failed!!
[0008.747] W> Failed to load extlinux.conf binary from rootfs (err=202113041)
[0008.750] E> Failed to find/load /boot/extlinux/extlinux.conf
Anyways, it seems that the extlinux.conf file is not even being seen or used at all, because it’s trying to read it from the sd card. I had an ext4 formatted SD card installed for storage, and when I removed it, everything started working.
Now, the question is, how do I support both the SD card and booting with the proper device tree for audio support?
are you working with Jetson AGX Xavier?
please share the modification you’ve done to boot from external storage. it should boot from internal eMMC by default.
The boot order shows as sd, usb, nvme, emmc, net. Setting it to emmc via “setvar” works, and the device boots correctly. However, it is a purely “out of the box” config. I just installed Jetpack 4.6, plugged in the SD card, formatted it, and tried to use the jetson-io.py tool. I never adjusted the boot order, and I definitely don’t want it to boot from the SD card.
How do I set it to permanently ignore the sd card as a boot option?
Update: Looks like formatting the SD card as fat32 solved the issue, Cboot no longer wants to boot from it, and all is well! The microphone works again.