LED

Control/Load LED processor

LED

Control the front-panel LED program and its link-state feed. On Trident 3 the LED program runs as firmware on a Cortex-M0 core of the switch’s CPU management interface, the same core that runs the link-scan firmware (see M0).

An optional number before the sub-command selects the LED processor (led 0 stop); the default is 0, and an out-of-range number prints Invalid uProcessor number: <n>, set to 0 and uses 0. With no sub-command the command prints a status line. Sub-command words ignore case but cannot be abbreviated. Besides the forms in the built-in help, the shell also accepts setstatus and accustatus.

On SONiC the LED firmware is loaded at startup with m0 load (the link-scan firmware at offset 0x0 and the board’s LED program at 0x3800), followed by led auto on and led start; see led.md (SONiC on Broadcom: LED debugging). That source shows led auto on printing - Using new linkscan_cb without port speed on another SAI release; this release prints nothing for auto.

Safety: status, accustatus, dump and the bare command are read-only. start, stop, auto, setstatus, load and prog change what the front-panel LEDs show; the LEDs can stay dark or wrong until SONiC’s LED setup runs again. Forwarding is not affected.

Hardware-validated

drivshell> led status
Port 1 led status 0x3
Port 5 led status 0x3
Port 9 led status 0x1
Port 10 led status 0x1
Port 11 led status 0x1
Port 12 led status 0x1
Port 13 led status 0x3
Port 17 led status 0x3
Port 21 led status 0x3
Port 25 led status 0x3
Port 29 led status 0x3
Port 33 led status 0x3
Port 37 led status 0x3
Port 41 led status 0x3
Port 45 led status 0x3
Port 49 led status 0x3
Port 53 led status 0x3
Port 57 led status 0x3
Port 61 led status 0x3
Port 66 led status 0x3
Port 67 led status 0x3
Port 71 led status 0x3
Port 75 led status 0x3
Port 79 led status 0x3
Port 83 led status 0x3
Port 87 led status 0x3
Port 91 led status 0x3
Port 95 led status 0x3
Port 99 led status 0x3
Port 103 led status 0x3
Port 107 led status 0x3
Port 111 led status 0x3
Port 115 led status 0x2
Port 119 led status 0x2
Port 123 led status 0x3
Port 127 led status 0x3

With no sub-command, or only a processor number, the shell prints LED M0 FW is <ON|OFF> Init DONE; auto updating is <ON|OFF>.

Hardware-validated

drivshell> led 0
LED M0 FW is ON Init DONE; auto updating is ON.
LED status

Print Port <n> led status 0x<x> for every port: the byte the LED program displays for that port. <n> is the logical port number shown in brackets by ps (ce0 is 1, xe0 is 9). What the bits mean is up to the board’s LED program; on a SONiC Seastone2 switch disabled ports read 0x3 and ports that are up 0x1 or 0x2, and the value of a busy port can change from one call to the next. If the LED firmware is stopped it first prints LED firmware is not running. Read-only.

Hardware-validated

drivshell> led status
Port 1 led status 0x3
Port 5 led status 0x3
Port 9 led status 0x1
Port 10 led status 0x3
Port 11 led status 0x1
Port 12 led status 0x1
Port 13 led status 0x3
Port 17 led status 0x3
Port 21 led status 0x3
Port 25 led status 0x3
Port 29 led status 0x3
Port 33 led status 0x3
Port 37 led status 0x3
Port 41 led status 0x3
Port 45 led status 0x3
Port 49 led status 0x3
Port 53 led status 0x3
Port 57 led status 0x3
Port 61 led status 0x3
Port 66 led status 0x3
Port 67 led status 0x3
Port 71 led status 0x3
Port 75 led status 0x3
Port 79 led status 0x3
Port 83 led status 0x3
Port 87 led status 0x3
Port 91 led status 0x3
Port 95 led status 0x3
Port 99 led status 0x3
Port 103 led status 0x3
Port 107 led status 0x3
Port 111 led status 0x3
Port 115 led status 0x2
Port 119 led status 0x2
Port 123 led status 0x3
Port 127 led status 0x3
LED accustatus

Like status, but show the LED accumulation memory: Port <n> led accu ram status 0x<x>, the link-state word the SDK hands to the LED program. On a SONiC Trident 3 switch ports that are down read 0x8038 and ports that are up 0x81b8. Not in the built-in help. Read-only.

Hardware-validated

drivshell> led accustatus
Port 1 led accu ram status 0x8038
Port 5 led accu ram status 0x8038
Port 9 led accu ram status 0x81b8
Port 10 led accu ram status 0x81b8
Port 11 led accu ram status 0x81b8
Port 12 led accu ram status 0x81b8
Port 13 led accu ram status 0x8038
Port 17 led accu ram status 0x8038
Port 21 led accu ram status 0x8038
Port 25 led accu ram status 0x8038
Port 29 led accu ram status 0x8038
Port 33 led accu ram status 0x8038
Port 37 led accu ram status 0x8038
Port 41 led accu ram status 0x8038
Port 45 led accu ram status 0x8038
Port 49 led accu ram status 0x8038
Port 53 led accu ram status 0x8038
Port 57 led accu ram status 0x8038
Port 61 led accu ram status 0x8038
Port 66 led accu ram status 0x8038
Port 67 led accu ram status 0x8038
Port 71 led accu ram status 0x8038
Port 75 led accu ram status 0x8038
Port 79 led accu ram status 0x8038
Port 83 led accu ram status 0x8038
Port 87 led accu ram status 0x8038
Port 91 led accu ram status 0x8038
Port 95 led accu ram status 0x8038
Port 99 led accu ram status 0x8038
Port 103 led accu ram status 0x8038
Port 107 led accu ram status 0x8038
Port 111 led accu ram status 0x8038
Port 115 led accu ram status 0x81b8
Port 119 led accu ram status 0x81b8
Port 123 led accu ram status 0x8038
Port 127 led accu ram status 0x8038
LED setstatus <port> <value>

Set the LED status byte of one port. Both numbers may be given in decimal or 0x hex. Not in the built-in help. The next link change on the port overwrites the value while auto is on.

Unvalidated

drivshell> led setstatus 1 0x1
LED start

Start the LED firmware. Prints Error:Unable to start LED FW on failure.

Unvalidated

drivshell> led start
LED stop

Stop the LED firmware. The LEDs freeze or go dark.

Unvalidated

drivshell> led stop
LED auto [on | off]

Turn automatic LED updates on link changes on (the default) or off. Turning them on also refreshes the LED state of all ports once. Any other word prints the usage.

Unvalidated

drivshell> led auto on
LED load <file.hex>

Load an LED program from a text file of hex bytes. The firmware is stopped for the load and then put back in its previous state. If the firmware is running the shell may refuse with FW download is not allowed since LED Firmware is running.; run led stop first. On Trident 3, SONiC loads its LED program with M0 load instead.

Unvalidated

drivshell> led load /tmp/led.hex
LED prog <hexdata>

Load an LED program given inline as hex bytes. The firmware is stopped first. Errors are Program memory exceeded and Invalid character.

Unvalidated

drivshell> led 0 prog 86 FF 06 FF
LED dump

Print 256 bytes of the LED program memory as hex, 16 per line, each line prefixed with its address. On Trident 3 the dump starts at 1303800, the 0x3800 offset where SONiC loads the board’s LED program. Read-only.

Hardware-validated

drivshell> led dump
1303800: 46 5F B5 F0 46 4D 46 56 B4 F0 46 44 91 01 B0 83
1303810: 25 03 23 00 46 8C 21 01 00 52 22 D0 22 90 46 90
1303820: 46 92 00 92 46 91 22 02 9C 01 1C 17 97 00 40 27
1303830: 68 06 00 9A 1C 2C 5B 91 42 0F 27 80 68 84 D0 0F
1303840: 2E 09 5C E6 56 E4 D8 0A 40 A7 46 67 46 46 46 64
1303850: D1 04 42 37 46 56 46 4C D1 00 42 37 42 0D 1C 2C
1303860: 99 00 D0 03 D0 00 29 00 68 46 1C 2C 33 01 53 94
1303870: D1 DD 2B 84 00 9B 23 80 5A FB 68 07 06 19 22 03
1303880: 22 80 D5 07 5C A2 68 84 1E 51 3A 05 21 02 41 8A
1303890: 07 9E 1A 8A 9F 01 D0 03 D5 00 07 BF 23 80 22 03
13038A0: 68 41 00 9B 23 82 52 CA 68 02 00 9B 22 03 5A D3
13038B0: D5 07 06 1C 68 86 22 82 3A 05 5C B2 41 8A 1E 51
13038C0: 1A 8A 21 02 D0 03 07 9F 07 89 99 01 22 03 D5 00
13038D0: 00 9B 23 81 52 E2 68 44 60 C1 21 01 61 03 23 00
13038E0: 61 42 22 43 61 82 22 02 21 40 61 C1 21 83 62 01
13038F0: 62 82 62 41 63 C3 62 C3 B0 03 64 C3 46 90 BC 3C

Built-in help

Parameters: [num] [status | start | stop | load <file.hex> |
                [auto [on | off]] | prog <hexdata> | dump
    Load the LED Microprocessor with the program specified in <file.hex>.
    Option 'auto' turns on (by default) or off automatic linkscan
        updates to the LED processor.
    Option 'num' selects the specific LED processor. The default is 0

Further reading

led.md (SONiC on Broadcom: LED debugging), SDK-6.5.20 HSDK Getting Started Guide (GS-SDK6520-R), plus SDK-6.5.20/21/22 Release Notes (RN-SDK65xx-R), OpenBCM sdk-6.5.27/rc: rc.soc, config.bcm, td3_sanity.soc, cmd_td3_tr514_lr.soc, tr51/tr517_bcm56870_a0.soc, bcm_diag_info.soc …, SDK-6.5.20..6.5.27 Resolved-Issues-Improvements.xlsx (7 files), cPCI-6S10 Series 6U CompactPCI Switch Blade User’s Manual (50-15099-1000, Rev 1.0), BCM_SDK命令, Celestica E1031 LED bring-up notes.