Firebox LCD Driver for LCDProc



  • Well someone a while ago mentioned getting pfSense running on a firebox - I was able to do the same but could not live without the LCD working.

    So I wrote a driver for LCDProc and got it working on pfSense 1.2-RC4!

    Check out the pixs. Realizing this is pretty specialized hardware not sure if there is any interest for the driver for anyone else's uses.





  • That is pretty cool!  We can surely make this a package.



  • Hmmm - There was some mention a little while back about creating a driver for the mini-box.com ( http://www.mini-box.com/picoLCD-20x2-OEM?sc=8&category=490 ) display used in their M-200 and M-300 cases.  Would this driver be applicable???  If not - how hard would it be to adapt???

    gm…



  • That looks like a pretty cool LCD. the software which i wrote the driver was for lcdproc because i had scene that name used else where on this site.

    It appears to already have support in lcdproc based on the website/link provided

    LCDProc with keypad support: Available in latest CVS from lcdproc homepage or here. An archive of the sources is available here. LCDProc with picoLCD patch is also available in latest Gentoo ebuilds repositories.

    I can grab a copy and try to compile for you guys but I don't have a display to test with.



  • this is awesome and thanks for writing this, I want to get a firebox soon as a pfsense box.



  • Got any instructions on how to make it work?  I played around with it when I first got the firebox running but didn't really get anywhere.



  • Sure do. I have a tar archive at home with the components that you need to get it up and running. Its really small.  When I get home, I'll look at it and post the archive here with a few directions.



  • Here are the directions w/ files! This only has support for the FireBox LCD compiled. I have also noticed the interface stats does not work w/ freeBSD. I've got a full install on my pc and it still doesn't pickup the traffic. I have not dug too much into it.  At any rate here it is:

    (Copy and paste from shell so you can see exactly how I set it up to install)

    I should really wrap a cool GUI around this so it can all be configured from the web console. I do know PHP too, just need to find some time.

    I'm using the EMBEDDED VERSION! the install script supports that only - if you are using a full install i'd try and comment out the 2 mount commands as you don't need to re-mount the file system as read-write then back to read-only.

    Note: the /var/tmp filesystem resides in memory so you can 'play' here without wearing out your CF card.

    This is from some PC to put the archive on the pfsense box.

    
    MacWild:final jayson$ ls
    lcdd.tar.gz
    MacWild:final jayson$ gunzip lcdd.tar.gz
    MacWild:final jayson$ scp lcdd.tar root@***.***.***.***:/var/tmp
    Password:
    lcdd.tar                                      100%  124KB 124.0KB/s   00:00    
    MacWild:final jayson$ 
    
    

    Now ssh into the box; make sure ya got it enabled first of course  ;)

    
    pfsense:/#  cd /var/tmp
    pfsense:/var/tmp#  ls -l
    total 126
    -rw-r--r--  1 root  wheel  126976 Mar  6 22:30 lcdd.tar
    drwxr-xr-x  2 root  wheel     512 Mar  6 22:28 vi.recover
    pfsense:/var/tmp#  tar -xvf lcdd.tar
    x lcdd
    x lcdd/drivers
    x lcdd/lcdd
    x lcdd/LCDd.conf
    x lcdd/lcdd.sh
    x lcdd/lcdproc
    x lcdd/drivers/curses.so
    x lcdd/drivers/sdeclcd.so
    x install-embed.lcdd.sh
    pfsense:/var/tmp#  chmod 700 install-embed.lcdd.sh 
    pfsense:/var/tmp#  ./install-embed.lcdd.sh 
    pfsense:/var/tmp#  mount
    /dev/ufs/pfSense on / (ufs, local, read-only)
    devfs on /dev (devfs, local)
    /dev/md0 on /tmp (ufs, local)
    /dev/md1 on /var (ufs, local)
    /dev/ufs/pfSenseCfg on /cf (ufs, local, read-only)
    devfs on /var/dhcpd/dev (devfs, local)
    pfsense:/var/tmp# 
    
    

    Now you can reboot or just 'cd' over to the run-scripts directory and start it up so you can keep that stellar 'up-time' figure

    
    pfsense:/var/tmp#  cd /usr/local/etc/rc.d
    pfsense:/usr/local/etc/rc.d#  ls
    lcdd.sh		lighttpd
    pfsense:/usr/local/etc/rc.d#  ls -la
    total 5
    drwxr-xr-x  2 root  wheel   512 Mar  6 22:31 .
    drwxr-xr-x  4 root  wheel   512 Feb 24 17:37 ..
    -r-xr-xr-x  1 root  wheel   174 Mar  6 22:31 lcdd.sh
    -r-xr-xr-x  1 root  wheel  1184 Sep 11 13:00 lighttpd
    pfsense:/usr/local/etc/rc.d#  ls
    lcdd.sh		lighttpd
    pfsense:/usr/local/etc/rc.d#  ./lcdd.sh
    pfsense:/usr/local/etc/rc.d#  
    
    

    The driver currently does not have support for vertical filled histograms - its only a 2x20 LCD so I wrote the horizontal fill functions - I need to finish that but I really didn't need it so I pushed it to the back burner for now.

    http://files.pfsense.org/misc/lcdd.tar.gz

    (Can this file be put on one of the pfSense servers?) – Thanks!  I've updated my url



  • thanks ridnhard19 for posting this, I'll try it out soon



  • ridnhard19: I copied this file to http://files.pfsense.org/misc/lcdd.tar.gz

    If you ever want to make any updates, just email me (cmb@pfsense.org) the file as an attachment and I'll update it.

    I may see about including this in our lcdproc package at some point if time permits.



  • I added the driver to my LCDproc package install, I added the following to:
    /usr/local/pkg/lcdproc.inc
    Under the /* lcdproc default driver definitions */:

    				case "sdeclcd":
    					$config_text .= "[{$lcdproc_config['driver']}]\n";
    					$config_text .= "BackLight=yes\n";
    					break;
    
    

    And added the following to: /usr/local/pkg/lcdproc.xml
    In the drive options section.

                                    <option><value>sdeclcd</value>
    					<name>sdeclcd</name></option> 
    

    Then copied the attached "sdeclcd.so"(remove the ".txt") to "/usr/local/lib/lcdproc/"

    So now the LCD works, it says LCDproc Server and on the second line says Cli: 0  Scr: 0

    But I couldn't get the LCDproc service to start, so I had to do that manually from the terminal:

    "lcdproc -s 127.0.0.1 -p 13666 C M U"

    Now the LCD works awesome!

    ridnhard19: Thanks for the driver!  Hopefully we can get this in the LCDproc package and make it work.

    sdeclcd.so.txt



  • Well, I just followed my own instructions on my other firebox and it worked without me having to start lcdproc from the terminal. And the options on the screens page work as well.  Not sure what happened to the first one though  ???



  • Cool; I'm glad its working!!  A package for this would rock too where you can click options and it up via web interface…. Maybe after i finish up this big project at work I'll have a life again and can tinker.



  • thanks ridnhard19,
    got this working well on my pfsense watchguard's lcd, switching between cpu and memory stats

    and let us know if you ever get it to display network related stuff



  • I tried this on my firebox 2 and the lights are blinking, but they doesn't make any sense. Can you please give me the sourcecode or adapt this driver for the firebox 2?

    Thanks…



  • Since this has been rolled up in the LCDProc package - which driver did you write for the x700?  I cannot seem to find the name of the driver in question as well as what port did you assign it (parallel port?, usb com1?)

    Thanks again guys.  One less X700 on the market.

    Dayblade



  • @Dayblade:

    Since this has been rolled up in the LCDProc package - which driver did you write for the x700?  I cannot seem to find the name of the driver in question as well as what port did you assign it (parallel port?, usb com1?)

    Thanks again guys.  One less X700 on the market.

    Dayblade

    Just a bump.

    Did you ever figure out what driver and port the lcd should be run as?
    Or do you still have to install in manually?



  • This is awesome… I loaded pfsense on my X500 by popping in a 2GB CF and upgrading the RAM to 512... Truthfully I never expected it to work this well, if at all, since I did it without looking if anyone had done it before.  The LCD just tops it off and makes it look great... On ebay most used watchguards go for less than $50 usd since the live security subscription is so much which basically junks the box.  This is a perfect appliance for pfsense and with the 6 NICs it really takes it to the next level.

    I hope this makes it to a package for the faint of heart!

    Being less of a programmer and more of a network guy I ahve been having a hard time adjusting what the LCD reads out.  I went through the .conf file but did not see any per line settings... where can i go to edit how/what the LCD displays?



  • It works perfectly on X750 too. On FreeBSD 7 based versions of pfSense it doesn't work without tricks becose missing libraries libc.so.6 and libkvm.so.3.



  • fix it by:

    cd /lib
    ln -s libc.so.7 libc.so.6
    ln -s libkvm.so.4 libkvm.so.3

    then it works



  • @trendchiller:

    fix it by:

    cd /lib
    ln -s libc.so.7 libc.so.6
    ln -s libkvm.so.4 libkvm.so.3

    then it works

    Yup. I did that.

    Friend also recommended using libmap.conf instead of ln, but I didn't get myself to try it yet.



  • Hi. Kinda new to this. I got a 128 MB card loaded with the PFSense but need some more detailed newb type help to get the LCD portion to work. Can anyone help me?

    Thanks for your time,

    Jess
    Dizydiz@gmail.com



  • I am also new and interested in getting the LCD to work on my Firebox. 1.2.1 final works great from CompactFlash otherwise.



  • what is the chance somebody will get the buttons on the firebox x series working within lcdproc?  prior to installing pfsense on my watchguard I had full ubuntu server installed using lcd4linux.  The latest version of lcd4linux supports 100% the sdec lcd on the firebox x series as well as the buttons.  I was able to configure screens and reboot the firebox through the interface.

    The aptitude version of lcd4linux doesnt have this support, only the latest v10.1 rc2 version does which I manually downloaded and installed on top of the v10.0 that is available through aptitude.



  • In response to a couple requests; I've posed the LCDproc driver code for the lcd.  I've been informed we might be able to make a charmap for the hd44780 standard driver in LCDproc. Doing this would allow the buttons to work too!

    Source code is posted on my site: http://www.ktechs.net/



  • Works fine here on 1.2.3-RC1, even without the symlinks. As I run an embeded kernel on a HDD, I just had to comment out the 2 mount lines in the install script before running.

    Would be nice to see the buttons working.

    Phil



  • @trendchiller:

    fix it by:

    cd /lib
    ln -s libc.so.7 libc.so.6
    ln -s libkvm.so.4 libkvm.so.3

    then it works

    Did you do this on an embedded system or full install?  When I try on an embedded, I get:

    pfsense:/lib#  ln -s libc.so.7 libc.so.6
    ln: libc.so.6: Read-only file system





  • Thank you.  Awesome job on this.  Another x700 LCD working on an embedded system.



  • @Dayblade:

    Since this has been rolled up in the LCDProc package - which driver did you write for the x700?  I cannot seem to find the name of the driver in question as well as what port did you assign it (parallel port?, usb com1?)

    Thanks again guys.  One less X700 on the market.

    Dayblade

    I recently installed a full version of this and would also like to know if this was ever figured out.  What port and driver were used in the package for the watchguards?



  • Just bumpin this up, anyone?



  • I've been looking for a firewall to replace an aging netgear fsv box.  Stumbled on pfSense, found it to be pretty amazing, got a decommisioned Firebox x700 and replaced the cf card with a 4g and lcdproc on the 1.2.3rc1 embedded image.  Works like a champ.  Had some troulble getting lcdproc to work but after finding this thread and adding symlinks, all is good.  Was there any ever progress with controlling the lcd with the buttons on the firebox and a charmap that was discussed in this thread?  Sorry to resurrect an old thread but thought those that originally started it might have more insight.

    Thanks,
    Eric



  • I've not done any work with mine at all. I started troubleshooting a problem with no connectivity and turned out the old firebox bit the dust  :(

    So I won't have a test system any more to work with this specific LCD.  BUT I did build a kick-ass system with a power efficient mini-itx board, 6 GIG E ports, 2 GIG of memory, fan less and quite all in a nice small metal case. Now I wonder how  I can squeeze an LCD in there  ::)

    I did have fun writing the driver for this. I've never written one before but sounds like a lot of you were able to make some use of it.



  • Hello,

    I found where is the keyboard,  :) i just wrote a scanning program which tracks changes on all ports… ;D

    and if found the 4 pushbuttons are at address 0x379 !!

    for the moment, i am not able to reach the front panel lights...

    if it was easy to write a small test program, when i tried to modify sdeclcd to add the key_read routine, unfortunately, i encounter a lot of difficulties to compile it ???

    If someone could support me for that, so all fireboxes X series could enable the keyboard !

    Jean Jacques



  • You have to download the source for lcdproc and modify the autoconfig scripts to find your sources. The best advice I have is to look at the lcdproc documentation on how to integrate a new driver and use the already established name of the files that I've posted. They have a whole
    section on how to develop drivers and integrate the
    with the autoconfig and autobuild scripts. Once you do that you can just type make :) after you run the configure script of course setting the parameter to include your driver.



  • While you were writing, i found the developer documentation.

    i was not able to ./configure –enable-driver=all ... there was an error in the documentation, the right switch is --enable-drivers...

    unfortunately, i do not know why, the new driver i called sdeclcd2 becomes sdeclcd2SO in the makefile !!
    i corrected that manually and i am able to compile it ! :)

    Now, i am proud  ;D to tell that my driver is working fine, the 4 buttons returns "Left","Right","Up" and "Down" and i can change the screens.

    For sure, the main part of the program is your, not mine !!

    I will put in online in a few days because i prefer to test it before.

    About the name, do you want to keep this name ?

    Jean Jacques



  • I'd prefer it say the same as it references the name of the LCD module that is being used in the fireboxes.  I think we should also submit the source code to the project so people can just download it as part of the normal distribution of LCDProc.  Then again i'm not sure if there is such of a "demand" to warrant a driver that is for something so specific.



  • I agree, it's a so specific driver that it may not included in lcdproc.

    Anyway, it can be added to pfsense, maybe in download area for those who got a nice red firebox box (i like the color!)

    I have made some tests, it works fine, it's nice in addition with lcdexec.

    I prefer to have more feedback before giving it. Additionnally, i need to understand my compilation troubles, i certainely did someting wrong in the *.am files, but i do not see what for the moment.

    nota : I removed the #include "shared/str.h", because it was giving me a compile error (file not found). It compiles without. Have you some idea?

    Jean Jacques



  • Hello all,

    I solved all my compile problems!
    It was a mistake in Makefile.am

    so i tested th driver yesterday and today, it works.

    here is attached the file, jst change the name : remove the .txt

    make a copy of previous sdeclcd.so file, in case of trouble, you can reinstall it
    copy it instead of original sdeclcd.so
    restart LCDd

    Then the 4 keys send messages "Up","Down","Left","Right"

    So the standard LCDd.conf will work.

    if you want to use my kbd setup, here it is :

    PrevScreenKey=Down
    NextScreenKey=Up

    [menu]

    MenuKey=Left
    EnterKey=Right
    UpKey=Up
    DownKey=Down

    Enjoy  :D

    Jean Jacques

    sdeclcd.so.txt



  • Hi all Fireboxes users!

    Good news, I improved a little bit sdeclcd.so driver, by adding now a backlight timer.

    here are instructions:

    • backup your old sdeclcd.so to sdeclcd.so.bak, just in case of trouble, you can reinstall the previous one
    • donwload sdeclcd.so.txt, rename it sdeclcd.so
    • copy the new sdeclcd.so instead of the old
    • edit the /usr/local/etc/LCDd.conf file and add in [sdeclcd] section:
      ================================
      Backlight_Timer=60 if you want 60 seconds
      ================================
      notice: if no entry is written in LCDd.conf, or if value is set to 0, the timer is disabled.
    • you need to restart your lcdproc driver :
    • killall LCDd
    • LCDd
    • lcdproc
    • lcdexec (if you use it)
      or reboot your Firebox
      => after 60 seconds (or the time you decided), the backlight will turn off. any key will turn it on.  ;D

    keep me informed of your trials.

    Enjoy it  :)

    Jean Jacques

    sdeclcd.so.txt