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 648.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.
    • F
      fmertz
      last edited by

      @stephenw10:

      Yes. Running interface traffic with WAN selected as the only screen has eliminated the 100% CPU problem (after 15hours testing at 1sec refresh).

      I also tried running LCDd with different nice levels

      Maybe another test: run the normal lcdproc client provided by the project. FWIW, I run lcdproc on 2 hosts (a NAS and the router itself), and LCDd on the router itself, and it seems to run just fine for weeks. lcdproc has a bunch of screens with scrolling, vbars, hbars, icons, big nums… This is Linux, but the same code. This could help isolate more info about the problem.

      If you need it: https://github.com/downloads/fmertz/sdeclcd/lcdproc

      For nice, the driver code sets the process priority to "realtime round robin" as part of the initialization for the portable "wait" routines. Maybe this is the "r" you are seeing. The call to set the priority was removed in the driver I posted earlier.

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

        Folks,

        I would like to kick off the effort to bring the LED support into the driver again. We have some support already, but only for the box I own (the X-Core-e). I was hoping folks with the other models could run a command to help me identify the EXACT ICH we need to code for. Best I can figure, this command is already in pfSense and should be run as root:

        pciconf -r pci0:31:0 0:256
        

        This command reads the PCI configuration area (256 bytes) for the Low Pin count (LPC) device. The LPC device does GPIO, and can control the LEDs. Based on the exact device id, I can look up the spec, and find out the offset for GPIO base register, etc.

        I would like the output of the command, for the X-Core and X-Peak models. The key is the first 8 digits, the last 4 being 8086, Intel's vendor ID. Thanks.

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

          X-Peak:

          
          [2.0.1-RELEASE][root@pfsense.fire.box]/root(7): pciconf -r pci0:31:0 0:256
          25a18086 0280000f 06010002 00800000
          00000000 00000000 00000000 00000000
          00000000 00000000 00000000 00000000
          00000000 00000000 00000000 00000000
          00000401 00000000 00000000 00000000
          00000000 00000000 00000481 00000010
          050a0c0b 000000d0 09808080 00000000
          00000000 00000000 00000000 00000000
          00000000 00000000 00000000 00000000
          000054d5 00000000 00000000 00000000
          00000220 00000000 0000000d 00000300
          00000000 00000000 05415555 00000000
          00000000 00000000 00000000 00000000
          00002186 00000f02 00000004 00000000
          c0000000 34040000 00112233 45670291
          00e40000 00000000 00020f66 00010000
          ffffffff
          
          

          I'll have to try your driver without priority setting and see what happens.

          Steve

          Edit: You were correct. The driver with priority removed can be set to nice 20. I am testing now with several scrolling screens to see if I can still access the box.

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

            Hello everybody,
                I am making some tests to improve the stability of the package from the "client side". Until now from what I read all the tries have been made on the binary package and the driver, I think that maybe also a little help from the client can solve some problems.

            I am testing this changes on my boxes and I find no problems, so I would like to share this changes with you.

            The changes are:

            • Added a 20ms delay between each command sent from the client to LCDproc.

            • Better managed errors. Now the client resets the error counter every successful communication session with LCDproc (before was a global counter). The error counter is managed inside the client (lcdproc_client.php).

            • Because of the above change, now the "client script" (lcdclient.sh) do not cycle anymore.

            I hope at least some of the problems will be solved… I wait for your feedback. The new version is XXX.0.9.1.

            Thanks,
            Michele

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

              … and we are with 0.9.2.

              I didn't realize that there were some clients pending, that with the new error counter management could work behind. So now all the lcdproc_client.php processes are killed during the package resync.

              Sorry for the people that was already upgrading do 0.9.1...

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

                Looks good.  :)

                Now the error counter is in the php script (much better) why bother having lcdclient.sh at all?
                Just call the php client from the rc file directly.

                Also I have been running fmertz's driver he removed real time priority from with Nice level 20. Doing this allows the box to remain responsive even when some error event occours. Since the LCD is really of no importance compared to the firewall functions it seems better to run it at minimum priority. E.g.

                
                $start .= "\t/usr/bin/nice -20 /usr/local/sbin/LCDd -c ". LCDPROC_CONFIG ."\n";
                $start .= "\t/usr/bin/nice -20 ". LCDPROC_CLIENT ." &\n";
                
                

                Steve

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

                  @stephenw10:

                  Looks good.  :)

                  Thanks!

                  @stephenw10:

                  Now the error counter is in the php script (much better) why bother having lcdclient.sh at all?
                  Just call the php client from the rc file directly.

                  makes sense…

                  @stephenw10:

                  Also I have been running fmertz's driver he removed real time priority from with Nice level 20. Doing this allows the box to remain responsive even when some error event occours. Since the LCD is really of no importance compared to the firewall functions it seems better to run it at minimum priority. E.g.

                  
                  $start .= "\t/usr/bin/nice -20 /usr/local/sbin/LCDd -c ". LCDPROC_CONFIG ."\n";
                  $start .= "\t/usr/bin/nice -20 ". LCDPROC_CLIENT ." &\n";
                  
                  

                  also this makes sense. Just we have to consider if this influences negatively the client or LCDd to refresh the data or communicate with the panel, but it's just a matter of tuning…

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

                    Folks, the SDEC driver for Fireboxes is now officially part of the upstream lcdproc project! I received confirmation this morning that my code submission was committed. I guess it should come to pfSense as part of the package when the project leaders decide the current development branch is stable enough for release.

                    Now, on to support for the LEDs…

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

                      That's great! So the next version of LCDproc will have the SDEC driver… fmerz, consider that the compiling option in pfSense is "WITH_USB=true" only, I don't know if with this option the SDEC driver will be compiled...

                      BTW, how's going with the new package version? I found out it's more stable, but anyway still give some problems... what do you think?

                      Thanks,
                      Michele

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

                        Excellent work!  ;D

                        Steve

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

                          @stephenw10:

                          X-Peak:

                          
                          [2.0.1-RELEASE][root@pfsense.fire.box]/root(7): pciconf -r pci0:31:0 0:256
                          25a18086
                          
                          

                          Device ID 25a1 is a 6300ESB, data sheet: http://ark.intel.com/products/27663/Intel-6300ESB-IO-Controller

                          For the X-Peak, the LEDs are on GPIO pins 40 and 41. This is part of the second set of pins, so there no blink support in hardware. We already knew this…

                          Anyone with an X-Core?

                          1 Reply Last reply Reply Quote 0
                          • T
                            tix
                            last edited by

                            @fmertz:

                            I would like the output of the command, for the X-Core and X-Peak models. The key is the first 8 digits, the last 4 being 8086, Intel's vendor ID. Thanks.

                            X-Core (x700)

                            
                            /root(1): pciconf -r pci0:31:0 0:256
                            24408086 0280000f 06010005 00800000
                            00000000 00000000 00000000 00000000
                            00000000 00000000 00000000 00000000
                            00000000 00000000 00000000 00000000
                            00004001 00000010 00000000 00000000
                            00000000 00000000 00004081 00000010
                            09060b0c 000000d0 0a058003 00000000
                            00000000 00000000 00000000 00000000
                            00000000 00000000 00000000 00000000
                            00005475 00000000 00000000 00000000
                            00000200 00000000 00000000 00000000
                            00000000 00000000 00000000 00000000
                            00000000 00004004 00000000 00000000
                            00002002 00001f02 00000004 00000000
                            c0000010 14050000 00112233 45670291
                            017c000f 00000000 00000f47 00000200
                            ffffffff
                            
                            

                            I'm using the WGXepc script and it works flawlessly!

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

                              @tix:

                              X-Core (x700)

                              
                              /root(1): pciconf -r pci0:31:0 0:256
                              24408086
                              
                              

                              2440 is an 82801BA, Intel ICH2, datasheet here: http://www.intel.com/content/dam/doc/datasheet/82801ba-i-o-controller-hub-2-82801bam-i-o-controller-hub-2-mobile-datasheet.pdf

                              Somehow the existing WGXepc code does not seem to line up with the spec…

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

                                Hi,
                                  how's going with the latest (0.9.2) package?

                                Right now I am working on this:

                                1. I divided / 2 the number of commands sent to LCDproc every cycle. So if before were sent 10 commands, now only 5
                                2. I wrote a little better code for error handling
                                3. I slowed down a bit the scrolling (just a little bit)
                                4. Simplified the script to launch. There's no more lcdproc_client.sh.

                                Then I will:
                                4) add and test the "nice" command to the programs running
                                5) I will add a "top value" for waiting to the next cycle of 10 seconds. So it will be sure that the communication won't timeout

                                What else?

                                Ciao,
                                Michele

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

                                  @fmertz:

                                  Somehow the existing WGXepc code does not seem to line up with the spec…

                                  Hmm, in what way?
                                  There was a problem because the GPIO base is set to a non-standard value on the X-core.
                                  On the other boxes it is at 0x480, which I believe is the standard value where as the X-Core is at 0x4080.

                                  Steve

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

                                    @stephenw10:

                                    @fmertz:

                                    Somehow the existing WGXepc code does not seem to line up with the spec…

                                    Hmm, in what way?
                                    There was a problem because the GPIO base is set to a non-standard value on the X-core.
                                    On the other boxes it is at 0x480, which I believe is the standard value where as the X-Core is at 0x4080.

                                    Steve

                                    The way I read it, this particular device ID is an ICH2, and has the GPIO base port stored at offset 0x58 (page 9-1). Fine. The value at that offset happens to be 4081, which, masked off is 4080 (this was listed in the pciconf command, and is already in your code). Fine. In your code, you use port 4080 + 0x0f. Offset 15 in the GPIO area is for GPIO level, and bits control pins. Fine. The blink register is at offset 0x18 (32 bit), so I am not sure how it can blink with just the level register, or how it is not possible to turn the LEDs off…

                                    For the X-Core-e, the Level port controls on/off, the Blink port controls the, well, blinking, and it all can be turned off with putting the bit to zero.

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

                                      I had to re-read the thread to remind myself what happened. I agree with you it doesn't make any sense! In fact you can see, here, where I was expecting the registers to work as you describe above but the experimental results show otherwise.

                                      One thing that is different about the X-core is that you can set the LED state in the BIOS (though I've never tried it myself). And you have a choice of red or green and fast or slow flash. There is no fast/slow blink described in the documentation yet it is clearly available.  :-\

                                      Steve

                                      1 Reply Last reply Reply Quote 0
                                      • T
                                        tix
                                        last edited by

                                        Hello

                                        I've tried the latest .92 package and my x-core will still become unresponsive at the 10 hour mark.

                                        I'm out of ideas on what the issue could be… :(

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

                                          @tix:

                                          Hello

                                          I've tried the latest .92 package and my x-core will still become unresponsive at the 10 hour mark.

                                          I'm out of ideas on what the issue could be… :(

                                          Hi Tix,
                                            Thank you for the feedback. I am trying a new version with a lot of changes, if it passes my tests I will publish it… Cross your fingers...

                                          Ciao,
                                            Michele

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

                                            @mdima:

                                            @tix:

                                            Hello

                                            I've tried the latest .92 package and my x-core will still become unresponsive at the 10 hour mark.

                                            I'm out of ideas on what the issue could be… :(

                                            Hi Tix,
                                               Thank you for the feedback. I am trying a new version with a lot of changes, if it passes my tests I will publish it… Cross your fingers...

                                            Ciao,
                                               Michele

                                            Shot in the dark: is the client reading the responses back from LCDd? The release notes mentioned something about ignoring them causing unpleasant behavior …

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