CLI Console
The POOM CLI is a text console into the same modules the on-screen menu drives. Where the menu is good for exploring, the CLI is good for precision and repeatability: exact parameters, saved credentials, scripted capture flows, and copy-pasteable playbooks. It is a REPL — you type a command, it runs, it prints a result.
Connecting
The interactive console above connects directly to POOM over USB Serial/JTAG — the same USB port you flash with. No extra UART adapter is needed. There are two ways in:
- On device: THE BEAST → CLI → A launches the console app.
- Over USB: plug POOM into your computer and open a serial terminal on the POOM port. From a machine with ESP-IDF,
idf.py monitoris the easiest; otherwise any terminal (screen, minicom, PuTTY, a browser serial console) works.
# From an ESP-IDF environment
idf.py monitor
# Or a raw terminal (Linux/macOS example)
screen /dev/tty.usbmodem* 115200
Console Basics
Once connected you get a prompt. The essentials:
| Action | How |
|---|---|
| List every command | help |
| Recall previous commands | ↑ / ↓ (history is saved to flash) |
| Cancel a running command | Ctrl+C |
| Re-run the last command | ↑ then Enter |
help is your map — it prints the full command set with a one-line description each. Commands are grouped by prefix, which is the fastest way to learn the surface.
Command Groups
POOM registers its commands from two families. Knowing the prefixes tells you what each does at a glance:
cfg-* — Configuration & Radio Control
Persistent settings and the 802.15.4 sniffer control.
| Command | What it does |
|---|---|
cfg-wifi-set | Save Wi-Fi credentials to the secrets store |
cfg-wifi-get | Show the stored Wi-Fi SSID |
cfg-edge-token-set | Save the Edge Impulse API token |
cfg-edge-api-key-set | Save the Edge Impulse API key |
cfg-load-target-set | Save the load-test target (host/port/path/workers/scheme) |
cfg-load-get | Show the stored load-test config |
cfg-load-start / cfg-load-stop | Start / stop the HTTP(S) load test |
cfg-154-start | Start the 802.15.4 (Zigbee) sniffer on a fixed channel |
cfg-154-hop-start | Start the sniffer in channel-hopping mode (11..26) |
cfg-154-ch | Set the 802.15.4 channel (11..26) |
cfg-154-rssi | Read the current 802.15.4 RSSI |
cfg-154-stop | Stop the 802.15.4 sniffer |
nfc-* — NFC Operations
A large family (50+ commands) for reading, dumping, emulating and tuning NFC. Highlights: nfc-start, nfc-tech, nfc-scan, nfc-connect, nfc-send, nfc-mfc-dump, nfc-emul-start, nfc-tune-auto. The full family and its playbooks live in the NFC Security Lab.
Complete CLI Workflow Reference
The live console catalog now contains 135 commands, grouped by real workflows. Search any command name in the console to insert its syntax, then replace every placeholder before pressing Enter. Use these tools only on equipment, cards, networks, and radio environments you own or are authorized to test.
cli-stop-all before switching tests. POOM releases conflicting radio tasks automatically where possible: Wi-Fi workflows stop conflicting BLE tasks, BLE workflows stop conflicting Wi-Fi tasks, and the scanner clears runtimes that need the same radio.
Wi-Fi setup and load testing
| Workflow | Commands |
|---|---|
| Saved connection | cfg-wifi-set, cfg-wifi-get, wifi-scan, wifi-scan-show, wifi-connect, wifi-connect-ssid, wifi-status, wifi-disconnect, wifi-save-current |
| HTTP load lab | cfg-load-target-set, cfg-load-get, cfg-load-start, cfg-load-stop |
| Edge Impulse | cfg-edge-token-set, cfg-edge-api-key-set |
wifi-scan
wifi-connect 0 your-password
wifi-status
wifi-save-current
wifi-disconnect
Authorized Wi-Fi labs
| Lab | Commands |
|---|---|
| Beacon list | wifi-spam-ssids-show, wifi-spam-ssids-set, wifi-spam-ssids-add, wifi-spam-ssids-del, wifi-spam-ssids-reset, wifi-spam-start, wifi-spam-status, wifi-spam-stop |
| Karma | karma-start, karma-status, karma-ssids-list, karma-active-ssid, karma-stop, karma-clear |
| Deauth test and detector | deauth-scan, deauth-attack, deauth-start, deauth-status, deauth-stop, deauth-det-start, deauth-det-stats, deauth-det-hop, deauth-det-ch, deauth-det-reset, deauth-det-stop |
| Captive portal | captive-start, captive-start-from-scan, captive-status, captive-stop |
Radio, BLE, Lua, and IR
| Workflow | Commands |
|---|---|
| Channel scanner | scanner-start, scanner-status, scanner-top, scanner-channels, scanner-reset, scanner-stop |
| BLE tests and tracker | ble-spam-start, ble-spam-status, ble-spam-current, ble-spam-stop, ble-tracker-start, ble-tracker-scan, ble-tracker-status, ble-tracker-list, ble-tracker-clear, ble-tracker-stop |
| Lua from microSD | lua-run, lua-upload-begin, lua-upload-line, lua-upload-end, lua-upload-abort, lua-status, lua-stop |
| Infrared | ir-nec-send, ir-nec-ext-send, ir-samsung32-send, ir-rx-once, ir-last, ir-save-last, ir-slot-show, ir-slot-send |
lua-upload-begin /sdcard/scripts/test.lua
lua-upload-line print("Hello, POOM")
lua-upload-end
lua-run /sdcard/scripts/test.lua
lua-status
lua-stop
Drone, 802.15.4, and NFC
| Workflow | Commands |
|---|---|
| Drone emulator | drone-emul-loc-set, drone-emul-count-set, drone-emul-ble-set, drone-emul-start, drone-emul-status, drone-emul-stop |
| 802.15.4 sniffer | cfg-154-ch, cfg-154-start, cfg-154-hop-start, cfg-154-rssi, cfg-154-stop |
| NFC start and technology | nfc-start, nfc-stop, nfc-all, nfc-a, nfc-b, nfc-st25tb, nfc-v, nfc-f, nfc-tech, nfc-scan, nfc-connect, nfc-send, nfc-scan-loop, nfc-clipper-history |
| NFC emulation and profiles | nfc-emul-show, nfc-emul-reset, nfc-emul-set, nfc-emul-set-from-last-scan, nfc-emul-start-last, nfc-emul-start, nfc-emul-stop, nfc-cards-list, nfc-card-save-current, nfc-profiles-list, nfc-profiles-del, nfc-profiles-clear, nfc-cards-save, nfc-cards-del, nfc-cards-clear |
| NFC SD, diagnostics, and tuning | nfc-dump-sd, nfc-mful-save, nfc-isodep-dump-sd, nfc-reader-verbose, nfc-iso-chunk, nfc-rf-on, nfc-rf-off, nfc-mode-get, nfc-mode-set, nfc-obsv-get, nfc-obsv-set, nfc-reqa, nfc-wupa, nfc-raw, nfc-regdump, nfc-tune-auto, nfc-tune-get, nfc-tune-set |
nfc-start
nfc-a
nfc-scan
nfc-connect
nfc-stop
Your First Scripted Flow
Join a network, confirm it saved, then run a short Zigbee capture — entirely from the console:
help
cfg-wifi-set MyLabAP labpassword
cfg-wifi-get
cfg-154-start
cfg-154-ch 15
cfg-154-rssi
cfg-154-stop
Because cfg-wifi-set writes to NVS, the menu tools (NET SCAN, CAPTIVE, HTTP LOAD) now use that network without you re-entering it. That hand-off between CLI and menu is the whole point of the console.
Tips & Gotchas
- “Command not found” means a typo or a command not built into this image — run
helpto see exactly what is available. - A non-zero return code after a command is the module reporting an error; read the printed message for the reason.
- Ctrl+C cancels long-running commands (scans, captures, loops) cleanly — use it instead of yanking the cable.
- Command history persists across reboots, so your last session's commands are one ↑ away.
Where to Go Next
Put the console to work: the Zigbee / 802.15.4 Lab uses the cfg-154-* commands end to end, the BEAST Lab scripts load tests and captures, and the NFC Lab is built entirely around the nfc-* family.