From unknown Thu Mar 28 15:14:14 2024 X-Loop: owner@bugs.devuan.org Subject: bug#311: Device Tree Overlays Do Not Work Reply-To: Paul Bryan Roberts , 311@bugs.devuan.org Resent-From: Paul Bryan Roberts Resent-To: devuan-bugs@lists.dyne.org Resent-CC: owner@bugs.devuan.org Resent-Date: Tue, 26 Mar 2019 14:18:02 UTC Resent-Message-ID: Resent-Sender: owner@bugs.devuan.org X-Devuan-PR-Message: report 311 X-Devuan-PR-Package: arm64_raspi3 X-Devuan-PR-Keywords: Received: via spool by submit@bugs.devuan.org id=B.155360940228368 (code B ref -1); Tue, 26 Mar 2019 14:18:02 UTC Received: (at submit) by bugs.devuan.org; 26 Mar 2019 14:10:02 +0000 Delivered-To: devuanbugs@dyne.org Received: from tupac3.dyne.org [195.169.149.119] by fulcanelli with IMAP (fetchmail-6.3.26) for (single-drop); Tue, 26 Mar 2019 15:10:02 +0100 (CET) Received: from relay1-d.mail.gandi.net (relay1-d.mail.gandi.net [217.70.183.193]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by vm6.ganeti.dyne.org (Postfix) with ESMTPS id 990EAF60A32 for ; Tue, 26 Mar 2019 15:03:41 +0100 (CET) X-Originating-IP: 31.53.180.56 Received: from [192.168.19.8] (host31-53-180-56.range31-53.btcentralplus.com [31.53.180.56]) (Authenticated sender: paul.bryan.roberts@the-custards.uk) by relay1-d.mail.gandi.net (Postfix) with ESMTPSA id 27E69240018 for ; Tue, 26 Mar 2019 14:03:40 +0000 (UTC) To: submit@bugs.devuan.org From: Paul Bryan Roberts Message-ID: <5d952738-1b12-248f-e4b5-c5c0daad60c0@the-custards.uk> Date: Tue, 26 Mar 2019 14:03:40 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="------------23EF5785766A25ECA034CE5B" Content-Language: en-GB X-Spam-Status: No, score=-0.7 required=5.0 tests=HTML_MESSAGE, RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=disabled version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on tupac3.dyne.org This is a multi-part message in MIME format. --------------23EF5785766A25ECA034CE5B Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Package: arm64_raspi3 Version: ascii_2.0.0 * Details of the configuration of the program with the problem. Include the complete text of its configuration files. I was using devuan_ascii_2.0.0_arm64_raspi3.img.xz downloaded on January 19th 2019 at around 18:00 UTC. * A description of the incorrect behaviour: exactly what behaviour you were expecting, and what you observed. A transcript of an example session is a good way of showing this. This image comes with a /boot/overlays directory containing a large number Device Tree Overlay files and a /boot/config.txt that contain at least one dtoverlay= directive. So it seems reasonable to suppose that this Devuan image is supposed to be Device Tree Overlay capable.  It appears not to be. * The /exact/ and /complete/ text of any error messages printed or logged. This is very important! It appears DT overlays are not loaded.  There are no error messages printed or logged:  such failures are silent. There is a tool named vcdbg that can be used to extract the Device Tree load time logs but this is closed source and, as yet, there is no arm64 binary.  I did get the following using a different tool: pi@devuan:~$ dtmerge /boot/bcm2710-rpi-3-b-plus.dtb merge.dtbo /boot/overlays/tft35a.dtbo DTOVERLAY[error]: No symbols found * Exiting with error code 1 Without symbols you can't overlay.  Sadly the tool dtmerge is not available for Devuan.  You can build it from source or pinch an arm64 binary from the Ubuntu ubuntu-raspi2 PPA. * Exactly what you typed or did to demonstrate the problem. What you can do under Devuan is confirm that Device Tree Blob is missing symbols.  Install the device-tree-compiler-package first. pi@devuan:~$ fdtdump /boot/overlays/tft35a.dtbo | fgrep '__ {'         __overlay__ {         __overlay__ {         __overlay__ {     __overrides__ {     __symbols__ {     __fixups__ {     __local_fixups__ { pi@devuan:~$ fdtdump /boot/bcm2710-rpi-3-b-plus.dtb | fgrep '__ {'     __overrides__{ This confirms that the symbols are missing from the Devuan DT Blob, not my DT Overlay. * A description of the incorrect behaviour: exactly what behaviour you were expecting, and what you observed. A transcript of an example session is a good way of showing this. The DT Overlay describes my device.  When applied, the kernel will load the appropriate modules (ads7846 and fb_ili9486).  The modules should appear in the dmesg output and also the output of lsmod. Under Devuan, they do not.  The current versions of these modules do not take parameters but expect to extract them from the Device Tree so manual loading of these has no effect. My device is unusable. * A suggested fix, or even a patch, if you have one. A quick work around is to take the equivalent Device Tree Blob from Raspian.  It contains symbols, the kernel loads the modules, the device springs into life and everyone lives happily ever after. A more sensible approach might be to upgrade the device tree compiler to a version that is symbol capable, build the Device Tree Blobs passing the -@ option to the device tree compiler and reissue the SD image(s). --------------23EF5785766A25ECA034CE5B Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit
Package: arm64_raspi3
Version: ascii_2.0.0
  • Details of the configuration of the program with the problem. Include the complete text of its configuration files.

I was using devuan_ascii_2.0.0_arm64_raspi3.img.xz downloaded on January 19th 2019 at around 18:00 UTC.

  • A description of the incorrect behaviour: exactly what behaviour you were expecting, and what you observed. A transcript of an example session is a good way of showing this.

This image comes with a /boot/overlays directory containing a large number Device Tree Overlay files and a /boot/config.txt that contain at least one dtoverlay= directive.

So it seems reasonable to suppose that this Devuan image is supposed to be Device Tree Overlay capable.  It appears not to be.

  • The exact and complete text of any error messages printed or logged. This is very important!

It appears DT overlays are not loaded.  There are no error messages printed or logged:  such failures are silent.

There is a tool named vcdbg that can be used to extract the Device Tree load time logs but this is closed source and, as yet, there is no arm64 binary.  I did get the following using a different tool:

pi@devuan:~$ dtmerge /boot/bcm2710-rpi-3-b-plus.dtb merge.dtbo /boot/overlays/tft35a.dtbo
DTOVERLAY[error]: No symbols found
* Exiting with error code 1

Without symbols you can't overlay.  Sadly the tool dtmerge is not available for Devuan.  You can build it from source or pinch an arm64 binary from the Ubuntu ubuntu-raspi2 PPA.

  • Exactly what you typed or did to demonstrate the problem.

What you can do under Devuan is confirm that Device Tree Blob is missing symbols.  Install the device-tree-compiler-package first.

pi@devuan:~$ fdtdump /boot/overlays/tft35a.dtbo | fgrep '__ {'
        __overlay__ {
        __overlay__ {
        __overlay__ {
    __overrides__ {
    __symbols__ {
    __fixups__ {
    __local_fixups__ {
pi@devuan:~$ fdtdump /boot/bcm2710-rpi-3-b-plus.dtb | fgrep '__ {'
    __overrides__{

This confirms that the symbols are missing from the Devuan DT Blob, not my DT Overlay.

  • A description of the incorrect behaviour: exactly what behaviour you were expecting, and what you observed. A transcript of an example session is a good way of showing this.

The DT Overlay describes my device.  When applied, the kernel will load the appropriate modules (ads7846 and fb_ili9486).  The modules should appear in the dmesg output and also the output of lsmod.

Under Devuan, they do not.  The current versions of these modules do not take parameters but expect to extract them from the Device Tree so manual loading of these has no effect.

My device is unusable.

  • A suggested fix, or even a patch, if you have one.

A quick work around is to take the equivalent Device Tree Blob from Raspian.  It contains symbols, the kernel loads the modules, the device springs into life and everyone lives happily ever after.

A more sensible approach might be to upgrade the device tree compiler to a version that is symbol capable, build the Device Tree Blobs passing the -@ option to the device tree compiler and reissue the SD image(s).


--------------23EF5785766A25ECA034CE5B--