July 2, 2026By DaqSense R&D Team

Fixing CH340 USB Serial Drivers on macOS Sequoia and Sonoma

#Arduino#ESP32#macOS#CH340#Drivers

If a CH340 or CH341-based Arduino clone, ESP32 DevKit, or NodeMCU board does not show up on macOS, do not start by reinstalling random drivers. First find out which layer is failing.

There are three separate questions:

  1. Does macOS see a USB device at all?
  2. Does macOS expose that device as a serial port under /dev/cu.*?
  3. Can your application open the port?

The answer tells you whether you have a cable problem, a permission problem, a driver conflict, or a port-locking problem.

TL;DR

Run:

ls /dev/cu.*

Then plug in the board and run it again. If no new port appears:

  1. Try a known data-capable USB cable.
  2. Check Apple menu > About This Mac > More Info > System Report > USB.
  3. Approve the accessory in System Settings > Privacy & Security if prompted.
  4. Remove old CH34x kernel extensions if they conflict with modern macOS.
  5. Restart, then check /dev/cu.* again.

Step 1: Confirm the Board Is Visible in the USB Tree

Open System Information:

  1. Apple menu > About This Mac.
  2. Click More Info.
  3. Open System Report.
  4. Select USB in the sidebar.

Look for names such as:

  • USB2.0-Serial
  • USB-Serial Controller
  • CH340
  • CH341
  • A board-specific name from the manufacturer

Interpret the result:

System Information result Meaning Next step
No new USB device appears Cable, hub, board power, or dead board Change cable and plug directly into the Mac.
USB device appears, no /dev/cu.* port Driver or permission issue Continue with the steps below.
/dev/cu.* port appears Driver layer is working Check baud rate and port locking in your serial tool.

Step 2: Handle macOS Accessory Authorization

Modern macOS versions can block new USB accessories until the user approves them. This is especially easy to miss when using USB-C docks or when the prompt appears behind another window.

Open System Settings > Privacy & Security and look for the accessory connection setting. If macOS asks whether to allow the accessory to connect, approve it. For repeated bench work, set the accessory policy so devices can connect automatically while the Mac is unlocked.

After changing this setting:

  1. Unplug the board.
  2. Wait a few seconds.
  3. Plug it in directly, without a hub.
  4. Run ls /dev/cu.* again.

Step 3: Check for Legacy CH34x Driver Conflicts

Older macOS versions often required WCH’s CH34x driver package. Newer systems may already handle many USB serial devices, and stale third-party kernel extensions can cause confusing behavior.

Check for old CH34x kernel extensions:

kextstat | grep -i ch34

Also check the common old extension paths:

ls /Library/Extensions | grep -i -E 'ch34|usbserial'

If you find an old usbserial.kext installed from a previous CH340 driver package, remove it only if you know it belongs to the legacy driver you installed:

sudo rm -rf /Library/Extensions/usbserial.kext

Then restart the Mac. Avoid deleting system files from /System/Library/Extensions; modern macOS protects that area, and removing random system extensions is not a normal troubleshooting step.

Step 4: Install the Vendor Driver Only When Needed

If the board appears in the USB tree but macOS still does not create a serial port, install the official WCH macOS driver from the manufacturer rather than a mirror site.

After installing:

  1. Open System Settings > Privacy & Security.
  2. Approve any blocked system software message from the driver vendor.
  3. Restart.
  4. Plug the board directly into the Mac.
  5. Run:
ls /dev/cu.*

Expected examples include:

/dev/cu.wchusbserial110
/dev/cu.usbserial-110
/dev/cu.usbmodem1101

The exact suffix changes by computer and USB port.

Step 5: Verify the Port Opens

Once the port appears, close anything that might be using it: Arduino Serial Monitor, Serial Plotter, PlatformIO monitor, Python scripts, CoolTerm, and other serial tools.

Then open it from your preferred tool at the baud rate used in firmware:

Serial.begin(115200);

If the tool opens the port but output is unreadable, the CH340 driver is probably fine. You are likely looking at a baud-rate mismatch or boot message issue, which is a different problem.

CH340 macOS Troubleshooting Matrix

Symptom Likely cause Fix
Board powers on but no USB entry appears Charge-only cable or bad hub Use a known data cable and plug directly into the Mac.
USB entry appears but no /dev/cu.* port Permission or driver issue Check Privacy & Security, then vendor driver.
Port appears but app cannot open it Another app owns the port Close Serial Monitor and other serial tools.
Port appears and output is garbage Baud rate mismatch Match the app baud rate to Serial.begin(...).
Port vanishes during Wi-Fi use Brownout or weak USB power Remove sensor load or use a powered setup.

After the CH340 Port Works

Getting the port visible is only step one. If your next task is logging repeatable sensor runs, DaqSense can connect to the serial port, parse delimited rows, preserve raw logs, add derived formula columns, and record clean CSV files.

For thermistor work, the free Steinhart-Hart calculator can also help turn measured resistance points into coefficients before you start logging.