Signed Mac OS Driver for Winchiphead CH340 serial bridge

I just received a signed driver by Winchiphead for their USB Serial bridge CH340. Now it should be possible to use Arduino’s equipped with that without any problems under Mac OS 10.9 to mac OS 10.13 (High Sierra).

For High Sierra you must allow the driver to load in the Security & Privacy Settings you will be asked for it once you plug in a device with this serial chip, Thanks to Robin for this info.

Until it is available on the Winchiphead Website you can download the driver package here (Updated 11.01.2017):


Little hint that Altais posted in the comments if it does not work correctly. You can try copying the usbserial kext to the folder /System/Library/Extensions. Easiest way is the terminal here: sudo cp /Library/Extensions/usbserial.kext /System/Library/Extensions

I have not tried this by myself.

Have fun

117 thoughts to “Signed Mac OS Driver for Winchiphead CH340 serial bridge”

  1. Hi,

    Is there a safe way to remove this driver ?
    Is solely removing /Library/Extensions/usbserial.txt sufficient ?

    After installing the drivers i do get Kernel panics and there is no tty.wchusbserial in /dev

      1. No, always try to understand what i am running/executing on my mac. Already checked the Packageinfo in mykextdir.pkg for the files. Checked the dependencies with uninstallpkg, which confirms that removing /Library/Extensions/usbserial.kext was sufficient.

  2. Thanks, I have the CH340 signed driver working with Yosemite, and while CoolTerm sees the serial port and I see data when I use a loopback, this only works if I type slowly. If I type quickly, the chip appears to lock up and no more data is echoed. This happens at all baud rates from 300 to 230400bps. Do you have any idea what could cause this?

    1. Should be no differences if its an Hackintosh or nor. Did you had any previous Versions of this driver installed which you should remove first?

  3. Wunderbar 😉

    I’ve been struggling with other „said-to-be-working-on-yosemite“ CH34x drivers from all around the web, without success.

    Eventually found your page… Worked like a charm, on first attempt 🙂

    Vielen Größe Danke (or something like that…)

  4. Signed driver is not available anymore.
    Unsigned driver does not work with El Capitan 10.11.5, even with kext-signing disabled. (csrutil enable –without kext).
    ESP8266 with CH340 USBtoSerial is definitely not programmable with OS X 10.11.5.

    1. What do you mean by: Signed driver is not available anymore? You could download it here or on the Winchiphead Website.
      The unsigned drivers did not work even on 10.10.

      1. I think he means it simply does not work anymore. At least it does not for me and a friend of mine. We both have a rMBP 13″ with OSX 10.11.5 running. I’ve tried everything I found on the internet but I don’t get it to work. Is there somebody who managed to get it to work on 10.11.5?

  5. This isn’t working for me on 10.11.5 either. Are there simple instructions on how to best remove the driver package?

    It’s not showing up in my Applications folder but I see it when I list packages using „pkgutil“. It’s called com.wch.usbserial.pkg.

  6. Everybody only says that it is not working. Maybe someone could provide a debug log to see what happens when you plugin a device with a WCH bridge?

  7. For me this just worked perfectly fine.
    Just downloaded the driver from this web site (, unpacked it (unzip) and double click on the pkg (CH34x_Install.pkg), then rebooted, and I now see a /dev/cu.wchusbserial410 when I plug in my Chinese Nano clone, and I can successfully program it with the Arduino IDE.

    This is on MacOS X El Capitan, 10.11.5, on a MacBook Air 13-inch, Late 2010.

    1. Would be helpful if anybody which has a not working configuration would post a syslog etc. which shows what happens when you plugin an Arduino etc. with a CH340. There are no Magical Crystal balls which could tell us whats the problem.

  8. Anyone got this to work on OSX Sierra yet ??? I know Sierra is still beta but can NOT get serial to work at all – tried just about ANY driver under the sun – including from this blog. Looks like gonna have to roll back to El-Capitan 🙁

      1. Same question which i ask so often: Is there any kind of Syslog etc. which shows what happens when you plugin a device?
        How should such a problem be traced without any info?

  9. I tried this for hours but I can’t get it to work. The driver is correctly installed and the kext is loaded.
    dmesg output suggests that the driver is at least doing something, once I plug a board in:

    wch_usb start.
    1 0 wch_usb: configDMM – find the config interface numbers

    However, it hangs at that point. No serial device. I got it working once, but after that no luck. It’s very sporadic. Even the wch_usb_start output is not shown every time. In fact, the usb id of the device sometimes jumps in the system monitor. Sometimes it’s even not there at all. So you have to be lucky for the usb subsystem to see it _and_ for the driver to initialize it correctly, which almost never works.
    If I try plugging and unplugging the device long enough, dmesg comes up with a „permanent usb enumeration error“, after which the driver is completely silent and I have to reboot.

    I tried multiple boards, all with the same result. On a Windows box however, they all work flawlessly.

    Bottom line: At least on some mac hardware this chip is unusable

  10. i am using arduino nano n el capitan. after installing the driver, el capitan manage to recognise the nano at /dev/cu.wchusbserial1420 but when i try to upload the sketch i got :

    Arduino: 1.6.11 (Mac OS X), Board: „Arduino Nano, ATmega328“

    Sketch uses 1,042 bytes (3%) of program storage space. Maximum is 30,720 bytes.
    Global variables use 9 bytes (0%) of dynamic memory, leaving 2,039 bytes for local variables. Maximum is 2,048 bytes.
    /Users/rudirahmadi/Desktop/ -C/Users/rudirahmadi/Desktop/ -v -patmega328p -carduino -P/dev/cu.wchusbserial1420 -b57600 -D -Uflash:w:/var/folders/n2/r61l7hxs4mg2rznxcb4qw05m0000gn/T/build5edb31706df3d15d2d24f9876b49c432.tmp/Blink1_4.ino.hex:i

    avrdude: Version 6.0.1, compiled on Apr 14 2015 at 16:30:25
    Copyright (c) 2000-2005 Brian Dean,
    Copyright (c) 2007-2009 Joerg Wunsch

    System wide configuration file is „/Users/rudirahmadi/Desktop/“
    User configuration file is „/Users/rudirahmadi/.avrduderc“
    User configuration file does not exist or is not a regular file, skipping

    Using Port : /dev/cu.wchusbserial1420
    Using Programmer : arduino
    Overriding Baud Rate : 57600
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

    avrdude done. Thank you.

    Problem uploading to board. See for suggestions.

    This report would have more information with
    „Show verbose output during compilation“
    option enabled in File -> Preferences.

  11. It worked perfectly with my Prusa 3D printer using Arduino clone board under el Capitan. However with Sierra I get a kernel panic like this one right after inserting usb cable and it keeps rebooting will the usb cable plugged in.
    I tried to re-install the driver (had to ) and actually cannot make it shown with ls /dev/tty* anymore but it sits perfectly under cd /Library/Extensions/
    Look like it cause OS to panic when OS attempts to load it.
    What could possibly can be done and how can I help to figure out the cause of the problem?
    Also people report the same issue here

  12. Where can I get some help on Serial port“ that goes missing from my Arduino IDE 1.6.12, each time I remove the USB connector from my Mac OS installed with Sierra.
    I have to install the driver , reboot the laptop to get the port.

    The serial port driver I installed was from :

  13. I tried it on my macbook pro mid 2010 (with USB 2 !!) and it does´t work.
    OS X is el captain.
    The USB-Serial device is not shown with ls /dev/tty*

    1. Which device? What does the Console output (Syslog, Dmesg) output of OSX say?
      Its always a pain to resolve problems like this without proper information.

      Most time i only hear: It does not work.

  14. codesign –verify –verbose CH34x_Install_V1.3.pkg

    Sagt mir leider, dass der Treiber hier von der Webseite nicht signiert ist.

    Irgendwie geht mir Apple immer mehr auf den Keks.

    Ich habe meinen alten Windows Laptop auf Win10 aktualisiert und Windows konnte den Treiber selber finden und installieren. Irgendwie habe ich das Gefühl, das MACs immer zu Hippstergeräten verkommen. Eine Touchbar für schnelleren Zugriff auf Smilies? Aber vernünftige HW-Entwicklung ist nicht mehr möglich.

    Vll. sollte ich meinen Apple verkaufen, die Gebrauchtpreise sind ja dank des Flops der letzten Keynote gut gestiegen.

    1. Das Installationspaket ist nicht signiert, aber darum geht es hier auch garnicht. Was wichtig ist, ist das der Treiber signiert ist, und dies ist der Fall.

      Nachprüfen kann man das nach der Installation unter „Über diesen Mac“->Systembericht->Software->Erweiterungen->usbserial.

      Wäre der Treiber nicht signiert dann würde er auch nicht funktionieren.

  15. Hello

    Is there a way to change the name /dev/cu.wchusbserial410 to /dev/cu.usbserial1410 as Simulink does not accept port names that don’t start with cu.usb?

  16. Hi Bjoern
    It even helped me to use EODB facilite app for checking engine using ELM USB.
    That’s AWESOME!!!

    I was hardly tied and even lost any hope to find solution to enable USB-Serial driver for my Mac Sierra… and viola!


  17. I’m using Sierra (10.12.3).

    I downloaded the drivers, double clicked on the package installer, everything said the install went find and I should restart. I did so.

    %ls /dev/tty*
    shows many many ttys, but none of them are the winchiphead one;

    % ls /dev/ttyw*
    /dev/ttyw0 /dev/ttyw4 /dev/ttyw8 /dev/ttywc
    /dev/ttyw1 /dev/ttyw5 /dev/ttyw9 /dev/ttywd
    /dev/ttyw2 /dev/ttyw6 /dev/ttywa /dev/ttywe
    /dev/ttyw3 /dev/ttyw7 /dev/ttywb /dev/ttywf

    System Report…Hardware…USB shows a USB 3.0 bus, with
    Bluetooth USB Host Controller
    USB Optical Mouse
    CS2102 USB to UART Bridge Controller

    and nothing else.

    It does appear that SOMEthing has happened, though, for under Software…Extensions there is something called „usbserial“ for which it says


    Version: 1.1.1
    Last Modified: 8/16/16, 3:28 AM
    Bundle ID: com.wch.usbserial
    Loaded: No
    Obtained from: Identified Developer
    Kind: Intel
    Architectures: x86_64
    64-Bit (Intel): Yes
    Location: /Library/Extensions/usbserial.kext
    Kext Version: 1
    Loadable: Yes
    Dependencies: Satisfied
    Signed by: Developer ID Application: Jiangsu Qinheng Co., Ltd. (X9BL5JJAZJ), Developer ID Certification Authority, Apple Root CA

    Nonetheless, even with a USB cord plugged into my HiLetGo NodeMCU device, the Arduino software, under Tools…Port has „Serial Ports“ greyed out, and /dev/cu.Bluetooth-Incoming-Port as the only available port.

    Any thoughts? Anything I can do at my end to help diagnose this?

    Thanks in advance for any suggestions you can make.

    1. It turns out to be moot. The NodeMCU board I’m using (from HiLetGo) actually uses a 2102 chip rather than one of the CH340-series chips; once I installed that driver, all went well.

  18. arduino nano with ch340 it works fine but
    when plug the arduino mega with ch340 timeout problem or/then Sierra OS restart.
    it doesn’t works.
    test with
    macbook pro sierra mac os 10.12.4

  19. Upgraded to Sierra and previously well-behaved Wemos D1 mini (clone?) caused panic shutdown when plugged in to USB. Disabled usbserial.kext, which stopped the panic, but lost com port to Wemos until this driver. Danke!

      1. Embarrassing – just realized I was using a power only USB cable with no data wires. Changed cable, and voila. Worked 🙂 Feel kinda stupid, as I’ve spent hours trying to solve the issue, only to find there wasn’t an issue, just wrong cable…

  20. Thank!
    Worked on my MacBook with 10.11.6 and „NodeMCU V3 ESP8266 ESP-12 E Lua CH340“
    I had to set in Arduino IDE the Reset Method to nodemcu (in Tools) instead of ck and then works.
    Shows in the statusbar:
    Generic ESP8266 Module, 80 MHz, 40 MHz, DIO, 115200, 512K (64K SPIFFS), nodemcu, Disabled, Node on /dev/cu.wchusbserial620

  21. Thank you!
    On Sierra 10.12.5 (16F73) on my MacBook Pro (Retina, 15-inch, Late 2013) (MacBookPro11,3) the v1.3 driver kernel panics.

    The v1.4 driver works perfectly with my Wemos D1 Mini (ESP8266)!
    Shows up as /dev/tty.wchusbserial1410 and /dev/tty.wchusbserial1420

    Uninstalled the old package using guide here:

    pkgutil –pkgs
    pkgutil –files com.wch.usbserial
    (remove usbserial.kext from /Library/Extensions)
    pkgutil –forget com.wch.usbserial

  22. Thx Bjoern, I was struggling the whole afternoon with my new ESP8266 12E rev2, mounted on Mac Air + Sierra.
    Your driver „Winchiphead for their USB Serial bridge CH34“ works!!! (at least with blink).
    Heartfelt thx
    Manlio (Milan)

  23. + Arduino 1.8.5 + Witty Cloud + „High Sierra“ confirmed.

    It works like a charm on macOS 10.13. I tried it with „2017 MacBook Pro“ and „Mid 2011 iMac Intel i5“

    The driver requires a restart of the mac once it is installed (*.pkg)
    I installed the Arduino IDE 2nd. Once I connected the ESP8266 12F (Witty Cloud) I got a PopUp from “High Sierra” -> System Extension blocked.

    I had to go to Sytem Preferences->Security & Privacy->General and “Allow” the Software from “Jiangsu Qinheng Co.,Ltd.” to be loaded.

    After some Setup in Arduino …
    -> “Additional Board Manager” ->
    -> Insert esp8266 2.2.0
    -> Board “WeMos D1 R2 & mini”, 80MHz, 4M (3M SPIFFS), 115200
    -> Port: “/dev/cu.wchusbserial20”
    … I instantly got the VID and PID BoardInfo.

    Since I already installed the esp8266com_index, I had my esp “blink examples” and was able to Upload Software and was also able to track the Serial Data on the ArduinoMonitor (Shift+Command+M)
    I needed to adjust the speed in the Monitor, needs to be equal to the „Serial.begin()“ value, but I guess you all know that, though I post it anyway. I set both (Monitor and Serial) to the programming speed of 115200 baud.

    Thanks a lot for sharing the download link !!
    Best Regards

  24. Hi! Thanks for the link! The driver works on MBUnibody 2010 with El Capitan 10.11.4. … with some tinkering!
    Let me explain: The driver installer puts the usbserial.kext file into Library/Extensions/ which did not work for me (no errors/no results). Since it doesn’t allow you to correct the installation folder in the installer, I had to find the file in Finder, then copy it to System/Library/Extensions/, then restart. After this, the serial driver appeared in System Report under the USB section, and I successfully uploaded my first sketch to the Arduino UNO clone.

  25. Hi. I have installed the driver on my MacBook pro with el captitan. I’m trying to engrave usomg the dbeam app. The engraving machine connects to dbeam but when I start the engraving nothing happens . In the apps data log it says the engraving has started but it isnt actually engraving. Can anyone help?

    1. Delete previous Versions of the driver and check the cable. In some cases people used faulte USB cables, or cables where the data lines were not connected.

  26. I’ve tried four time..
    First delete usbserial.kext (/System/Library/Extensions/“)
    Download e install CH341SER_MAC and reboot
    But no way to find my nodemMCU
    What can i do?

    1. First check the cable. Many problems here were cause by faulty USB cables.
      Second do an complete uninstall of the driver like Mike mentioned it here:
      Or try what Altais mentioned here:
      Also it would be helpful to have some kind of dmesg output etc. else it is only guessing.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.