Jump to content

Recommended Posts

Posted
On 12/6/2025 at 4:09 PM, snowbody said:

root@homeassistant:/boot# ls /sys/class/leds/display
brightness  device  digits  map_seg7  max_brightness  num_digits  num_segments    power  segments  subsystem  trigger  uevent  value

 

16 hours ago, snowbody said:

display-service -c
[INFO] all digits and leds on
/usr/sbin/display-service: 116: cannot create /sys/class/leds/display/message: Permission denied

 

On 10/31/2025 at 1:32 PM, Jean-Francois Lessard said:

I think your previous permission denied issue was because you were using an older version of the driver with the current version of the display-service.

 

On 10/31/2025 at 1:32 PM, Jean-Francois Lessard said:

Latest driver version now use line-display library (expected upstreaming requirements), therefore there is no more sysfs value attribute. This has been replaced with the line-display message attribute.

 

@snowbody you are using an older version of the driver with the current version of the display-service. That won't work.

 

Since you are on 6.12 kernel, start by cloning the main branch of https://github.com/jefflessard/tm16xx-display.git it already contains the line-display backport.

Posted

Hello!

I have a strange behavior at compiling 
 

Цитата

make EXTRA_CFLAGS="-DCONFIG_TM16XX -DCONFIG_TM16XX_KEYPAD -DCONFIG_TM16XX_I2C -DCONFIG_TM16XX_SPI -include /home/bc/Soft/tm16xx-display/drivers/auxdisplay/tm16xx_compat.h -I/home/bc/Soft/tm16xx-display/include/" -C /lib/modules/6.17.2-edge-sunxi64/build M=/home/bc/Soft/tm16xx-display/drivers/auxdisplay CONFIG_TM16XX=m CONFIG_TM16XX_KEYPAD=m CONFIG_TM16XX_I2C=m CONFIG_TM16XX_SPI=m CONFIG_LINEDISP=m modules
make[1]: Entering directory '/usr/src/linux-headers-6.17.2-edge-sunxi64'
make[2]: Entering directory '/home/bc/Soft/tm16xx-display/drivers/auxdisplay'
  CC [M]  line-display.o
  CC [M]  tm16xx_core.o
tm16xx_core.c: In function ‘tm16xx_parse_fwnode’:
tm16xx_core.c:285:17: error: implicit declaration of function ‘fwnode_for_each_available_child_node_scoped’; did you mean ‘fwnode_for_each_available_child_node’? [-Wimplicit-function-declaration]
  285 |                 fwnode_for_each_available_child_node_scoped(digits_node, child) {
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                 fwnode_for_each_available_child_node
 

 

As i knew, fwnode_for_each_available_child_node_scoped was committed to kernel at 2024 year.. 

Thats my kernel

Цитата

bc@transpeed-8k618-t:~$ uname -a
Linux transpeed-8k618-t 6.17.2-edge-sunxi64 #2 SMP PREEMPT Sun Oct 12 11:01:58 UTC 2025 aarch64 GNU/Linux

 

Any ideas?

Posted (edited)

Thanks!!

I had compiled tm16xx, attach dtb overlay, and trying to load modules.

dmesg:

Цитата

[  161.778500] line_display: loading out-of-tree module taints kernel.
[  161.828311] tm16xx-i2c 3-0024: Failed to configure controller: -6
[  161.828416] tm16xx-i2c 3-0024: error -ENXIO: Failed to initialize display

 

my old dts overlay for openvfd:

Цитата

/dts-v1/;
/plugin/;

/ {
    fragment@0 {
        target-path = "/";
        __overlay__ {
            openvfd {
                compatible = "open,vfd";
                dev_name = "openvfd";
                status = "okay";
            openvfd_gpio_clk = <&pio 8 11 1>;
            openvfd_gpio_dat = <&pio 8 12 1>;
            vfd_gpio_chip_name = "0300b000.pinctrl";
            openvfd_chars = [02 04 03 02 01];
            openvfd_dot_bits = [00 01 03 02 04 05 06];
            openvfd_display_type = <0x03000001>;
            };
        };
    };
};

 

new dts overlay:

Цитата

/dts-v1/;
/plugin/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/leds/common.h>

&{/} {
    i2c-display {
        compatible = "i2c-gpio";
        sda-gpios = <&pio 8 12 1>; /* PI12 */
        scl-gpios = <&pio 8 11 1>; /* PI11 */
        i2c-gpio,delay-us = <5>;
#address-cells = <1>;
#size-cells = <0>;

        display@24 {
            compatible = "fdhisi,fd650", "titanmec,tm1650";
            reg = <0x24>;
            digits {
                #address-cells = <1>;
                #size-cells = <0>;
                digit@0 {
                    reg = <0>;
                    segments = <0 0>,
                           <0 1>,
                           <0 2>,
                           <0 3>,
                           <0 4>,
                           <0 5>,
                           <0 6>;
                };
                digit@1 {
                    reg = <1>;
                    segments = <1 0>,

                           <1 1>,
                           <1 2>,
                           <1 3>,
                           <1 4>,
                           <1 5>,
                           <1 6>;
                };
                digit@2 {
                    reg = <2>;
                    segments = <2 0>,
                           <2 1>,
                           <2 2>,
                           <2 3>,
                           <2 4>,
                           <2 5>,
                           <2 6>;
                };
                digit@3 {
                    reg = <3>;
                    segments = ❤️ 0>,
                           ❤️ 1>,
                           ❤️ 2>,
                           ❤️ 3>,
                           ❤️ 4>,
                           ❤️ 5>,
                           ❤️ 6>;
                };
            };

            leds {
                #address-cells = <2>;
                #size-cells = <0>;
                led@1,7 {
                    reg = <1 7>;
                    function = "colon";
                };
            };
        };
    };
};

 

Configs looks equals in hardware config, but driver not loading...

 

Edited by blackc
errors
Posted
11 minutes ago, blackc said:

           openvfd_gpio_clk = <&pio 8 11 1>;
            openvfd_gpio_dat = <&pio 8 12 1>;

 

11 minutes ago, blackc said:

        sda-gpios = <&pio 8 12 0>; /* PI12 */
        scl-gpios = <&pio 8 11 0>; /* PI11 */

 

Have you tried setting the pin flag to 1 as in your open vfd config?

 

        sda-gpios = <&pio 8 12 1>; /* PI12 */

        scl-gpios = <&pio 8 11 1>; /* PI11 */

Posted

I was rechecked that openvfd works and get its config

 

openvfd dtbo overlay fragment (decompiled on running system) 

Цитата

    openvfd {
        openvfd_display_type = <0x3000001>;
        dev_name = "openvfd";
        openvfd_gpio_clk = <0x02 0x08 0x0b 0x01>;
        openvfd_dot_bits = [00 01 03 02 04 05 06];
        vfd_gpio_chip_name = "0300b000.pinctrl";
        compatible = "open,vfd";
        status = "okay";
        openvfd_gpio_dat = <0x02 0x08 0x0c 0x01>;
        openvfd_chars = [02 04 03 02 01];
    };
 

 

It works, driver loaded and userspace software shows me current time on LED (some segments shows wrong, i think it result of wrong chars config)

 

tm16xx:
I've tried many values for GPIO line config, GPIO_ACTIVE_LOW (1), GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN (6), GPIO_ACTIVE_HIGH (0), GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN (7). It was no result at all, driver still says 
that cannot init controller.

Also i was tried drivers fd6551, fd655 with different GPIO lines config. No success.
I was rechecked LED controller chip on board, it is really FD6551.

 

tm16xx dtbo overlay fragment (decompiled on running system)

Цитата

i2c-display {
        #address-cells = <0x01>;
        #size-cells = <0x00>;
        compatible = "i2c-gpio";
        i2c-gpio,delay-us = <0x05>;
        scl-gpios = <0x02 0x08 0x0b 0x01>;
        sda-gpios = <0x02 0x08 0x0c 0x01>;

        display@24 {
            compatible = "fdhisi,fd6551";
            reg = <0x24>;

            leds {
                #address-cells = <0x02>;
                #size-cells = <0x00>;

                led@1,7 {
                    function = "colon";
                    reg = <0x01 0x07>;
                };
            };

            digits {
                #address-cells = <0x01>;
                #size-cells = <0x00>;

                digit@3 {
                    segments = <0x03 0x00 0x03 0x01 0x03 0x02 0x03 0x03 0x03 0x04 0x03 0x05 0x03 0x06>;
                    reg = <0x03>;
                };

                digit@1 {
                    segments = <0x01 0x00 0x01 0x01 0x01 0x02 0x01 0x03 0x01 0x04 0x01 0x05 0x01 0x06>;
                    reg = <0x01>;
                };

                digit@2 {
                    segments = <0x02 0x00 0x02 0x01 0x02 0x02 0x02 0x03 0x02 0x04 0x02 0x05 0x02 0x06>;
                    reg = <0x02>;
                };

                digit@0 {
                    segments = <0x00 0x00 0x00 0x01 0x00 0x02 0x00 0x03 0x00 0x04 0x00 0x05 0x00 0x06>;
                    reg = <0x00>;
                };
            };
        };
    };
 

 

I have no ideas what goes wrong.

 

When i was configure openvfd device tree, pointing gpio chip as &gpio was not works. Only pointing as "0300b000.pinctrl" was successful. Maybe, its important...

Maybe, some features/conflicts at controller init needs debugging

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines