Problem Loading DTBO file on Xavier-NX with JP4.6

Hi,
I have a problem with loading DTBO file using jetson-io tool on JP-4.6. This process worked fine with JP-4.5 and with previous version of JP. I am describing the problem below

(1) Our Setup:

(1.1) We use the “Re-Speaker 2-Mic HAT board” on Xavier-Nx Developer kit. In order to use the custom hardware we set the configuration on 40-pin header using a device tree overlay.

(1.2) The source code and instructions to build device tree overlays are available here:

(1.3) In the dts file, we define [overlay-name = “Seeed Voice Card 2MIC”], copy the dtbo file to “/boot” directory and then load the overlay using following command:
sudo /opt/nvidia/jetson-io/config-by-hardware.py -n “Seeed Voice Card 2MIC”

(2) The Problem:

(2.1) Loading the dtbo using above method works fine on jetpack 4.5. But it fails on jetpack 4.6. The new overlay which we copied to “/boot/” folder is apparently not recognized by jetson-io script.

(2.2) We get the following error

->sudo /opt/nvidia/jetson-io/config-by-hardware.py -n "Seeed Voice Card 2MIC"
Traceback (most recent call last):
  File "/opt/nvidia/jetson-io/config-by-hardware.py", line 125, in <module>
    main()
  File "/opt/nvidia/jetson-io/config-by-hardware.py", line 117, in main
    dtbo = configure_jetson(jetson, header, hw)
  File "/opt/nvidia/jetson-io/config-by-hardware.py", line 55, in configure_jetson
    % (hw, header))
NameError: No configuration found for Seeed Voice Card 2MIC on Jetson 40pin Header!

(3) Can you please suggest what has changed from JP4.5 to JP4.6 w.r.t. definining device tree overlays. For your reference I am attaching the dts file which we use.

xavier-nx-seeed-2mic-wm8960.dts (2.8 KB)

Further on above,

(1) I have added following additional property to the dts file

jetson-header-name = “Jetson 40pin Header”;

(2) Now jetson-io can identify my dtbo configuration. But it fails to load the configuration with following error:

->sudo /opt/nvidia/jetson-io/config-by-hardware.py -n "Seeed Voice Card 2MIC"
Traceback (most recent call last):
  File "/opt/nvidia/jetson-io/config-by-hardware.py", line 125, in <module>
    main()
  File "/opt/nvidia/jetson-io/config-by-hardware.py", line 117, in main
    dtbo = configure_jetson(jetson, header, hw)
  File "/opt/nvidia/jetson-io/config-by-hardware.py", line 57, in configure_jetson
    jetson.hw_addon_load(hw)
  File "/opt/nvidia/jetson-io/Jetson/board.py", line 295, in hw_addon_load
    node)
RuntimeError: Failed to get pin number for node /fragment@4/__overlay__/header-40pin-pinmux/pin12/!

(3) The Fragment-4 has definition like following

        fragment@4 {
                target = <&pinmux>;
                __overlay__ {
                        pinctrl-names = "default";
                        pinctrl-0 = <&hdr40_pinmux>;

                        hdr40_pinmux: header-40pin-pinmux {
                                pin12 {
                                        nvidia,pins = HDR40_PIN12;
                                        nvidia,function = HDR40_I2S;
                                        nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
                                        nvidia,tristate = <TEGRA_PIN_DISABLE>;
                                        nvidia,enable-input = <TEGRA_PIN_ENABLE>;
                                };

(4) I use following header files which I have attached herewith, “tegra194-xavier-nx.h” “pinctrl-tegra.h”. Do I need to add/update any definitions under these files?

pinctrl-tegra.h (1.4 KB)
tegra194-xavier-nx.h (1.4 KB)

Hi, the problem has been fixed now

Could you share how it’solved to the community? Thanks

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.