Sure/Smartie LCDProc

Recently I’ve been looking at getting a computing device into the Land Rover. Short of buying a full sized 7″ touch screen, I opted to go for a slightly cheaper £20 4×20 LCD display. This was more to be proof of concept, and give me a starter to work on, before I decide whether or not to put a full sized screen in.

Ultimately, I purchased a SmartieLCD module from Ebay. It arrived, I plugged it into my laptop running Windows at work, and it worked first time. Now it was time to get it working with LCDProc!

Earlier on I had spotted that SmartieLCD in Windows used the Matrix Orbital DLL file. Sadly, when using LCDProc in Linux, Matrix didn’t work at all. It was time to go looking

Enthused by http://lists.omnipotent.net/pipermail/lcdproc/2009-July/013021.html, and manufacturers documentation, I decided to check out the CVS copy of LCDProc. The last ‘release’ was back in 2007, so if I was to get anything recent it would have to be from CVS

cvs -d:pserver:anonymous@lcdproc.cvs.sourceforge.net:/cvsroot/lcdproc login
cvs -z3 -d:pserver:anonymous@lcdproc.cvs.sourceforge.net:/cvsroot/lcdproc co -P lcdproc

Having a look around the source files indicate that Sure Electronics displays were supported, but not enabled by default. A simple ./configure flag would enable them, so it was time to get compiling. Firstly some support files have to be installed first.

sudo apt-get install libusb-dev autogen automake

After that, kick off the build process, and enable Sure Electronics support at configure time.

sh ./autogen.sh
./configure –enable-drivers=SureElec
make
sudo make install

Now that the software is installed, LCDd needs configured in order to send data to the LCD display.

sudo vim /usr/local/etc/LCDd.conf

In here, a few parts need changed –

driver=SureElec
DriverPath=/usr/local/lib/lcdproc/
Edition=3
Contrast=200
Brightness=480

And that’s it! Execute /usr/local/sbin/LCDd, and you should get a Clients: 0 and Screens: 0 on the LCD display.

All is good!

3 Replies to “Sure/Smartie LCDProc”

  1. unfortunatly, it’s all ok, befoare i connect a client!!!!
    when i connect a client, it’s stop working, and stop working usb too!!!

    here a piece of /var/log/messages (i hope you may arrange in code box!!!!)
    please note that i tried to kill the pid, for this reason i’ve a :”Server shutting down on SIGTERM”

    Jan 2 15:04:56 phenom LCDd: LCDd version 0.5dev starting
    Jan 2 15:04:56 phenom LCDd: Built on Jan 2 2010, protocol version 0.3, API version 0.5
    Jan 2 15:04:56 phenom LCDd: Using Configuration File: /usr/local/etc/LCDd.conf
    Jan 2 15:04:56 phenom LCDd: Set report level to 5, output to syslog
    Jan 2 15:04:56 phenom LCDd: Server forking to background
    Jan 2 15:04:56 phenom LCDd: parent = 2542
    Jan 2 15:04:56 phenom LCDd: Listening for queries on 127.0.0.1:13666
    Jan 2 15:04:56 phenom LCDd: child = 2543
    Jan 2 15:04:56 phenom LCDd: SureElec driver: init(0x24294e0)
    Jan 2 15:04:56 phenom LCDd: SureElec: using Device /dev/ttyUSB0
    Jan 2 15:04:56 phenom LCDd: SureElec: screen size 20 x 4.
    Jan 2 15:04:56 phenom LCDd: SureElec: Contrast (in config) is ‘500’
    Jan 2 15:04:56 phenom LCDd: SureElec: Brightness (in config) is ‘600’
    Jan 2 15:04:56 phenom LCDd: SureElec_init: OffBrightness (in config) is ‘100’
    Jan 2 15:04:56 phenom LCDd: Driver [SureElec] loaded
    Jan 2 15:04:56 phenom LCDd: Key “Escape” is now reserved exclusively by client [-1]
    Jan 2 15:04:56 phenom LCDd: Key “Enter” is now reserved shared by client [-1]
    Jan 2 15:04:56 phenom LCDd: Key “Up” is now reserved shared by client [-1]
    Jan 2 15:04:56 phenom LCDd: Key “Down” is now reserved shared by client [-1]
    Jan 2 15:04:56 phenom LCDd: child_ok_func(signal=10)
    Jan 2 15:04:56 phenom LCDd: screenlist_switch: switched to screen [_server_screen]
    Jan 2 15:04:56 phenom LCDd: SureElec: BL turned on
    Jan 2 15:06:12 phenom LCDd: Server shutting down on SIGTERM
    Jan 2 15:06:19 phenom kernel: [ 154.628622] usb 4-4: USB disconnect, address 2
    Jan 2 15:09:46 phenom kernel: [ 360.930117] khubd D 0000000000000000 0 40 2 0x00000000
    Jan 2 15:09:46 phenom kernel: [ 360.930125] ffff88006d5a5be0 0000000000000046 ffff88005b5b38a0 0000000000015880
    Jan 2 15:09:46 phenom kernel: [ 360.930132] ffff88006d59b110 0000000000015880 0000000000015880 0000000000015880
    Jan 2 15:09:46 phenom kernel: [ 360.930137] 0000000000015880 ffff88006d59b110 0000000000015880 0000000000015880
    Jan 2 15:09:46 phenom kernel: [ 360.930143] Call Trace:
    Jan 2 15:09:46 phenom kernel: [ 360.930155] [] usb_kill_urb+0x85/0xc0
    Jan 2 15:09:46 phenom kernel: [ 360.930164] [] ? autoremove_wake_function+0x0/0x40
    Jan 2 15:09:46 phenom kernel: [ 360.930170] [] ? usb_get_urb+0x16/0x20
    Jan 2 15:09:46 phenom kernel: [ 360.930175] [] usb_hcd_flush_endpoint+0x123/0x130
    Jan 2 15:09:46 phenom kernel: [ 360.930181] [] usb_disable_endpoint+0x5a/0xa0
    Jan 2 15:09:46 phenom kernel: [ 360.930186] [] usb_disable_device+0x30/0x130
    Jan 2 15:09:46 phenom kernel: [ 360.930191] [] usb_disconnect+0xca/0x140
    Jan 2 15:09:46 phenom kernel: [ 360.930195] [] hub_port_connect_change+0x8a/0x960
    Jan 2 15:09:46 phenom kernel: [ 360.930200] [] hub_events+0x3a2/0x590
    Jan 2 15:09:46 phenom kernel: [ 360.930206] [] ? thread_return+0x48/0x37f
    Jan 2 15:09:46 phenom kernel: [ 360.930211] [] ? hub_thread+0x0/0x190
    Jan 2 15:09:46 phenom kernel: [ 360.930215] [] hub_thread+0x3a/0x190
    Jan 2 15:09:46 phenom kernel: [ 360.930219] [] ? autoremove_wake_function+0x0/0x40
    Jan 2 15:09:46 phenom kernel: [ 360.930224] [] ? hub_thread+0x0/0x190
    Jan 2 15:09:46 phenom kernel: [ 360.930228] [] kthread+0xa6/0xb0
    Jan 2 15:09:46 phenom kernel: [ 360.930233] [] child_rip+0xa/0x20
    Jan 2 15:09:46 phenom kernel: [ 360.930238] [] ? kthread+0x0/0xb0
    Jan 2 15:09:46 phenom kernel: [ 360.930241] [] ? child_rip+0x0/0x20

  2. Hi,

    That looks suspiciously like the kernel having issues rather than LCDproc – hence the change from “LCDd” to “kernel” in the 4th column. The Smartie just presents itself as a serial to USB device, just like the PL2303 chips on other devices.

    Firstly I would check to make sure that your kernel is up to date, as you say it takes out your entire USB subsystem instead of just the display. With the kernel up to date, it should also update the cp210x module as well.

    Failing all that, I would suggest asking the LCDproc mailing list, cos I’m all out of ideas 🙂

    Kyle

Leave a Reply

Your email address will not be published. Required fields are marked *