#1140950 consider building HD44780 and GPIO_PCF857X modules for LCD auxiliary displays

#1140950#5
Date:
2026-06-28 16:21:20 UTC
From:
To:
Hello,
At least a few retailers that cater to hobbyist electronics have miniature and inexpensive LCD character displays like the following, which can be controlled over I2C:
https://www.microcenter.com/product/632704/-
https://community.microcenter.com/kb/articles/649-inland-1602-i2c-module

A survey of the literature suggests these are most commonly used for embedded Linux devices or more primitive microcontrollers. However they can be just as straightforward for an average x86_64 desktop user using a neat hack: a spare VGA or DVI port provides an I2C interface as well as some 5V power, which is all that's needed. Thus these displays can be used with machines of all kinds and I'd like it to be possible on all architectures.

The kernel has a CONFIG_HD44780 option to build a module for the integrated circuit that draws characters on the screen, but it's currently unset. If this module could be built, it'd introduce the 'auxdisplay' Linux device class and allow text to be written to the screen via a /dev/lcd* character device, much like opening a tty.
For convenience in reducing the number of pins needed for communication, a second IC, a PCF8574, is used to allow the many parallel lines to be controlled over I2C. There is a module for the GPIO system to use this guarded behind CONFIG_GPIO_PCF857X, which uses the Linux I2C subsystem to expose the GPIO pins. An upstream kernel contributor has ensured that these two drivers can work in tandem, and some blog posts document the success:
Gentle introductions to configuring the driver: https://yeah.nah.nz/embedded/linux-chardev-lcd/ https://blog.microjoe.org/2019/hd44780-lcd-i2c-screen-using-linux-mainline-charlcd-driver.html
Clearing up usage with the I/O expander: https://blog.runtux.com/posts/2021/01/06/

In conclusion, I think my local Linux Users Group will be interested in using these and they're a fun learning tool too, and one that can give an introduction to building embedded Linux systems even from a conventional workstation at minimal expense. So please consider setting CONFIG_HD44780=m and CONFIG_GPIO_PCF857X=m (if I understand this right?) so the modules are available; the former should imply CONFIG_AUXDISPLAY to be set appropriately. I haven't been able to try this—I'm taking my time wrapping my head around how the source package works—but I have no doubt this will be adequate.

/usr/src/linux-config-*/config.amd64_none_amd64.xz says
# CONFIG_AUXDISPLAY is not set
# CONFIG_GPIO_PCF857X is not set
at least in Trixie and newer, it seems.

Thanks