Serial console
The controller’s maintenance console: every setting and action the web page, the API and MQTT offer, plus bench tools for the backplane bus.
Reaching it
Section titled “Reaching it”USB CDC at 115200 from any serial terminal, or RTT through a debug probe. The controller card’s USB connection is an unpopulated header, intended for bench and development use only. Owners use the web interface and Home Assistant.
A console-only first setup looks like this:
wifi <ssid> <password>mqtt <broker-host> [port user pass]name pwrmantoken <t>saverebootCommands
Section titled “Commands”help prints the list; on a fake-blade build sim adds the fault injection
commands described in Building.
| Command | Purpose |
|---|---|
status |
port table (state — upd NN% while a blade is being written — contract, draw, current limit, voltage cap, priority, boot policy, chg once charged, a gen-3 blade’s conv and plug temperatures) and chassis power |
info |
firmware, slot and boot reason, links, addressing and time server, UPS supply, bus voltage, broker, syslog sink, LED schedule and local time, problems, simulator state |
wifi <ssid> [pass] |
WiFi credentials |
improv [on|off] |
BLE provisioning window |
mqtt <host> [port user pass] |
broker; an empty host disables MQTT |
mqtt tls on|off|unverified |
TLS to the broker, verified against the installed certificate or the built-in Let’s Encrypt roots |
mqtt ca / mqtt ca clear |
the installed broker certificate (install one from the page or the API) |
ip dhcp / ip static <addr> <mask> <gw> |
addressing: the wired link if a W6100 is fitted, else WiFi |
dns <addr>|auto |
resolver override |
ntp <host>|auto |
time server override |
syslog <host> [port] / syslog off |
mirror the console to a UDP syslog host |
name <device-name> |
hostname and topic id |
token <t>|clear |
API bearer token; with none stored the network API refuses every change until one is set here, through Improv, or in the first hour on Ethernet |
budget <watts> |
chassis power budget |
port <n> on|off|reset|srccap|update |
port control; update writes the bundled gen-3 blade firmware over whatever the blade runs |
port <n> priority <0-255> |
0 = highest; sheds from the bottom |
port <n> name <text>|clear |
label for the web UI and Home Assistant |
port <n> limit <500-5000> |
advertised current ceiling in mA, every PDO |
port <n> volt 5|9|12|15|20 |
voltage cap: the highest PDO advertised (20 = the whole table) |
port <n> boot on|off|last |
state at power-up |
port <n> autooff on|off |
switch off once the sink is charged |
port <n> sleep <min>|off |
switch off this long after a sink attaches |
charged <mW> <minutes> |
charge-complete thresholds; 0 mW switches detection off |
blades [auto on|off | bootopt on|off | watch <s>|off] |
the bundled gen-3 blade firmware and the update policy (see Blade firmware updates) |
fan on|off|auto [on_w off_w [on_ma]] |
fan policy |
led <0-255>, led boot white|rainbow |
LED brightness and power-up sweep |
led dim <0-255>, led night <HH:MM> <HH:MM>|off, led idle <minutes>|off |
dimmed level, night window, idle dimming |
tz <+HH:MM|-HH:MM> |
local time offset for the night window |
faults [clear] |
persistent fault log |
ups [buzzer on|off] |
UPS supply readings, status bits, per-block voltages and link counters; buzzer off silences its alarm until the supply restarts |
vin [cal <volts>|cal reset] |
DC bus voltage with the raw count and gain trim; cal 24.13 trims the reading to a meter’s (then save) |
button [short|long] |
front-panel button input and state; short (wake the chain) / long (open BLE) act as if it had been pressed |
export |
every setting as JSON, without passwords |
update [--unsigned] [--downgrade] <http-url>|latest |
OTA pull into the inactive slot, latest being the newest release the controller knows of; the flags let in an unsigned or an older image, which only this console can do |
update check, update source <http-url>|default|off |
ask the update source for the newest release now; set where the daily check asks, or stop it asking (then save) |
stack |
per-core stack high-water marks |
i2c scan <ch|none>, i2c read <ch> <addr> <reg> [n], i2c write <ch> <addr> <reg> <val>, i2c en <port> on|off |
bench access to the backplane bus, run on the engine core: scan a mux channel (none = the upstream side), read or write a register, drive a blade’s EN; a healthy blade segment answers 0x40 0x61 0x70 0x74 |
save, defaults, reboot, bootsel |
settings and lifecycle |
What is typed at the console is never mirrored to the log ring or a syslog
host, so a wifi or mqtt line’s password stays off the wire.