Dieser Artikel in Deutsch
This article in English

alphacool LCD

It started with the fact that my shiny new Mediabox case urged for a new, external display. After some research I decided to get one of those alphacool LCD display with a resolution of 240x128 in an external case.

The display I used before has not proven to be worth the hassle. It was too small and too dark to use it in a comfortable way. Also it was not capable of displaying enough information to control the VDR just by using the display instead to fire up the TV set every time.

These issues should be fixed by the new alphacool display.

The Basics

The external version of the display is embedded in a little case made of stainless steel which is obviously manufactured by alphacool in a small batch. The overall quality of the case is 'ok' though it doe not look the professional way one would expect.

The case does have its manufacturing flaws. The edges are rough and sharp. This is not only a potential health risk, it could also damage the surface of some expensive furniture.

The display is also available in other versions:

  • external stainless steel case 240x128 pixels
  • a double sized 5 1/4" slot-in with 240x128 pixels in black or silver
  • a 5 1/4" slot-in with 200x64 pixel in black or silver

Actually I wanted to get the double sized 5 1/4"slot-in, but the new case has a cover which hides the both 5 1/4" slots and thus excludes the use of the slot-in version of the display since the display would be unusable hidden behind the cover.

Hardware

Disassembled the display consists of the following parts (picture on the right, from the upper left to the lower right):

  • base socket
  • case back
  • LCD module with USB connector
  • case front
  • four case screws
  • four spacer for the case screws
  • two screws to fixate the back of the case on the socket plus two nuts
  • a little tool to release the screws at the base socket. If the socket is mounted in it's secondary position at the case's back the display can be operated in portrait mode

The display can easily be assembled and disassembled. Placing the spacer is a little bit tricky though.

The electronics of the module os nothing spectacular. However the module does have a professional look which suggests that the module is in fact manufactured by a 3rd party. Also the USB device ID points this out. The display is consists of an Atmel microcontroller, a dislay controller made by Toshiba and the display drivers.

There are also the usual parts like oscilators, capacitors, resistors etc present on the PCB plus some additional connectors with unknown functions.

A closer look on the display controller reveils the wide spread T6963 display controller. The commonly well known LCD controller by Toshiba has a solid base in the open source community and is also supported by the serdisplib project which is maintained by Wolfgang Astleitner. The datasheet of the controller can easily be found on the net and describes the features in depth.

The USB interfacing and the display controller is done by a little Atmel microcontroller using a 3rd party firmware. According the USB device ID the firmware is maintained by EEH Datalink GmbH. But this is only a wild guess.

The microcontroller is an Atmel 89C5130. The datasheet is also available through the net. The controller has a rich feature set compared to its size. It is filled with about 1KByte RAM, 16KByte flash memory which is in-system programable via the USB interface, a 4KByte EEPROM for the boot loader and a 256 Byte RAM scratchpad inside the CPU core. The integrated USB interface is capable of USB 1.1 and 2.0. Along with that there is the usual stuff like a bunch of I/O pins, counters and so forth. In theory it should be possible to write and flash an own firmware to the controller, but this is a little bit oversized for this project.

Software

The display is shipped with a CD which may contain the Windows software - 'may', because I don't really know this since I didn't insert the CD even once. I don't use Windows on my Mediabox system. The net declares no driver support for Linux.

An  article in the VDR forum by a user named Nessie, who introduced a patch for the serdisplib, lit some hope. Nessie only patched the code for the small 200x64 version of the display. After I applied the patch the bigger display showed nothing more than garbage.

Before I dumped the display I took a look at the driver and included support for both variants of the module (the little version which I do not own couldn't be tested). Many thanks to Nessie for reveiling the control codes of the microcontroller and many thanks to Wolfgang Astleitner for the great support on the display buffer code. Also a huge thanks to Faisal Kalapatt who bounced ideas with me on the optimized transfer.

Features:

  • automatic display model selection (240x128 / 200x64)
  • backlight control
  • inverted mode
  • rotation (0, 90, 180 and 270 deg)
  • optimized data transfer (transfers only changed data)
  • transfer optimization can be disabled in case of problems

Starting with version 1.97.7 the driver is part of the serdisplib project. The following text describes the patch process against version 1.97.6. This process is not required if you use the current version of the serdisplib.

Installation:

The driver is shipped as a patched again version 1.97.6 of the serdisplib package. To compile the library with USB support enabled you'll have to have libusb installed. In order to set this up you'll also need to have the CONFIG_USB_SUSPEND flag of the kernel deactivated, beginning with libusb version 0.1.12. This ensures that the display is recognized properly (see also  here).

First some things need to be set up:

  • install libusb if not already present
  • download serdisplib-1.97.6
  • download serdisplib-1.97.6-alphatools-*.diff.gz

If libusb is missing you'll have to compile and install this prior to compile serdisplib. I will not lay this out here since it is rather straight forward and shouldn't be a problem.

Then unpack and patch serdisplib:

# tar xvzf serdisplib-1.97.6.tar.gz
...
# cd serdisplib-1.97.6
# zcat ../serdisplib-1.97.6-alphacool-*.diff.gz | patch -p1
patching file include/serdisplib/serdisp_connect.h
patching file include/serdisplib/serdisp_control.h
patching file src/Makefile.in
patching file src/serdisp_connect_usb.c
patching file src/serdisp_control.c
patching file src/serdisp_specific_alphacool.c

Followed by configure and make:

# ./configure --enable-libusb
...
# make && make install

... and a final test:

# src/testserdisp -n ALPHACOOL -p usb:060c/04eb [-o "OPTALGO=0"]

The display should now present you with the serdisplib test pattern. Appending OPTALGO=0 deactivates the optimized display transfer. This may help in case of a broken graphic output (pixel garbage).

The test tool offers a little shell which can also be used to test the rotation feature. If the picture is rotated by 90 degrees the picture will be flushed so the display is empty then. In this case you'll have to issue the command 'test' to generate a new test pattern. Rotation by 180 degrees work out of the box since the width and height remain the same. 90 degree steps swap width and height and therefore the picture cannot be displayed anymore.

User who want to use the whole package with GraphLCD can try the following configuration file snippet for /etc/graphlcd.conf:

[serdisp]
Driver=serdisp
Controller=ALPHACOOL
Device=usb:060c/04eb
Width=240 [or 200]
Height=128 [or 64]
UpsideDown=no
Invert=no
Backlight=yes

History

  • 23.08.2007: Version 0.5 - some tweaks for the integration in serdisplib. FASTWRITE has been replaced by OPTALGO
  • 07.06.2007: Version 0.4 - improved support for 200x64 / 240x128 displays
  • 20.05.2007: Version 0.3 - improved support for 200x64 displays
  • 24.04.2007: Version 0.2 - code optimizations
  • 23.04.2007: Version 0.1 - initial release

Downloads

serdisplib-1.97.6-alphacool-0.5.diff.gz

7.9 K

serdisplib-1.97.6.tar.gz

218 K

serdisplib-1.97.5-alphacool-0.4.diff.gz

7.7 K

serdisplib-1.97.5-alphacool-0.3.diff.gz

7.0 K

serdisplib-1.97.5-alphacool-0.2.diff.gz

6.7 K

serdisplib-1.97.5-alphacool-0.1.diff.gz

7.6 K

serdisplib-1.97.5.tar.gz

202 K

graphlcd.conf

127