A portable Windows COM/serial diagnostic terminal with live port detection, RX/TX logging, ASCII/HEX sending, loopback testing, auto-baud scanning, Modbus RTU probing, and built-in troubleshooting guidance.
- Overview
- Key Features
- Quick Start
- Usage
- Project Structure
- Tech Stack
- Building from Source
- Safety and Limitations
- Contributing
- License
SerialLink Doctor is a native Windows desktop tool built for technicians, embedded developers, controls engineers, and anyone diagnosing USB-to-serial adapters, RS-232 links, RS-485 devices, microcontroller UARTs, modems, or Modbus RTU equipment. It provides a comprehensive diagnostic workflow in a single, portable executable — no installer required.
- Live COM port detection — automatically discovers serial ports as devices are connected or removed
- Configurable serial parameters — baud rate, parity, stop bits, flow control, DTR, and RTS
- ASCII and HEX send modes — transmit data in either format with toggle flexibility
- RX/TX terminal logging — capture all sent and received data with timestamps
- Loopback testing — verify adapter and driver integrity by shorting TX to RX
- Auto-baud scanning — automatically detect the baud rate of connected devices (12 common rates)
- Modbus RTU probing — scan slave IDs 1–10 using Read Holding Registers (Function 03)
- Log export — save captured terminal output via
File > Export Log - Portable — single EXE, no installation, no admin rights required
Download SerialLink-Doctor.exe from the dist folder or releases page and double-click to run.
git clone https://github.com/Skynet-Pro-Plus/seriallink-doctor.git
cd seriallink-doctor
pip install -r requirements.txt
python main.py- Launch the app.
- Plug in a USB serial adapter or serial device.
- Select the COM port in the sidebar.
- Choose baud rate, parity, stop bits, flow control, DTR, and RTS as needed.
- Click Connect.
- Watch received data in the terminal.
- Send ASCII or HEX payloads from the send panel.
- Use
File > Export Logto save captured terminal output.
- Disconnect the serial adapter from external devices.
- Physically short TX to RX on the adapter.
- Connect to the COM port in SerialLink Doctor.
- Run
Tools > Loopback Test. - Confirm that transmitted bytes appear back as received bytes.
The auto-baud scanner sends AT\r\n as a trigger and treats any response as a likely baud match. It scans these rates: 9600, 19200, 38400, 115200, 57600, 4800, 2400, 1200, 230400, 460800, 921600, 74880.
The Modbus probe scans slave IDs 1–10 using Function 03 (Read Holding Registers) at start address 0, register count 2. Baud and parity are taken from the current settings bar.
seriallink-doctor/
├── main.py # Application entry point
├── app/
│ ├── main_window.py # Main window assembly
│ ├── widgets/ # GUI widget components
│ ├── auto_baud.py # Auto-baud scanning logic
│ ├── modbus_probe.py # Modbus RTU probing logic
│ └── utils/
│ └── settings.py # Settings load/save
├── requirements.txt # Runtime dependencies
├── build_windows.bat # Windows build script
├── SerialLink-Doctor.spec # PyInstaller spec
└── dist/ # Built executables
- Language: Python 3.10+
- GUI Framework: PySide6 (Qt 6)
- Serial Communication: pyserial
- Packaging: PyInstaller (single-file Windows EXE)
.\build_windows.batThe build script installs dependencies, cleans previous artifacts, and runs PyInstaller in one-file windowed mode. Output is dist\SerialLink-Doctor.exe.
- The app does not require administrator rights for normal COM port access.
- The app does not intentionally write to the Windows registry.
- Terminal sends occur only when the user sends data or runs a diagnostic tool.
- The Modbus probe does not write registers, but it does transmit read requests.
- Serial communication can affect connected equipment — use the tool only where probing is safe.
- Port metadata depends on what Windows and the device driver expose.
- Fork the repository.
- Create a feature branch (
git checkout -b feature/your-feature). - Commit your changes (
git commit -m 'Add your feature'). - Push to the branch (
git push origin feature/your-feature). - Open a Pull Request.
This project is licensed under the MIT License.