esp32-serial-logging

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

ESP32 Serial Log Monitoring

ESP32串口日志监控

Overview

概述

Capture serial output from ESP32 (or any microcontroller) to a file for real-time monitoring and analysis.
捕获ESP32(或任何微控制器)的串口输出到文件,以便进行实时监控和分析。

ESP32 Setup (Device Side)

ESP32设备端设置

ESP-IDF Framework

ESP-IDF框架

cpp
#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");
}
cpp
#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

Arduino框架

cpp
void setup() {
    Serial.begin(115200);
}

void loop() {
    Serial.println("Status: running");
    Serial.printf("Sensor: %d\n", analogRead(A0));
    delay(1000);
}
cpp
void setup() {
    Serial.begin(115200);
}

void loop() {
    Serial.println("Status: running");
    Serial.printf("Sensor: %d\n", analogRead(A0));
    delay(1000);
}

Host Side - Capture Logs

主机端 - 捕获日志

bash
undefined
bash
undefined

Find serial port

Find serial port

PORT=$(ls /dev/cu.usbmodem* /dev/ttyUSB* /dev/ttyACM* 2>/dev/null | head -1) echo "Found port: $PORT"
PORT=$(ls /dev/cu.usbmodem* /dev/ttyUSB* /dev/ttyACM* 2>/dev/null | head -1) echo "Found port: $PORT"

Configure and start capture

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: $!)"
undefined
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: $!)"
undefined

Monitor Logs

监控日志

bash
undefined
bash
undefined

Real-time monitoring

Real-time monitoring

tail -f /tmp/device.log
tail -f /tmp/device.log

Filter specific patterns

Filter specific patterns

tail -f /tmp/device.log | grep -E "ERROR|WiFi|Button"
undefined
tail -f /tmp/device.log | grep -E "ERROR|WiFi|Button"
undefined

Search for Errors

搜索错误信息

bash
undefined
bash
undefined

Find crashes and errors

Find crashes and errors

grep -E "ERROR|crash|overflow|panic|assert|Backtrace" /tmp/device.log
grep -E "ERROR|crash|overflow|panic|assert|Backtrace" /tmp/device.log

Find reboots (look for boot messages or uptime resets)

Find reboots (look for boot messages or uptime resets)

grep -E "boot:|rst:|Uptime: [0-9] sec" /tmp/device.log
undefined
grep -E "boot:|rst:|Uptime: [0-9] sec" /tmp/device.log
undefined

Debug Workflow

调试流程

  1. Clear log before reproducing issue:
    bash
    > /tmp/device.log
  2. Reproduce the issue
  3. Analyze captured logs:
    bash
    cat /tmp/device.log
  1. 复现问题前清空日志:
    bash
    > /tmp/device.log
  2. 复现问题
  3. 分析捕获的日志:
    bash
    cat /tmp/device.log

Common Baud Rates

常见波特率

DeviceBaud Rate
ESP32 (default)115200
ESP32 (fast)460800
Arduino9600
STM32115200
设备波特率
ESP32(默认)115200
ESP32(高速)460800
Arduino9600
STM32115200

Stop Logging

停止日志记录

bash
pkill -f "cat /dev/cu.usbmodem"
pkill -f "cat /dev/ttyUSB"
bash
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
  • 未找到端口:检查USB连接,尝试执行
    ls /dev/cu.* /dev/tty.*
    命令
  • 权限不足:将用户添加到
    dialout
    用户组(Linux系统)
  • 输出乱码:波特率设置错误