PfSense on a Celestix S-X MSA 4000



  • @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!



  • @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?



  • 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



  • 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 :)



  • Waiting on this too, would be great if we could get it working.

    Also, anybody know how to make this thing any more quiet? Different fans? Mulling over swapping out the motherboard, just not sure how the daughter board of NICs connects.



  • Has anybody gotten the screens to work under pfSense? I just picked one up, got it installed, and would love for the LCD / Jog to do something other than –------------ SYSTEM READY -------------



  • @yeyus:

    Got it working!

    Hi yeyus,

    Would it be possible to post the code you used to get the display working please?

    Thanks!



  • @twisted2k3:

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

    Hi twisted2k3,

    How did you determine the IOADDR (base address?) of the GPIO controller?  I am trying to recompile for Linux with an WSA-4200 which has a different motherboard to the MSA…

    Thanks!



  • Sorry to bring back an older thread but did you guys ever get this working?


  • Netgate Administrator

    Yeah so in Linux it is recognised and creates /dev/hidraw0. That doesn't happen in FreeBSD so you would need to address the USB device directly or create some other driver.

    The GPIO LED is probably controllable though.

    Steve



  • I was able to find this out there not sure if it would help:

    https://github.com/camerongray1515/Celestix-Scorpio-X-LCD


  • Netgate Administrator

    Unfortunately it doesn't. It still uses the same Linux driver:

    def lcd_display(message, line=1):
        message = str(message)
        line_selection = "\x00" if line == 1 else "\x01"
        preamble = "\x02\x00\x00{0}\x28\x00\x00\x00".format(line_selection)
        endpad = "\x20"*(40-len(message))
    
        data = preamble + message + endpad
        with open("/dev/hidraw0", "w") as lcd:
    lcd.write(data)
    

    Addresses /dev/hidraw0.

    Interesting that that driver is in VyOS though…. if it's a standard Linux driver we might be able to see some clues.

    Steve



  • dmesg on system yields:

    ukbd0: <vendor 0="" 2="" 0x0cb6="" keyboard="" +="" lcd,="" class="" 0,="" rev="" 1.10="" 1.00,="" addr="">on usbus1</vendor>



  • Looks like there is something testable with the information published this far.

    The Python code shows a sequence of hex codes

    The device is known

    The BSD shell has the printf built-in, and it accepts codes on octal format.

    So, to hexadecimal 0x20 becomes octal \40

    Try something like this:

    printf "\02\00\00\61\50\00\00\00Some Message" > /dev/ukbd0
    

    Try this for line 2:

    printf "\02\00\00\62\50\00\00\00Some Message" > /dev/ukbd0
    


  • So something interesting happened. I rebooted the machine and now dmesg shows:

    ukbd1: <vendor 0="" 2="" 0x0cb6="" keyboard="" +="" lcd,="" class="" 0,="" rev="" 1.10="" 1.00,="" addr="">on usbus1

    This is what I get while running the printf command

    [2.3.5-RELEASE][root@pfSense.geek.local]/: printf "\02\00\00\61\50\00\00\00Some Message" > /dev/ukbd1
    /dev/ukbd1: Device busy.</vendor>


  • Netgate Administrator

    Hmm, that's not good. Changing device names makes it that much harder to work with even we could get it to accept any input.  :-\

    Steve



  • Good reading here:

    https://www.freebsd.org/cgi/man.cgi?query=ukbd&sektion=4

    Seems like we would need that character device. Once it shows as /dev/kbd1, that printf should be directed to it. Worth a try…



  • @fmertz:

    Good reading here:

    https://www.freebsd.org/cgi/man.cgi?query=ukbd&sektion=4

    Seems like we would need that character device. Once it shows as /dev/kbd1, that printf should be directed to it. Worth a try…

    I’m relatively new to pfsense here and have read that. How would I go about compiling that in the kernel and config to test? May need a little guidance here but looks like we’re getting somewhere here!



  • Actually, looking at the Linux device, it suggests it is a raw device. Maybe the character device is not needed.

    Maybe it needs to be initialized read/write:

    exec 3<> /dev/ukbd1
    


  • @fmertz:

    Actually, looking at the Linux device, it suggests it is a raw device. Maybe the character device is not needed.

    Maybe it needs to be initialized read/write:

    exec 3<> /dev/ukbd1
    

    I'll give this a shot when I get home and report back!



  • @fmertz:

    Actually, looking at the Linux device, it suggests it is a raw device. Maybe the character device is not needed.

    Maybe it needs to be initialized read/write:

    exec 3<> /dev/ukbd1
    

    [2.3.5-RELEASE][root@pfSense.geek.local]/: exec 3<> /dev/ukbd1
    Missing name for redirect.