EZIO Driver for LCDproc



  • In the recent past, a number of folks have expressed interest in installing pfSense onto a number of older firewall appliances fitted with a Portwell EZIO LCDs. Unfortunately, no (complete) driver implementation for the EZIO devices were available as part of the LCDproc package.

    Fortunately, Portwell published a technical specification suitable as a base for a software driver implementation.

    http://drivers.portwell.com/CA_Manual/EZIO/EZIO-FINAL.PDF

    I recently managed to acquire the device itself (stand alone, presumably out of some appliance), went to my junk drawer for cables and adapters, and found some time for coding a proper driver. My version of the code is shared in my repo, but will soon be merged upstream with the LCDproc project so everyone can get it through normal package installation.

    https://github.com/fmertz/hd44780-ezio/tree/hd44780-ezio

    In the meantime, feedback from running this in the original hardware appliance would be most welcome. I attached a set of archives with the driver in compiled form:

    • HD44780_EZIO_Driver_pfSense2_3_32bit.zip contains hd44780.so for pfSense 2.3 (current) 32bit x86

    • HD44780_EZIO_Driver_pfSense2_3_64bit.zip contains hd44780.so for pfSense 2.3 (current) 64bit AMD64

    • HD44780_EZIO_Driver_pfSense2_4_64bit.zip contains hd44780.so for pfSense 2.4 (future) 64bit AMD64

    So:

    • Extract hd44780.so from the attached archive and copy it to /usr/local/lib/lcdproc/

    • Check LCDd.conf and make sure you merge in what follows

    • Start LCDd and see what happens. The server alone shows basic stuff and allows for keypad interaction. Start with ESC and navigate

    
    [server]
    Driver=hd44780
    
    [hd44780]
    ConnectionType=ezio
    Device=/dev/cuau1
    Keypad=yes
    Size=16x2
    KeyMatrix_4_1=Enter
    KeyMatrix_4_2=Up
    KeyMatrix_4_3=Down
    KeyMatrix_4_4=Escape
    
    

    Fair Warning: the attached code is executable. This code is of unknown origin for most of you. It is a development version of a device driver, or so I say. Use at your own risk, only on a system you own, in a non-production environment.
    HD44780_EZIO_Driver_pfSense2_3_32bit.zip
    HD44780_EZIO_Driver_pfSense2_3_64bit.zip
    HD44780_EZIO_Driver_pfSense2_4_64bit.zip



  • For me


  • Netgate Administrator

    Removed and reseated all the connections to mine. Still nothing coming back from the keypad.

    I should note I have the EZIO-300 model but the specs are the same from what I can see.

    Steve



  • http://drivers.portwell.com/CA_Manual/EZIO/EZIO-300.pdf

    Seems like the keypad codes coming back are different. Easy to code this in, though.

    Still does not explain why your does not respond when spoken to.

    Do you have this unit stand alone, or is it part of an appliance?


  • Netgate Administrator

    It's built into a Portwell appliance but the connections are simple enough. It's connected to the com2 header on the motherboard. I could try connecting to it with something else directly.

    Let me see what I can hook up….

    Steve



  • Looks like version 2.3.4 64bit can't upload hd44780.so or any other files from "Diagnostics/Command Prompt". Will try to use SSH.


  • Netgate Administrator

    The 64bit driver is compiled against FreeBSD11 (pfSense 2.4) so you may be out of luck there.

    But if you can test it that would help. I haven't had time to do a direct test yet.

    Steve



  • Let me try and build a 10.3 AMD64 version…



  • May 10 01:16:00 LCDd Could not open driver module /usr/local/lib/lcdproc/hd44780.so: Shared object "libkvm.so.7" not found, required by "hd44780.so"
    That is what I got.


  • Netgate Administrator

    Right that's because libkvm.so.7 doesn't exist in 2.3.4.

    If you can try that module in 2.4 or wait for a module built against 2.3.X.

    Steve



  • OK, I updated the attachments to the first post. I separated the drivers by pfSense release. At this moment, only HD44780_EZIO_Driver_pfSense2_3_64bit.zip has been compiled with EZIO-300 keypad support. I will update the other archives later.

    yshakhov, you probably want HD44780_EZIO_Driver_pfSense2_3_64bit.zip

    PS: These files are the result of compiling code in virtual machines. I do not own an actual appliance, much less one with all combinations of operating systems, so it is best effort. Thanks for any help in testing.



  • Hi fmertz,
    Where is link to download you archive HD44780_EZIO_Driver_pfSense2_3_64bit.zip?
    Thanks.



  • Sorry,
    now is available



  • Hmm am I missing something. I'm on pfSense 2.3.4

    1. install lcdproc
    2. extract HD44780_EZIO_Driver_pfSense2_4_64bit.zip, then put hd44780.so in /usr/local/lib/lcdproc/
    3. nano /usr/local/etc/LCD.conf, and paste code

    
    [server]
    Driver=hd44780
    
    [hd44780]
    ConnectionType=ezio
    Device=/dev/cuau1
    Keypad=yes
    Size=16x2
    KeyMatrix_4_1=Enter
    KeyMatrix_4_2=Up
    KeyMatrix_4_3=Down
    KeyMatrix_4_4=Escape
    
    

    I run below command and get error
    [2.3.4-RELEASE][root@pfSense.localdomain]/root: /usr/bin/nice -20 /usr/local/sbin/LCDd -r 0 -c /usr/local/etc/LCD.conf > /dev/null &
    [1] 90321
    [2.3.4-RELEASE][root@pfSense.localdomain]/root: Critical error while initializing, abort.

    4. reboot and go under services> lcdproc
    Display size = Serial Com port 2 alternate (/dev/cuau1)
    Display size = 2 x 16
    Driver = HD44780 and compatible
    Connection type = ?

    I do not see ezio. Did I do something wrong?



  • @uknownme123:

    I'm on pfSense 2.3.4

    2. extract HD44780_EZIO_Driver_pfSense2_4_64bit.zip, then put hd44780.so in /usr/local/lib/lcdproc/
    I run below command and get error
    [2.3.4-RELEASE][root@pfSense.localdomain]/root: /usr/bin/nice -20 /usr/local/sbin/LCDd -r 0 -c /usr/local/etc/LCD.conf > /dev/null &
    [1] 90321
    [2.3.4-RELEASE][root@pfSense.localdomain]/root: Critical error while initializing, abort.

    If you are running pfSense 2.3.4, you need to get the driver from one of the 2.3 archive (32 or 64 bit). You are using the driver for 2.4, which will not work.

    To test, you can run something more direct:

    /usr/local/sbin/LCDd -r 3 -c /usr/local/etc/LCD.conf -f
    

    This raises the reporting level, and runs the program in the foreground.

    Thanks for helping with the testing.

    PS: This effort is to add EZIO support to the HD44780 driver of the lcdproc project. As of now, there is no addition to the pfSense integration package, so there is no option in the menu, yet.



  • Under  services> lcdproc, unchecked "start lcdproc at boot"
    Rebooted, then attempted to start LCDproc from command

    [2.3.4-RELEASE][admin@pfSense.localdomain]/root: /usr/local/sbin/LCDd -r 3 -c /u                                                                                                          sr/local/etc/LCD.conf -f
    LCDd version 0.5.7 starting
    Using Configuration File: /usr/local/etc/LCD.conf
    LCDd 0.5.7, LCDproc Protocol 0.3
    Part of the LCDproc suite
    Copyright (C) 1998-2014 William Ferrell, Selene Scriven
                            and many other contributors

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
    as published by the Free Software Foundation; either version 2
    of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software Foundation,
    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

    sock_create_inet_socket: cannot bind to port 13666 at address 127.0.0.1 - Address already in use
    sock_init: error creating socket - Address already in use
    Critical error while initializing, abort.



  • For a better test, make sure only one copy of LCDd is running. For the time being, turn off the pfSense instance of the daemon. What is happening is that the pfSense LCDd is taking possession of port 13666. The LCD started manually therefore cannot have access to it anymore.

    The other option is to start the manual LCDd with instruction to use another port:

    /usr/local/sbin/LCDd -r 3 -c /usr/local/etc/LCD.conf -f -p 13667
    


  • Sorry you are having to walk me step by step.

    2. extract HD44780_EZIO_Driver_pfSense2_4_64bit.zip, then put hd44780.so in /usr/local/lib/lcdproc/

    This was a typo, I did download the correct driver (HD44780_EZIO_Driver_pfSense2_3_64bit).

    So /usr/local/sbin/LCDd -r 3 -c /usr/local/etc/LCD.conf -f -p 13667 gives the below error

    Listening for queries on 127.0.0.1:13667
    Could not open driver module hd44780.so: Shared object "hd44780.so" not found, required by "LCDd"
    Driver [hd44780] binding failed
    Could not load driver hd44780
    There is no output driver
    Critical error while initializing, abort.




  • The server needs to be told where to find the drivers.

    Add this to LCDd.conf:

    [server]
    DriverPath= /usr/local/lib/lcdproc/
    

    Make sure there is a slash at the end..



  • Alright, now it's : Listening for queries on 127.0.0.1:13667,
    and just waiting here.



  • Ok, so now you can start a client. Something like:

    /usr/local/sbin/lcdproc -p 13667 -h 127.0.0.1 G K
    


  • [2.3.4-RELEASE][admin@pfSense.localdomain]/usr/local/sbin: /usr/bin/nice -20 /usr/local/bin/lcdproc -p 13667 -s 127.0.0.1 C T U I D M L P &
    [1] 71213
    [2.3.4-RELEASE][admin@pfSense.localdomain]/usr/local/sbin: /usr/local/bin/lcdproc -p 13667 -s 127.0.0.1 C T U I D M L P &
    [2] 81824
    [1]    Done                          /usr/bin/nice -20 /usr/local/bin/lcdproc -p 13667 -s 127.0.0.1 C T U I D M L P
    [2.3.4-RELEASE][admin@pfSense.localdomain]/usr/local/sbin: /usr/local/bin/lcdproc -p 13666 -s 127.0.0.1 C T U I D M L P &
    [3] 82399
    [2]    Done                          /usr/local/bin/lcdproc -p 13667 -s 127.0.0.1 C T U I D M L P
    [2.3.4-RELEASE][admin@pfSense.localdomain]/usr/local/sbin: /usr/local/bin/lcdproc -s 127.0.0.1 -p 13666 C T U I D M L P &
    [1] 37831
    
    

    Tried different variation nothing shows on the screen. Its taking the command for sure, but I don't know where.

    Confirmed the lb216 driver does work somewhat for this screen, buttons are not functional. So at least I know the screen works.



  • Can you post LCDd.conf?



  • 
    [server]
    DriverPath=/usr/local/lib/lcdproc/
    Driver=hd44780
    
    [hd44780]
    ConnectionType=ezio
    Device=/dev/cuau1
    Keypad=yes
    Size=16x2
    KeyMatrix_4_1=Enter
    KeyMatrix_4_2=Up
    KeyMatrix_4_3=Down
    KeyMatrix_4_4=Escape
    


  • [server]
    DriverPath=/usr/local/lib/lcdproc/
    Driver=hd44780

    [hd44780]
    ConnectionType=ezio
    Device=/dev/cuau1
    Keypad=yes
    Size=16x2
    KeyMatrix_4_1=Enter
    KeyMatrix_4_2=Up
    KeyMatrix_4_3=Down
    KeyMatrix_4_4=Escape

    Woops, this was actually LCD.conf. LCDd.conf still contained information regarding lb216 driver.

    Issue was, I initially created LCD.conf, instead I should had wipe out LCDd.conf and replaced with above code. commands mv LCD.conf LCDd.conf.

    Now its working. Now I'll try out the buttons and let you know.



  • @uknownme123:

    Now I'll try out the buttons and let you know.

    You might have to enable the internal menu for this:

    
    [server]
    DriverPath=/usr/local/lib/lcdproc/
    Driver=hd44780
    
    ToggleRotateKey=Enter
    PrevScreenKey=Left
    NextScreenKey=Right
    
    [menu]
    MenuKey=Escape
    EnterKey=Enter
    UpKey=Up
    DownKey=Down
    
    


  • Awesome, the buttons work. I did notice that after a while it gets very laggy in response, this is probably because of the 2400 baud rate.

    Hope to see this driver it in the WebGUI. I know a lot of folks out there have this LCD screen. I saw a lot of Checkpoints. I saw one on an Xceedium GateKeeper. The one I have was Smoothwall. I though I saw then on Mikrotek's x86 devices, I could be wrong on this tho. Thanks.



  • Thanks, good to hear confirmation that it works on the real hardware. I was developing this on an ARM NAS (running Debian Linux) with a USB/Serial adapter.

    At this point, the code change has been merged upstream with the lcdproc project: https://github.com/lcdproc/lcdproc/pull/82

    I assume the pfSense maintainers will pull the lcdproc package after the next release, so everyone can use these EZIO devices right out of the box.

    The only "open item" is a (minor?) change to the pfSense lcproc PHP package to include this connection type in the pre-defined list…



  • Thanks for your efforts here.  This thread has made me join this forum.

    You've helped me to make use of the LCD panel on a "Smoothwall S4" that I bought 2nd hand. Smoothwall didn't work for me, so I've been using pfSense for a few days. So far, it's meeting my needs.

    I do have LCDproc enabled, but it doesn't run for some reason. I haven't been able to work that out yet nor make use of the menu buttons.

    But what I have done is used the stty command and hex file Steve provided to initialise my LCD successfully.
    I then have a cron job which keeps the screen updated with CPU temp and time every few minutes.

    So thanks for that.

    If needed, I can expand my simple shell scripts to show any statistic I can get to fit on the ?32? characters :)

    Does anyone have tips for writing on the second line neatly? Right now I just pad in 20+ characters to cause word wrap to happen.

    Cheers,
    Graham.



  • @grahama:

    Does anyone have tips for writing on the second line neatly?

    It's in the spec. You can put the cursor at the beginning of the second line with something like this:

    printf "\376\300" > /dev/cuau1
    

    From the larger perspective, though, you might want to download and replace the hd44780.so driver file so you have the new code for this EZIO device (make sure you pick the right version for your OS, these files are attached to the first post in this thread). Then make sure LCDd.conf is updated, in particular the device and connection type. As noted above, this code is not available in pfSense, yet, and the glue pfSense package has not been updated either so this new "ezio" connection type is not showing as an option in the GUI. You seem familiar with the command line, though, so this should not be too much of a problem to get up to speed.



  • Yep, RTFM  :-[

    New line works a treat, thanks!

    Actually, I tried to read the specification, but the link "http://drivers.portwell.com/CA_Manual/EZIO/EZIO-FINAL.PDF" no longer works.
    Couldn't find any other links to EZIO-Final.PDF online either which is unusual.

    I have now installed the driver (and maybe fixed something with cron) and now LCDd / lcdproc / lcdexec are all working - buttons worked to navigate the menu and change settings.

    It didn't work after a reboot, so I have to work that out, but I'm happy that I've been able to re-utilise all of the hardware :)

    update: /usr/local/etc/LCDd.conf was overwritten on reboot, losing my changes.
    I'm finding this aspect of pfSense to be frustrating as well as it's use of tcsh. I'm yet to customise these things to suit my preference.



  • Hello Everyone,
    I am facing problems to make lcdproc work.

    I got a LCD Display "HD44780 Compatible" connected via FTDI USB (Chipset is FTDI 245) - It works fine on Windows so I know the display is fine.
    Now trying to make lcdproc work is being really difficult. The Service does't stand up in anyway and I can´t find any LOG for troubleshooting.
    Could anyone help me with that?

    Reading other posts I could find the hd44780 driver that comes with pfsense 2.3.4 is wrong. is it true? I tried to replace it with no sucess.

    Any help will be really appreciated.

    Thanks
    FAbricio.


  • Netgate Administrator

    This thread is for the EZIO display only. I have replied to your post in the main LCDproc thread.

    Steve



  • Working here on a SmoothWall UTM-300 (Caswell CAR-3030)


    At first it seemed not all the display buttons were working, but after hitting ESC (maybe a few times?) a menu appeared that I could navigate through to change settings (e.g. disable heartbeat, etc.). Relevant sections of my LCDd.conf:

    
    [server]
    DriverPath=/usr/local/lib/lcdproc/
    Driver=hd44780
    Bind=127.0.0.1
    Port=13666
    User=nobody
    WaitTime=5
    ToggleRotateKey=Enter
    PrevScreenKey=Left
    NextScreenKey=Right
    
    [hd44780]
    ConnectionType=ezio
    Device=/dev/cuau1
    Keypad=yes
    Size=16x2
    KeyMatrix_4_1=Enter
    KeyMatrix_4_2=Up
    KeyMatrix_4_3=Down
    KeyMatrix_4_4=Escape
    
    

    Is this pretty much a manual thing for now, or can we use it with LCDproc in WebGUI?

    Thank you!


  • Netgate Administrator

    Nice GIF.  ;D



  • OMG THANK YOU - this thread is what caused me to register for this forum - the driver works like a charm, amazing!
    (Caswell CAR-3000 board)



  • Love to see this!! I was previously getting by w/ the lb216 and the hex dump method.

    Anywho, I've downloaded HD44780_EZIO_Driver_pfSense2_3_32bit.zip and have extracted the .so to the specified location…

    however I am getting an error when starting lcdproc:

    Could not open driver module /usr/local/lib/lcdproc/hd44780.so: Shared object "libftdi1.so.2" not found, required by "hd44780.so"

    I'm not sure how to get that library installed on pfSense... Ideas?


  • Netgate Administrator

    Are you running 32bit 2.3.X?

    Though that file doesn't seem to be present anyway. Are you sure you selected the correct driver and connection type? Can we see you lcdproc.conf file?

    Steve



  • @ColdStoner:

    Could not open driver module /usr/local/lib/lcdproc/hd44780.so: Shared object "libftdi1.so.2" not found, required by "hd44780.so"

    I'm not sure how to get that library installed on pfSense… Ideas?

    This is more of a freeBSD thing. You need to add the libftdi1 library. You need to look into the package manager, but it is probably going to look like this, as root: "pkg add libftdi1" (lib FTD (eye) (one). Confusingly, there is also the older version, libftdi, which is not needed here.

    Best of luck, keep us posted.


  • Netgate Administrator

    Not sure why you'd need that unless you are using a USB/serial adapter though. And in that case it would still have needed it using the previous manual method.  :-\

    Steve


 

© Copyright 2002 - 2018 Rubicon Communications, LLC | Privacy Policy