Overview
A LCD and an optional keypad can be attached to server, that runs the GiantDisc server. This is particularly useful with an embedded GiantDisc system, which should be able to continuously display the currently played track and the playtime, and that should also offer some basic controls like play, stop, pause, next on a small keypad.
Notice that the LCD controller script can run independently of the GiantDisc server script and hence independently of a Palm. A possible scenario is that a playlist is composed using the Palm, which is detached later (and even the server script can be stopped). You can then play through the playlist using the keys of the keypad. If the Palm is later reattached, it will synchronize with the current state of the playlist, and it can again take over the playback control.
Prerequisites
I didn't want to reinvent everything from scratch. A search on the web showed clearly, that the most advanced LDC driver is LCDproc. It is available at http://lcdproc.omnipotent.net or http://lcdproc.sourceforge.net.LCDproc supports a large number of different text-LCD's, that are either attached to the serial or the parallel port. It is also possible to add input controls like small keyboards, IR remote controls (using LIRC), joysticks etc.
Building the LCD Interface
Note: As already said above, lcdproc supports many different LCD devices. This chapter show just one example - a HD44780 driven LCD device that is attached to the parallel port. Refer to the LCDproc documentation to see, how LCD devices can be attached to one of the computer ports.
Here, I chose the "HD44780-winamp" connection scheme with keypad on the parallel port. Below you can see the schematic and the pcb.
![]() |
![]() |
![]() |
||
| Schematic | Parts Placement | Bottom Layer |
| ID | Description |
| Con1 | Sub-D 25 male |
| Con2 | Dil-16 |
| D1..D3 | 1N4148 |
| Pot1 | 22k |
| R1 | 1k |
| R2 | 4k7 |
| R3..R6 | 22k |
| R7 | 6 |
| Tr1 | BC327 |
If the bottom layer will have the correct size, if the image is printed with a resolution of 300dpi.
Here's an extract of the LCDproc configuration file, that configures a HD44780 LCD controller and a keypad on the parallel port:
[server] Driver=HD44780 [HD44780] # Hitachi HD44780 driver # See docs/hd44780_howto.txt Port=0x378 ConnectionType=winamp Keypad=yes Backlight=yes Size=16x2
Installation and Configuration
Download
Download the LCD Client package at SourceForge.Installation
Upack the archive lcdclient-*.tar.gz and copy the file lcdclient.pl to the directory ~music/bin/ where the server scripts reside.
Invoking gdlcdclient.pl
The LCD controller script gdlcdclient.pl takes 4 parametersgdlcdclient.pl host player-id player-type layoutThe first tree parameters are usually localhost 0 0. If this doesn't work, you can print the player-id and player-type to the shell by selecting the menu item GiantDisc > DB/Disc Statistics in the search screen. The forth parameter specifies the layout, how the track titles, artist names, album titles, playtimes etc. are displayed on the LCD. You can get a list of the predefined layouts by typing the command grep "layout eq" gdlcdclient.pl.
Notice that gdlcdclient.pl currently only supports 2x16 displays. But it is easy to extend the script, to support other displays too. You will simply have to add a new layout to the section ### Layouts, by getting some inspiration of the existing layouts. If you have added new layouts, please send them to info@giantdisc.org, that they can be added to the distribution.
You might want to start the LCD client automatically, whenever the system boots. You can do this by adding the following lines to rc.local:
# Start LCDproc server /usr/local/sbin/LCDd -c /etc/LCDd.conf& # Start LCD client su --command="/home/music/bin/gdlcdclient.pl localhost 0 0 2x16-4" music&
Keypad Input
It is optionally possible to attach a small keyboard of about a dozen of keys. The keypad input is also handled by the LCDproc-package and it is activated by the line Keypad=yes in the LCDproc configuration file.
The keypad can contain as many keys as required. A sensible minimum is two keys - one to start playing through the current play list, and one to stop playing.
Each key of the keypad needs to be associated to a predefined command. This key association is specified in the GiantDisc configuration file .gdconfig. Here's an example of such a key association list:
keymap = 5 - cmd_play keymap = 6 - cmd_stop keymap = B - cmd_prev keymap = 4 - cmd_next
You can get a list of the commands by typing grep "cmd_" gdlcdclient.pl in a shell.
IR Remote Control
There is no direct support for consumer infrared remote controls in GiantDisc. However, a Linux Infrared Remote Control (LIRC) plugin exists for LCDproc. You can run the same gdlcdclient.pl script with or without attaching a LC-display, and match LIRC keys to GiantDisc functions as described above. For more information about LIRC refer to http://www.lirc.org/


