Netgate SG-3100 LEDs
-
What do the LEDs mean by default and how do you configure them? As far as I can see there is NO documentation on this at Netgate beyond the mention that they are configurable. Sure, I bet you can rewrite it in the firmware and MAKE the LEDs do what I want but that's way more effort than it needs to be.
-
What do you expect from that LEDs? In normal this LEDs are blinking green at start up and then green
for a good connection and red for a failure or disconnection, that's it in short. Or something in that matter
will be also all other LEDs blinking such as the ALIX or APU boards from PC Engines will do it. -
I have the same question. My SG-3100 only has a throbbing / breathing blue LED under the black diamond at idle. Netgate has zero documentation on them, and there doesn't appear to be any package in the repo for configuring them.
-
Right now they illuminate in sequence during the different stages of boot process, circle, square, diamond, with a fast blue flash.
When booting is complete the diamond flashes blue with a slow flash.
If the system sees an update is available the square flashes orange with a slow flash.As you say they can be configured to flash any colour at any speed. Suggestions always welcome. :)
They can be configured from user space so via a shellcmd for example. There are two places to do that.
Via the gpioctl command:
[2.4.2-DEVELOPMENT][admin@3100.stevew.lan]/root: gpioctl 6 duty 100
That sets led 6 to maximum brightness. 6 is the red led in the circle. Each LED is tri-colour device with 3 LEDs in it for red green and blue:
| Front Indicator | Red | Green | Blue |
| Diamond | 0 | 1 | 2 |
| Square | 3 | 4 | 5 |
| Circle | 6 | 7 | 8 |The flashing frequency and duration is controlled by a set of sysctls:
[2.4.2-DEVELOPMENT][admin@3100.stevew.lan]/root: sysctl dev.gpio.0 dev.gpio.0.led.2.T2: 0 dev.gpio.0.led.2.DT: 0 dev.gpio.0.led.2.T1-T3: 520 dev.gpio.0.led.2.pwm: 1 dev.gpio.0.led.1.T2: 0 dev.gpio.0.led.1.DT: 0 dev.gpio.0.led.1.T1-T3: 1040 dev.gpio.0.led.1.pwm: 0 dev.gpio.0.led.0.T2: 520 dev.gpio.0.led.0.DT: 0 dev.gpio.0.led.0.T1-T3: 1040 dev.gpio.0.led.0.pwm: 0 dev.gpio.0.pin.8.T4: 0 dev.gpio.0.pin.8.T0: 0 dev.gpio.0.pin.7.T4: 0 dev.gpio.0.pin.7.T0: 0 dev.gpio.0.pin.6.T4: 0 dev.gpio.0.pin.6.T0: 0 dev.gpio.0.pin.5.T4: 0 dev.gpio.0.pin.5.T0: 0 dev.gpio.0.pin.4.T4: 3640 dev.gpio.0.pin.4.T0: 0 dev.gpio.0.pin.3.T4: 3640 dev.gpio.0.pin.3.T0: 0 dev.gpio.0.pin.2.T4: 3640 dev.gpio.0.pin.2.T0: 0 dev.gpio.0.pin.1.T4: 0 dev.gpio.0.pin.1.T0: 0 dev.gpio.0.pin.0.T4: 0 dev.gpio.0.pin.0.T0: 0 dev.gpio.0.%parent: iicbus0 dev.gpio.0.%pnpinfo: name=is31fl3199 compat=issi,is31fl3199 dev.gpio.0.%location: addr=0xce dev.gpio.0.%driver: gpio dev.gpio.0.%desc: ISSI IS31FL3199 9 channel light effect LED driver
The exact settings of which I have not had time to investigate yet. ;)
But for example you can switch led 1 (square) to pwm mode where it is not controlled by the led controller directly but stays on permanently at whatever settings you have set using gpioctl:[2.4.2-DEVELOPMENT][admin@3100.stevew.lan]/root: sysctl dev.gpio.0.led.1.pwm=1 dev.gpio.0.led.1.pwm: 0 -> 1
More information on those settings can be found in the datasheet: http://www.issi.com/WW/pdf/IS31FL3199.pdf
We hope to have something more comprehensible than that documented soon though.
Steve
- 28 days later
-
Right now they illuminate in sequence during the different stages of boot process, circle, square, diamond, with a fast blue flash.
When booting is complete the diamond flashes blue with a slow flash.
If the system sees an update is available the square flashes orange with a slow flash.As you say they can be configured to flash any colour at any speed. Suggestions always welcome. :)
They can be configured from user space so via a shellcmd for example. There are two places to do that.
Via the gpioctl command:
[2.4.2-DEVELOPMENT][admin@3100.stevew.lan]/root: gpioctl 6 duty 100
That sets led 6 to maximum brightness. 6 is the red led in the circle. Each LED is tri-colour device with 3 LEDs in it for red green and blue:
| Front Indicator | Red | Green | Blue |
| Diamond | 0 | 1 | 2 |
| Square | 3 | 4 | 5 |
| Circle | 6 | 7 | 8 |The flashing frequency and duration is controlled by a set of sysctls:
[2.4.2-DEVELOPMENT][admin@3100.stevew.lan]/root: sysctl dev.gpio.0 dev.gpio.0.led.2.T2: 0 dev.gpio.0.led.2.DT: 0 dev.gpio.0.led.2.T1-T3: 520 dev.gpio.0.led.2.pwm: 1 dev.gpio.0.led.1.T2: 0 dev.gpio.0.led.1.DT: 0 dev.gpio.0.led.1.T1-T3: 1040 dev.gpio.0.led.1.pwm: 0 dev.gpio.0.led.0.T2: 520 dev.gpio.0.led.0.DT: 0 dev.gpio.0.led.0.T1-T3: 1040 dev.gpio.0.led.0.pwm: 0 dev.gpio.0.pin.8.T4: 0 dev.gpio.0.pin.8.T0: 0 dev.gpio.0.pin.7.T4: 0 dev.gpio.0.pin.7.T0: 0 dev.gpio.0.pin.6.T4: 0 dev.gpio.0.pin.6.T0: 0 dev.gpio.0.pin.5.T4: 0 dev.gpio.0.pin.5.T0: 0 dev.gpio.0.pin.4.T4: 3640 dev.gpio.0.pin.4.T0: 0 dev.gpio.0.pin.3.T4: 3640 dev.gpio.0.pin.3.T0: 0 dev.gpio.0.pin.2.T4: 3640 dev.gpio.0.pin.2.T0: 0 dev.gpio.0.pin.1.T4: 0 dev.gpio.0.pin.1.T0: 0 dev.gpio.0.pin.0.T4: 0 dev.gpio.0.pin.0.T0: 0 dev.gpio.0.%parent: iicbus0 dev.gpio.0.%pnpinfo: name=is31fl3199 compat=issi,is31fl3199 dev.gpio.0.%location: addr=0xce dev.gpio.0.%driver: gpio dev.gpio.0.%desc: ISSI IS31FL3199 9 channel light effect LED driver
The exact settings of which I have not had time to investigate yet. ;)
But for example you can switch led 1 (square) to pwm mode where it is not controlled by the led controller directly but stays on permanently at whatever settings you have set using gpioctl:[2.4.2-DEVELOPMENT][admin@3100.stevew.lan]/root: sysctl dev.gpio.0.led.1.pwm=1 dev.gpio.0.led.1.pwm: 0 -> 1
More information on those settings can be found in the datasheet: http://www.issi.com/WW/pdf/IS31FL3199.pdf
We hope to have something more comprehensible than that documented soon though.
Steve
Very cool, my friend. Thanks for the info.
-
Thanks for posting that useful info. I would definately back suggestions to improve the documentation on the SG-3100 with respect to the LED lights meaning and configuration.
In addition I suspect many deployments of this device could be in locations where having a very bright flashing light would be unwanted, such as a living room/lounge. Having an easy way to A) dim them AND B) change them to static would be valuable.
Thanks
-
Indeed I have at times been reduced to covering it with an old sock but I like your plan better! ;D
I'll pass that to our developers. Any other suggestions welcome!
Steve
- 7 months later
-
@stephenw10 Having a UI page to alter/disable the LEDs (e.g. dark for normal operation, alert for update/error notifications) would be better than a sock.
I can signal the Mars rover with the SG-3100, I think I may need sunscreen.
-
@stephenw10
I've been trying to get this to work, but I must be missing something.Used Command Prompt in the GUI.
gpioctl 2 duty 000
Set the blue flashing diamond led to zero brightness, which worked.
gpioctl 1 duty 050
Set the green diamond led to 50%, still flashing though.
Ran the command posted to switch led 1 to pwm-
sysctl dev.gpio.0.led.1.pwm=1dev.gpio.0.led.1.pwm: 0 -> 1
This isn't working though. LED 1 continues to flash. What did I get wrong here?
-
ThinkI found one mistake. Ran this command instead-
sysctl dev.gpio.0.led.1.pwm=1
Still didn't work though.
Here is the output from sysctl dev.gpio.0
dev.gpio.0.led.2.T2: 0 dev.gpio.0.led.2.DT: 0 dev.gpio.0.led.2.T1-T3: 520 dev.gpio.0.led.2.pwm: 0 dev.gpio.0.led.1.T2: 0 dev.gpio.0.led.1.DT: 0 dev.gpio.0.led.1.T1-T3: 520 dev.gpio.0.led.1.pwm: 1 dev.gpio.0.led.0.T2: 520 dev.gpio.0.led.0.DT: 0 dev.gpio.0.led.0.T1-T3: 1040 dev.gpio.0.led.0.pwm: 0 dev.gpio.0.pin.8.T4: 0 dev.gpio.0.pin.8.T0: 0 dev.gpio.0.pin.7.T4: 0 dev.gpio.0.pin.7.T0: 0 dev.gpio.0.pin.6.T4: 0 dev.gpio.0.pin.6.T0: 0 dev.gpio.0.pin.5.T4: 0 dev.gpio.0.pin.5.T0: 0 dev.gpio.0.pin.4.T4: 0 dev.gpio.0.pin.4.T0: 0 dev.gpio.0.pin.3.T4: 0 dev.gpio.0.pin.3.T0: 0 dev.gpio.0.pin.2.T4: 3640 dev.gpio.0.pin.2.T0: 0 dev.gpio.0.pin.1.T4: 0 dev.gpio.0.pin.1.T0: 0 dev.gpio.0.pin.0.T4: 0 dev.gpio.0.pin.0.T0: 0 dev.gpio.0.%parent: iicbus0 dev.gpio.0.%pnpinfo: name=is31fl3199 compat=issi,is31fl3199 dev.gpio.0.%location: addr=0xce dev.gpio.0.%driver: gpio dev.gpio.0.%desc: ISSI IS31FL3199 9 channel light effect LED driver
-
This thread on reddit has some useful information on the topic: https://www.reddit.com/r/PFSENSE/comments/8v1owa/need_help_configuring_internal_switch_vlan_and/
- 17 days later
-
I notice that every once in a while (not sure the cause), the middle LED will go off (dark) on its own....
Is only the right-most LED being used by the pfSense hardware/software? Or which LEDs are OK for me to write a custom PHP script against?
-
@msf2000
All the LED’s will flash in sequence during boot. After the boot process is complete the right LED will pulse blue. If an update is available to the pfSense software the center LED will light up orange.
https://forum.netgate.com/topic/122407/netgate-sg-3100-leds/4If you do write a script, perhaps you would consider sharing it?
-
Sure. No promises that it actually works though. :)
-
Because my SG-3100 is out in the open the flashing blue LED is distracting, so I simply entered a cron entry to turn the LED off after 20 minutes post-startup.
*/20 * * * * root /usr/sbin/gpioctl 2 duty 0
- 24 days later
-
I just set up my new SG-3100 and all seems to be working fine. The right side diamond LED slowly flashes. However when I go to Diagnostics - Halt System and the system shuts down, I lose my connection as expected but the LED continues to slow-blink. I was expecting it to shut off. Is this normal?
-
@tjsober said in Netgate SG-3100 LEDs:
I just set up my new SG-3100 and all seems to be working fine. The right side diamond LED slowly flashes. However when I go to Diagnostics - Halt System and the system shuts down, I lose my connection as expected but the LED continues to slow-blink. I was expecting it to shut off. Is this normal?
There is an issue we're addressing on 2.4.4 where the OS is not completely halting on shutdown that may be related. The fix is partially in snapshots now but should be completely done shortly.
-
I observe the same behavior of the last blue LED.... system shutdown does not stop the LED slow flashing. As a workround, i use ssh to shutdown if needed, which allows me to see when the OS is actually halted.
I agree with @tjsober that it would be helpful if the last blue LED went dark once the system was properly halted. Perhaps this is something the watchdog timer can do?
- 9 days later
-
Got a working tcsh shell script. It updates the left LED to green, amber, red, or blue, depending on the gateway status of the WAN port. Should be easy to customize.
#!/bin/tcsh # # This script updates the SG-3100 device's first LED with gateway status # # php /usr/local/sbin/pfSsh.php playback gatewaystatus # set gw = `/usr/local/bin/php /usr/local/sbin/pfSsh.php playback gatewaystatus | grep WAN ` set gwping = `echo $gw | awk '{ ORS=" "; print $6 }' ` set gwstatus = `echo $gw | awk '{ ORS=" "; print $7 }' ` # based on gwstatus, set color of first LED # led a - led b - led c # 6 7 8 - 3 4 5 - 0 1 2 switch ($gwstatus) case "none": case "Online": /usr/sbin/gpioctl 6 duty 0 /usr/sbin/gpioctl 7 duty 128 /usr/sbin/gpioctl 8 duty 0 breaksw case "down": case "Offline": /usr/sbin/gpioctl 6 duty 128 /usr/sbin/gpioctl 7 duty 0 /usr/sbin/gpioctl 8 duty 0 breaksw case "highloss": case "loss": case "highdelay": case "delay": case "Warning": /usr/sbin/gpioctl 6 duty 128 /usr/sbin/gpioctl 7 duty 32 /usr/sbin/gpioctl 8 duty 0 breaksw default: /usr/sbin/gpioctl 6 duty 0 /usr/sbin/gpioctl 7 duty 0 /usr/sbin/gpioctl 8 duty 128 endsw
-
@msf2000 said in Netgate SG-3100 LEDs:
@wgstarks
Got a working tcsh shell script.How/where should I install this? Needs to run at boot I'm guessing?
-
Yes, upload the shell script as a file. (Root's home directory is fine.) Then, install the "Cron" package. Add the shell script as a cron job to run every minute.
-
@msf2000
Thanks. Looks like it's working. - about a year later
-
@wgstarks It would be great if the lights could serve 2 purposes:
(1) show boot status during a power-on or reboot (like they do now)
(2) show network activity on 3 network segments the rest of the time (WAN, LAN, OPT1)If #2 was implemented, a glance at the firewall would tell us a lot about what's going on. It would be greatly appreciated.
-
@dpasadis said in Netgate SG-3100 LEDs:
@wgstarks It would be great if the lights could serve 2 purposes:
(1) show boot status during a power-on or reboot (like they do now)
(2) show network activity on 3 network segments the rest of the time (WAN, LAN, OPT1)If #2 was implemented, a glance at the firewall would tell us a lot about what's going on. It would be greatly appreciated.
This isn’t my code. It was provided by @msf2000.
- 9 days later
-
- You could install the "ShellCmd" package and have the LED script run on bootup, if you'd like.
- Just rotate the device 180 degrees, and you'll see the network traffic. ;)
The script I wrote was more for users to see that the firewall is working, instead of power-cycling the pfsense unnecessarily when their internet is slow.
-
Thanks msf2000. I appreciate your contribution.
I like your first suggestion (and your second for different reasons).
I've done a lot of work on operating systems, including Unix/Linux, so I might be able to figure out #1 without spending a crazy amount of time on it. If I get a good result, I'll share it here.
-
Cool thread!
- 2 months later
-
I wrote some more comprehensive documentation on my blog, which explains the timings in more depth. https://www.zacharyschneider.ca/blog/post/2019/12/customizing-leds-netgate-sg-3100
Hope it helps!
- 3 months later
-
I took some of the information in this article and wrote a script that sets the LED colors based on network interface state and bandwidth usage.
- about a month later
-
@jchonchi Sounds useful. Does the script work as intended?
I'm a complete moron when it comes to coding, so my risk tolerance is near zero.
-
@jchonchi i am using the script, works like charm. Thanks
- 2 months later
-
Very helpful thread.
I re-wrote msf2000s script as a sh script and generalized it a bit.
I use the left (circult) and middle (square) LEDs to monitor my two WAN connections.
I also toned it down a bit so I don't need sunblock.
You can find it here
- 8 months later
-
@msf2000 This was working for a long time in 2.4.5 -- but doesn't seem to anymore in 21.02.
-
@bldnightowl said in Netgate SG-3100 LEDs:
@msf2000 This was working for a long time in 2.4.5 -- but doesn't seem to anymore in 21.02.
After reading the release notes I’m guessing this is the reason-
Several abandoned and deprecated packages have been removed, including: OpenBGPD (use FRR instead) Quagga OSPF (use FRR instead) routed blinkled gwled
-
@bldnightowl
What the crap is NetGate doing with version numbers? Breaking their own products? I don't plan to update past 2.4.5. Guess I'll read up on what's going on later.As for my script, sorry, you are probably on your own if you upgrade to v21.
-
@bldnightowl Check that you're using the right GPIO device:
sysctl dev.gpio | grep .led.
When I upgraded to 21.02/2.5, the GPIO device changed from
0
to2
on my SG-3100.@wgstarks The
blinkled
andgwled
packages aren't needed for the SG-3100 LED driver, those are for controlling the LEDs on ALIX and WRAP platforms. -
@z4xh What is the relationship between the output of that command to the numbers I provide to gpioctl? I'll update my script to make use of that and test it on 2.4.5 while they figure out the issues with 21.02.
Thanks.
Jeff
-
@jchonig This github commit explains it best: https://github.com/justdaniel-gh/sg3100customleds/commit/ddbf412cb1cf3ba32160972e2177c356611ff57f
-
The probe order of the GPIO devices changed in the newer version of FreeBSD since more of the on-board devices are supported now. It wasn't intentionally moved or anything.
-
Yes, it looks like the script doesn't set the gpio device so it defaults to using device 0 which is no longer valid. You need to set gpioctl to use /dev/gpioc2, for example:
/usr/sbin/gpioctl -f /dev/gpioc2 6 duty 0
Steve