Table of Contents

Command Line Tool (sniffer-cli)

Alongside the desktop app, MantaTrace ships a standalone command line tool, sniffer-cli, for headless capture, scripting, capture replay and firmware maintenance. It talks to the same sniffer hardware over serial and produces the same JSON capture format as the desktop app.
There is no separate download — the CLI is built into the application binary installed by the desktop app installer. Run the app executable with the cli subcommand:
  • Windows – from the installation directory: .\sniffer-ui.exe cli --list
  • macOS – /Applications/MantaTrace Packet Sniffer.app/Contents/MacOS/sniffer-ui cli --list
  • The examples below abbreviate this to sniffer-ui cli.
    sniffer-ui cli listing ports and starting a UWB capture

    Listing serial ports

    Run sniffer-ui cli --list to print the available serial port paths and exit. Use this to find the port of a connected sniffer before starting a capture.

    Capturing

    Point the tool at one or more sniffers by serial port:
  • --uwb-port – capture from a UWB sniffer (e.g. /dev/tty.usbmodem1101 on macOS, COM3 on Windows).
  • --ble-port – capture from a BLE sniffer.
  • --wmbus-port – capture from a Wireless M-Bus sniffer.
  • Wireless M-Bus capture has two extra options:
  • --wmbus-mode – channel mode override: 0 = C uplink, 1 = C downlink, 2 = T uplink, 3 = T downlink, 4 = S. When unset, the default radio configuration is used.
  • --wmbus-key – AES-128 decryption key as 32 hex characters, used to decrypt secured telegrams.
  • More than one port can be given in the same invocation to capture from multiple interfaces at once. Press q to quit a running capture.

    Output options

  • --show-hex – print each frame as raw hex.
  • --show-json – print each frame as JSON.
  • --show-pretty-json – print each frame as indented JSON.
  • --show-json-preview – print the compact preview form of each frame (the same shape the desktop app's packet list uses).
  • --output-path – write frames to a JSON capture file that can later be opened in the desktop app or replayed by the CLI.
  • Replaying captures

  • --input-path – replay a previously saved capture file instead of (or alongside) live hardware. The tool inspects the file to detect whether it contains UWB, BLE or Wireless M-Bus packets and routes it to the right decoder automatically.
  • --wmbus-capture – replay a Wireless M-Bus capture in the JSON array format.
  • Filters and BLE options

  • --filter-rssi – only show packets with RSSI greater than or equal to the given threshold in dBm.
  • --filter-addr – only show packets from a specific BLE address (format AA:BB:CC:DD:EE:FF).
  • --follow-addr – follow a specific BLE device into its connection.
  • --passkey – BLE passkey (e.g. 112233) used when following an encrypted connection.
  • External Trigger

    The External Trigger chain also runs headless, so scripted runs — including the CCC time-sync use case — do not need the desktop app:
  • --trigger-config – path to a JSON file describing the trigger chain: the same chain settings (label, outcome, continuous, chain timeout, GPIO sink) and stages (source, message kind, length and gap bounds, stage timeout, repeat count) that the UI trigger panel exposes.
    • The chain is armed when the capture starts, and trigger activity is reported on the console exactly as it appears in the UI packet list: stage-passed, chain-fired (with outcome and elapsed time) and chain-ended events are printed inline in the output stream.
    • Stage and chain timeouts are reported the same way, so a timeout printed on the console marks a failing run — for the CCC use case, a device that did not start UWB ranging on schedule.

    Firmware update

    Firmware maintenance for UWB sniffers is done through the CLI — there is currently no firmware update button in the desktop app.
  • --fw-version – prints the firmware version of the connected UWB sniffer and exits. Requires --uwb-port.
  • --fw-update – flashes the bundled, signed firmware image to the sniffer over serial (using the MCUmgr protocol) and exits. Requires --uwb-port and --hw-type.
  • --hw-type – selects the firmware image for your hardware: dk for the nRF52840 DK with DW3000 shield, 2ab for the Murata Type2AB development kit, or 2bp for the Murata Type2BP development kit. The older name mu is still accepted for the Type2AB.
  • The nRF52840 DK and the Murata Type2AB need the MantaTrace bootloader programmed once before their first firmware update; see the Quick Start guide.
    To update an nRF52840 DK:
    1.Put the board in its bootloader: hold Button 1 and press RESET. LED1 lights, and a new serial port named MantaTrace Bootloader appears (for example /dev/tty.usbmodem1101 on macOS, or a new COM port on Windows).
    2.Run sniffer-ui cli --fw-update --hw-type dk --uwb-port /dev/tty.usbmodem1101, using the bootloader's port.
    3.Wait for the update to finish. The board restarts into the new firmware, the bootloader port disappears, and the sniffer's own port comes back.
    4.Check it with sniffer-ui cli --fw-version --uwb-port .
    To update a Murata Type2AB:
    1.Put the board in its bootloader: hold the user button and press reset. A new serial port named MantaTrace Bootloader appears.
    2.Run sniffer-ui cli --fw-update --hw-type 2ab --uwb-port .
    3.Wait for the update to finish. The board restarts into the new firmware, and the sniffer's own port comes back.
    4.Check it with sniffer-ui cli --fw-version --uwb-port .
    If a DK or Type2AB update is interrupted, put the board back in its bootloader and run the update again.
    To update a Murata Type2BP:
    1.Put the board in its bootloader: hold SW2 and press SW1. LED3 lights and stays lit.
    2.Run sniffer-ui cli --fw-update --hw-type 2bp --uwb-port /dev/tty.usbserial-XXXX, using the board's usual serial port. No new port appears for the bootloader.
    3.Wait for the update to finish. It takes about a minute.
    4.The board restarts into the new firmware and answers again after about 25 seconds. Check it with sniffer-ui cli --fw-version --uwb-port /dev/tty.usbserial-XXXX.
    If an update is interrupted, the board stays in its bootloader with LED3 lit, and you can simply run the update again.
    2026 Manta Trace ™
    All rights reserved