Skip to main content
Use the Monitor’s serial view for text and byte streams from a target. Debug mode can wait for new output, read buffered history immediately, or send data on transports that support input. Run serial_config or refresh hardware_status when you are unsure which ports, probes, targets, or XMOS artifacts are available.

Compare the transports

CAN mode also uses a serial port, but it applies a CAN transport codec instead of treating bytes as UART text. See CAN Monitor.

Monitor UART

Select the port, baud rate, and newline convention in the serial view. The standard picker includes rates from 300 through 921600, including 74880 for boot logs.
UART supports:
  • LF, CR, CRLF, or no newline when sending
  • DTR, RTS, or the ESP-style DTR/RTS reset sequence
  • A command-based reset through a flasher or debugger
  • Baud detection from observed traffic when the port is not in CAN mode
When you monitor after a flash, Embedder prepends up to 100 buffered lines that arrived since the last connection. Use history when you only need data already captured:

Monitor SEGGER RTT

RTT reads target memory through J-Link, so it does not consume a UART peripheral or pin. Select:
  • The J-Link target device name
  • SWD or JTAG
  • The probe clock
  • An RTT up channel to read
  • A down channel when you need to send
Embedder starts the managed J-Link GDB server with RTT enabled when necessary. It uses the selected probe and target across the serial view and GDB.
The Monitor can expose several RTT channels. Up channels are readable, down channels are writable, and channel metadata can identify text, binary, CTF, or SystemView data. Split the view when you want one column per up channel. For control-block discovery, choose a map file containing _SEGGER_RTT or enter its address. Leave both unset to let J-Link search. In a hardware script, rtt_read, rtt_read_history, and rtt_send use channel 0. rtt_send appends CRLF.
Changing the selected J-Link device or interface can restart the managed server and disconnect an active GDB session.

Monitor ITM and SWO

ITM is a read-only Cortex-M trace transport carried over SWO. Embedder starts OpenOCD with ITM enabled and connects the itm:// view to its TCP output. The USB detector recognizes these ITM probe families:
  • ST-Link V1, V2, V2-1, and V3
  • DAPLink
  • NXP LPC-Link2
  • NXP MCU-Link
Your OpenOCD build and target configuration must also support SWO for the selected MCU. Configure:
  1. The OpenOCD target
  2. The CPU clock in hertz
  3. The SWO frequency in hertz
The SWO frequency must not exceed the CPU clock. A wrong clock usually produces missing or garbled output.
ITM output is prefixed by stimulus channel:
Channel 0 is line-buffered UTF-8. Firmware must write a newline before the text appears. Channels 1 through 31 are uppercase hexadecimal byte streams, and TCP chunks do not preserve application frame boundaries. The serial ITM parser surfaces software stimulus packets only. It drops timestamps, overflow and extension packets, DWT hardware events, exception trace, PC sampling, and data trace. Use the trace recording workflow only when firmware emits Embedder’s compact event packets on the configured ITM stimulus port.

Monitor XMOS xSCOPE

Embedder exposes an xscope://localhost:12345 endpoint when it detects an XMOS board or xTAG adapter. Before connecting:
  1. Install XMOS XTC Tools so xrun is available.
  2. Build the project to produce a .xe file.
  3. Set xmos_xe in EMBEDDER.md if the project has more than one candidate.
EMBEDDER.md
The default monitor runs:
Use stop_string and timeout as you would for UART. Baud rate is ignored. DTR and RTS resets are rejected; use a command reset when the target needs one. xSCOPE is read-only in the Monitor. Sending text is blocked because an xSCOPE print stream is not a UART shell. For realtime server mode, configure a host decoder:
EMBEDDER.md
Embedder then launches xrun --xscope-port {endpoint} {xe} and streams the decoder’s stdout. Keep the .xe path in xmos_xe, not in the client command.

Wait for output without losing history

serial_monitor has two useful modes:
  • With a stop string, it waits up to 30 seconds by default.
  • Without a stop string, it captures for three seconds by default.
Set a longer timeout for slow boot or an intermittent event. Use serial_read_history between probes so you do not reopen a port just to read buffered output.

Fix transport problems

Disconnect every view using the port, then reconnect at one rate. A shared serial session cannot change baud while another subscriber owns it.
Select a J-Link device in the RTT configuration or pass the device name in the request. Confirm that the firmware contains an RTT control block.
Verify the OpenOCD target, target support for SWO, CPU clock, SWO frequency, probe wiring, and firmware ITM initialization.
Check that xrun is in the XTC environment and that the selected .xe exists. A build without xSCOPE support will not emit xSCOPE output.

CAN Monitor

Switch a serial port from UART text to CAN frame handling.

Coverage and trace

Record structured RTT, ITM, or ETM trace sessions.
Last modified on August 24, 2026