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

    Problem with A125 LCD board with LCDProc

    Scheduled Pinned Locked Moved Hardware
    26 Posts 6 Posters 3.0k 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.
    • F
      fmertz
      last edited by fmertz

      I made a code change to this driver to replace the call to ftime(). A compiled version is attached. Let me know if it works and I will do a pull request with lcdproc.

      <The attachment was not confirmed to work, so it was removed>

      Source: Removed obsolete ftime() on Github

      R 1 Reply Last reply Reply Quote 0
      • R
        riken @fmertz
        last edited by

        @fmertz
        Thank you so much for your reply. I tried the driver, however, I am having the following error:

        Jun 25 20:47:42 LCDd Critical error while initializing, abort.
        Jun 25 20:47:42 LCDd There is no output driver
        Jun 25 20:47:42 LCDd Could not load driver icp_a106
        Jun 25 20:47:42 LCDd Driver [icp_a106] init failed, return code -1
        Jun 25 20:47:42 LCDd Listening for queries on 127.0.0.1:13666
        Jun 25 20:47:42 LCDd Using Configuration File: /usr/local/etc/LCDd.conf
        Jun 25 20:47:42 LCDd LCDd version 0.5.9 starting

        Is there anything that you want me to try?

        TIA

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

          The attachment is a normal zip file that contains the actual (64-bit!) driver file icp_a106.so

          $ unzip -l icp_a106.zip
          Archive:  icp_a106.zip
            Length      Date    Time    Name
          ---------  ---------- -----   ----
              14534  2019-06-25 07:27   icp_a106.so
          ---------                     -------
              14534                     1 file
          $ file icp_a106.so
          icp_a106.so: ELF 64-bit LSB shared object, x86-64, version 1 (FreeBSD), dynamically linked, not stripped
          

          Double check the file is transferred correctly (binary mode), and has the same permissions as other driver files in the same directory.

          Alternative is to get the updated source file and recompile the driver from source, as you did earlier. New file is here:

          Github icp_a106.c

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

            That compiled for 11.2?

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

              Yes, the attachment is the lcdproc icp_a106 driver code compiled in a FreeBSD 11.2 virtual machine. The driver file itself (icp_a106.so) was added to the zip archive (icp_a106.zip).

              R 1 Reply Last reply Reply Quote 1
              • R
                riken @fmertz
                last edited by

                @fmertz, Good morning. Apology for the late reply. I would like to report that the driver is working when I compiled it. Thank you very much! LCDProc is now working with A125 LCD using the updated drivers that you've provided. I really appreciate all the help from you guys.

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

                  Thanks for the feedback. Were you able to confirm that the "long presses" are actually working? It seems the device has only 2 buttons, and that the second button is used for both Up and Down. Down seems to be the short press (< 300 ms), and Up the press and hold. The code change consists of re-calculating how long the button is pressed.

                                               switch (i) {
                  				case 0:	// Button 1
                  					if (mschange < 300)
                  						button = "Enter";
                  					else
                  						button = "Escape";
                  					break;
                  				case 1:	// Button 2
                  					if (mschange < 300)
                  						button = "Down";
                  					else
                  						button = "Up";
                  					break;
                  
                  1 Reply Last reply Reply Quote 0
                  • R
                    riken
                    last edited by

                    Hi @fmertz ,

                    Good morning. In the equipment that I am using, the up button acts as the "enter" button, the down button in short press navigates the menu downwards while the down button in long press navigates the menu upwards. If you need more clarification or if you need me to do some more testing with the buttons, please let me know.

                    Thank you.

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

                      Thanks for the confirmation. The Github pull request for this code fix has been accepted and is now part of the upstream lcdproc code base.

                      Removed obsolete ftime()

                      @riken said in Problem with A125 LCD board with LCDProc:

                      In the equipment that I am using, the up button acts as the "enter" button, the down button in short press navigates the menu downwards while the down button in long press navigates the menu upwards.

                      As per your description, the code does not seem to mirror the Up and Down buttons you describe. Would it be more intuitive to keep the behavior of the Up and Down buttons as simply Up and Down for short presses, and then do Escape and Enter for long presses? Maybe a picture of the hardware would help. I can do a quick code change you can compile to see if this would work. Let me know. Thanks.

                      1 Reply Last reply Reply Quote 0
                      • R
                        riken
                        last edited by

                        @fmertz ,

                        Yes, I honestly feel that it will be better if the Up and Down buttons are just Up and Down for short presses and the Escape / Enter is done by long presses. I will definitely test your code change and provide feedback as necessary.

                        Thank you very much.

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

                          @riken said in Problem with A125 LCD board with LCDProc:

                          @fmertz ,

                          Yes, I honestly feel that it will be better if the Up and Down buttons are just Up and Down for short presses and the Escape / Enter is done by long presses. I will definitely test your code change and provide feedback as necessary.

                          The updated source is here:
                          server/drivers/icp_a106.c

                          Thanks for any feedback.

                          R 1 Reply Last reply Reply Quote 0
                          • R
                            riken @fmertz
                            last edited by

                            @fmertz
                            Hi, Sorry for the very late feedback on the updated driver. I have tested the new driver you've provided and IMHO it's better than the previous driver. For example, I can enter the menu using a long press and increase or decrease the title-speed using short presses.

                            Kind regards

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

                              According to the Github history of this driver code, the button support was added to the original A106 driver to support the A125/QNAP devices.

                              A random Qnap Network Attached Storage from Amazon shows Enter/Select, same as in the existing code:

                              7-16-2019 11-06-32 AM.png

                              Can you attach the actual documentation file from the vendor (the link above is a pain)? Maybe you have an original A106 with different button labels? A picture would help. Thanks.

                              1 Reply Last reply Reply Quote 0
                              • R
                                riken
                                last edited by

                                @fmertz

                                Thank you for your reply. Yes, the hardware that I have seems to be of a different one. With Up/Down buttons instead of the Enter/Select that you've posted. Here is the picture of the LCM that I have:

                                LCM.png

                                And here is the documentation from the vendor:
                                A125_User_Manuel_revise_04.pdf.zip

                                Thank you very much.

                                1 Reply Last reply Reply Quote 0
                                • M
                                  MikeSpears @riken
                                  last edited by

                                  @riken said in Problem with A125 LCD board with LCDProc:

                                  @fmertz, Good morning. Apology for the late reply. I would like to report that the driver is working when I compiled it. Thank you very much! LCDProc is now working with A125 LCD using the updated drivers that you've provided. I really appreciate all the help from you guys.

                                  I seem to be getting this same issue on pfsense 2.7.2 with the LCDProc package and the A106 driver. Any guidance would be incredibly helpful.

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

                                    What issue exactly? After 5 years a lot could have changed. What are you seeing?

                                    Steve

                                    1 Reply Last reply Reply Quote 0
                                    • E
                                      elvisimprsntr
                                      last edited by elvisimprsntr

                                      @MikeSpears @stephenw10

                                      I confirmed I can issue commands directly from a shell to communicate with the A125 display with pfSense temporarity installed on an external USB SSD on my QNAP TS-653A.

                                      Same shell scripts I created for TrueNAS CORE: https://github.com/elvisimprsntr/QnapFreeLCD

                                      #!/bin/sh
                                      
                                      NAME="`hostname -s`"
                                      
                                      stty -f /dev/cuau1.lock 1200
                                      stty -f /dev/cuau1.init 1200
                                      stty -f /dev/cuau1 1200
                                      
                                      # clear display
                                      printf '\115\015' > /dev/cuau1
                                      sleep 1
                                      
                                      # turn on display
                                      printf '\115\136\001' > /dev/cuau1
                                      sleep 1
                                      
                                      # print hostname on line 1
                                      printf '\115\014\000 '$NAME > /dev/cuau1 
                                      sleep 1
                                      
                                      # print message on line 2
                                      printf '\115\014\001 System Booting' > /dev/cuau1 
                                      
                                      

                                      It seems there might be a bug in the icp_a106 driver

                                      Mar 2 13:13:11 LCDd 20455 Could not open driver module /usr/local/lib/lcdproc/icp_a106.so: /usr/local/lib/lcdproc/icp_a106.so: Undefined symbol "ftime"

                                      There was a commit in 2019 that appears to have addressed the issue, but was never merged.

                                      https://github.com/lcdproc/lcdproc/commit/781b3113a592d75a29aa5024a94c2fd6b4592f87

                                      Mar 2 13:13:11	LCDd	20298	LCDd version 0.5.9 starting
                                      Mar 2 13:13:11	LCDd	20298	Using Configuration File: /usr/local/etc/LCDd.conf
                                      Mar 2 13:13:11	LCDd	20455	Listening for queries on 127.0.0.1:13666
                                      Mar 2 13:13:11	LCDd	20455	Could not open driver module /usr/local/lib/lcdproc/icp_a106.so: /usr/local/lib/lcdproc/icp_a106.so: Undefined symbol "ftime"
                                      Mar 2 13:13:11	LCDd	20455	Driver [icp_a106] binding failed
                                      Mar 2 13:13:11	LCDd	20455	Could not load driver icp_a106
                                      Mar 2 13:13:11	LCDd	20455	There is no output driver
                                      Mar 2 13:13:11	LCDd	20455	Critical error while initializing, abort.
                                      Mar 2 13:13:12	php	20660	lcdproc: Start client procedure. Error counter: (0)
                                      Mar 2 13:13:13	php	20660	lcdproc: Failed to connect to LCDd process Connection refused (61)
                                      Mar 2 13:13:13	php	20660	lcdproc: Start client procedure. Error counter: (1)
                                      Mar 2 13:13:14	php	20660	lcdproc: Failed to connect to LCDd process Connection refused (61)
                                      Mar 2 13:13:14	php	20660	lcdproc: Start client procedure. Error counter: (2)
                                      Mar 2 13:13:15	php	20660	lcdproc: Failed to connect to LCDd process Connection refused (61)
                                      Mar 2 13:13:15	php	20660	lcdproc: Start client procedure. Error counter: (3)
                                      Mar 2 13:13:16	php	20660	lcdproc: Failed to connect to LCDd process Connection refused (61)
                                      Mar 2 13:13:16	php	20660	lcdproc: Too many errors, stopping client.
                                      

                                      UPDATE

                                      Submitted issue 211

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