mcpField
E
esp32-serial-logging

esp32-serial-logging

github.com/h1dDevelopment11181 installsUpdated 40w ago
Repository

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

  1. 01Append serial output to a log file
  2. 02Monitor log output in real time
  3. 03Filter logs by keywords
  4. 04Search for crashes and errors
  5. 05Check device reboot records

Use cases

  1. 01Capture logs while reproducing an ESP32 issue
  2. 02Watch device status as it runs
  3. 03Find errors, crashes, or assertions
  4. 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-logging

After installing, type/esp32-serial-loggingin Claude Code to confirm it loaded.

Details

From the project README

ESP32 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

  1. Clear log before reproducing issue:

    > /tmp/device.log
    
  2. Reproduce the issue

  3. Analyze captured logs:

    cat /tmp/device.log
    

Common Baud Rates

DeviceBaud Rate
ESP32 (default)115200
ESP32 (fast)460800
Arduino9600
STM32115200

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 dialout group (Linux)
  • Garbled output: Wrong baud rate

Comments

Markdown supported