Connecting to Serial (Console) Ports on macOS with the screen Utility: A Practical Guide

← Back to Blog

Short answer

To open a serial console on macOS with screen, find the adapter’s /dev/cu.* port and run screen <port> <baud-rate>, usually starting at 9600. If the console does not respond, verify the cable, selected port, speed, and flow-control settings before troubleshooting further.

Introduction

If you work with network or server hardware, sooner or later you have to connect to a console (RS-232) port through a USB-to-Serial cable. On macOS, the simplest built-in tool for that job is the command-line utility screen. It ships with the OS, runs in a regular Terminal window, and does not require any extra GUI tools.

In the CliDeck project we build a more convenient browser-based terminal with logging, automation, and multi-device workflows, but screen is still the baseline tool that exists on every Mac. This guide explains how to use screen properly: how to find the right /dev device, how to connect to a console port, which hotkeys matter, and how to debug typical problems.


1. What screen is and why it is useful for serial work

screen is a terminal multiplexer. It runs one or more shells inside itself and lets you:

  • keep multiple virtual “windows” in one Terminal;
  • keep sessions alive even if your SSH connection drops;
  • log output to files;
  • attach to serial ports as if they were normal TTY devices.

On macOS, screen is preinstalled. That makes it a convenient basic tool for emergency access to routers, switches, servers, and embedded boards over a console port, especially on systems where you cannot or do not want to install extra software.


2. Verifying screen on macOS

Open Terminal (Spotlight → type Terminal → Enter) and check the version:

screen --version

On a stock macOS you will usually see:

Screen version 4.00.03 (FAU) 23-Oct-06

This classic version:

  • supports horizontal splits (Ctrl+A then Shift+S);
  • does not provide vertical splits by default (those exist in newer GNU Screen builds installed via Homebrew or MacPorts).

For serial console tasks like “connect, configure, disconnect”, the built-in version is good enough.


3. Plugging in the USB-to-Serial cable and allowing access

3.1. The “Allow accessory to connect?” dialog

On Macs with Apple Silicon and recent macOS versions, each new USB accessory must be explicitly allowed.

After you plug in an FTDI/CP210x/CH340 cable you may see a dialog:

Allow accessory to connect? Do you want to connect “FTDI FT232R USB UART” to this Mac? Don’t Allow / Allow

You must click Allow. If you click Don’t Allow, the adapter:

  • may draw power,
  • but it will not appear as a serial device under /dev.

You can later adjust this behavior under System Settings → Privacy & Security → Allow accessories to connect.

3.2. Checking that macOS sees the adapter at all

To verify that the adapter is visible on the USB level:

  1. Hold Option and click the Apple menu → System Information…

  2. Under Hardware → USB, look for entries like:

    • FT232R USB UART (FTDI),
    • CP2102 USB to UART Bridge Controller (Silicon Labs),
    • USB-Serial Controller / CH340 (CH34x-based adapters),
    • or a device name from your adapter’s vendor.

If nothing appears there, the problem is physical (cable, port) or driver-related.


4. Finding the right /dev port

The main practical problem is not running screen, but finding the correct device name under /dev after you plug in the cable.

4.1. Minimal “before and after” method

  1. Open Terminal.

  2. Before plugging in the cable, list candidate ports:

    ls /dev/cu.*
    

    Save or remember the output.

  3. Plug in the USB-to-Serial adapter and click Allow in the dialog if it appears.

  4. Run the command again:

    ls /dev/cu.*
    
  5. Compare the two lists. The new line is your serial adapter.

Typical names on macOS:

  • /dev/cu.usbserial-A9H4CHBR – FTDI;
  • /dev/cu.SLAB_USBtoUART or /dev/cu.usbserial-0001 – CP210x;
  • /dev/cu.wchusbserial110 – CH340/CH341;
  • /dev/cu.usbmodem1101 – many CDC ACM devices and dev boards.

4.2. Exploring /dev directly

If you want to inspect /dev manually:

cd /dev
ls cu.*
ls tty.*
  • cu.* are “call-out” devices used for outgoing connections. These are what screen, Arduino IDE, and most tools use on macOS.
  • tty.* are the corresponding “call-in” side. For serial console work you normally stick to cu.*.

4.3. Using patterns and completion

Often it is enough to remember the pattern rather than the exact name. For example:

  • FTDI: cu.usbserial-*
  • CP210x: cu.*USBtoUART* or cu.usbserial*
  • CH340: cu.wchusbserial*

In the shell you can start typing and use tab completion:

screen /dev/cu.usbserial-<TAB> 9600

The shell will fill in the full device name.


5. Connecting to the console port with screen

5.1. Basic command

Most network devices ship with a default console setting of 9600 8N1. A typical connection command looks like:

screen /dev/cu.usbserial-A9H4CHBR 9600

Where:

  • /dev/cu.usbserial-A9H4CHBR is the device name you discovered in the previous step;
  • 9600 is the baud rate (change to 115200, 19200, etc. if your device uses a different speed).

If everything is correct, you should see the device prompt or a blank screen that responds when you press Enter.

5.2. Exiting screen cleanly

Do not just close the Terminal window. That can leave a background screen process attached to the port.

Proper exit sequence:

  1. Press Ctrl+A.
  2. Release both keys.
  3. Press \ (backslash).
  4. Confirm with y.

This kills all screen windows in the session and releases the serial device.

If you only want to close the current window inside screen, you can use Ctrl+A then k and confirm.


6. Useful screen hotkeys on macOS

In the stock macOS screen version 4.00.03, all hotkeys start with the escape key Ctrl+A. Press Ctrl+A, release, then the second key.

Key sequenceAction
Ctrl+A ?Show built-in help with all key bindings.
Ctrl+A cCreate a new window (new shell).
Ctrl+A n / Ctrl+A pNext / previous window.
Ctrl+A 0…Ctrl+A 9Switch to window 0–9.
Ctrl+A ARename current window.
Ctrl+A "List windows and select with arrows.
Ctrl+A dDetach: leave the session running in the background.
Ctrl+A r / screen -rReattach to a detached session.
Ctrl+A S (Shift+S)Split the screen horizontally into two regions.
Ctrl+A TabMove focus to the next region.
Ctrl+A XRemove the current region (unsplit).
Ctrl+A [Enter copy/scrollback mode.
Ctrl+A ]Paste from the copy buffer.
Ctrl+A hToggle logging to screenlog.0 in the current directory.
Ctrl+A kKill the current window.
Ctrl+A \Kill all windows and exit screen.

Note: vertical split (Ctrl+A |) is not available in the default macOS build; you only get horizontal splits.


7. Useful launch options

From screen --help on macOS, a few options are worth remembering for serial work:

  • screen -L /dev/cu.usbserial-A9H4CHBR 9600 Start with logging enabled. Output goes to screenlog.0.

  • screen -h 5000 /dev/cu.usbserial-A9H4CHBR 9600 Increase scrollback history to 5000 lines.

  • screen -S switch_console /dev/cu.usbserial-A9H4CHBR 9600 Start a session named switch_console so you can reattach to it later with screen -r switch_console.

  • screen -dmS switch_console /dev/cu.usbserial-A9H4CHBR 9600 Start as a detached background session; attach later from another terminal.

For most day-to-day tasks you only need the plain form:

screen /dev/cu.<your-port-name> 9600

Logging (-L) and larger history (-h) become useful when you are capturing install logs or debugging intermittent issues.


8. Problems and solutions

8.1. screen /dev/... 9600 immediately prints [screen is terminating]

Common causes:

  1. Wrong device name. Run:

    ls /dev/cu.*
    

    and make sure you use an exact, existing name.

  2. The adapter was not allowed. If you clicked Don’t Allow in the “Allow accessory to connect?” dialog, unplug and replug the cable, then click Allow.

  3. Missing or blocked driver. Some CP210x and CH34x adapters need vendor drivers on older macOS versions. After installing and allowing the driver under System Settings → Privacy & Security, the device will appear as /dev/cu.SLAB_USBtoUART or /dev/cu.wchusbserial*.

8.2. No /dev/cu.usbserial-*, /dev/cu.SLAB_USBtoUART, or /dev/cu.wchusbserial* at all

Step through:

  1. Confirm the cable is firmly connected on both sides.
  2. Check System Information → USB to see whether the adapter shows up there.
  3. Try another USB cable; many phone charging cables only carry power.
  4. For CP210x / CH34x: install the official driver and allow it in Privacy & Security.

If the adapter does not appear in System Information either, there is likely a hardware issue with the cable or port.

8.3. Garbage characters instead of readable text

Almost always this is the wrong baud rate or serial format.

  • Try 9600, then 115200, then other speeds your device may use.
  • Most network gear defaults to 9600 8N1; many microcontroller boards use 115200.

You cannot change the baud rate inside an existing screen session, so exit (Ctrl+A then \, y) and start again with a new speed.

8.4. screen seems “frozen”

If the Terminal does not seem to react:

  1. Try Ctrl+A then q to resume output (you may have accidentally hit Ctrl+A then s, which stops output).
  2. If the display is still broken, exit screen (Ctrl+A then \, y) and run reset in the Terminal.

9. When screen is not enough – and where CliDeck fits

screen remains useful because it is always there, it is lightweight, and it can talk to serial ports without any GUI. For quick single-device work it does the job well.

However, it has clear limits:

  • It is awkward with many devices in parallel.
  • Hotkeys and concepts like regions and windows are not intuitive for everyone.
  • Logging, auditing, and collaboration are bolted on, not first-class features.

CliDeck is built specifically to cover these gaps. It automatically discovers ports, applies correct connection parameters, opens console sessions directly in the browser, records logs and session history, and lets you work with multiple controllers and devices at once. For everyday engineering work screen becomes a fallback tool, while CliDeck serves as the main workspace where serial access, logging, automation, and collaboration are integrated into a single environment.


Conclusion

On macOS, the built-in GNU Screen 4.00.03 is a reliable low-level tool for serial console access. Once you know how to find the right /dev/cu.* device and how to exit a session cleanly, it gives you straightforward access to routers, switches, servers, and embedded boards through their console ports. For single-device tasks it is often faster to use screen than to install anything else, but for serious multi-device workflows, logging requirements, and team collaboration, a dedicated environment like CliDeck is significantly more powerful and convenient than raw screen sessions.

Who this is for

This guide is for network engineers, field technicians, remote hands, lab engineers, and system administrators who need to connect to, troubleshoot, log, or verify a serial console session on switches, routers, firewalls, appliances, servers, and other devices with console ports.

When to use this

Use this guide when:

  • You need direct console access to a switch, router, firewall, appliance, server, or lab device.
  • SSH or management-plane access is unavailable, unreliable, or not yet configured.
  • You need to troubleshoot a USB serial adapter, COM port, baud rate, or terminal session.

When not to use this

Do not use this guide when:

  • Do not use this guide as a substitute for vendor documentation, site policy, or a verified device-specific runbook when the operation is risky.
  • Do not continue if the console output suggests you are connected to the wrong device.

Quick checklist

  • Identify the device and console connector
  • Use the correct console cable or adapter
  • Find the correct serial port or COM port
  • Start with the expected baud rate and 8N1 settings
  • Press Enter to confirm the prompt
  • If output is unreadable, check baud rate and line settings
  • If the port will not open, check permissions, drivers, and whether another program is holding the port
  • Save useful session notes or logs when the work matters

Traditional cable vs CliDeck workflow

A traditional USB serial cable is still the simplest option for quick local work. CliDeck becomes useful when the console session needs browser access, notes, runbooks, sharing, logs, remote hands support, or a portable controller workflow.

Console Server Go can work like a wired USB serial adapter when connected by USB, but it also adds SSH Console on SSH-enabled firmware builds, browser Workspace, live sharing, 24h+ battery operation, OLED status, and magnetic rack mounting.

Workflow

  • Identify the device, connector, cable, adapter, and host operating system.
  • Find the correct serial port or COM port and confirm permissions or drivers.
  • Open the session with the expected baud rate and line settings, usually 8N1 unless documented otherwise.
  • Press Enter and verify the prompt before running commands.
  • Save notes or logs when the session supports a change, recovery, handoff, or evidence workflow.

Verification checklist

  • The detected serial port or COM port matches the connected adapter.
  • Baud rate, data bits, parity, stop bits, and flow control match the device expectation.
  • The terminal shows a readable prompt after pressing Enter.
  • No other terminal application is holding the port.
  • Useful notes or logs are saved when the work matters.

Common mistakes

  • Using the wrong cable or adapter for the console connector.
  • Opening the wrong COM port or /dev/cu.* device.
  • Assuming unreadable output means hardware failure before checking baud rate and 8N1 settings.
  • Leaving another terminal application attached to the port.

CliDeck workflow fit

A traditional USB serial cable is still the simplest option for quick local work. CliDeck becomes useful when the console session needs browser access, notes, runbooks, sharing, logs, remote hands support, or a portable controller workflow.

Console Server Go can work like a wired USB serial adapter when connected by USB, but it also adds SSH Console on SSH-enabled firmware builds, browser Workspace, live sharing, 24h+ battery operation, OLED status, and magnetic rack mounting.

FAQ

Is a USB serial cable still enough?

Yes, for simple local work where one engineer is sitting next to one device. CliDeck is more useful when the console session needs sharing, runbooks, browser Workspace, remote hands support, logs, or longer operational context.

What should I check first when serial output looks like garbage?

Check the baud rate, data bits, parity, stop bits, flow control, cable type, and whether the device is actually using the expected console port.

Can CliDeck help with serial console work?

Yes. CliDeck Workspace helps organize terminal sessions, notes, runbooks, and logs. Console Server Go adds portable rack-side access, and Net Controller supports larger batch workflows.

Related guides