doc/help/File-Transmission.md
Serial Studio can send files to a connected device using plain text, raw binary, or industry-standard transfer protocols (XMODEM, XMODEM-1K, YMODEM, ZMODEM). It's handy for uploading firmware, configuration files, scripts, or any other data to an embedded target over an active connection.
Availability. File transmission ships in the public release starting with version 4.0.0. The toolbar entry appears in commercial builds only; GPL builds compiled from source do not include it.
flowchart LR
File["Local File"] --> SS["Serial Studio"]
SS -->|Plain Text / Raw Binary| Dev["Connected Device"]
SS -->|XMODEM / YMODEM / ZMODEM| Dev
Dev -->|ACK / NAK / ZRPOS| SS
| Mode | Error detection | Block size | Pause/resume | Best for |
|---|---|---|---|---|
| Plain Text | None | Line-based | Yes | Human-readable config files, AT commands |
| Raw Binary | None | 64-8192 B | Yes | Simple binary uploads without protocol overhead |
| XMODEM | CRC-16 | 128 B | No | Legacy devices, small files |
| XMODEM-1K | CRC-16 | 1024 B | No | Legacy devices, larger files |
| YMODEM | CRC-16 | 1024 B | No | Files where the receiver needs the filename and size |
| ZMODEM | CRC-32 | 64-8192 B | Crash recovery | Large files, unreliable links, modern firmware loaders |
Open File Transmission from the dashboard taskbar, or from Start Menu → Tools → File Transmission, while a device connection is active. The dialog closes automatically if the connection drops.
Sends the file line by line as text. Each line is terminated with a newline. A good fit for sending scripts, AT command sequences, or configuration files to devices that process text input.
Configuration sets the transmission interval, the delay between consecutive lines (range and default in the Settings reference below). Raise it if the device needs time to process each line before accepting the next.
Behavior:
Sends the file in fixed-size binary blocks with no framing or error checking. Use this when the receiver expects raw bytes and handles its own integrity checks.
Configuration sets the block size and the transmission interval between blocks (ranges and defaults in the Settings reference below).
Behavior:
A classic byte-oriented protocol that sends data in 128-byte blocks with CRC-16 error detection. The receiver initiates the transfer by sending a C character to request CRC mode.
Configuration sets the timeout for receiver responses and the number of retry attempts per block on NAK or timeout (ranges and defaults in the Settings reference below).
Protocol flow:
C (CRC mode request).Notes:
Identical to XMODEM but uses 1,024-byte blocks instead of 128-byte, which cuts protocol overhead for larger files.
Configuration:
Extends XMODEM-1K with a metadata block that carries the filename and file size, so the receiver knows what it's getting before the data arrives.
Configuration:
Protocol flow:
Notes:
A streaming protocol that doesn't wait for per-block acknowledgment, which makes it much faster than XMODEM/YMODEM on high-latency or high-throughput links. It uses CRC-32 for stronger error detection and supports crash recovery.
Configuration sets the block size per data subpacket, the timeout for receiver responses, and the number of retry attempts on error (ranges and defaults in the Settings reference below).
Key features:
During an active transfer, the dialog shows:
The bottom section of the dialog has a scrollable activity log with timestamped events: block transmissions, acknowledgments, errors, retries, and completion status. It keeps the most recent 200 entries. Click Clear to reset it.
All settings are saved automatically and restored between sessions.
| Setting | Applies to | Range | Default |
|---|---|---|---|
| Transmission interval | Plain Text, Raw Binary | 0-10,000 ms | 100 ms |
| Block size | Raw Binary, ZMODEM | 64-8,192 bytes | 1,024 bytes |
| Timeout | XMODEM, XMODEM-1K, YMODEM, ZMODEM | 1,000-60,000 ms | 10,000 ms |
| Max retries | XMODEM, XMODEM-1K, YMODEM, ZMODEM | 1-100 | 10 |
--file-transmission flag exposes this dialog in runtime-mode builds.