What you're seeing
You pick Serial, click Open, and get a "PuTTY Fatal Error" dialog. The exact wording matters, because each variant has its own cause:
Unable to open connection to COM1
Unable to open serial portUnable to open serial port
Error 5: Access is deniedUnable to open serial port
Error 31: A device attached to the system is not functioningA fourth variant hits after the port opens: the session dies mid-use with Error reading from serial device. The behavior is identical on Windows 10 and Windows 11.
What's causing this error
PuTTY asks Windows for exclusive access to the COM port. Each message is Windows' answer:
- Plain
Unable to open serial port, usually on COM1. The port you typed doesn't exist. Almost no modern PC has a real COM1; a USB-to-serial adapter gets assigned COM3 or higher, and PuTTY's default of COM1 points at nothing. Error 5: Access is denied. The port exists but something else has it open. Serial ports are exclusive: one program at a time. The Arduino IDE's serial monitor is the classic culprit, followed by a forgotten PuTTY window, a flashing tool, or a VS Code serial extension. Less often, PuTTY needs to run as Administrator.Error 31orError reading from serial device. Driver trouble. Cheap adapters built on CH340 or CP210x chips need their vendor driver installed, and counterfeit FTDI chips are notorious for failing with the official FTDI driver.- The COM number changed under you. Unplugging and replugging the adapter (or moving it to another USB port) can make Windows re-enumerate it to a new number.
- The session itself is misconfigured. Connection type must be Serial, and the speed must match the device on the other end.
How to fix it
Step 1: Find the real COM number
Open Device Manager (press Win+X, then M) and expand Ports (COM & LPT). Your adapter shows up like USB-SERIAL CH340 (COM4). That number in parentheses is what goes in PuTTY. Or list ports from PowerShell:
Get-CimInstance Win32_SerialPort | Select-Object Name, DeviceIDIf no Ports section exists, or your adapter sits under "Other devices" with a warning icon, the driver is missing. Jump to step 4.
Step 2: Configure the PuTTY session correctly
On the Session screen:
- Connection type: Serial
- Serial line: the COM number from step 1, e.g.
COM4 - Speed: whatever the device expects.
9600for most Cisco and other network gear consoles,115200for most modern boards (ESP32, Raspberry Pi UART, many routers). Check the device docs.
Under Connection > Serial, the defaults (8 data bits, 1 stop bit, no parity) fit nearly everything. If output stalls, set Flow control to None.
Step 3: Clear Error 5 by releasing the port
Close whatever else is talking to the port:
- Arduino IDE: close the Serial Monitor and Serial Plotter (uploading a sketch also grabs the port briefly)
- Other PuTTY, TeraTerm, or HyperTerminal windows
- VS Code serial monitor extensions, PlatformIO monitors, ESP flashing tools
Then retry. If nothing obvious holds the port, unplug the adapter for a few seconds and plug it back in (re-check the COM number afterwards, per step 1). Still denied with the port genuinely free? Right-click PuTTY and Run as administrator.
Step 4: Fix Error 31 with the right driver
Error 31 and Error reading from serial device are the driver telling Windows it's broken. Identify the chip on your adapter and install its driver:
- CH340/CH341 (most cheap Arduino clones and adapters): WCH's CH341SER driver
- CP210x (many ESP dev boards): Silicon Labs VCP driver
- FTDI FT232: FTDI's VCP driver
One warning on FTDI: counterfeit FT232 chips are common in low-cost cables, and the official driver deliberately refuses to work with them (older versions even soft-bricked clones). If a supposed FTDI cable throws Error 31 with the current driver installed, the chip is likely fake. A CH340 or CP210x adapter costs a few dollars and just works.
After installing, replug the adapter and confirm it appears cleanly under Ports (COM & LPT).
Step 5: Connected but the screen is blank?
Then the error is gone: the port opened. A black window usually means the device is quietly waiting. Press Enter a couple of times. If you get garbage characters instead, the speed is wrong; go back to step 2. Still nothing: check the cabling (console cables cross RX/TX; a straight cable shows nothing at all).
Common edge cases
| Situation | What's actually wrong |
|---|---|
Worked yesterday, Unable to open serial port today | Windows re-enumerated the adapter after a replug or USB port change. Check Device Manager for the new COM number |
| Error 5 right after closing the other program | Windows can take a moment to release the port. Wait a second and retry, or replug the adapter |
| Two adapters plugged in, wrong device answers | Each adapter gets its own COM number. Unplug one, note which number disappears |
Session opens, then drops with Error reading from serial device | Flaky USB cable or hub, or the counterfeit-FTDI problem from step 4. Connect the adapter directly to the PC |
Garbage characters like xxx?~? | Baud rate mismatch. Match the Speed field to the device (try 9600, then 115200) |
| On Ubuntu/Linux instead of Windows | The serial line is a device path like /dev/ttyUSB0, not COMx. Permission denied there means your user isn't in the dialout group: sudo usermod -aG dialout $USER, then log out and back in |
| PuTTY itself misbehaves on a new Windows 11 machine | Separate problem; see PuTTY not working on Windows 11 |