Can't configure 40 header pins with jetson-io files

I flashed the jetson-nx-jp451-sd-card-image.zip (r32.5.1) and was able to boot the Xavier NX Developer Kit without problems. I wanted to use jetson-io.py that is referred in your guys’ documentation under ‘Configuring the 40-pin Expansion Header’.

  1. First I ran $ sudo /opt/nvidia/jetson-io/jetson-io.py which popped up a grey screen titled ‘Jetson Expansion Header Tool’ for a second, and then it disappears and takes me back to my shell.

  2. Then I restarted and tried *$ sudo find /opt/nvidia/jetson-io/ -mindepth 1 -maxdepth 1 -type d -exec touch {}/init.py ;
    Then I ran the same command from the first step which resulted in the same behavior described earlier.

  3. Next I attempted to use the $ sudo opt/nvidia/jetson-io/config-by-[pin,function,hardware].py files which provided the same errors shown:
    Traceback (most recent call last):
    File “/opt/nvidia/jetson-io/config-by-pin.py”, line 51, in
    main()
    File “/opt/nvidia/jetson-io/config-by-pin.py”, line 34, in main
    jetson = board.Board()
    File “/opt/nvidia/jetson-io/Jetson/board.py”, line 153, in init
    self.header = hdr40.Header(self.hdtbo, self.data)
    File “/opt/nvidia/jetson-io/Jetson/hdr40.py”, line 192, in init
    self.pins = _header_add_pins(pinmap, self.data.names)
    File “/opt/nvidia/jetson-io/Jetson/hdr40.py”, line 44, in _header_add_pins
    pinmux = pmx.PinMux()
    File “/opt/nvidia/jetson-io/Jetson/pmx.py”, line 78, in init
    dev = dt.read_prop(‘symbols/pinmux’).split(‘pinmux@’)[1]
    File “/opt/nvidia/jetson-io/Linux/dt.py”, line 28, in read_prop
    fio.is_readable(node)
    File “/opt/nvidia/jetson-io/Utils/fio.py”, line 33, in is_readable
    __is_accessible(path, os.R_OK, “read”)
    File “/opt/nvidia/jetson-io/Utils/fio.py”, line 26, in __is_accessible
    raise RuntimeError(“File %s not found!” % path)

I’ve been using this board for almost two months and its been performing well so far with cameras. Now I just want to try implementing an audio codec which requires me to configure the 40-pin headers. I’ve looked through many forums which required $ mkdir /boot/dtb and then copying a file into it, but I don’t believe that’s the issue since I already have that directory with files inside.

Run sudo /opt/nvidia/jetson-io/jetson-io.py | tr -d '[:cntrl:]'. That’ll strip the control characters and let you see the actual error. It’ll probably tell you something about a dtb not being present or that there are duplicates.

This is the error I got:

[?1049h[22;0;0t[1;58r(B[m[4l[?7h[?1h=[39;49m[39;49m[37m[40m[H[2J =================== Jetson Expansion Header Tool =================== |[3;71H| |[4;71H| |[5;71H| |[6;71H| |[7;71H| |[8;71H| |[9;71H| |[10;71H| |[11;71H| |[12;71H| |[13;71H| |[14;71H| |[15;71H| |[16;71H| |[17;71H| |[18;71H| |[19;71H| |[20;71H| |[21;71H| |[22;71H| |[23;71H| |[24;71H| |[25;71H| |[26;71H| |[27;71H| |[28;71H| |[29;71H| |[30;71H| |[31;71H| |[32;71H| |[33;71H| |[34;71H| |[35;71H| |[36;71H| |[37;71H| |[38;71H| ====================================================================[2;52H[9;31HFATAL ERROR![12;5HFile /sys/firmware/devicetree/base/symbols/pinmux not found![15;24HPress any key to terminate[?1l>[39;49m[40d[K[40;1H[?1049l[23;0;0t[?1l>

It’s the same error (or at least similar) to the ‘config-by-*.py’ files. I don’t know what this pinmux file is exactly. I tried following the path but I can only go up to base. There is no ‘_ _symbols _ _’ folder.

That’s odd. I don’t have that devicetree node either but jetson-io works for me. If you look in /boot/extlinux/extlinux.conf, is there an FDT entry? If so, that is it and does that file exist in /boot/?

Also, what version of the nvidia-l4t-jetson-io package is installed?
$ apt show nvidia-l4t-jetson-io

The FDT refers to the camera I use (IMX290) with the board and it does not show up in /boot/ anywhere.

The version is 32.5.1

Okay, so the driver I installed for the camera seemed to interfere with the file somehow and now it works. However, this is an issue because I need that driver for the camera to work. Any thoughts as to why it interferes with the jetson-io files?

jetson-io creates new DTBs by starting with the stock one and overlaying it with DTB overlay files (dtbo) to add new capabilities. Does the driver package provide a dtbo file? If so, drop that in /boot/, then update the extlinux.conf file FDT entry to point to the stock dtb (/boot/tegra194-p3668-all-p3509-0000.dtb). Now reboot and run jetson-io again. It should allow you to select the camera and also allow you to configure the 40 pin header. It should then create a tegra194-p3668-all-p3509-0000-user-custom.dtb file and add a new entry in extlinux.conf to boot it.

Thanks gtj, I’ll check that out and hopefully it will work.