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):

CH341SER_MAC-1.4

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

If you have problems with the driver using the latest OSX High Sierra please refer to the KB Article: https://support.apple.com/kb/HT208019

Thanks to Thomas B. for this hint.

I have not tried this by myself.

Have fun

142 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 (http://blog.sengotta.net/wp-content/uploads/2015/11/CH34x_Install.zip), 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/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Users/rudirahmadi/Desktop/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -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, http://www.bdmicro.com/
    Copyright (c) 2007-2009 Joerg Wunsch

    System wide configuration file is „/Users/rudirahmadi/Desktop/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf“
    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 http://www.arduino.cc/en/Guide/Troubleshooting#upload 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 http://pastebin.com/CwvK6WxK 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 https://www.simplicate.info/2016/09/16/ch340-drama-osx-10-12-sierra-16a313a/

  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 ch34x_Install_v1.3.zip , reboot the laptop to get the port.

    The serial port driver I installed was from :
    blog.sengotta.net/wp-content/uploads/2015/11/CH34x_Install_V1.3.zip

  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!
    THAT’S WORK!

    THANK YOU A LOT!

  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*
    gives
    /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

    usbserial:

    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: https://wincent.com/wiki/Uninstalling_packages_(.pkg_files)_on_Mac_OS_X

    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.
    Nope.
    Your driver „Winchiphead for their USB Serial bridge CH34“ works!!! (at least with blink).
    Heartfelt thx
    Manlio (Milan)

  23. CH341SER_MAC-1.4.zip + 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” -> http://arduino.esp8266.com/versions/2.2.0/package_esp8266com_index.json
    -> 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
    Robin

  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: https://blog.sengotta.net/signed-mac-os-driver-for-winchiphead-ch340-serial-bridge/#comment-40414
      Or try what Altais mentioned here: http://blog.sengotta.net/signed-mac-os-driver-for-winchiphead-ch340-serial-bridge/#comment-40735
      Also it would be helpful to have some kind of dmesg output etc. else it is only guessing.

  27. I installed High Sierra 10.13.4 and it dosn’t works.
    In February it worked with the previous (10.13.3) version.

    Does it already work with someone with 10.13.4?

      1. Okay guys, its kind of hard finding a solution for your problem, if the only info provided is : Its not working.
        Show us a log which shows what happens when you plugin your USB< ->Serial device and than we can see if we find out what the problem is.

  28. I had lots of problems with these boards until i found the ONE AND ONLY working USB-Cable. Looks like these chips are very picky about the cable you use. With this one cable all thought to be driver problems went away immediately, with my MKR1000 as well as the Wemos D1.
    So try all Micro-USB cables you have, the shorter, the better! Make sure they are designed not only for charging (2 wires connected) but also for data transfer (4 wires connected).

        1. Sorry but the log is not very useful. Seems that the driver was installed, that all you can see here. Thats why i asked for a log that shows what happens when you plug in a device with ch340g chipset.
          Also please try different USB cables. Many problems where cause by faulty USB Cables.

          1. I have now tried several USB cables. I can not find an entry in any logfile (install.log; system.log; * log).
            I do not know where to look?

  29. Hi. I’m a bit late to the party, but I can confirm that it worked on my MacBook Pro (2012) with OSX 10.11.6.
    Uploaded to a Chinuino Nano…

    1. Maybe you could provide some more information, so we could track down if it is maybe only a faulty cable like in 99% of the other cases.

  30. I have Mac OS 10.13.4. Driver does not work correctly. I see it in /dev/tty.wchusbserial1410 or /dev/tty.wchusbserial1420 depending where i put my cable. Now when using coolterm or minicom connected to network switch i see only bad symbols. Seems like the speed or flow control is something wrong. My cable and speed/flow control are perfect because i just unplug the cable and put in windows and voila all goes GOOD.
    Btw everything was working on Mac OS X too but on the previous version may be 10.13.3 i think before 2-3 months. Yes i tried removing driver all variants restarted. Installing again CH34x_Install_V1.4.pkg again restarted and result same. Bad terminal symbols in minicom. Also i allowed in gerneral/security installation from Everywhere. My device is CH340 compatible working just before 3 months very well.
    This happens when you plugin the device:
    https://pastebin.com/RCE12FNB

  31. macOS 10.13.4 has enhanced the security of newly installing third party Kernel Extensions (kext).
    See this page for details: https://support.apple.com/kb/HT208019 and especially the section „User Approved Kernel Extension Loading without MDM“

    Effectively, you will notice after installation instead of directly loading the .kext after reboot, it is necessary to go in to System Preferences -> Privacy & Security, and then in the panel „General“ at the bottom there will be a warning about the newly installed Kext as well as a button to „allow“ loading of the new kext.

    Click that button and after one more reboot (or kextload manually) and the driver should work again.

    1. I have the same situation.
      I also tried driver from https://www.mac-usb-serial.com/ and it is the same at least for me /not working/
      The strange thing is that i have vbox in macosx running guest windows xp and i can work there using the same
      driver. I also wrote to coolterm developer and minicom and they suggest that there are character enconding problems in the driver with latest macosX. Can anyone confirm this ?

      1. Being honest, i do not use 10.13 till now beacause of the horrible APFS which comes with it and the hilarious security issues Apple had with it.
        The quality of this piece of Software simply sucks.

  32. I have 10.13.6 (17G65) and my intent is to use it to connect with and control my NEJE.

    I have looked at several boards that denote how to do this, but have yet to Sherlock this thing.

    I have finally got the driver installed in the library/extensions/usbserial.kext, but it does not show in system/library/extensions.

  33. Thanks! This works for me on macOS High Sierra 10.13.6 with a Wemos / LOLIN D1 mini pro v2.0.0 with winchiphead 340c chipset. Only thing I don’t know is whether I now have a rootkit on my system :p

    The Winchiphead driver is available at http://www.wch.cn/downloads/CH341SER_MAC_ZIP.html now as well by the way. The file is identical as the one hosted here:
    MD5 (CH341SER_MAC-3/CH34x_Install_V1.4.pkg) = dda159afc59df245a492e77d8c9975ab
    MD5 (CH341SER_MAC-2/CH34x_Install_V1.4.pkg) = dda159afc59df245a492e77d8c9975ab

Schreibe einen Kommentar

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.