IoTServer LED Indications and Reset Button Handling
LED indications on STA (yellow/green) and STB (red/green) provide a very simplistic user interface for the reset button, progress indication during bootup, and status or error indications during normal operation.
Operating sequence starting from bootup:
(a) If button down, enter button down mode.
(b) If bootup in progress, process bootup mode until complete.
(c) Enter normal mode.
(d) While in normal mode, if button pressed, enter button down mode.
Bootup mode indication codes:
- Boot code will turn on STA yellow solid, STB red solid
- Upon successful bootup, STA, STB flash inverse heartbeat pattern of off with brief green flash on once a second.
Bootup mode operation:
Upon task manager startup, it must check to see if the reset button is being held down during boot. This is done as follows: Task manager spawns indicator thread, then waits for thread to set indicator mode to either preboot or boot. If preboot, then wait for option to get set and execute it. If boot, load task array from DB or XML and then set boot ready flag in indicator structure.
Following bootup, during normal operation, the task manager will check the indicator mode for postboot and check for postboot selection. If selection has been made, then execute it.
Boot mode exits when all tasks with nonzero process key have a nonzero process status. Task errors will be indicated in task structure status and picked up by Normal Mode.
Normal mode indication codes:
Yellow codes (STA):
- 1 = Modbus TCP comm error exists (RTU not indicated here, they have own LEDs)
- 2 = SNMP comm error exists
Red codes (STB):
- 1 = Error indicated in errval - initialization error, coprocessor fail, etc.
- 2 = Task status indicates fault
- 3 = Update fail (can be firmware update fail, or failure of other requested action e.g. IP address reset)
Note: Red codes are not likely to go away until reboot, and may return upon reboot if there is a serious problem with the system. Yellow codes will go away if the problem goes away (e.g. Modbus wasn’t talking but is now).
Normal mode operation:
If there is a red code, flash it on STB, leaving STA off. If no red code, flash yellow code on STA if there is a yellow code. If no red or yellow codes, flash both STA and STB green heartbeat pattern.
Code is off with brief flashes on to count out code. Heartbeat is both STA and STB green, with brief flash off once a second.
Yellow codes will be all flashed in sequence. Red code will flash only highest numbered code.
During normal mode, the LED thread will routinely scan task status structures checking for errors/faults.
There is a hidden reset button accessible through a tiny hole in the top of the IoTServer (Babel Buster 4) enclosure. Use a small tool or paper clip to press and hold the button until the desired code is being flashed. Release the button to select that code. The available codes will flash in sequence. Count the flashes between longer pauses. Pre-boot means hold the button down while applying power to the IoTServer. Post-boot means allow the IoTServer to fully boot up, and then press the button. See additional notes below.
Button-down indication codes:
- 1: start with no tasks, task manager only (red code 1)
- 2: clear all configuration (red code 2)
- 1: reboot system (green code 1)
- 2: shut down all tasks (green code 2)
- 3: reset Admin password for web UI (code 3) (executes cli/resetButton.php)
- 4: reset root password for SSH login (code 4)
- 5: reset IP address (green code 5)
Button down is indicated by STA flashing yellow rapidly. Codes are indicated on STB.
(a) Pre-boot flashes yellow rapidly on STA while blinking red code on STB while button down.
(b) Post-boot flashes yellow rapidly on STA while blinking green code on STB while button down.
(c) Button up: Flashes green rapidly on STA while flashing same code on STB (red or green as applicable)
STA will flash yellow rapidly while STB is cycling through button codes while button is held down. After button released, STA will flash rapid green while STB blinks selected code for 5 full sequences. If button is pressed again during this time, action is cancelled. If not cancelled, then after 5th sequence, STA & STB both go off until finished with requested action. Then STA green solid while flashing STB red with single sequence of code just completed.
Note: For long operations such as coprocessor firmware update, blinking selected code on STB once every 5 seconds along with STA blinking green in sync with STB. Only the pre-boot options would take time, so this means STA blinks green while STB blinks red for 1-4 times, once every 5 seconds.
Note: Server software updates will be implemented via startup script and USB flash drive. No button mode is required for server updates.