Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Help identify lcd display on Smoothwall SWG700 [Edit: Portwell EZIO]

    Scheduled Pinned Locked Moved Hardware
    59 Posts 9 Posters 15.5k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • stephenw10S
      stephenw10 Netgate Administrator
      last edited by

      I found not way to control it but it would not surprise me to find it's possible. It would be nice to have but not important, the backlight life if obviously not a factor here if the manufacturer has it fixed on.

      I didn't study the connections between the LCD and the module that closely. Once I found there was no easy way bypass it I stopped looking.

      Steve

      1 Reply Last reply Reply Quote 0
      • F
        fmertz
        last edited by

        Ok, time for a test!

        I attached a FreeBSD-compiled driver for an EZIO variant of the HD44780 driver. The code works on my Linux ARM NAS and my funky USB/Serial adapter. Hopefully, it works on the real appliance as well. If someone is up for a test, let me know.

        So:

        • Extract hd44780.so from the attached archive and copy it on the appliance

        • Check LCDd.conf and make sure it looks like 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/...
        Keypad=yes
        Size=16x2
        KeyMatrix_4_1=Enter
        KeyMatrix_4_2=Up
        KeyMatrix_4_3=Down
        KeyMatrix_4_4=Escape
        
        
        
        $ file server/drivers/hd44780.so
        server/drivers/hd44780.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (FreeBSD), dynamically linked, not stripped
        $ md5 server/drivers/hd44780.so
        MD5 (server/drivers/hd44780.so) = 2ae5133869bd5593dd45871340fa5b08
        
        

        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.

        The code is here: https://github.com/fmertz/hd44780-ezio/tree/hd44780-ezio

        hd44780.zip

        1 Reply Last reply Reply Quote 0
        • stephenw10S
          stephenw10 Netgate Administrator
          last edited by

          Nice work. Unfortunately it fails to load for me:

           Could not open driver module /usr/local/lib/lcdproc/hd44780.so: /usr/local/lib/lcdproc/hd44780.so: unsupported file layout 
          

          Is that compiled 64bit? What FreeBSD version? I was testing in pfSense 2.4 so FreeBSD 11.

          Edit: Looks like it is 32bit, any chance of a 64bit version?

          Steve

          1 Reply Last reply Reply Quote 0
          • F
            fmertz
            last edited by

            Yep, 32bit FreeBSD 10.2.

            Ok, let me look around for FreeBSD 11 64bit…

            1 Reply Last reply Reply Quote 0
            • F
              fmertz
              last edited by

              OK, I attached a 64bit FreeBSD 10 driver. Let me know.

              hd44780.zip

              1 Reply Last reply Reply Quote 0
              • stephenw10S
                stephenw10 Netgate Administrator
                last edited by

                It works!  :D  ….mostly.

                The display looks correct.

                The driver initialises the display correctly from power off.

                The keypad doesn't work.

                I should note I've never seen the keypad work on this hardware, the original OS was not bootable. It may be broken for all I know though it looks in good condition.

                Not sure how to test that directly....

                Steve

                My LCDd.conf for reference:

                [server]
                DriverPath=/usr/local/lib/lcdproc/
                Driver=hd44780
                Bind=127.0.0.1
                Port=13666
                ReportLevel=3
                ReportToSyslog=yes
                User=nobody
                Foreground=no
                ServerScreen=no
                GoodBye="Thanks for using"
                GoodBye="    pfSense     "
                WaitTime=5
                
                [menu]
                MenuKey=Escape
                EnterKey=Enter
                UpKey=Up
                DownKey=Down
                
                [hd44780]
                driverpath=/usr/local/lib/lcdproc/
                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
                Speed=2400
                
                1 Reply Last reply Reply Quote 0
                • F
                  fmertz
                  last edited by

                  You can test this keypad "manually".

                  Create a background process to read from the device.```
                  cat < /dev/cuau1 > nil.dat &

                  
                  Then, send xFEx06 to the device.```
                  printf "\376\006" > /dev/cuau1
                  

                  The keypad status comes back in hex: xFDx4n. No key pressed is x4F. F is binary 1111. Each key pressed makes a bit go to 0, so:

                  • Escape is x4E

                  • Up is x4D

                  • Enter is x4B

                  • Down is x47

                  So, press one of the keys, then send the command xFEx06. Press another key, then send the sequence. Once done with all keys, check nil.dat with```
                  od -x nil.dat

                  1 Reply Last reply Reply Quote 0
                  • stephenw10S
                    stephenw10 Netgate Administrator
                    last edited by

                    Hmm, nothing coming back at all. I would expect to get back 0x4f every time if the keypad was disconnected for example.

                    Port somehow open write only?

                    1 Reply Last reply Reply Quote 0
                    • stephenw10S
                      stephenw10 Netgate Administrator
                      last edited by

                      Hmm set the port speed manually and initialised the display…. still nothing coming back

                      Sending

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

                      Does correctly clear the display so commands are reaching the module as expected.

                      1 Reply Last reply Reply Quote 0
                      • F
                        fmertz
                        last edited by

                        The spec is here:

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

                        There is a picture of that ribbon cable for the keypad.

                        Could also be that the serial cable is somehow not connected right.

                        1 Reply Last reply Reply Quote 0
                        • stephenw10S
                          stephenw10 Netgate Administrator
                          last edited by

                          I don't believe it's a problem with the ribbon cable as I expect to see 0x4f sent even if the keypad is disconnected. It could be the serial cable…. I don't think the display sends anything else we can check that with. Hmm...

                          A second tester could help here.

                          Steve

                          1 Reply Last reply Reply Quote 0
                          • F
                            fmertz
                            last edited by

                            There is another thing, too. There is a "watchdog timeout" for custom characters if you do not send all 8 bitmaps. See Note 3 in the spec.

                            Send xFEx40. See if xFDx0E comes back…

                            1 Reply Last reply Reply Quote 0
                            • stephenw10S
                              stephenw10 Netgate Administrator
                              last edited by

                              Nothing from that either. I'll have to pull it out when I have time and check it.

                              Steve

                              1 Reply Last reply Reply Quote 0
                              • F
                                fmertz
                                last edited by

                                I started a separate thread here. Hopefully we can get a tester or two.

                                https://forum.pfsense.org/index.php?topic=129820.0

                                1 Reply Last reply Reply Quote 0
                                • S
                                  serlogo
                                  last edited by

                                  hi fmertz,
                                  is it possible to take 2.1.5 x64 and x32 eizo 300 driver.

                                  please save me…

                                  1 Reply Last reply Reply Quote 0
                                  • stephenw10S
                                    stephenw10 Netgate Administrator
                                    last edited by

                                    Upgrade!  ;)

                                    Really is there any reason you're still running 2.1.5?

                                    You could compile the driver against FreeBSD 8.3 with some effort I expect.

                                    Steve

                                    1 Reply Last reply Reply Quote 0
                                    • W
                                      Wuebit
                                      last edited by

                                      Thanks works Perfect!  ;)

                                      1 Reply Last reply Reply Quote 0
                                      • x2rlX
                                        x2rl @stephenw10
                                        last edited by

                                        @stephenw10 Can you reupload than hex file please think the forum movement killed it. Thanks

                                        1 Reply Last reply Reply Quote 0
                                        • stephenw10S
                                          stephenw10 Netgate Administrator
                                          last edited by

                                          Sure here you go.

                                          But you can use fmertz's driver directly now via lcdproc if you want.
                                          See: https://forum.netgate.com/topic/115071/ezio-driver-for-lcdproc

                                          Steve

                                          pfsense.hex.txt

                                          1 Reply Last reply Reply Quote 1
                                          • First post
                                            Last post
                                          Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.