Autonomous AI icon Autonomous AI — Autonomous AI robot skill with vision, speech, movement, animations, and self-directed multi-step tasks powered by LLMs. Try it →
 

UART Monitor

The UART Monitor shows every byte ARCx sends to and receives from the UARTs of your EZBs, timestamped, in a hex editor style view. Use it when a serial device (smart servos, a lidar, a GPS, another microcontroller) does not answer, answers garbage, or does something unexpected. You can see exactly what was sent, what came back and how long it took, then save the traffic to a file to review later or post on the forum.

Where to find it: Side menu → Views → UART Monitor. It is also under Views when you right-click a workspace.

The UART Monitor with captured traffic


What is captured

  • Hardware UARTs 0, 1 and 2 of an EZ-B v4: every write (TX) and every read (RX), and each time a UART is initialised, with its baud rate.
  • Send-only serial out of a digital port (D0, D5...): every send (TX) with its baud rate.
  • Failed calls, such as writing to a UART while the EZB is disconnected, with the reason.
  • Markers you add yourself.

Traffic from robot skills and from scripts is captured alike. Each entry says who made the call: the robot skill's name, or JavaScript or Python for a script.

Asking a UART how many bytes are waiting (polling) is counted on the UART's card but is not listed as an entry, because a robot skill can poll many times a second. The bytes appear when they are read.

Capturing

Tick Capture UART traffic to start. Capturing is off when ARCx starts. While it is off, the UARTs do no extra work, so leaving the feature unused costs nothing.

Capturing carries on when you leave the page, so you can tick the box, go to the robot skill that talks to the device, reproduce the problem, and come back. A red REC badge shows while it is on. Untick the box to stop; what was captured is kept.

The newest 50,000 entries (up to 16 MB of data) are kept in memory. When the buffer is full, the oldest entries are discarded and the status line says how many. The capture is not saved with the project and is gone when ARCx closes. Save it to a file to keep it.

The status bar

Item What it does
Capture UART traffic Starts and stops capturing for the whole of ARCx.
Status How long has been captured, the number of entries, how full the buffer is, and how many entries the filters are showing.
Marker Adds a numbered marker to the capture at this moment, such as just before you press a button on the robot. Markers make a moment easy to find later.
Save Text file for Notepad (.txt) saves a hex dump that opens in any text editor. Spreadsheet (.csv) saves one entry per line for Excel or similar. Copy for a forum post copies the text version to the clipboard inside a code block, ready to paste into a post. All three save what the view is showing, with the filters applied, and the file says which filters were used.
Clear Deletes everything captured and the channel totals, after asking. Capturing carries on if it is on.

The UART cards

Each UART that has been used or initialised gets a card, like the lights on a modem.

  • The TX (orange) and RX (teal) lights blink when bytes go out or come in.
  • The baud rate is the one the UART was last initialised at (hardware UARTs) or last sent at (digital ports).
  • The sparkline shows the bytes per second out and in over the last minute.
  • The totals show the bytes sent and received, and a red count of failed calls when there are any.
  • The bottom line shows the current rate out and in, and for hardware UARTs how many times a second the receive buffer is being polled.

Click a card to hide that UART's traffic from the view. Click it again to show it.

Filtering and display

Control What it does
TX / RX / Events Show or hide sent bytes, received bytes, and the other entries (initialisations, errors and markers).
Search Shows only the packets that contain what you type, and highlights the match. Hex such as FF FF 01, ff,ff,01 or 0xFF 0x01 searches for those bytes. Anything else, or text in quotes such as "OK", searches for that text, ignoring letter case. The line under the box says which kind of search is in use.
Bytes per row 8, 16 or 32 bytes on each line.
Merge Joins reads (or writes) of the same UART that are less than 30 ms apart into one packet. A device's reply often arrives over several reads; merging shows it as the single message it is.
Colours Colours each byte by kind: zero, printable text, control characters (such as CR and LF), high bytes (0x80 and up), and FF. The key is at the bottom of the inspector.
Follow Keeps the newest traffic in view. Scrolling up stops following so you can read; scroll back to the bottom or click Follow to start again.

Reading the view

Each packet starts on a new line with:

Column What it shows
Time The computer's clock when the entry was recorded, to the millisecond.
Δ prev The time since the entry above. This is how long a device took to answer.
UART The EZB and UART, such as 0·U1 for EZB 0 UART 1, or 0·D5 for digital port D5. Each UART has its own colour.
Dir ▶ TX is what ARCx sent to the device. ◀ RX is what ARCx read from the device. INIT, ERR and MARK are the other entries.
Off The offset of the first byte on the line within the packet, in hex.
Hex The bytes.
ASCII The same bytes as text. Bytes that are not printable show as a dot.
Length · from The packet's size and the robot skill or script that sent or read it.

Move the mouse over a byte and the same byte lights up in both the hex and the ASCII column.

The inspector

Click a byte to see what it means in the inspector on the right:

The inspector explaining a selected byte

  • The packet it belongs to: direction, UART, time, size, baud rate and who sent it.
  • The byte as binary, unsigned and signed, and as a character.
  • The bytes starting there read as 16 and 32 bit numbers, little endian (LE) and big endian (BE), and as a float.

Shift + click another byte of the same packet to select a range. The inspector then also shows the range's checksums: Sum 8, ~Sum 8 (used by Dynamixel protocol 1, Feetech and LewanSoul servos), XOR 8, CRC-8 (SMBus), CRC-8 Sensirion, CRC-16 Modbus, CRC-16 Dynamixel 2 and CRC-16 CCITT. When the byte (or two bytes) right after the selection hold the same value, that checksum is marked ✓ next. To check a packet, select everything that its checksum covers and see which one lights up.

Click beside the bytes of a row to select the whole packet. Hex and C array copy the selected bytes to the clipboard, and Clear clears the selection.

Saved files

The text file is plain ASCII, so it looks the same in Notepad, an e-mail or a forum post. It starts with when and what was captured, the filters used, and each UART's baud rate and totals, followed by every entry:

12:40:51.733  +1.00 ms      EZB 0 UART 0    TX     3 bytes  (JavaScript)
    0000  41 54 0D                                          |AT.|
12:40:51.796  +63.7 ms      EZB 0 UART 0    RX     4 bytes  (JavaScript)
    0000  4F 4B 0D 0A                                       |OK..|

The CSV file has one entry per line with its sequence number, date, time, milliseconds since the capture started and since the line above, EZB, UART, direction, length, the bytes as hex and as text, baud rate, who made the call, and any note.

AI assistants

An AI assistant connected to ARCx over MCP can use the same capture to help find a communication problem. It can start and stop capturing, read the traffic and add markers. It sees exactly what this page shows.

Notes

  • Only the UARTs of EZBs are captured. A robot skill that opens a COM port on the computer itself talks to it directly and does not appear here.
  • Devices on the I2C bus have a monitor of their own that works the same way: Side menu → Views → I2C Monitor.
  • Times are taken when ARCx finishes each call, so the Δ prev of a reply includes the network time to the EZB as well as the device's own response time.
  • A digital port can only send, so its card never shows RX.
  • Several pages, browsers and an AI can look at the capture at once. Clearing it clears it for all of them.