Lucid LCD Soon!


New member
Greetings to all.

Just thought I'd drop some information about a project I've started for the CFA displays (631, 633, 635). Unfortunately since CrystalFontz hasn't released anything for Linux, I guess I'll be writing something myself (I know they are working on it, but I've got the free time to work on this anyways).

The program will be as small and lightweight as possible. All libraries will be pre-compiled and included in binary (and source) distributions of Lucid LCD, but there's really only three of them. No plans for a GTK interface, although it wouldn't be hard to make a basic one for generic rotating screens and maybe even menus.

Anyways. Lucid will be composed of a "daemon" that sits in the background. Super-early beta versions (buggy as heck right now) use Simple ECMAScript Engine (SEE), which provides a super lightweight Javascript interpreter and runtime environment, built into Lucid LCD.

On launch, Lucid LCD reads a configuration file and a script file. The script file is extremely similar to Javascript (heck, it is Javascript) and all your typical javascript code works with it. The only difference is that the interpreter and environment is built into Lucid.

Most of the functions built into Lucid are available to the ECMA/JS script as very simple commands.

Lucid LCD currently handles the following itself (requiring very little scripting behind it):
- Menu Systems
- Input (ie, numbers, characters, etc)
- Bargraphs
- Bignums
- External fonts (*.cfnt, basically a text file with a poor-man's ASCII representation of the character)
- Possibly animated fonts (same thing as above, just multiple characters in one file)
- Text formatting (centered, scroll, left/right, etc)

Also built in (but hardly functioning right now) is a "Thermal Manager" that is enabled via the scripting (and can thus be overridden or turned off with ease) and essentially handles the thermal management of sensors and fan speeds in a separate thread of the program ("set and forget" as it were). So far, albeit buggily, Thermal Management supports the following:
- Automated fan adjustment with active/inactive temperature values
- Full speed momentary startups for fans with troubles starting at lower speeds
- Non-linear fan speeds per temperatures

Also included will eventually be system-wide and easily accessible variables via scripting for most Linux system stats (processor info, RAM, HD, network & IP's, etc).

Pretty much, it's a complete scripting environment, self-contained, wrapped up with a complete language interpreter that's sufficiently advanced enough to run an entire machine headless and with ease. It's small and fast enough that it doesn't eat much RAM and can be configured to do anything you could possibly dream of (it will eventually support SH scripts for input and output).

Since Lucid LCD is nothing more then a complete pile of code stuck in a Virtual Machine in my laptop right now (VMware, using a CFA-631 via USB passthrough), there truly isn't much to post right now and I'm assuming the thread would be flooded with issues about getting it to work (there are many, many hacks right now).

I've got a real Linux box coming in the next month or so which I plan to do some real development on where I can finally test out and debug all the thermal management, so I'm guessing files will start showing up here reasonably soon (I'm just a one-man-band). When it does show up, however, expect to be blown away...

Cheerio for now.

Looking for additional LCD resources? Check out our LCD blog for the latest developments in LCD technology.

CF Tech

That approach sounds quite interesting. I will be very interested in hearing about your progress.


New member
Yup. I'm hoping it will be smaller then using a full-fledged java installation or something equally as complicated. My ultimate goal is to get it small and fast enough that it will run on ether embedded Linux machines (x86) or a completly headless computer lacking a video card alltogether.

Basically, SEE allows for one to write C code and have the script run/access it as an "object", so writing to the LCD would be as simple as lcd.write(x,y,"foobar!");, getting a key press would be as simple as var myvar:KeyNum = lcd.getkey(timeout);, or running a menu like lcd.runmenu(display_array, function_array); (where display_array is the text contents of the menu, and function_array is the function name that gets called depending on what the user selects). The complicated C code is interfaced through SEE and the user doesn't need to know how or why it works.

I may or may not build in the functionality to parse something like XML files as "screens" and menus, which could then easily be generated by a GTK utility and used by the Lucid LCD daemon. Obviously, a generated setup by the UI wouldn't be as powerful as the scripting engine, but I know for some people a simple rotating screen setup is just fine.



New member
this project really excited me, until I saw that it was over a year old. Is this still being developed? or has it been abandoned?

and did the thermal part use the SCAB module or hardware monitors using something like lm_sensors ?