LCDProc 0.5.4-dev


  • Netgate Administrator

    Testing now.
    One thing I have noticed that I didn't expect is:

    
    [2.0.1-RELEASE][root@pfsense.fire.box]/root(2): ps aux|grep lcd
    root    4965  0.0  0.3  3656  1520  ??  I     8:27PM   0:00.01 /bin/sh /usr/local/etc/rc.d/lcdproc.sh start
    root    6483  0.0  3.4 46428 17476  ??  SN    8:27PM   0:01.11 /usr/local/bin/php -f /usr/local/pkg/lcdproc_client.php
    
    

    I didn't expect to see lcdproc.sh running, not that it's a problem.

    Steve

    Edit: I also so that the version of the sdeclcd driver is that with real time process priority set. Is that deliberate? That too should be no problem.



  • Hehe!

    You're welcome Tix, let's see how much this version resists… I didn't have any problems since two days with 2 servers since almost 48h, but we need to share the data to consider it stable.

    on both machines I use as driver sureelect, 1 second refresh, 8 screens on one and just 1 screen on the other one. The other options are left as default...

    Ciao,
    Michele



  • @stephenw10:

    Testing now.
    One thing I have noticed that I didn't expect is:

    
    [2.0.1-RELEASE][root@pfsense.fire.box]/root(2): ps aux|grep lcd
    root    4965  0.0  0.3  3656  1520  ??  I     8:27PM   0:00.01 /bin/sh /usr/local/etc/rc.d/lcdproc.sh start
    root    6483  0.0  3.4 46428 17476  ??  SN    8:27PM   0:01.11 /usr/local/bin/php -f /usr/local/pkg/lcdproc_client.php
    
    

    I didn't expect to see lcdproc.sh running, not that it's a problem.

    Steve

    Edit: I also so that the version of the sdeclcd driver is that with real time process priority set. Is that deliberate? That too should be no problem.

    Hi Steve,
      well, I removed the "lcdproc_client.sh" script, the one that managed the error counter for the client. lcdproc.sh is the one run to start/stop/restart the package. I honestly don't know why it is still running after it's launched to start the client, but it should not do anything.

    For the sdeclcd driver, we need to ask to fmertz if he asked to update the binary driver under files.pfsense.org, I guess not if it's not the last version. Anyway, probably after this message he will ask to update it.

    Ciao,
    Michele



  • Hi Cino,

    @Cino:

    States  (Not sure if other notice, it doesn't show the correct max, always 10000)
    one day I'll swap to a different case so I can have a 20/4

    on my x86 pfSense 2.0.1 shows correctly 500000. I am afraid some char is hidden, but with a 20x2 display it should not… :S

    Looking at the code, it looks it's able to read $config['system']['maximumstates']. How much did you set?
    If you run on the the command prompt, php console, the following commands (copy/paste both), what result do you get?

    global $config;
    echo($config['system']['maximumstates']);
    

    Thanks,
    Michele



  • Not sure what went wrong but I went to add some additional screens and upon clicking save, the log shows the stopping and restarting but then stops again 1 sec later.  This happens each time I enable/disable any screen.

    Log capture:

    
    Feb 10 18:23:42 pfsense LCDd: Client on socket 11 disconnected
    Feb 10 18:23:42 pfsense LCDd: sock_send: socket write error
    Feb 10 18:23:44 pfsense LCDd: Server shutting down on SIGTERM
    Feb 10 18:23:46 pfsense LCDd: LCDd version 0.5.3 starting
    Feb 10 18:23:46 pfsense LCDd: Using Configuration File: /usr/local/etc/LCDd.conf
    Feb 10 18:23:46 pfsense LCDd: Listening for queries on 127.0.0.1:13666
    Feb 10 18:23:47 pfsense LCDd: Server shutting down on SIGTERM
    Feb 10 18:23:58 pfsense php: lcdproc: Failed to connect to LCDd process Operation timed out (60)
    Feb 10 18:24:09 pfsense php: lcdproc: Failed to connect to LCDd process Operation timed out (60)
    Feb 10 18:24:20 pfsense php: lcdproc: Failed to connect to LCDd process Operation timed out (60)
    Feb 10 18:24:31 pfsense php: lcdproc: Failed to connect to LCDd process Operation timed out (60)
    
    

    Trying to restart via the GUI does nothing (which I think is correct functionality) but running the start script from the shell seems to start the process again.

    
    [root@pfsense]/root(2): /bin/sh /usr/local/etc/rc.d/lcdproc.sh start
    [root@pfsense]/root(6): ps aux | grep lcd
            <no results="">[root@pfsense]/root(7): ps aux | grep LCD
    root   25426  0.0  0.5  3524  1280   1  S+    6:25PM   0:00.00 grep LCD
    [root@pfsense]/root(8): clog /var/log/system.log  | grep LCD
     <snip>Feb 10 18:31:25 pfsense LCDd: LCDd version 0.5.3 starting
    Feb 10 18:31:25 pfsense LCDd: Using Configuration File: /usr/local/etc/LCDd.conf
    Feb 10 18:31:25 pfsense LCDd: Listening for queries on 127.0.0.1:13666
    Feb 10 18:31:27 pfsense LCDd: Connect from host 127.0.0.1:49169 on socket 6</snip></no> 
    

    So I'm now running these screens:
    -Time
    -Uptime
    -Disk
    -Load
    -States
    -Mbuf
    -Interface Traffic (WAN)

    and these settings:
    -ComPort=/dev/lpt0
    -Display Size=2x20 display
    -Driver=Firebox SDEC
    -Refresh=5 sec
    -All other settings are "default"

    Also, the Load average is staying higher around between 0.60 and 1.4 where prior to this update it stayed less than 0.80 (even when updating RRD).  Again not sure it's related but I don't think it's anything to worry about.

    Will continue to monitor…



  • the results were blank. I dont have anything set, left it for the system to decide. The dashboard says 299000.. I'll set a value and see what happens. Its been awhile since I looked at the lcdproc code, but I'm thinking there was default 10000 if nothing is set via the gui now that i think about it a little more


  • Netgate Administrator

    @tix
    I can see from your logs that you still have 0.53 version of LCDd. So who knows what version of other files you have.
    From my experience the 'reinstall package' button in the GUI does not seem to re download everything.
    I suggest un-installing the package completely, checking for any left over files and then re-installing it.

    Steve



  • @stephenw10:

    @tix
    I can see from your logs that you still have 0.53 version of LCDd. So who knows what version of other files you have.
    From my experience the 'reinstall package' button in the GUI does not seem to re download everything.
    I suggest un-installing the package completely, checking for any left over files and then re-installing it.

    Steve

    Well aren't I the idiot?  :P  Didn't even notice that….

    Ok so I've now uninstalled the package, cleaned all the various references to LCDd, lcdproc, sdeclcd.so that the "find" command could locate.  Then I reinstalled the package except LCDd is missing...  Isn't this supplied by the lcdproc-dev package or am I being an idiot again?



  • @tix:

    @stephenw10:

    @tix
    I can see from your logs that you still have 0.53 version of LCDd. So who knows what version of other files you have.
    From my experience the 'reinstall package' button in the GUI does not seem to re download everything.
    I suggest un-installing the package completely, checking for any left over files and then re-installing it.

    Steve

    Well aren't I the idiot?  :P  Didn't even notice that….

    Ok so I've now uninstalled the package, cleaned all the various references to LCDd, lcdproc, sdeclcd.so that the "find" command could locate.  Then I reinstalled the package except LCDd is missing...  Isn't this supplied by the lcdproc-dev package or am I being an idiot again?

    Tix, LCDd is inside the package, very strange you don't have it… maybe a reboot between the uninstall and the reinstall could help..



  • @Cino:

    the results were blank. I dont have anything set, left it for the system to decide. The dashboard says 299000.. I'll set a value and see what happens. Its been awhile since I looked at the lcdproc code, but I'm thinking there was default 10000 if nothing is set via the gui now that i think about it a little more

    Ok, I've understood what happens… if there is nothing set the function just return 10000 as a constant.
    I will fix this on the new version.

    Ciao,
    Michele



  • Hi Tix
    @tix:

    Also, the Load average is staying higher around between 0.60 and 1.4 where prior to this update it stayed less than 0.80 (even when updating RRD).  Again not sure it's related but I don't think it's anything to worry about.

    Will continue to monitor…

    well… as more screens you add, as more the client and LCDd have to work. If you only enable one screen the load should fall. The variables that affect the load are: number of screens, refresh rate.

    Ciao,
    Michele



  • Hi Guys

    Is it possible to ad this Lcd to

    http://allnet.de/1577.html?&tx_mmallnetproductplugin_pi1[showUid]=421433&cHash=949c8a38a8
    ftp://212.18.29.48/ftp/pub/allnet/utility-server/fw8888/lcm_server_1.0.tar.bz2

    i,m trying this for some time but with no success, see other posts from me

    thx max



  • @easyhugo:

    Hi Guys

    Is it possible to ad this Lcd to

    http://allnet.de/1577.html?&tx_mmallnetproductplugin_pi1[showUid]=421433&cHash=949c8a38a8
    ftp://212.18.29.48/ftp/pub/allnet/utility-server/fw8888/lcm_server_1.0.tar.bz2

    i,m trying this for some time but with no success, see other posts from me

    thx max

    Hi Max (easyhugo),
    it's impossible to know for me which driver this LCD panel uses… do you know the chipset? Can it use one of the drivers already made or you need another driver?

    Ciao,
    Michele


  • Netgate Administrator

    My German is very bad!  :-[ (Only beaten by my non-existant Italian!  ::))

    However, according to [url=http://www.ipcop-forum.de/forum/viewtopic.php?f=22&t=26948#p231301]this post by IPCop ledgend Wintermute the display in the FW8888 is an LCM-162.

    This doesn't appear to be supported directly by LCDproc but this blog post seems to show it is possible. That's quite old now so support maybe better integrated.

    What drivers/versions have you tried?

    Steve

    Edit: This post confirms this.



  • @mdima:

    Tix, LCDd is inside the package, very strange you don't have it… maybe a reboot between the uninstall and the reinstall could help..

    I've tried multiple times to get LCDd to install and all fail.  I must have broken something with the various versions and/or updates.  I'll try a clean install later this weekend maybe….

    In any case, I have the updated files now.  I did a clean install to VMware Player and installed the package and then scp'd the file over to my real pfsense.

    So far so good as I've exceeded my 10 hour limit and everything is working with the screens and settings I mentioned in the previous post.



  • @tix:

    So far so good as I've exceeded my 10 hour limit and everything is working with the screens and settings I mentioned in the previous post.

    hehe! on my machines I am running it from thursday with a refresh of 1second, and it's still working great… maybe I am too much optimist, but I think we made it... ;) at least for this specific problem!


  • Netgate Administrator

    Yes I think you have definitely solved the LCDd 100% problem. 48hours+ for me on two boxes running sdeclcd driver, 1second refresh, and screens: time, uptime and load.
    Looking good.  :)

    However I think the other problem is still present.
    At boot or restarting packages when an IP change is detected the lcdproc package ends up being started and stopped multiple times. Before this could result in multiple clients running. I think this has been solved thanks to your kill loop. However today I switched on my resurected X-Core box and at the end of boot the LCDd daemon is running twice but with no client!  :-\

    
    [2.0.1-RELEASE][root@x-core.localdomain]/root(2): ps aux | grep lcd
    root   17691  0.0  0.6  3656  1356  ??  IN    4:21PM   0:00.01 /bin/sh /usr/local/etc/rc.d/lcdproc.sh start
    [2.0.1-RELEASE][root@x-core.localdomain]/root(3): ps aux | grep LCD
    root   24707  0.0  0.5  3352  1148  ??  IN    4:21PM   0:00.01 /usr/local/sbin/LCDd -c /usr/local/etc/LCDd.conf
    nobody 24902  0.0  0.6  3368  1408  ??  SNs   4:21PM   0:00.21 /usr/local/sbin/LCDd -c /usr/local/etc/LCDd.conf
    
    

    Here is the relavent section of the boot log:

    
    Feb 12 16:22:33 	apinger: Error while feeding rrdtool: Broken pipe
    Feb 12 16:21:52 	LCDd: Listening for queries on 127.0.0.1:13666
    Feb 12 16:21:52 	LCDd: Using Configuration File: /usr/local/etc/LCDd.conf
    Feb 12 16:21:52 	LCDd: LCDd version 0.5.5 starting
    Feb 12 16:21:49 	LCDd: Server shutting down on SIGTERM
    Feb 12 16:21:49 	LCDd: Listening for queries on 127.0.0.1:13666
    Feb 12 16:21:49 	LCDd: Using Configuration File: /usr/local/etc/LCDd.conf
    Feb 12 16:21:49 	LCDd: LCDd version 0.5.5 starting
    Feb 12 16:21:47 	php: lcdproc: Sync: End package sync
    Feb 12 16:21:47 	php: lcdproc: Sync: Begin package sync
    Feb 12 16:21:47 	LCDd: Server shutting down on SIGTERM
    Feb 12 16:21:47 	php: lcdproc: Sync: End package sync
    Feb 12 16:21:45 	LCDd: sock_send: socket write error
    Feb 12 16:21:45 	LCDd: sock_send: socket write error
    Feb 12 16:21:45 	LCDd: sock_send: socket write error
    Feb 12 16:21:45 	LCDd: Client on socket 11 disconnected
    Feb 12 16:21:45 	php: lcdproc: Sync: Restarting the service
    Feb 12 16:21:45 	php: lcdproc: Sync: Begin package sync
    Feb 12 16:21:45 	php: : Restarting/Starting all packages.
    Feb 12 16:21:42 	check_reload_status: Reloading filter
    Feb 12 16:21:42 	LCDd: Connect from host 127.0.0.1:11554 on socket 11
    Feb 12 16:21:42 	sshlockout[51329]: sshlockout/webConfigurator v3.0 starting up
    Feb 12 16:21:42 	login: login on console as root
    Feb 12 16:21:41 	php: lcdproc: Start client procedure. Error counter: (0)
    Feb 12 16:21:40 	php: : IPSEC: One or more IPsec tunnel endpoints has changed its IP. Refreshing.
    Feb 12 16:21:40 	LCDd: Listening for queries on 127.0.0.1:13666
    Feb 12 16:21:40 	LCDd: Using Configuration File: /usr/local/etc/LCDd.conf
    Feb 12 16:21:40 	LCDd: LCDd version 0.5.5 starting
    Feb 12 16:21:39 	check_reload_status: Starting packages
    Feb 12 16:21:39 	php: : pfSense package system has detected an ip change 0.0.0.0 -> ... Restarting packages.
    Feb 12 16:21:39 	php: : OpenNTPD is starting up.
    Feb 12 16:21:39 	dnsmasq[44759]: ignoring nameserver 127.0.0.1 - local interface
    Feb 12 16:21:39 	dnsmasq[44759]: ignoring nameserver 127.0.0.1 - local interface
    Feb 12 16:21:39 	dnsmasq[44759]: using nameserver 192.168.1.1#53
    Feb 12 16:21:39 	dnsmasq[44759]: reading /etc/resolv.conf
    Feb 12 16:21:39 	php: : The command '/usr/bin/killall 'ntpd'' returned exit code '1', the output was 'killall: warning: kill -TERM 51784: No such process'
    Feb 12 16:21:38 	php: : Creating rrd update script
    Feb 12 16:21:38 	php: : Resyncing OpenVPN instances for interface WAN.
    Feb 12 16:21:38 	php: lcdproc: Sync: End package sync
    Feb 12 16:21:38 	php: lcdproc: Sync: Begin package sync
    Feb 12 16:21:38 	php: lcdproc: Sync: End package sync
    Feb 12 16:21:38 	php: lcdproc: Sync: Begin package sync
    Feb 12 16:21:38 	php: : Restarting/Starting all packages.
    
    

    It ends up starting and stopping 3 times.

    Restarting the service again manually brings it back to normal.

    Steve



  • I'm not quite to 48 hours yet, 44 so far! :)  and I agree, I think we might have it mostly beat.

    Steve - I don't have the multiple process running on my x700 and everything seems fine on mine.  Perhaps you have some leftover cruft like I did?



  • Reinstalled the latest dev package on my Firebox X Core.

    LCDProc will not start I guess, the LCD just sits with "Thanks for using pfSense," and its random whether Services reports LCDProc as still running or stopped. Sometimes the server screen stays on and it says "Clients: 0 Server: 0"

    Any idea what's my problem?

    Feb 12 22:36:23 	LCDd: LCDd version 0.5.5 starting
    Feb 12 22:36:23 	LCDd: Using Configuration File: /usr/local/etc/LCDd.conf
    Feb 12 22:36:23 	LCDd: Listening for queries on 127.0.0.1:13666
    Feb 12 22:36:23 	php: lcdproc: Start client procedure. Error counter: (0)
    Feb 12 22:36:24 	php: lcdproc: Start client procedure. Error counter: (0)
    Feb 12 22:36:24 	LCDd: Server shutting down on SIGTERM
    Feb 12 22:36:26 	php: lcdproc: Start client procedure. Error counter: (0)
    Feb 12 22:36:28 	php: lcdproc: Start client procedure. Error counter: (0)
    Feb 12 22:36:30 	php: lcdproc: Start client procedure. Error counter: (0)
    Feb 12 22:36:32 	php: lcdproc: Start client procedure. Error counter: (0)
    Feb 12 22:36:34 	php: lcdproc: Start client procedure. Error counter: (0)
    Feb 12 22:36:36 	php: lcdproc: Start client procedure. Error counter: (0)
    Feb 12 22:36:38 	php: lcdproc: Start client procedure. Error counter: (0)
    Feb 12 22:36:40 	php: lcdproc: Start client procedure. Error counter: (0)
    Feb 12 22:36:42 	php: lcdproc: Start client procedure. Error counter: (0)
    Feb 12 22:36:44 	php: lcdproc: Start client procedure. Error counter: (0)
    Feb 12 22:36:46 	php: lcdproc: Start client procedure. Error counter: (0)
    

  • Netgate Administrator

    Brak, is that just after boot?
    I think it's likely that the various delays in the script are causing a problem when the package is started and stopped in quick succession. This is especially true now that the kill loop will stop all running copies of either the client or the server.
    In my case simply restarting the package from gui was enough to sort everything out. Given only one stop and start with no time limit it works fine.

    Possibilities for some experimenting are:
    The start script first kills the client and server then starts it. When sent a restart it effectively does stop-stop-start. Might be better to only have one stop routine?
    Reduce or remove the delays in the script.

    Steve



  • Hi,
      yes, there's a problem when the package is resynced in quick succession. Now I am ill at home, and I will be home recovering for the next few days, after that I will investigate and fix the problem (Steve, your suggestions are a very good starting point).

    For the moment the package should be started manually when this occurs.

    Ciao,
    Michele



  • @stephenw10:

    Brak, is that just after boot?

    Actually, it's both. Even using the Services GUI to start or restart the service will lead to this failure. :(


  • Netgate Administrator

    Hmm, well that's interesting.
    If you run:
    ps aux|grep lcd
    or
    ps aux|grep LCD
    What do you see running when that happens?

    My own X-Core box ends up with two LCDd servers running and no client after boot. Different from your box.
    Are you running lots of screens?

    Steve


  • Netgate Administrator

    I've doing some testing and it looks to me as if we have two factors causing this:

    1. The 'stop' script has two 2 second sleep commands in it. It cannot possibly run in less than 4 seconds yet during boot up the service is started (stop-start) three times in that period.
    The sleep call seems to me to have been included simply to allow the kill command time to operate. The do-while kill loop now in place would seem to eliminate that need however commenting out the sleep calls does not solve the problem, though it does alter the outcome.

    2. The rc script gets stuck in the 'kill loop' causing all manner of trouble!
    You can see this as the rc 'start' scipt is still running after boot which should never happen. It is stuck trying to kill one of the other process and failing for some reason. If you kill, LCDd for example, the script is then able to continue and spawns more servers and clients before finishing.

    I have found that at least one instance of LCDd runs as root when it should drop to nobody. Does the rc script run as root? Is that why it cannot kill it?

    More testing to be done…..

    Steve


  • Netgate Administrator

    Although what I wrote above is true if you get an 'un-killable' process the main reason the lcdproc.sh remains running is that it is held open by the php call.
    You need to background the process (&) like so:

    
    $start .= "\t/usr/bin/nice -20 /usr/local/bin/php -f /usr/local/pkg/lcdproc_client.php &\n";
    
    

    Steve



  • There may have been other factor(s) here [cable modem locked up and wouldn't pass traffic], but at 96 hrs uptime, my display quit again and I couldn't log in again.  I've rebooted and will monitor and report.
    I think this is just a coincidence but want to report anything that might be an issue.

    This time on reboot I have 2 LCDd processes running but can't 'see' lcdproc.sh unless I make my puTTy window wide enough to display the output????

    
    [2.1-DEVELOPMENT][root@pfsense.]/root(6): ps aux | grep lcd
    
    

    Stretched screen width and repeated command:

    
    [2.1-DEVELOPMENT][root@pfsense.]/root(7): ps aux | grep lcd
    root   41210  0.0  0.6  3656  1420  ??  IN   12:59PM   0:00.01 /bin/sh /usr/local/etc/rc.d/lcdproc.sh start
    [2.1-DEVELOPMENT][root@pfsense.]/root(8): ps aux | grep LCD
    root   51129  0.0  0.5  3352  1164  ??  IN   12:59PM   0:00.01 /usr/local/sbin/LCDd -c /usr/local/etc/LCDd.conf
    nobody 51245  0.0  0.6  3368  1424  ??  SNs  12:59PM   0:09.83 /usr/local/sbin/LCDd -c /usr/local/etc/LCDd.conf
    [2.1-DEVELOPMENT][root@pfsense.]/root(9):
    
    

    Not that this is a big deal but weird.  Does it happen to anyone else?


  • Netgate Administrator

    Yep same here, I have to maximise the window see it. Also is won't show up at all on the serial console which has a much smaller resolution.
    Weird.  :-\

    I've been playing around with all sorts of things, different delays, different kill commands. I've not once had it boot cleanly. It either boots to two copies of LCDd, one of which is running as root, or kills LCDd completely.

    Steve



  • @mdima:

    @easyhugo:

    Hi Guys

    Is it possible to ad this Lcd to

    http://allnet.de/1577.html?&tx_mmallnetproductplugin_pi1[showUid]=421433&cHash=949c8a38a8
    ftp://212.18.29.48/ftp/pub/allnet/utility-server/fw8888/lcm_server_1.0.tar.bz2

    i,m trying this for some time but with no success, see other posts from me

    thx max

    Hi Max (easyhugo),
    it's impossible to know for me which driver this LCD panel uses… do you know the chipset? Can it use one of the drivers already made or you need another driver?

    Ciao,
    Michele

    Hi
    sorry but no driver work with this display, it does not work without these lcm server.

    @stephenw10:

    My German is very bad!  :-[ (Only beaten by my non-existant Italian!  ::))

    However, according to [url=http://www.ipcop-forum.de/forum/viewtopic.php?f=22&t=26948#p231301]this post by IPCop ledgend Wintermute the display in the FW8888 is an LCM-162.

    This doesn't appear to be supported directly by LCDproc but this blog post seems to show it is possible. That's quite old now so support maybe better integrated.

    What drivers/versions have you tried?

    Steve

    Edit: This post confirms this.

    and yes wintermute is an excellent ipcop programmer, but ipcop is not an freebsd os so i cant copy the files .
    i have tried to copy the lcm to the pfsense and change the config files but with no success.
    my test with these lcm if i tried the dev version was not born  :D so at now i will connect the guys from allnet how this lcm will work
    the answer i would then post

    thx

    edit:
    from the lcm pckage:

    Make commands:
        Static binary:
            gcc –static -o lcm_server lcm_server.c

    Dynamic linked binary:
            gcc -o lcm_server lcm_server.c

    Execution command:
        lcm_server /dev/ttyS1 "Banner"

    Command FIFO:
        /var/run/lcm_cmd

    Available commands:
              Clear -- Clear the LCM display
          Home -- Set the cursor back to row 0, column 0
          Display {on/off/nocur} -- Turn display on, off and on without cursor
          BKLight {on/off}     -- Turn LCM backlight on and off
          Setpos {0~1} {0~15}    -- Set the cursor position to row and column
          Write {text}     -- Write the text to LCM start from
                  current cursor position
        Examples:
    echo "Display oncur" > /var/run/lcm_cmd
    echo "Setpos 0 0" > /var/run/lcm_cmd
    echo "Write test message" > /var/run/lcm_cmd

    Key FIFO:
        /var/run/lcm_key

    Available keys: UP, DOWN, RET, ESC

    Example:
    cat /var/run/lcm_key

    Note: There is no key de-bounce mechanism on LCM.
          Multiple key response may happen while receiving keys.



  • Hi,
      as for the problems restarting the package, deleting the "two seconds delay" in the script while killing the package binaries seems to solve the problem.

    I will post a new version of the package soon.

    Ciao,
    Michele


  • Netgate Administrator

    Hi Michele, I hope you're feeling better.  :)

    Removing the delay(s) completely didn't work for me on my X-Core box. In fact I tried many combinations of delays in different places an failed to get a clean boot.

    Steve



  • @stephenw10:

    Hi Michele, I hope you're feeling better.  :)

    Removing the delay(s) completely didn't work for me on my X-Core box. In fact I tried many combinations of delays in different places an failed to get a clean boot.

    Steve

    Hi Steve,
      mmhhh… I just had a clean reboot, after that the panel was working and:

    [2.0.1-RELEASE][root@pfsense2.domain.nt2.it]/root(18): ps -ax | grep lcd
    39543  ??  SN     0:00.91 /usr/local/bin/php -f /usr/local/pkg/lcdproc_client.p
    27085  v0- I      0:00.00 /bin/sh /usr/local/etc/rc.d/lcdproc.sh start
    13349   0  R+     0:00.00 grep lcd
    
    [2.0.1-RELEASE][root@pfsense2.domain.nt2.it]/root(23): ps -ax | grep LCD        
    37346  ??  SNs    0:00.31 /usr/local/sbin/LCDd -c /usr/local/etc/LCDd.conf
     7034   0  S+     0:00.00 grep LCD
    

    I can't find anything wrong. Also restarting the service quickly, or changing the service properties while the service is running, brings me to the above state, which is consistent.

    I will investigate more, but until now the only change I did is to remove the "sleep" lines in the "lcdproc.inc" file and saving the configuration (line 506 and "a bit below").

    Where did you remove "sleep" lines from?

    Thanks,
    Michele



  • @stephenw10:

    Although what I wrote above is true if you get an 'un-killable' process the main reason the lcdproc.sh remains running is that it is held open by the php call.
    You need to background the process (&) like so:

    
    $start .= "\t/usr/bin/nice -20 /usr/local/bin/php -f /usr/local/pkg/lcdproc_client.php &\n";
    
    

    Steve

    Hi Steve,
      I added the & at the end of the command, and yes the lcdproc.sh is not visible anymore with ps -ax (sorry, I come from Windows and I don't know this tricks).

    Btw, I made different "restarts" of the service and a reboot, everything was running and there was only 1 client and 1 server running.

    I don't know what is going wrong on your boxes…

    Ciao,
    Michele


  • Netgate Administrator

    @mdima:

    Where did you remove "sleep" lines from?

    From lcdproc.inc as you did. I also added a "&" to the call to lcdproc_client.php as I details a few posts back.
    I'll try taking that out again.

    Edit: You type faster than me!

    I am relatively new to FreeBSD also. I only knew to do that because that's how it was called in the old Firebox tarball.

    I am starting to think that a lot of this might be down to the speed of the box. The X-Core is a relatively old machine. I'll have to try it on the X-e box for comparison. Alternatively you are using a different driver, perhaps the service is able to stop and start faster?

    During the boot process the the package config pages are synced. Because the lcdproc package has two pages both are synced however the lcdproc_screens.xml simply calls the lcdproc.xml sync function. This results in the sync function running twice hence the service is restarted twice. Then slight later in the boot process the WAN interface comes up and receives an IP address, this results in a call to restart all packages again.

    I'll run some more tests.

    Steve



  • @Cino:

    the results were blank. I dont have anything set, left it for the system to decide. The dashboard says 299000.. I'll set a value and see what happens. Its been awhile since I looked at the lcdproc code, but I'm thinking there was default 10000 if nothing is set via the gui now that i think about it a little more

    This is done, you'll find it in the next release of the package!

    Ciao,
    Michele



  • @stephenw10:

    @mdima:

    Where did you remove "sleep" lines from?

    From lcdproc.inc as you did. I also added a "&" to the call to lcdproc_client.php as I details a few posts back.
    I'll try taking that out again.

    Edit: You type faster than me!

    I am relatively new to FreeBSD also. I only knew to do that because that's how it was called in the old Firebox tarball.

    I am starting to think that a lot of this might be down to the speed of the box. The X-Core is a relatively old machine. I'll have to try it on the X-e box for comparison. Alternatively you are using a different driver, perhaps the service is able to stop and start faster?

    During the boot process the the package config pages are synced. Because the lcdproc package has two pages both are synced however the lcdproc_screens.xml simply calls the lcdproc.xml sync function. This results in the sync function running twice hence the service is restarted twice. Then slight later in the boot process the WAN interface comes up and receives an IP address, this results in a call to restart all packages again.

    I'll run some more tests.

    Steve

    Hi Steve,
        so good, you removed the delays exactly where I was removing them from, so nothing to say about that.

    If is true, the package is synced twice during the reboot, I don't know how to avoid that (without forcing a manual service restart every time someone changes a setting in the "screens" page), but I confirm you after some reboot, that on my hardware this do not give any problem (X3460 Xeon, SSD HD, Intel dual port NICs, 4GB ram, Sureelect USB panel 20x4, but ok, I understand that like this is easy, I know)…

    As for my situation, I achived a total stable situation. I will release the latest changes asap...

    Ciao,
    Michele



  • Released!

    The changelog is the following:

    • The Client now runs in background (added a trailing & at the end of the command that runs the client);
    • Removed the delays in the script during the service stop;
    • Fixed the "default max states" information when it is not defined explicitally in the advanced configuration.

    Should be the most stable LCDProc ever released… hope will fix (or at least minimize) the issues on all the boxes...

    Thanks,
    Michele


  • Netgate Administrator

    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


  • Netgate Administrator

    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



  • 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


  • Netgate Administrator

    @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


Log in to reply