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

    Netgate 2100 Customization of LEDs (Guide)

    Scheduled Pinned Locked Moved Hardware
    37 Posts 2 Posters 3.2k 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.
    • 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
      • JonathanLeeJ
        JonathanLee @wgstarks
        last edited by

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

        IMO

        Great, no problem enjoy. I have one that turns purple when my wife has her work stuff on... royal purple means do not mess with firewall when she is working... haha

        Make sure to upvote

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

          @wgstarks that you would need to ask an official Netgate rep about, I only have a 2100 so I can only use the directives that my model uses.

          I wonder if you can also...

          @stephenw10 Do you know what the LED intensity directive is on the 4200?

          Make sure to upvote

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

            Only the first and third led's are blinking. I'm fairly sure the code is for all three right? I wonder if it's possible to test them?

            Box: SG-4200

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

              @wgstarks does the 2nd glow red? The f2 directive might only work for led 0 and 2 test with the echo command

              Make sure to upvote

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

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

                @wgstarks does the 2nd glow red?

                No but I see 0,1 and 2 in the code so wondering if it's a bad led.

                Box: SG-4200

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

                  @wgstarks check the file in /dev/led red 2

                  Make sure to upvote

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

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

                    @wgstarks check the file in /dev/led red 2

                    Can't open that file. the led directory is locked (555).

                    Box: SG-4200

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

                      @wgstarks 🤔

                      Make sure to upvote

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

                        @wgstarks can you cat the file?

                        Make sure to upvote

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

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

                          @wgstarks can you cat the file?

                          Operation not supported by device.

                          Box: SG-4200

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

                            @wgstarks look at the open source file on GitHub it’s all open source, git hub should be open non locked

                            Make sure to upvote

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

                              @wgstarks someone made a Morse code LED messager you know the one you use the application on your phone for ? That is cool

                              <?php
                              /*
                               * led.inc
                               *
                               * part of pfSense (https://www.pfsense.org)
                               * Copyright (c) 2009-2013 BSD Perimeter
                               * Copyright (c) 2013-2016 Electric Sheep Fencing
                               * Copyright (c) 2014-2024 Rubicon Communications, LLC (Netgate)
                               * All rights reserved.
                               *
                               * Licensed under the Apache License, Version 2.0 (the "License");
                               * you may not use this file except in compliance with the License.
                               * You may obtain a copy of the License at
                               *
                               * http://www.apache.org/licenses/LICENSE-2.0
                               *
                               * Unless required by applicable law or agreed to in writing, software
                               * distributed under the License is distributed on an "AS IS" BASIS,
                               * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
                               * See the License for the specific language governing permissions and
                               * limitations under the License.
                               */
                              
                              $led_root = "/dev/led/led";
                              
                              /*
                               * Send the control string to an LED
                               */
                              function led_ctl($led, $str) {
                              	global $led_root;
                              	if (led_exists($led)) {
                              		exec("/bin/echo " . escapeshellarg($str) . " > {$led_root}{$led}");
                              		return true;
                              	}
                              	return false;
                              }
                              
                              /*
                               * Blink an LED at set speed from 1-9 (1=Very Fast, 9=Very Slow)
                               */
                              function led_blink($led, $speed = 0) {
                              	switch ($speed) {
                              		case "reallyfast":
                              		case "veryfast":
                              			$speed = 1;
                              			break;
                              		case "fast":
                              			$speed = 3;
                              			break;
                              		case "medium":
                              			$speed = 5;
                              			break;
                              		case "slow":
                              			$speed = 7;
                              			break;
                              		case "reallyslow":
                              		case "veryslow":
                              			$speed = 9;
                              			break;
                              	}
                              	if (is_numeric($speed) && ($speed > 0) && ($speed < 10)) {
                              		return led_ctl($led, "f{$speed}");
                              	}
                              	return false;
                              }
                              
                              /*
                               * Blink an LED in a specific pattern
                               * Letters A-J are on from 1/10s to 1s
                               * Letters a-j are off from 1/10s to 1s
                               */
                              function led_pattern($led, $pattern, $repeat = true) {
                              	/*  End with a . to stop after one iteration. */
                              	$end = $repeat ? "" : ".";
                              	return led_ctl($led, "s{$pattern}{$end}");
                              }
                              
                              /*
                               * Encode a text message into morse code, and send it to an LED
                               */
                              function led_morse($led, $message) {
                              	return led_ctl($led, "m" . str_to_morse($message));
                              }
                              
                              /*
                               * Blink digits out on LED at 1/10s intervals
                               * e.g 1=1 blink, 8=8 blinks
                               * 0 is 10 pulses.
                               * One second pause between digits.
                               */
                              function led_digit($led, $digitstring) {
                              	$i = 0;
                              	$dstring = "d";
                              	while ($i < strlen($digitstring)) {
                              		$thisdigit = substr($digitstring, $i++, 1);
                              		if (is_numeric($thisdigit)) {
                              			$dstring .= $thisdigit;
                              		}
                              	}
                              	led_ctl($led, $dstring);
                              }
                              
                              /*
                               * Turn an LED on
                               */
                              function led_on($led) {
                              	led_ctl($led, "1");
                              }
                              
                              /*
                               * Turn an LED off
                               */
                              function led_off($led) {
                              	led_ctl($led, "0");
                              }
                              
                              /*
                               * Find the number of LEDs present on the system.
                               */
                              function led_count() {
                              	global $led_root;
                              	$count = 0;
                              	$leds = array();
                              	if (is_dir(dirname($led_root))) {
                              		$leds = glob("{$led_root}*");
                              		$count = count($leds);
                              	}
                              	return $count;
                              }
                              
                              /*
                               * Test to see if a given LED exists.
                               */
                              function led_exists($led) {
                              	global $led_root;
                              	if (!is_numeric($led)) {
                              		return false;
                              	}
                              	return file_exists("{$led_root}{$led}");
                              }
                              
                              /*
                               * Sweep across three LEDs in a K.I.T.T.-like way.
                               */
                              function led_kitt() {
                              	if (led_count() != 3) {
                              		/* Wrong LED count for this to work, skip. */
                              		return;
                              	}
                              	led_pattern(1, 'AaaaaA');
                              	led_pattern(2, 'aAaaAa');
                              	led_pattern(3, 'aaAAaa');
                              }
                              
                              /*
                               * Custom pattern for assigning interfaces
                               */
                              function led_assigninterfaces() {
                              	if (led_count() != 3) {
                              		/* Wrong LED count for this to work, skip. */
                              		return;
                              	}
                              	led_pattern(1, 'AaaAaaaaaaaaaaaa');
                              	led_pattern(2, 'aaaaaAaaAaaaaaaa');
                              	led_pattern(3, 'aaaaaaaaaaAaaAaa');
                              }
                              
                              /*
                               * Return the three LEDs to a standard setup (1=on, 2 and 3 = off)
                               */
                              function led_normalize() {
                              	if (led_count() != 3) {
                              		/* Wrong LED count for this to work, skip. */
                              		return;
                              	}
                              	led_on(1);
                              	led_off(2);
                              	led_off(3);
                              }
                              
                              /*
                               * Shut off ALL LEDs.
                               */
                              function led_alloff() {
                              	if (led_count() != 3) {
                              		/* Wrong LED count for this to work, skip. */
                              		return;
                              	}
                              	led_off(1);
                              	led_off(2);
                              	led_off(3);
                              }
                              
                              /*
                               * Translate a string to morse code. Characters not known to have a
                               * valid morse code representation will be ignored.
                               */
                              function str_to_morse($string) {
                              	$i = 0;
                              	$morsestring = "";
                              	while ($i < strlen($string)) {
                              		$morsestring .= char_to_morse(substr($string, $i++, 1)) . " ";
                              	}
                              	return $morsestring . "\n";
                              }
                              
                              /*
                               * Translate a single character to morse code. Characters not known
                               * to have a valid morse code representation will be ignored.
                               */
                              function char_to_morse($char) {
                              	switch (strtoupper($char)) {
                              		case "A":
                              			return ".-";
                              			break;
                              		case "B":
                              			return "-...";
                              			break;
                              		case "C":
                              			return "-.-.";
                              			break;
                              		case "D":
                              			return "-..";
                              			break;
                              		case "E":
                              			return ".";
                              			break;
                              		case "F":
                              			return "..-.";
                              			break;
                              		case "G":
                              			return "--.";
                              			break;
                              		case "H":
                              			return "....";
                              			break;
                              		case "I":
                              			return "..";
                              			break;
                              		case "J":
                              			return ".---";
                              			break;
                              		case "K":
                              			return "-.-";
                              			break;
                              		case "L":
                              			return ".-..";
                              			break;
                              		case "M":
                              			return "--";
                              			break;
                              		case "N":
                              			return "-.";
                              			break;
                              		case "O":
                              			return "---";
                              			break;
                              		case "P":
                              			return ".--.";
                              			break;
                              		case "Q":
                              			return "--.-";
                              			break;
                              		case "R":
                              			return ".-.";
                              			break;
                              		case "S":
                              			return "...";
                              			break;
                              		case "T":
                              			return "-";
                              			break;
                              		case "U":
                              			return "..-";
                              			break;
                              		case "V":
                              			return "...-";
                              			break;
                              		case "W":
                              			return ".--";
                              			break;
                              		case "X":
                              			return "-..-";
                              			break;
                              		case "Y":
                              			return "-.--";
                              			break;
                              		case "Z":
                              			return "--..";
                              			break;
                              		case "0":
                              			return "-----";
                              			break;
                              		case "1":
                              			return ".----";
                              			break;
                              		case "2":
                              			return "..---";
                              			break;
                              		case "3":
                              			return "...--";
                              			break;
                              		case "4":
                              			return "....-";
                              			break;
                              		case "5":
                              			return ".....";
                              			break;
                              		case "6":
                              			return "-....";
                              			break;
                              		case "7":
                              			return "--...";
                              			break;
                              		case "8":
                              			return "---..";
                              			break;
                              		case "9":
                              			return "----.";
                              			break;
                              		case ".":
                              			return ".-.-.-";
                              			break;
                              		case ",":
                              			return "--..--";
                              			break;
                              		case "?":
                              			return "..--..";
                              			break;
                              		case "'":
                              			return ".----.";
                              			break;
                              		case "!":
                              			return "-.-.--";
                              			break;
                              		case "/":
                              			return "-..-.";
                              			break;
                              		case "(":
                              			return "-.--.";
                              			break;
                              		case ")":
                              			return "-.--.-";
                              			break;
                              		case "&":
                              			return ".-...";
                              			break;
                              		case ":":
                              			return "---...";
                              			break;
                              		case ";":
                              			return "-.-.-.";
                              			break;
                              		case "=":
                              			return "-...-";
                              			break;
                              		case "+":
                              			return ".-.-.";
                              			break;
                              		case "-":
                              			return "-....-";
                              			break;
                              		case "_":
                              			return "..--.-";
                              			break;
                              		case "$":
                              			return "...-..-";
                              			break;
                              		case "@":
                              			return ".--.-.";
                              			break;
                              		case '"':
                              			return ".-..-.";
                              			break;
                              		default:
                              			return "";
                              			break;
                              	}
                              }
                              
                              ?>
                              

                              Make sure to upvote

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