armbian / config

Armbian Linux configuration utility

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DTC not working on RK3588 5.10.xxx

NicoD-SBC opened this issue · comments

When going to System -> DTC on the RK3588 then you only get an empty nano window.
Using the Mekotronics R58 Mini with Armbian Jammy Gnome 5.10.160-rockchip-rk3588
This is what messages I get.

SoC manufacturer: rockchip
board name: rk3588-hugsun-minipc-linux
FATAL ERROR: Couldn't open "": No such file or directory
stat: cannot statx '/tmp/tmp.8A9CyDcpFo/current.dts': No such file or directory
stat: cannot statx '/tmp/tmp.8A9CyDcpFo/current.dts': No such file or directory
Do you want to edit the device tree again? (y/n)
commented

Can you try again after installing dtc;
sudo apt install device-tree-compiler

Can you try again after installing dtc; sudo apt install device-tree-compiler

nicod@mekotronics-r58-minipc:~$
sudo apt install device-tree-compiler
[sudo] password for nicod:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
device-tree-compiler is already the newest version (1.6.1-1).

commented

Not a trivial solution then :(

Confirmed. The "DTC" editing code in armbian-config was introduced here #123 and lives mostly here https://github.com/armbian/config/blame/ed8fe64aae4bbf3e6cf775ff26b6ebb6c0c8d129/debian-config-jobs#L1519-L1647

@igorpecovnik it already does install dtc if not installed.

This code is trying to read the compatible from /proc/device-tree/compatible, find/compute the soc_manufacturer from that, then find the board based on ?, and find the DTB file that is actually used via glob matches. This is very error prone...

As we can see from @NicoD-SBC's logs, with the rk3588 legacy kernel (and probably many, many others) the compatible doesn't match, errors are ignored (as always in armbian-config), everything fails but an editor opens with an empty file.

Sincerely we should drop all this, read /boot/armbianEnv.txt for the fdtfile= which will get us directly to the .dtb that is in use. (for extlinux, parse /boot/extlinux/extlinux.conf for the first fdt stanza amounts to the same).

Alternatively: we can get the running DT blob (whatever it is, wherever it comes from) via

dtc -I fs /sys/firmware/devicetree/base

@jeanrhum what do you think?

@rpardini Sorry for answering late. I was very busy the last months...
I agree that using the extconf fdt field info is better. However, if I remember well some (old supported) boards was not using this file when I wrote this code (but maybe I am wrong).
If all officially supported boards now use this file to specify the dtb, I think that the modification you suggest should be used.

I can try to update the code in this way, but I haven't any rk3588 board to test it. I'll only test on my boards based on other socs (Allwinner h3 h6, Amlogic s805x a311d, Rockchip rk3328 rk3399).