armbian / config

Armbian Linux configuration utility
GNU General Public License v2.0
464 stars 164 forks source link

armbian-config on NanoPi Neo: Wrong .dtb selected for editing device tree #214

Open mdrmdrmdr opened 9 months ago

mdrmdrmdr commented 9 months ago

While testing a device tree overlay to enable the micro-USB port on an NanoPi Neo as USB host, I found a small issue with armbian-config:

If have 2 .dtb files on my system which contain my board name nanopi-neo in the filename:

Nano$ ls -1 /boot/dtb/*nanopi-neo*
/boot/dtb/sun8i-h3-nanopi-neo-air.dtb
/boot/dtb/sun8i-h3-nanopi-neo.dtb

The code in /usr/lib/armbian-config/jobs.sh, which searches for the proper .dtb file, finds the wrong - first - file. Which is sun8i-h3-nanopi-neo-air.dtb in my case.

        for dtb in ${dtb_path}/*.dtb
        do
            if [[ $dtb == *"${board_name}"* ]]; then
                used_dtb=$dtb
                break
            fi
        done

I modified the if [[ ]]; then line to find the correct file:

        for dtb in ${dtb_path}/*.dtb
        do
            if [[ $dtb == *"${board_name}.dtb" ]]; then
                used_dtb=$dtb
                break
            fi
        done

I'm not sure if the mask *<board name>.dtb can be applied generally, but it fixes the error and works in my case.

viraniac commented 9 months ago

Something to try. If you see in the same code block, the board name is beng picked up from the compatible file present in the /proc/device-tree/ directory. There is also the second string there in which the second part is actually the prefix. I think this can be updated so that the function first tries to load -.dtb and if not present then uses the for loop.

Could you please try the same and see if that solves your issue? If yes, please raise a PR. I can review and merge the same. The file that you might have to modify in this repository is debian-config-jobs.sh which you know as jobs.sh file from your system.

mdrmdrmdr commented 9 months ago

Unfortunately that does not work as there is no variable available holding the soc prefix. The only way would be to read and extract overlay_prefix=sun8i-h3 from armbianEnv.txt. As done in a while loop earlier in the file. Not sure at all if this would be a proper way. Assume not.

I'm wondering why this did not come up earlier. There are 10+ .dtb file combinations which could cause the issue.