CLI Console

Desktop only: the live CLI console uses Web Serial and is not available on phones or tablets. Use Chrome or Edge on a desktop or laptop to connect POOM over USB.

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.

Same engine, different door. Config commands persist to POOM's secrets/NVS store, so a Wi-Fi network or load-test target you set in the CLI is picked up by the menu tools, and vice versa. The CLI is not a separate mode.

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 monitor is 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
One owner at a time: only one program can hold the serial port. Close the web flasher or any other monitor before opening the CLI.

Console Basics

Once connected you get a prompt. The essentials:

ActionHow
List every commandhelp
Recall previous commands↑ / ↓ (history is saved to flash)
Cancel a running commandCtrl+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.

CommandWhat it does
cfg-wifi-setSave Wi-Fi credentials to the secrets store
cfg-wifi-getShow the stored Wi-Fi SSID
cfg-edge-token-setSave the Edge Impulse API token
cfg-edge-api-key-setSave the Edge Impulse API key
cfg-load-target-setSave the load-test target (host/port/path/workers/scheme)
cfg-load-getShow the stored load-test config
cfg-load-start / cfg-load-stopStart / stop the HTTP(S) load test
cfg-154-startStart the 802.15.4 (Zigbee) sniffer on a fixed channel
cfg-154-hop-startStart the sniffer in channel-hopping mode (11..26)
cfg-154-chSet the 802.15.4 channel (11..26)
cfg-154-rssiRead the current 802.15.4 RSSI
cfg-154-stopStop 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.

Start clean: run 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

WorkflowCommands
Saved connectioncfg-wifi-set, cfg-wifi-get, wifi-scan, wifi-scan-show, wifi-connect, wifi-connect-ssid, wifi-status, wifi-disconnect, wifi-save-current
HTTP load labcfg-load-target-set, cfg-load-get, cfg-load-start, cfg-load-stop
Edge Impulsecfg-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

LabCommands
Beacon listwifi-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
Karmakarma-start, karma-status, karma-ssids-list, karma-active-ssid, karma-stop, karma-clear
Deauth test and detectordeauth-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 portalcaptive-start, captive-start-from-scan, captive-status, captive-stop

Radio, BLE, Lua, and IR

WorkflowCommands
Channel scannerscanner-start, scanner-status, scanner-top, scanner-channels, scanner-reset, scanner-stop
BLE tests and trackerble-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 microSDlua-run, lua-upload-begin, lua-upload-line, lua-upload-end, lua-upload-abort, lua-status, lua-stop
Infraredir-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

WorkflowCommands
Drone emulatordrone-emul-loc-set, drone-emul-count-set, drone-emul-ble-set, drone-emul-start, drone-emul-status, drone-emul-stop
802.15.4 sniffercfg-154-ch, cfg-154-start, cfg-154-hop-start, cfg-154-rssi, cfg-154-stop
NFC start and technologynfc-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 profilesnfc-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 tuningnfc-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 help to 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.