Resurecting the Alphacool LCD Screen on Linux

An image of the larger of the two AlphaCool LCD displays

This one is for the 3 people who still have Alphacool’s LCD screen from the mid 2000’s and want to get it running on lcd4linux ..on Linux (obviously). This particular relic is still supported on Windows using AIDA64 and some back-in-the-day USB drivers that may or may not bluescreen your PC. Anyway, this article (mostly for myself when I reinstall next) shows how to get the Serdisplib drivers enabled with lcd4linux on Debian 13.

1. Install prerequisites

We’ll need the below utilities installed to compile the software. I’m also uninstalling Debian’s lcd4linux package that I was messing about with. the distro package of lcd4linux doesn’t have the right driver baked in.

apt update
apt uninstall lcd4linux # In case you had already installed the Debian packaged version. 
apt install -y gettext libtool libtool-bin  libgd3 libgd-dev libusb-1.0-0-dev libusb-dev dh-autoreconf pkg-config build-essential git

2. Download, compile and install SerDispLib

Grab the source for SerDispLib from (ugh) sourceforge, from the link below, then navigate to your download and run the commands shown:

https://serdisplib.sourceforge.net/

tar xvzf serdisplib-2.02.tar.gz 
cd serdisplib-2.02/
./configure --enable-libusb --with-drivers=all
make
sudo make install
cd src/

The serdisplib libraries/drivers should now be installed.

3. Test the driver

Assuming you’ve plugged in your screen, find the right device using the lsusb command, grab the usb ID.

A screenshot of the command line showing the output of lsusb, highlighting the alphacool usb entry

Now run the testserdisp command with -n set to ‘alphacool’ and the -p flag set to the usb ID you retrieved above.

sudo testserdisp -n alphacool  -p usb:060c/04eb

All being well, you should see some output

(note the odd lines are just because my display is a bit damaged..)

A screenshot of an AlphaCool LCD Display showing some test text indicating the display driver is working correctly

4. Download, compile and install lcd4linux

Grab a copy of lcd4linux from github and compile it, ensuring you enable the serdisplib driver, as shown below:

git clone https://github.com/jmccrohan/lcd4linux.git
cd lcd4linux
mkdir m4
autoreconf -fvi -I m4
./configure --with-drivers=serdisplib --with-plugins='!all'
make 
sudo make install

5. Test lcd4linux with your display

Here is a very minimal lcd4linux configuration file, create it as shown, don’t forget to change the ‘Port’ setting if your usb ID is different

sudo tee /etc/lcd4linux.conf <<EOF

Display SerDispLib {
  Driver 'serdisplib'
  Port 'usb:060c/04eb'
  Model 'ALPHACOOL'
  Options ''
}
Variables {
  tick 500
  tack 100
  minute 60000
}

Display 'SerDispLib'
Layout 'Main'

Widget OS {
    class 'Text'
    expression ' '.uname('sysname').''.uname('release').''.uname('machine').' '
    width 300
    align 'L'
    speed 100
    update tick
}
Layout Main {
  Layer 0
    Row1 {
      Col11 'OS'
    }
}
EOF

Make sure to set the permissions correctly or lcd4linux will complain:

chmod 600 /etc/lcd4linux.conf
chown root.root /etc/lcd4linux.conf

6. Add a unit file to control lcd4linux

sudo tee /etc/systemd/system/lcd4linux.service << EOF
[Unit]
Description=daemon for driving LCD based displays

[Service]
Type=forking
ExecStart=/usr/local/bin/lcd4linux
User=root
PIDFile=/run/lcd4linux.pid
Restart=on-abort

[Install]
WantedBy=multi-user.target
EOF

Now enable and start lcd4linux:

sudo systemctl daemon-reload
sudo systemctl enable --now lcd4linux

A dark terrible photo of abusing the drawing function of LCD4Linux

A note for Arch Linux users

lcd4linux won’t compile as-is so you may need this patch. See this thread

diff --git a/PKGBUILD b/PKGBUILD
index d9eda6d..660ffa5 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -8,14 +8,21 @@ pkgdesc="Grabs information from the kernel and other systems and displays it on
 arch=('i686' 'x86_64')
 url="https://wiki.lcd4linux.tk/doku.php"
 license=('GPL-2.0-only')
-makedepends=('git' 'pkg-config' 'automake' 'autoconf')
+depends=('dbus' 'glibc' 'libusb-compat' 'ncurses' 'sqlite')
+makedepends=('git')
 provides=('lcd4linux')
 conflicts=('lcd4linux-svn')
 backup=('etc/lcd4linux.conf')
 source=('lcd4linux::git+https://github.com/jmccrohan/lcd4linux'
 		'lcd4linux.service')
 md5sums=('SKIP'
-		'809b7eefb65fd5545e9716dd1b7cf925')
+         '809b7eefb65fd5545e9716dd1b7cf925')
+
+prepare() {
+	cd "${_pkgname}"
+	ln -s . m4
+	autoreconf -fiv -I /usr/share/gettext/m4
+}
 
 pkgver() {
   cd "${_pkgname}"
@@ -24,8 +31,7 @@ pkgver() {
 
 build() {
 	cd "${_pkgname}"
-	./bootstrap
-	./configure --prefix=/usr
+	CFLAGS+=' -std=gnu17' ./configure --prefix=/usr
 	make
 }

Additional resources for windows: