msc command reference¶
This page is derived from the parser in src/msc.cxx, including commands that
the built-in help omits and corrections to misleading help labels.
Invocation¶
| Option | Meaning |
|---|---|
-d device |
Submaster device/host. Ethernet use normally supplies a host name or IP address; RPC/USB forms are conditional build options. |
-p password |
Submaster password; if rejected, the client prompts once interactively. |
-a address |
Select this node before executing commands. Command-line parsing is decimal. The C client otherwise assumes node 0 when -c is used. |
-c command |
Execute one command and exit. Use -c @file to execute non-empty lines from a command file. |
-s |
Discover Ethernet submasters on the local network, then exit. |
-v |
Diagnostic level 2; write verbose information to mscb_debug.log. |
-w |
Diagnostic level 1; log write commands to mscb_write.log. |
-r |
Start the RPC server when compiled with MRPC support. |
The Python python/msc.py is Ethernet-only and intentionally has no
-r option. It additionally accepts host:port after -d.
Input syntax and selection state¶
Commands are case-insensitive and may be abbreviated to a leading prefix. For
example, the displayed mup and mwr forms match the implemented mupload
and mwrite commands. Ambiguous abbreviations resolve in the parser's command
order, so full names are safer in scripts. Arguments containing spaces can be
surrounded by double quotes, single quotes, or backticks.
The prompt shows the current target:
Node addresses accept decimal or 0x hexadecimal notation inside the
interactive command loop. Most read/info/firmware commands require an
individual node. Group/broadcast state is limited to commands that need no
unique reply.
Discovery and target selection¶
| Command | Description |
|---|---|
scan [r] [a] [q] |
Scan likely addresses. a checks all 65,536, q uses quick ping timing, and r repeats until interrupted. The optimized default checks 0–999, hundred boundaries, 0x100 boundaries, the 0xFF00 region, and expands around discoveries. |
ping address [r] |
Ping a node and make it current when successful; r repeats once per second. |
addr address |
Set an individual target without first validating it. |
gaddr group |
Select a group and prompt for a representative node address whose metadata will be used to encode writes. |
baddr |
Select broadcast mode. |
info |
Display current node identity, protocol/revision, RTC, uptime, buffer size, and SCS3000 diagnostics when present. |
scan a can take a long time. Prefer the default scan or a direct ping when
the expected address range is known.
Node configuration¶
| Command | Description |
|---|---|
sa address |
Change the selected node address. For an individual node, the client first checks for an existing target at the new address. |
sg group |
Set the selected node(s)' group address. |
sn name |
Set an individual node name. The implementation accepts at most 15 characters plus terminator. Quote names containing spaces. |
baud |
Interactively select baud code 1–10; default shown is code 8 (115,200 bit/s). |
sync |
Set the selected node/group/broadcast real-time clock from local time. |
flash |
Copy current variables/configuration to node non-volatile storage. |
reboot |
Reboot selected node(s). |
Address, baud, flash, and firmware commands change persistent behavior. Run
info on an individual target first.
Read and write variables¶
| Command | Description |
|---|---|
read |
Read all variables, suppressing hidden variables. |
read a |
Read all variables including hidden ones. |
read index [r [ms]] [a] |
Read one variable; optionally repeat, wait ms, and include hidden output. |
read first-last [r [ms]] [a] |
Read a consecutive range with one range transaction. |
write index value [r ms] |
Encode a value from metadata and write it; optionally repeat until interrupted. |
write first-last value |
Apply the supplied value to each variable in a range, using each variable's metadata. |
mwrite index value first-node last-node |
Write the same variable on every node in an inclusive address range. mwr is the help-screen abbreviation. |
The client understands string, ASCII, floating-point, signed and unsigned
integer variables from metadata. Hexadecimal numeric input begins with 0x.
On a selected group, write uses an unacknowledged group write and the
representative node selected by gaddr for metadata.
XML save and load¶
| Command | Description |
|---|---|
save file |
Save the current node to an XML dump. |
save file first last |
Probe and save all responding nodes in the inclusive range. If the file argument is omitted, prompt for it. |
load file |
Load variables by name from XML, then ask whether to persist them with FLASH. |
Loading by name tolerates index movement across firmware revisions, but names, widths, and representations still need to be compatible. Review a saved dump before applying it to a different node type.
Firmware and memory¶
| Command | Description |
|---|---|
upload file [debug] |
Upload firmware to the current node. |
upload slot file [debug] |
Upload to a subaddress/slot of the current node. |
download file |
Download firmware/data from the current node into a new file. |
download slot file |
Download from a slot/subaddress. |
verify file |
Compare the current node with a firmware file. |
verify slot file |
Compare one slot/subaddress. The built-in help calls this optional value adr, but the implementation treats it as a slot. |
mupload file first-node last-node |
Upload to each node in an inclusive range. mup is the help-screen abbreviation. |
memrd slot address count |
Read count bytes from RAM-region memory at a slot/subaddress. |
memwr slot address value |
Write an 8-, 16-, or 32-bit value to RAM-region memory. Hex input width selects 1/2/4 bytes; decimal is 32-bit. |
download refuses to overwrite an existing output file. Raw memory operations
force the RAM base in this CLI; the library API can address the other defined
regions. Firmware and memory commands can leave a target unusable if the image,
slot, or address is wrong.
Diagnostics and specialized commands¶
| Command | Description |
|---|---|
version |
Show host-library and protocol versions. |
debug 0|1|2 |
Change diagnostic level. |
echo [f][c] |
Incrementing-byte echo test; f omits normal pacing and c continues after a mismatch. Stop with a key. |
user [byte] |
Issue the target firmware's application-specific USER command, with zero or one parameter byte. |
log |
Read the SCS3000 logging buffer until empty. |
log c |
Clear the SCS3000 logging buffer. |
terminal |
Find the first data-less variable and use it as an SCS-210-style character terminal. Escape exits. |
sr |
Reset the current submaster. |
submaster |
Print current submaster information. |
sm |
Interactively set submaster MAC/network configuration, then exit; intentionally omitted from built-in help because it is an administrative operation. |
help or ? |
Show built-in command help. |
exit or quit |
Close the connection and exit. |
t1, t2, and c1 are source-level engineering tests (link-cache test,
range-write throughput test, and MPDC current-offset calibration). They are
not general operator commands and their hard-coded indexes can modify device
state.
Script example¶
Run it with: