serial_proxy/README.md

2.9 KiB
Raw Blame History

Serial Proxy (MITM)

A small Python app that sits between the Arduino IDE and a real COM device. It creates (or uses) a virtual COM port that you open in the Arduino IDE, while it talks to the real device on another port. All traffic is recorded both ways and passed through unchanged.

What it does

  1. CLI — Lists connected COM ports; you choose the real device (e.g. your Arduino).
  2. Virtual port — Tries to create a virtual COM pair with com0com; if that fails, you pick one end of an existing pair.
  3. Relay — Data from Arduino IDE → virtual port → this app → real device, and the reverse. No modification, only copying.
  4. Logging — Every byte in both directions is logged to serial_log.txt (and optionally to the console) with timestamps and hex.

Requirements

  • Python 3.10+
  • pyserial: pip install -r requirements.txt
  • Virtual COM pair (for “create virtual port” to work): install com0com and, if you want the app to create pairs automatically, run the script (or setupc.exe) with Administrator rights so it can create port pairs.

Usage

  1. Install dependencies:
    pip install -r requirements.txt
    
  2. (Optional) Install com0com and, if needed, run the app as Administrator so it can create a virtual pair.
  3. Run the proxy:
    python serial_proxy.py
    
  4. Select the real device COM port (e.g. the actual Arduino).
  5. If the app created a virtual pair, it will tell you which port to select in the Arduino IDE (e.g. COM252). Otherwise, select the end of the pair that this app will use; in the Arduino IDE you must select the other end of that pair.
  6. Enter baud rate (default 115200) or press Enter.
  7. In the Arduino IDE, choose the indicated virtual port and use Serial Monitor / upload as usual. All traffic is logged to serial_log.txt.

Stop with Ctrl+C.

Log file

  • Path: serial_log.txt in the same folder as serial_proxy.py.
  • Each line has timestamp, direction (IDE->device or device->IDE), byte count, hex dump, and a raw repr of the bytes.

Without com0com

If you dont install com0com, the app cannot create a virtual pair. Youll need another way to get a pair of linked virtual ports (e.g. another null-modem/virtual serial driver). Then run the app, select the real device port, and when asked, select the port that this app should open (one end of the pair). Use the other end of that pair in the Arduino IDE.

Summary

You select in the app You select in Arduino IDE
Real device (e.g. COM3)
Virtual port “for this app” (e.g. COM251) The other end of the pair (e.g. COM252)

Traffic flows: Arduino IDE ↔ virtual pair ↔ this app ↔ real device, with full logging both ways.