About esp32-serial-logging
esp32-serial-logging is a debugging skill for capturing microcontroller serial output to a file, aimed at ESP32 and other device developers. It describes real-time log monitoring, filtering, and searches for errors and reboot records.
Key features
- 01Append serial output to a log file
- 02Monitor log output in real time
- 03Filter logs by keywords
- 04Search for crashes and errors
- 05Check device reboot records
Use cases
- 01Capture logs while reproducing an ESP32 issue
- 02Watch device status as it runs
- 03Find errors, crashes, or assertions
- 04Investigate device reboots
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ h1d/ agent-skills-esp32 --skill esp32-serial-loggingAfter installing, type/esp32-serial-loggingin Claude Code to confirm it loaded.
Details
From the project READMEESP32 Serial Log Monitoring
Overview
Capture serial output from ESP32 (or any microcontroller) to a file for real-time monitoring and analysis.
ESP32 Setup (Device Side)
ESP-IDF Framework
#include "esp_log.h"
static const char* TAG = "MyComponent";
void my_function() {
ESP_LOGI(TAG, "Info message");
ESP_LOGW(TAG, "Warning: value=%d", some_value);
ESP_LOGE(TAG, "Error occurred");
ESP_LOGD(TAG, "Debug details");
}
Arduino Framework
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("Status: running");
Serial.printf("Sensor: %d\n", analogRead(A0));
delay(1000);
}
Host Side - Capture Logs
# Find serial port
PORT=$(ls /dev/cu.usbmodem* /dev/ttyUSB* /dev/ttyACM* 2>/dev/null | head -1)
echo "Found port: $PORT"
# Configure and start capture
stty -f "$PORT" 115200 raw -echo 2>/dev/null || stty -F "$PORT" 115200 raw -echo
cat "$PORT" >> /tmp/device.log &
echo "Logging to /tmp/device.log (PID: $!)"
Monitor Logs
# Real-time monitoring
tail -f /tmp/device.log
# Filter specific patterns
tail -f /tmp/device.log | grep -E "ERROR|WiFi|Button"
Search for Errors
# Find crashes and errors
grep -E "ERROR|crash|overflow|panic|assert|Backtrace" /tmp/device.log
# Find reboots (look for boot messages or uptime resets)
grep -E "boot:|rst:|Uptime: [0-9] sec" /tmp/device.log
Debug Workflow
-
Clear log before reproducing issue:
> /tmp/device.log -
Reproduce the issue
-
Analyze captured logs:
cat /tmp/device.log
Common Baud Rates
| Device | Baud Rate |
|---|---|
| ESP32 (default) | 115200 |
| ESP32 (fast) | 460800 |
| Arduino | 9600 |
| STM32 | 115200 |
Stop Logging
pkill -f "cat /dev/cu.usbmodem"
pkill -f "cat /dev/ttyUSB"
Troubleshooting
- Port not found: Check USB connection, try
ls /dev/cu.* /dev/tty.* - Permission denied: Add user to
dialoutgroup (Linux) - Garbled output: Wrong baud rate
Comments
Markdown supported