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

    LCDProc 0.5.4-dev

    Scheduled Pinned Locked Moved pfSense Packages
    587 Posts 68 Posters 602.9k 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

      Nice!  :)

      One possible solution to the number of restarts might be to add some code to prevent a restart being called unless a change to the config has been made.
      Currently:

      
      			/* or restart lcdproc if settings were changed*/
      			if(is_service_running(LCDPROC_SERVICE_NAME)) {
      				lcdproc_notice("Sync: Restarting the service");
      				restart_service(LCDPROC_SERVICE_NAME);
      
      

      But in fact it restarts whether changes have been made or not.

      Or possibly have two separate sync funtions, one that restarts LCDd when you sync lcdproc.xml and one the restarts the lcdproc_client.php when you sync lcdproc_screens.xml.

      Maybe just something like this:
      Replace:

      
      function sync_package_lcdproc_screens() {
      		sync_package_lcdproc();
      	}	
      

      With:

      
      function sync_package_lcdproc_screens() {
      		if(is_service_running(LCDPROC_SERVICE_NAME)) {
      		lcdproc_notice("Sync: Restart PHP Client");
      		mwexec("ps auxw |awk '/lcdproc_client.ph[p]/ {print $2}'|xargs kill");
      		mwexec("/usr/bin/nice -20 /usr/local/bin/php -f /usr/local/pkg/lcdproc_client.php &");
      		}
      	}	
      

      That would at least reduce the times LCDd is restarted. I don't know if it actually has to do any syncing or whether that's all handled by the pfSense package system.  ::)

      Steve

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

        Unfortunately it's not booting cleanly on the X-Core box. Imdediately after boot:

        
        [2.0.1-RELEASE][root@x-core.localdomain]/root(4): ps aux | grep lcd
        root    2368  0.0  0.6  3656  1356  ??  IN    1:15AM   0:00.05 /bin/sh /usr/local/etc/rc.d/lcdproc.sh start
        root    4742  0.0  6.9 36188 16956  ??  SN    1:15AM   0:00.46 /usr/local/bin/php -f /usr/local/pkg/lcdproc_client.php
        [2.0.1-RELEASE][root@x-core.localdomain]/root(5): ps aux | grep LCD
        root   36882  0.0  0.5  3352  1148  ??  IN    1:15AM   0:00.01 /usr/local/sbin/LCDd -c /usr/local/etc/LCDd.conf
        nobody 37026  0.0  0.6  3368  1472  ??  SNs   1:15AM   0:00.17 /usr/local/sbin/LCDd -c /usr/local/etc/LCDd.conf
        
        

        The interesting thing is that the first instance of LCDd is still running as root because it fails to start correctly. Probably because it is trying to start on port 13666 but there is already an instance of LCDd running on 13666 at that point.
        The odd thing is that it is not killed by the startup script hence the kill-loop gets stuck and lcdproc.sh is still running.

        Steve

        1 Reply Last reply Reply Quote 0
        • M
          mdima
          last edited by

          Hi Steve,
            reading the documentation of LCDproc, the only thing that come to my mind is to insert some delays in the parallel port communication (http://lcdproc.sourceforge.net/docs/lcdproc-0-5-5-user.html#ppttrouble).
          I think the sdeclcd driver do not accept this as parameter, the only way to do it is by code.

          Do you think you could add some "DELAYMULT" in the driver?

          Thanks,
          Michele

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

            @http://lcdproc.sourceforge.net/docs/lcdproc-0-5-5-user.html#ppttrouble:

            Software Too Fast

            If you have a super GHz computer it may happen that the signal timing generated by LCDd is too fast. Adjust DELAYMULT in the source file to a bigger value. Parallel port wirings usually don't permit to read back the busy flag of the controller chip, so timing must be adjust so that the controller never is busy.

            I don't think this will help since the display runs perfectly once it's correctly started the server and client.

            I tried removing the sync function for lcdproc_screens completely. I didn't help. It didn't reduce the number of LCDd restarts since it only restarts LCDd if it's already running and it isn't at that point.

            More testing….

            Steve

            1 Reply Last reply Reply Quote 0
            • M
              mdima
              last edited by

              @stephenw10:

              The interesting thing is that the first instance of LCDd is still running as root because it fails to start correctly. Probably because it is trying to start on port 13666 but there is already an instance of LCDd running on 13666 at that point.
              The odd thing is that it is not killed by the startup script hence the kill-loop gets stuck and lcdproc.sh is still running.

              This looks strange… were you able to save the service options from the interface in order to make the script to recreate the start/stop script? I say this because lcdproc.sh should not be visible anymore...

              Also, if you run manually the script "lcdproc.sh stop" does it work?

              Which options of killing do work for you? (for example, kill -9)

              Thanks,
              Michele

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

                Once I have logged via ssh I can kill the extra LCDd process with any method. But is that because I am logged in as root?

                I believe it is only still running because it is stuck in the kill loop. As soon as I have killed the process manually the rc script continues and creates another php client.

                I've spent so much time thinking about this I ended up dreaming about it!  ::)

                Steve

                1 Reply Last reply Reply Quote 0
                • M
                  m4f1050
                  last edited by

                  Have you tried to sudo su the kill command?  Is there such thing in FreeBSD 8.1?

                  1 Reply Last reply Reply Quote 0
                  • M
                    mdima
                    last edited by

                    Hi Steve,
                      I removed the "while cycle" in lcdproc.sh. Now the script should not loop at the startup. I checked both some rapid "service restarts" then a "reboot", at the end I only had one server and client running.

                    Btw, I think this it just a workaround, what is not clear is why in your case more instances of the client and the server are run at the startup.

                    I didn't update the version of the package, in order to get the change you should remove then install the lcdproc-dev package.

                    Please let me know if this solve your problem!!

                    Thanks,
                    Michele

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

                      I'll update and try that.
                      I tried removing the loop before and while it solved the stuck rc script I still ended up with two instances of LCDd, one running as root.  :-\

                      Steve

                      1 Reply Last reply Reply Quote 0
                      • M
                        mdima
                        last edited by

                        Hi Steve,
                        mmhhh… can you send me your config.xml file? (of course, hide the password, public ips, and so on)

                        Ciao,
                        Michele

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

                          Here's my config file, password redacted, it's test box so it doesn't have a public IP.
                          I don't see it in my logs any more, possibly because the logging level is now back at 3 or I was using the 'debug' version of LCDd, but previously there was a line at boot something like:

                          LCDd: Could not open 13666, aborting

                          There is still a log line:

                          LCDd: Connect from host 127.0.0.1:58234 on socket 12

                          This implies that at some point there are two clients running.

                          Steve

                          config-x-core.localdomain-20120223131917.xml.txt

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

                            I have replicated some of my previous testing for reference.
                            Editing lcdproc.inc so that the resulting lcdproc.sh is:

                            
                            #!/bin/sh
                            # This file was automatically generated
                            # by the pfSense service handler.
                            
                            rc_start() {
                            
                            	ps auxw |awk '/lcdproc_client.ph[p]/ {print $2}'|xargs kill
                            	ps auxw |awk '/LCD[d]/ {print $2}'|xargs kill
                            	/usr/bin/nice -20 /usr/local/sbin/LCDd -u nobody -c /usr/local/etc/LCDd.conf
                            	/usr/bin/nice -20 /usr/local/bin/php -f /usr/local/pkg/lcdproc_client.php &
                            
                            }
                            
                            rc_stop() {
                            
                            	ps auxw |awk '/lcdproc_client.ph[p]/ {print $2}'|xargs kill
                            	ps auxw |awk '/LCD[d]/ {print $2}'|xargs kill
                            }
                            
                            case $1 in
                            	start)
                            		rc_start
                            		;;
                            	stop)
                            		rc_stop
                            		;;
                            	restart)
                            		rc_stop
                            		rc_start
                            		;;
                            esac
                            
                            

                            Results in after boot:

                            [2.0.1-RELEASE][root@x-core.localdomain]/root(1): ps aux|grep lcd
                            root   16096  3.0  6.9 36188 16980  ??  SN    1:41PM   0:00.27 /usr/local/bin/php -f /usr/local/pkg/lcdproc_client.php
                            root   16748  3.0  6.9 36188 16980  ??  SN    1:41PM   0:00.27 /usr/local/bin/php -f /usr/local/pkg/lcdproc_client.php
                            [2.0.1-RELEASE][root@x-core.localdomain]/root(2): ps aux | grep LCD
                            
                            

                            And in the system log:

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

                            Which implies this wasn't happening before.

                            Steve

                            1 Reply Last reply Reply Quote 0
                            • M
                              mdima
                              last edited by

                              mmhhh… Steve, stupid question.

                              Are you sure that somewhere there is a script that runs the package at the startup, as a surplus of the times where you had to run LCDproc manually because it was not compatible with the sdelcd driver?

                              Did you start from scratch with this test box?

                              Thanks,
                              Michele

                              1 Reply Last reply Reply Quote 0
                              • M
                                mdima
                                last edited by

                                Hello everybody,
                                    any update on this package? None is using it or it's considered running and stable?

                                Thanks for any feedback,
                                Michele

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

                                  Sorry, not much spare time for testing.
                                  As it stands, although it doesn't start cleanly, it is fully functional on the X-Core. The additional LCDd hardly uses much by way of resources and it sorts itself out the first time one of the interfaces changes. So if you are using a ppp WAN then when the address changes all packages are restarted and it come up clean.

                                  My test box is a new install of 2.0.1 with no changes other than adding lcdproc-dev and some firewall rules so I can access it via the WAN interface for convenience.

                                  Steve

                                  1 Reply Last reply Reply Quote 0
                                  • B
                                    Brak
                                    last edited by

                                    I can only get lcdproc-dev to not crash-loop on my Firebox X Core when I spam the left arrow button and hope I can get the lcdproc menu to open up. I do this right after I restart/start the service. If I get the menu open, everything then works fine when I exit the menu.

                                    I also have the issue of if an interface goes down, lcdproc crashes and attempts to restart.

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      mdima
                                      last edited by

                                      mmhhh… what about all the people with non watchguard products?

                                      eventually, do anybody has a firebox to lend me? I promise I send back after I check/fix/give it up...

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

                                        Hmm, expensive shipping to Milan. Might be cheaper to just buy you one from Ebay!  ::)

                                        Steve

                                        1 Reply Last reply Reply Quote 0
                                        • M
                                          mdima
                                          last edited by

                                          Well, yes, but the shipping would be expensive anyway, plus I get a firebox I don't need… :D

                                          really, this for me is a kind of hobby, and spending (the cheapest I found from Australia) 250 Euro to fix this is really a challenge... :D

                                          Do you think we could involve watchguard for this? Or someone to share the send/return shipping costs...

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

                                            We can definitely get one cheaper than that. The X-Core box I have here has become a bit temperamental. I'll keep a look out for another one.

                                            Steve

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