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

    Netgate 2100 Customization of LEDs (Guide)

    Hardware
    2
    37
    2.2k
    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.
    • wgstarksW
      wgstarks @JonathanLee
      last edited by

      @JonathanLee
      So I could just use something like 8.8.8.8 for the static WAN?

      Box: SG-4200

      JonathanLeeJ 1 Reply Last reply Reply Quote 1
      • JonathanLeeJ
        JonathanLee @wgstarks
        last edited by

        @wgstarks That's the DNS yes if the gateway went offline I am sure that state would no longer exist. Try that unplug wan for 10 mins see if it glows red plug it v=back in wait ten mins see if it normalizes. Great idea

        wgstarksW 1 Reply Last reply Reply Quote 0
        • wgstarksW
          wgstarks @JonathanLee
          last edited by

          @JonathanLee
          Do you know what the factory default is for the “or else”?

          Box: SG-4200

          JonathanLeeJ 1 Reply Last reply Reply Quote 0
          • JonathanLeeJ
            JonathanLee @wgstarks
            last edited by JonathanLee

            @wgstarks

            I think it is very close too..

            sysctl -q dev.gpio.2.led.2.pwm=0
            gpioctl -f /dev/gpioc2 8 duty  30 >/dev/null
            

            it pulses blue like that... I never used the default once I went to custom blinking light mode

            Remember you have to disable the others before you change it back with

            sysctl -q dev.gpio.2.led.0.pwm=1
              gpioctl -f /dev/gpioc2 0 duty 0 >/dev/null
              gpioctl -f /dev/gpioc2 1 duty 0 >/dev/null
              gpioctl -f /dev/gpioc2 2 duty 0 >/dev/null
              sysctl -q dev.gpio.2.led.1.pwm=1
              gpioctl -f /dev/gpioc2 3 duty 0 >/dev/null
              gpioctl -f /dev/gpioc2 4 duty 0 >/dev/null
              gpioctl -f /dev/gpioc2 5 duty 0 >/dev/null
              sysctl -q dev.gpio.2.led.2.pwm=1
              gpioctl -f /dev/gpioc2 6 duty 0 >/dev/null
              gpioctl -f /dev/gpioc2 7 duty 0 >/dev/null
              gpioctl -f /dev/gpioc2 8 duty 0 >/dev/null
            

            This would be like a reset turns them all off..

            wgstarksW 1 Reply Last reply Reply Quote 0
            • wgstarksW
              wgstarks @JonathanLee
              last edited by

              @JonathanLee
              Thanks. Might be simpler to just set it to red and green. I never remember what the default patterns mean anyway.😁

              Box: SG-4200

              JonathanLeeJ 1 Reply Last reply Reply Quote 0
              • JonathanLeeJ
                JonathanLee @wgstarks
                last edited by

                @wgstarks One other item with the custom LEDs you will not see the firmware LED program run so I added a email alert for updates program with it that another user shared on Netgate...

                https://forum.netgate.com/topic/137707/auto-update-check-checks-for-updates-to-base-system-packages-and-sends-email-alerts/

                That way you still get a alert that you have updates without the Orange LED

                1 Reply Last reply Reply Quote 0
                • wgstarksW
                  wgstarks
                  last edited by

                  Thanks. Have had that installed for a while.

                  Box: SG-4200

                  1 Reply Last reply Reply Quote 1
                  • JonathanLeeJ JonathanLee referenced this topic on
                  • JonathanLeeJ
                    JonathanLee
                    last edited by JonathanLee

                    @stephenw10 Can you please help me?
                    Where is the standard led program in pfSense filesystem located it would be easier to just call that program if the gateway is up for @wgstarks request. He wants to normalize the LED behavior if the gateway is up. I could just set the scrip to call that program if needed. /dev/led is not listed in 2100 file system

                    1 Reply Last reply Reply Quote 0
                    • JonathanLeeJ
                      JonathanLee
                      last edited by JonathanLee

                      @wgstarks

                      To normalize it call this program originally sets bootup conditions, I am searching for the file it calls

                      /usr/local/sbin/pfSense-led.sh

                      1 Reply Last reply Reply Quote 0
                      • JonathanLeeJ
                        JonathanLee
                        last edited by JonathanLee

                        @wgstarks

                        set the program to call

                        /usr/local/sbin/pfSense-led.sh ready
                        

                        Use that for the else condition that would normalize it automatically for your model

                        a3546bbe-3d59-486a-817b-4078c3e5db46-image.png

                        1 Reply Last reply Reply Quote 0
                        • wgstarksW
                          wgstarks
                          last edited by

                          Thanks. I’ll test this and see if I can get it working.

                          Box: SG-4200

                          JonathanLeeJ 1 Reply Last reply Reply Quote 1
                          • JonathanLeeJ
                            JonathanLee @wgstarks
                            last edited by JonathanLee

                            This post is deleted!
                            1 Reply Last reply Reply Quote 0
                            • JonathanLeeJ
                              JonathanLee
                              last edited by JonathanLee

                              I got it don't use DNS use the interfaces name and pinger

                              pfctl -vvss | grep -e "mvneta0 icmp"

                              that works!!!

                              #!/bin/sh
                              led_intensity=0
                              while [ $led_intensity -le 8 ]; do
                                gpioctl -f /dev/gpioc2 $led_intensity duty 0 >/dev/null
                                led_intensity=$(( led_intensity + 1 ))
                              done
                              
                              check_current_states=$( pfctl -vvss | grep -e "mvneta0 icmp" )
                              WAN=0
                              case "$check_current_states" in
                                *icmp* ) WAN=1 ;;
                              esac
                              if [ $WAN = 0 ];
                              then
                               sysctl -q dev.gpio.2.led.0.pwm=0
                               gpioctl -f /dev/gpioc2 0 duty 200 >/dev/null
                               sysctl -q dev.gpio.2.led.1.pwm=0
                               gpioctl -f /dev/gpioc2 3 duty 200 >/dev/null
                               sysctl -q dev.gpio.2.led.2.pwm=0
                               gpioctl -f /dev/gpioc2 6 duty 200 >/dev/null
                              else
                                /usr/local/sbin/pfSense-led.sh ready
                              
                              fi
                              
                              

                              2f125920-7993-4542-8edc-f2c09f326fd7-image.png

                              Your mvneta0 might be different over the 2100 check it on Interface Assignments, that is the pinger state used to check to see if gateway is up just use it for the program also

                              YEAH!!

                              Just updated after testing 4:07 7-18-24

                              1 Reply Last reply Reply Quote 0
                              • JonathanLeeJ
                                JonathanLee
                                last edited by

                                Update to mine to reflect the gateway offline

                                #!/bin/sh
                                check_current_states=$( pfctl -vvss | grep -e ', rule 105' -e ', rule 52' -e '192.168.1.11' -e '192.168.1.15' -e 'mvneta0 icmp' )
                                res=1
                                resb=1
                                resc=1
                                resd=1
                                WAN=1
                                case "$check_current_states" in
                                  *icmp* ) WAN=0 ;;
                                esac
                                if [ $WAN = 1 ];
                                then
                                 sysctl -q dev.gpio.2.led.0.pwm=0
                                 gpioctl -f /dev/gpioc2 0 duty 200 >/dev/null
                                 sysctl -q dev.gpio.2.led.1.pwm=0
                                 gpioctl -f /dev/gpioc2 3 duty 200 >/dev/null
                                 sysctl -q dev.gpio.2.led.2.pwm=0
                                 gpioctl -f /dev/gpioc2 6 duty 200 >/dev/null
                                 exit 1
                                 fi
                                case "$check_current_states" in 
                                  *", rule 105"* ) res=0 ;;
                                esac
                                case "$check_current_states" in
                                  *192.168.1.11* ) resb=0 ;;
                                esac
                                case "$check_current_states" in
                                  *192.168.1.15* ) resc=0 ;;
                                esac
                                case "$check_current_states" in
                                  *", rule 52"* ) resd=0 ;;
                                esac
                                if [ $res = 0 ] && [ $resb = 0 ]; 
                                then
                                  sysctl -q dev.gpio.2.led.1.pwm=1
                                  gpioctl -f /dev/gpioc2 3 duty 50 >/dev/null
                                  gpioctl -f /dev/gpioc2 4 duty 15 >/dev/null
                                  sysctl -q dev.gpio.2.led.2.pwm=0
                                  gpioctl -f /dev/gpioc2 6 duty 55 >/dev/null
                                  gpioctl -f /dev/gpioc2 7 duty 20 >/dev/null
                                  gpioctl -f /dev/gpioc2 8 duty 15 >/dev/null
                                elif [ $res = 0 ];
                                then
                                  sysctl -q dev.gpio.2.led.1.pwm=1
                                  gpioctl -f /dev/gpioc2 3 duty 0 >/dev/null
                                  gpioctl -f /dev/gpioc2 4 duty 0 >/dev/null
                                  sysctl -q dev.gpio.2.led.2.pwm=0
                                  gpioctl -f /dev/gpioc2 6 duty 55 >/dev/null
                                  gpioctl -f /dev/gpioc2 7 duty 20 >/dev/null
                                  gpioctl -f /dev/gpioc2 8 duty 15 >/dev/null
                                elif [ $resb = 0 ];
                                then
                                  sysctl -q dev.gpio.2.led.2.pwm=1
                                  gpioctl -f /dev/gpioc2 6 duty 0 >/dev/null
                                  gpioctl -f /dev/gpioc2 7 duty 0 >/dev/null
                                  gpioctl -f /dev/gpioc2 8 duty 0 >/dev/null
                                  sysctl -q dev.gpio.2.led.1.pwm=1
                                  gpioctl -f /dev/gpioc2 3 duty 50 >/dev/null
                                  gpioctl -f /dev/gpioc2 4 duty 15 >/dev/null
                                else
                                  sysctl -q dev.gpio.2.led.1.pwm=1
                                  gpioctl -f /dev/gpioc2 3 duty 0 >/dev/null
                                  gpioctl -f /dev/gpioc2 4 duty 0 >/dev/null
                                  sysctl -q dev.gpio.2.led.2.pwm=1
                                  gpioctl -f /dev/gpioc2 6 duty 0 >/dev/null
                                  gpioctl -f /dev/gpioc2 7 duty 50 >/dev/null
                                  gpioctl -f /dev/gpioc2 8 duty 0 >/dev/null
                                  
                                fi
                                if [ $resc = 0 ] || [ $resd = 0 ];
                                then
                                  sysctl -q dev.gpio.2.led.0.pwm=1
                                  gpioctl -f /dev/gpioc2 2 duty 50 >/dev/null
                                  gpioctl -f /dev/gpioc2 0 duty 50 >/dev/null
                                else
                                  sysctl -q dev.gpio.2.led.0.pwm=1
                                  gpioctl -f /dev/gpioc2 2 duty 0 >/dev/null
                                  gpioctl -f /dev/gpioc2 0 duty 0 >/dev/null
                                
                                fi
                                
                                1 Reply Last reply Reply Quote 0
                                • wgstarksW
                                  wgstarks
                                  last edited by

                                  When I test in shell I get the following result-

                                  gpio_open: No such file or directory
                                  gpio_open: No such file or directory
                                  gpio_open: No such file or directory
                                  gpio_open: No such file or directory
                                  gpio_open: No such file or directory
                                  gpio_open: No such file or directory
                                  gpio_open: No such file or directory
                                  gpio_open: No such file or directory
                                  gpio_open: No such file or directory
                                  

                                  My script-

                                  #!/bin/sh
                                  led_intensity=0
                                  while [ $led_intensity -le 8 ]; do
                                    gpioctl -f /dev/gpioc2 $led_intensity duty 0 >/dev/null
                                    led_intensity=$(( led_intensity + 1 ))
                                  done
                                  
                                  check_current_states=$( pfctl -vvss | grep -e "igc3 icmp" )
                                  WAN=0
                                  case "$check_current_states" in
                                    *icmp* ) WAN=1 ;;
                                  esac
                                  if [ $WAN = 0 ];
                                  then
                                   sysctl -q dev.gpio.2.led.0.pwm=0
                                   gpioctl -f /dev/gpioc2 0 duty 200 >/dev/null
                                   sysctl -q dev.gpio.2.led.1.pwm=0
                                   gpioctl -f /dev/gpioc2 3 duty 200 >/dev/null
                                   sysctl -q dev.gpio.2.led.2.pwm=0
                                   gpioctl -f /dev/gpioc2 6 duty 200 >/dev/null
                                  else
                                    /usr/local/sbin/pfSense-led.sh ready
                                  
                                  fi
                                  
                                  
                                  

                                  Box: SG-4200

                                  JonathanLeeJ 1 Reply Last reply Reply Quote 0
                                  • JonathanLeeJ
                                    JonathanLee @wgstarks
                                    last edited by JonathanLee

                                    @wgstarks

                                    Do me a favor take a look in
                                    /usr/local/sbin/pfSense-led.sh

                                    Find your model firewall and tell me what directive is used to change the LEDS…

                                    Also peek in /dev/led see if you have that folder, if you do it should be easy to adapt with the directive used for your model

                                    wgstarksW 1 Reply Last reply Reply Quote 0
                                    • wgstarksW
                                      wgstarks @JonathanLee
                                      last edited by

                                      @JonathanLee said in Netgate 2100 Customization of LEDs (Guide):

                                      @wgstarks

                                      Do me a favor take a look in
                                      /usr/local/sbin/pfSense-led.sh

                                      Find your model firewall and tell me what directive is used to change the LEDS…

                                      Maybe this is what you need.

                                      
                                      # Netgate 4200
                                      #
                                      
                                      4200_led_off() {
                                      	local _leds="red_0 green_0 blue_0 red_1 green_1 blue_1 red_2 green_2 blue_2"
                                      
                                      	for led in ${_leds}; do
                                      		echo 0 > /dev/led/${led}
                                      	done
                                      }
                                      
                                      4200_led_booting() {
                                      	4200_led_off
                                      	# Fast blink blue on all LEDs
                                      	echo f2 > /dev/led/blue_0
                                      	echo f2 > /dev/led/blue_1
                                      	echo f2 > /dev/led/blue_2
                                      }
                                      
                                      4200_led_ready() {
                                      	4200_led_off
                                      	# Left LED solid blue
                                      	echo 1 > /dev/led/blue_2
                                      }
                                      
                                      4200_led_update() {
                                      	# Purple on center LED
                                      	echo 1 > /dev/led/red_1
                                      	echo 0 > /dev/led/green_1
                                      	echo 1 > /dev/led/blue_1
                                      }
                                      
                                      4200_led_update_off() {
                                      	# Turn off center LED only
                                      	echo 0 > /dev/led/red_1
                                      	echo 0 > /dev/led/green_1
                                      	echo 0 > /dev/led/blue_1
                                      }
                                      
                                      4200_led_updating() {
                                      	4200_led_off
                                      	# Fast green blink on all LEDs
                                      	echo f2 > /dev/led/green_0
                                      	echo f2 > /dev/led/green_1
                                      	echo f2 > /dev/led/green_2
                                      }
                                      

                                      Box: SG-4200

                                      JonathanLeeJ 1 Reply Last reply Reply Quote 1
                                      • JonathanLeeJ
                                        JonathanLee @wgstarks
                                        last edited by JonathanLee

                                        @wgstarks said in Netgate 2100 Customization of LEDs (Guide):

                                        echo f2 > /dev/led/blue_0
                                        echo f2 > /dev/led/blue_1
                                        echo f2 > /dev/led/blue_2

                                        try this one

                                        #!/bin/sh
                                        echo 0 > /dev/led/blue_0
                                        echo 0 > /dev/led/blue_1
                                        echo 0 > /dev/led/blue_2
                                        echo 0 > /dev/led/red_0
                                        echo 0 > /dev/led/red_1
                                        echo 0 > /dev/led/red_2
                                        echo 0 > /dev/led/green_0
                                        echo 0 > /dev/led/green_1
                                        echo 0 > /dev/led/green_2
                                        
                                        check_current_states=$( pfctl -vvss | grep -e "igc3 icmp" )
                                        WAN=0
                                        case "$check_current_states" in
                                          *icmp* ) WAN=1 ;;
                                        esac
                                        if [ $WAN = 0 ];
                                        then
                                         echo f2 > /dev/led/red_0
                                         echo f2 > /dev/led/red_1
                                         echo f2 > /dev/led/red_2
                                        else
                                          /usr/local/sbin/pfSense-led.sh ready
                                        
                                        fi
                                        

                                        Or to just turn on solid red

                                        #!/bin/sh
                                        echo 0 > /dev/led/blue_0
                                        echo 0 > /dev/led/blue_1
                                        echo 0 > /dev/led/blue_2
                                        echo 0 > /dev/led/red_0
                                        echo 0 > /dev/led/red_1
                                        echo 0 > /dev/led/red_2
                                        echo 0 > /dev/led/green_0
                                        echo 0 > /dev/led/green_1
                                        echo 0 > /dev/led/green_2
                                        
                                        check_current_states=$( pfctl -vvss | grep -e "igc3 icmp" )
                                        WAN=0
                                        case "$check_current_states" in
                                          *icmp* ) WAN=1 ;;
                                        esac
                                        if [ $WAN = 0 ];
                                        then
                                         echo 1 > /dev/led/red_0
                                         echo 1 > /dev/led/red_1
                                         echo 1 > /dev/led/red_2
                                        else
                                          /usr/local/sbin/pfSense-led.sh ready
                                        
                                        fi
                                        

                                        Please let me know if that works unplug wan it should come on red when you test it.

                                        After set your cron job to what ever amount of timer you want every min check it or whatever you want. Mine runs every min

                                        make sure you chmod the file also so it can run.

                                        if you want just do a chmod 777 on it and or a more secure privilege.

                                        I have some that run in the day and some at night so this is my 6am - 8:59 one

                                        Screenshot 2024-07-18 at 18.00.29.png

                                        wgstarksW 1 Reply Last reply Reply Quote 1
                                        • wgstarksW
                                          wgstarks @JonathanLee
                                          last edited by

                                          @JonathanLee said in Netgate 2100 Customization of LEDs (Guide):

                                          @wgstarks said in Netgate 2100 Customization of LEDs (Guide):

                                          echo f2 > /dev/led/blue_0
                                          echo f2 > /dev/led/blue_1
                                          echo f2 > /dev/led/blue_2

                                          try this one

                                          #!/bin/sh
                                          echo 0 > /dev/led/blue_0
                                          echo 0 > /dev/led/blue_1
                                          echo 0 > /dev/led/blue_2
                                          echo 0 > /dev/led/red_0
                                          echo 0 > /dev/led/red_1
                                          echo 0 > /dev/led/red_2
                                          echo 0 > /dev/led/green_0
                                          echo 0 > /dev/led/green_1
                                          echo 0 > /dev/led/green_2
                                          
                                          check_current_states=$( pfctl -vvss | grep -e "igc3 icmp" )
                                          WAN=0
                                          case "$check_current_states" in
                                            *icmp* ) WAN=1 ;;
                                          esac
                                          if [ $WAN = 0 ];
                                          then
                                           echo f2 > /dev/led/red_0
                                           echo f2 > /dev/led/red_1
                                           echo f2 > /dev/led/red_2
                                          else
                                            /usr/local/sbin/pfSense-led.sh ready
                                          
                                          fi
                                          

                                          Or to just turn on solid red

                                          #!/bin/sh
                                          echo 0 > /dev/led/blue_0
                                          echo 0 > /dev/led/blue_1
                                          echo 0 > /dev/led/blue_2
                                          echo 0 > /dev/led/red_0
                                          echo 0 > /dev/led/red_1
                                          echo 0 > /dev/led/red_2
                                          echo 0 > /dev/led/green_0
                                          echo 0 > /dev/led/green_1
                                          echo 0 > /dev/led/green_2
                                          
                                          check_current_states=$( pfctl -vvss | grep -e "igc3 icmp" )
                                          WAN=0
                                          case "$check_current_states" in
                                            *icmp* ) WAN=1 ;;
                                          esac
                                          if [ $WAN = 0 ];
                                          then
                                           echo 1 > /dev/led/red_0
                                           echo 1 > /dev/led/red_1
                                           echo 1 > /dev/led/red_2
                                          else
                                            /usr/local/sbin/pfSense-led.sh ready
                                          
                                          fi
                                          

                                          Please let me know if that works unplug wan it should come on red when you test it.

                                          After set your cron job to what ever amount of timer you want every min check it or whatever you want. Mine runs every min

                                          make sure you chmod the file also so it can run.

                                          if you want just do a chmod 777 on it and or a more secure privilege.

                                          I have some that run in the day and some at night so this is my 6am - 8:59 one

                                          Screenshot 2024-07-18 at 18.00.29.png

                                          I like the blinking red. More of an attention getter IMO. Working beautifully. Thanks for the script and the help.

                                          Box: SG-4200

                                          JonathanLeeJ 1 Reply Last reply Reply Quote 1
                                          • wgstarksW
                                            wgstarks
                                            last edited by wgstarks

                                            Is it possible to increase the brightness? And blink all three?

                                            Box: SG-4200

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