picocom & screen
Minimal serial terminal emulators to reach a device's UART console: your first interactive window into a target's bootloader and shell.
picocom and screen are minimal serial terminal emulators. Point one at a USB-serial adapter and it opens the device's UART console, usually your first interactive window into a target: the bootloader prompt, the kernel log, and often an unauthenticated root shell. They are the tools you reach for the moment you have soldered or clipped onto a board's debug header.
What it is
A UART is a two-wire asynchronous serial line (plus ground) that most embedded devices use as their debug and console port. A USB-UART adapter turns that line into a /dev/ttyUSB0 (or /dev/ttyACM0) character device on your host. picocom and screen are thin terminal front ends over that device: they open the TTY at a chosen baud rate, pass your keystrokes to the target's RX, and print whatever the target sends on its TX. picocom is a small dedicated serial terminal; screen is a general terminal multiplexer that happens to speak serial. Both do the same core job.
Why it matters
The console is where a device is most honest. During boot you see U-Boot or the ESP-IDF/second-stage bootloader announce itself, print the memory map, and often expose a countdown you can interrupt to reach a bootloader shell and tamper with bootargs. After boot you may land on a login prompt, or straight into a root shell with no password. Reading that stream tells you the SoC, the boot chain, the filesystem layout, and frequently hands you command execution, all before you touch flash or JTAG.
How to use it
picocom -b 115200 /dev/ttyUSB0 # open the console at 115200 baud
screen /dev/ttyUSB0 115200 # the same, using screen
# Exit picocom: Ctrl-A Ctrl-X
# Exit screen: Ctrl-A then k (or Ctrl-A : quit)
Set the baud rate to match the target; 115200 8N1 is the most common, and if the output is garbage, cycle through 9600, 57600, and 115200 until the text is clean. Wire only TX, RX, and GND, crossing TX to RX (see the diagram), and never connect the adapter's VCC to a board that powers itself. Interrupt the boot countdown (often "hit any key") to drop into the bootloader.
The Espilon-recommended monitor
For plain interactive typing, picocom and screen are perfect and remain the simplest fallback. But for monitoring work, watching a device across a reflash, catching a crash, tailing multiple boards at once, Espilon recommends emon, our own universal serial monitor. Unlike a plain terminal, emon holds the port open in a PTY bridge without toggling the reset lines (no accidental reboot when you attach), detects crashes and events by regex patterns with severity, watches several ports at once with colour coding, and can stream NDJSON or return CI exit codes. Use picocom/screen to interact; reach for emon when you need to observe. See wiki:emon.
Pitfalls
- Garbage on screen almost always means the wrong baud rate, not a dead board. Try the common rates before assuming the console is silent.
- Forgetting to cross TX and RX is the classic no-output mistake; adapter TX must reach target RX.
- Wiring VCC on a self-powered board can backfeed and damage the target or the adapter. Leave it disconnected.
- screen and picocom hold the port exclusively. If a second tool cannot open the TTY, an earlier screen session is probably still attached (
screen -ls).
What it pairs with
A usb-uart adapter and a soldered or clipped uart-header are the hardware you need to get on the line. When you do not yet know the pinout or baud, capture the lines with sigrok/PulseView first to identify TX and the rate. For observation, logging, and crash detection rather than raw interaction, move up to emon.