**Structure & Task** - **Auto-detects** the port (`/dev/serial/by-id/...`, then `ttyACM0` / `ttyUSB0`) - **Sends `log on`** on connect (no manual step) - **Adds `wall_time`** (UTC ISO timestamp) as the first column — better than `ms` alone for long runs - **`scripts/requirements.txt`** — `pip install -r scripts/requirements.txt` - **`scripts/dryer-logger.service`** — optional systemd unit for logging at boot **On the Pi (one-time setup)** ```bash git clone ~/voron-filament-dryer # or copy the repo over cd ~/voron-filament-dryer pip install -r scripts/requirements.txt sudo usermod -aG dialout $USER # then log out/in ``` **Manual run** ```bash # Interactive dashboard (set target, presets, fan, CSV logging) python3 scripts/capture_csv.py tui # Headless CSV capture only python3 scripts/capture_csv.py log # logs/dryer_YYYYMMDD_HHMMSS.csv ``` **TUI keys:** `0` idle · `t` target · `p` presets · `f` fan on · `F` fan off · `l` CSV log · `a` autotune · `r` stepresp · `:` command · `q` quit **Always-on logging** ```bash # Edit User/WorkingDirectory paths in scripts/dryer-logger.service if needed sudo cp scripts/dryer-logger.service /etc/systemd/system/ sudo systemctl enable --now dryer-logger.service ``` No firmware changes needed — the Arduino still streams `csv,...` every 2 s when logging is on. If the Pi and your PC both try to use the same USB cable, only one can hold the serial port at a time.