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

    PfSense on a Celestix S-X MSA 4000

    Scheduled Pinned Locked Moved Hardware
    61 Posts 17 Posters 21.1k 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.
    • _Adrian__
      _Adrian_
      last edited by

      Following…

      If it ain't broken, fix it till it is :P

      1 Reply Last reply Reply Quote 0
      • P
        pkirkovsky
        last edited by

        Here's the pinout of the LCD module:

        
        +--------------------+    PIN   FUNCTION                                            
        | 02  04  06  08  10 |   +---+ +--------+                                           
        |                    |     01   USB 5v                                              
        | 01  03  05  07  09 |     02   USB D-                                              
        +--------|  |--------+     03   USB D+                                              
                                   04   USB GND                                             
           Connector on PCB        05   LED Green (Power)                                   
                                   06   LED Red (Fault)                                     
                                   07   LED Ambert (Disk)                                   
                  ++               08   System Power (short to GND to boot machine)         
        +--------------------+     09   3v                                                  
        | 01  03  05  07  09 |     10   State detect ("System On" -> "System Ready")        
        |                    |                                                              
        | 02  04  06  08  10 |     USB is only enabled when "Ready" state is achieved       
        +--------------------+     When module is outside of system, short pin 10 to any LED
                                   to force "Ready" state and USB communication             
          Connector on cable                                                                
        
        
        1 Reply Last reply Reply Quote 0
        • ?
          Guest
          last edited by

          If you want to replace the Cavium Nitrox miniPCI card you could go by using a
          Soekris vpn1411 miniPCI card that is supported by pfSense.

          1 Reply Last reply Reply Quote 0
          • P
            pkirkovsky
            last edited by

            I have a couple of Celestix boxes with intact stock software. Will be posting USB captures soon, stay tuned…

            1 Reply Last reply Reply Quote 0
            • H
              HammyHavoc
              last edited by

              @pkirkovsky:

              I have a couple of Celestix boxes with intact stock software. Will be posting USB captures soon, stay tuned…

              How's this going? I received my MSA 4000 today, put pfSense on it, would like to get the front panel running and help where possible. ;- )
              Also noticed a red LED flashes above the exclamation symbol, does this happen on yours too?

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

                I have one of these boxes as well as 2 x RSA Securid boxes (Celestix Scorpio) with the same LCD/jog wheel combo.  It would be nice to have it all working nicely with lcdproc/pfsense.  Nice work so far.  : )

                Following.

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

                  Of any help: https://www.astaro.org/19475-post1.html ?

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

                    Looks like a binary Linux driver they're using. Not much use in pfSense/FreeBSD.

                    Steve

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

                      Ok.  I feel like I've seen a (possibly Windows) driver for this before in searching around the web when I first got the box.

                      I think that I still have an in-tact system drive from the original appliance ,and I was able to find the driver details for the display/wheel in Windows, then research it online to find more information.  I didn't know what to do with it once I found it, so I think I've long since deleted whatever it was I found.  But if I found it once, I might possibly be able to find it again.

                      I'll have to dig up the drive that has the original Win2K3 install on it and see if I can find the driver info.  If I can find the .inf file would that be of any help?

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

                        The device is listed in Win2K3 as a Jungo lcd.  The driver is windrvr6.sys.  Googlefu: http://www.jungo.com/st/products/windriver/

                        Not sure if that helps or not.  Let me know if I can provide anything else.

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

                          Oops/

                          Celestix S-X MSA 4000 Windows LCD driver info:


                          …
                          Manufacturer: Varitronix
                          Model: MDLS-40263-LV-B-LED
                          Product: LCD Character Display Modules
                          Character Count x Line: 40 x 2

                          1 Reply Last reply Reply Quote 0
                          • Y
                            yeyus
                            last edited by

                            I been doing some research on the same hardware that seems to be used by celestix all across it's product line.

                            For now I've been able to fetch some characteristics about the device:

                            • It's a composite USB HID device (Keyboard + Alphanumeric LCD pages)
                            • It will output 8 fields (1 bit each) when a keyboard event occurs.
                            • The input for the LCD is a 88 byte array probably some 8 byte control preamble followed to up to 80 characters (40x2 chars)

                            HID table for those interested:

                            
                            USAGE_PAGE (Generic Desktop Controls)
                            USAGE (Keyboard)
                            COLLECTION (Application)
                              REPORT_ID(1)
                              USAGE_PAGE (Keyboard)
                              USAGE_MINIMUM(Control Left)
                              USAGE_MAXIMUM(GUI Right)
                              LOGICAL_MINIMUM(0)
                              LOGICAL_MAXIMUM(1)
                              REPORT_SIZE(1)
                              REPORT_COUNT(8)
                              INPUT(Data, Var, Absolute, No Wrap, Linear, Preferred_State, No_Null_Position,Non_Volatile, Bitfield)
                              REPORT_SIZE(8)
                              REPORT_COUNT(1)
                              LOGICAL_MINIMUM(0)
                              LOGICAL_MAXIMUM(104)
                              USAGE_PAGE (Keyboard)
                              USAGE_MINIMUM(0)
                              USAGE_MAXIMUM(104)
                              INPUT(Data, Array, Absolute, No Wrap, Linear, Preferred_State, No_Null_Position,Non_Volatile, Bitfield)
                            END COLLECTION
                            USAGE_PAGE (Alphanumeric Display)
                            USAGE (Alphanumeric Display)
                            COLLECTION (Application)
                              REPORT_ID(2)
                              USAGE(Display Data)
                              LOGICAL_MINIMUM(128)
                              LOGICAL_MAXIMUM(127)
                              REPORT_SIZE(8)
                              REPORT_COUNT(88)
                              OUTPUT(Data, Var, Absolute, No Wrap, Linear, Preferred_State, No_Null_Position,Non_Volatile, Bitfield)
                            END COLLECTION
                            
                            

                            If any of you have access to binaries (either windows or linux) please let me know because they can be very helpful in decoding the command schema for the LCD operation.

                            1 Reply Last reply Reply Quote 0
                            • Y
                              yeyus
                              last edited by

                              Got it working!


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

                                The alert LED is GPIO. Here's the linux source. Please share back if anyone can get it to work on FreeBSD.

                                #include <stdio.h>#include <stdlib.h>#include <sys io.h="">/* for outb() and inb() */

                                #define IOADDR 0x50e

                                void usage()
                                {
                                    printf("ngled [0|1|2]\n");
                                    printf("            0 : off  \n");
                                    printf("            1 : on  \n");
                                    printf("            2 : blink  \n");
                                    printf("\nShows status if no command is passed.\n");
                                    exit(1);
                                }

                                int main(int argc, char **argv)
                                {
                                  if (iopl(3) < 0) {
                                        printf("iopl fail\n");
                                        return;
                                }

                                if (argc < 2)
                                {
                                  if ( inb(0x51a) == 0x84 ) printf("2\n");
                                  else if ( inb(IOADDR) == 0x7b ) printf("0\n");
                                  else printf("1\n");
                                  return;
                                } else if ( argc > 2 ) usage();

                                switch (*argv[1])
                                {
                                  case '0':
                                /fprintf(stderr, "OFF!!");/
                                outb(inb(0x50e)&0x7f,IOADDR);
                                outb(0x4,0x51a);
                                  break;

                                case '1':
                                /fprintf(stderr, "ON!!");/
                                outb(inb(0x51a)&0x7f,0x51a);
                                outb(inb(0x50e)|0x80,IOADDR);
                                break;
                                  case '2':
                                outb(inb(0x50e)&0x7f,IOADDR);
                                outb(inb(0x51a)|0x80,0x51a);
                                break;
                                  default:
                                usage();
                                }

                                return 0;
                                }</sys></stdlib.h></stdio.h>

                                1 Reply Last reply Reply Quote 0
                                • P
                                  pkirkovsky
                                  last edited by

                                  @HammyHavoc:

                                  @pkirkovsky:

                                  I have a couple of Celestix boxes with intact stock software. Will be posting USB captures soon, stay tuned…

                                  How's this going? I received my MSA 4000 today, put pfSense on it, would like to get the front panel running and help where possible. ;- )

                                  Sorry this took so long!

                                  Here is a ZIP file containing captures of LCD and jogdial activity:
                                  https://kirkovsky.com/junkbin/celestix.zip

                                  This activity was captured on the stock Windows system that comes with these boxes. Included in the ZIP is USBLyzer (Windows only AFAIK) format, HTML & CSV export from USBLyzer, and standard pcap USB capture format (should be Wireshark compatible). Hope this helps!

                                  @HammyHavoc:

                                  Also noticed a red LED flashes above the exclamation symbol, does this happen on yours too?

                                  Yes, this happens on mine too. It looks like there's some kind of watchdog function that allows the OS to tell the LCD module not to flash that LED, but if no signal is being sent it flashes constantly.

                                  1 Reply Last reply Reply Quote 0
                                  • P
                                    pkirkovsky
                                    last edited by

                                    @yeyus:

                                    If any of you have access to binaries (either windows or linux) please let me know because they can be very helpful in decoding the command schema for the LCD operation.

                                    I have default/stock system images for both Windows and Linux (recovery partition) of the ScorpioX machines (the Celestix MSA/WSA/etc and certain RSA-branded boxes all share the same base platform).

                                    The Linux recovery partition has some control binaries and kernel modules (a module for the LCD + jogdial and a module for the alert LED). The Windows side has basically the same setup, but the display/jogdial/LED are all rolled into one driver binary.

                                    I don't want to widely distribute these due to copyright concerns. PM me for further details.

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

                                      @yeyus:

                                      Got it working!

                                      Was this Linux or FreeBSD?

                                      EDIT: Must be Linux; hidtest-hidraw appears to be a https://github.com/signal11/hidapi utility.  I'm curious what the equivalent FreeBSD approach is - when I looked at LCDProc, the [pfSense] config asked a lot of questions I didn't know!

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

                                        @twisted2k3:

                                        The alert LED is GPIO. Here's the linux source….

                                        @stephenw10 - your WGXepc program set GPIO values for the arm/disarm LED on the WG FB boxes, didn't it?  (I don't know much about this….)  Could the program be used in similar way to probe the GPIO for the LCD/Keyboard controls of this device?

                                        1 Reply Last reply Reply Quote 0
                                        • P
                                          pkirkovsky
                                          last edited by

                                          Here are the kernel modules and utility scripts for the LCD and warning LED from the Linux restore partition on my Celestix device. Running strings suggests that these are under GPL, so I'm putting them here:

                                          https://kirkovsky.com/junkbin/MSA2000i_ScorpioX.zip

                                          1 Reply Last reply Reply Quote 0
                                          • N
                                            NightShaman
                                            last edited by

                                            Any progress on this? I would love to see it working. Just picked up a wsa-4200, and all that is left is the LCD :)

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