I’ve recently had the opportunity to purchase very cheap Arduino Uno R3 clones. I bought a few of these from china and wasn’t expecting much. To my surprise the boards came well packaged and well soldered. They even included headers to use for making shields.

Note: If you just want a quick tutorial to get your clone up and running and avoid story mode, scroll to the bottom.

So I thought great, lets hook this up and upload a sketch to test it out. Well no such luck. Plugged in the Arduino clone only to discover that it wasn’t recognized. Upon further investigation of the onboard components I discovered that the clone does not use the standard serial to usb chip but a chip marked CH340.

So the hunt begins to locate the driver. This took a good 30 min of searching. Finally found drivers for Mac, Linux and Windows, posted below for you to download.

So I downloaded the driver, installed it and rebooted my MBP. Plugged in the Arduino clone, yup you guessed it, still no port detected. By now I’m thinking that I received dead boards. So I did some more digging. Turns out that the driver isn’t signed and in Yosemite, driver files must be signed to be used. There’s a command we can issue to bypass this.

So after installing the driver, bypassing the signed driver check and restarting my MBP, I plugged the Arduino clone in and finally a port was detected, (/dev/tty.wch ch341 USB=>RS232 1410), wow that’s a mouthful for a port name. Ok, lets upload a sketch finally. Damn, still didn’t work now I get avrdude complaining that it can’t find /dev/tty.wch. Wait just a damn minute. Why is it trying to find tty.wch when the whole port name is tty.wch ch341 USB=>RS232 1410? Because there’s a damn space in the port name.. who does that? Ok so we can get around this by creating a symbolic link

sudo ln -s /dev/tty.wch\ ch341\ USB\=\>RS232\ 1410 /dev/tty.wch

And just like magic, the Arduino IDE is finally communicating with my super cheap Chinese Arduino clone. I am now motivated to purchase a larger batch.

Quick Tutorial

  1. Download Driver Files for your OS
  2. Install software but don’t restart yet.
  3. Launch Terminal
  4. sudo nvram boot-args=”kext-dev-mode=1″
  5. Restart your Mac
  6. Launch Terminal
  7. sudo ln -s /dev/tty.wch\ ch341\ USB\=\>RS232\ 1410 /dev/tty.wch

This should get you going. Any questions comments, go for it.

 

Be Sociable, Share!
The following two tabs change content below.
I've been in the Geek category for as long as I can remember. I am into anything technology and Sci-Fi related. I like tinkering with electronics as well as writing applications for Mac & iPhone.

59 Thoughts on “Chinese Arduinos with CH340 / CH341 Serial / USB Chip on OS X Yosemite

  1. Charlie on March 18, 2015 at 9:20 am said:

    Hi. I just purchased a CH340 driver for yosemetie from a netherlands company called mac-usb-serial. The driver is signed so you don’t have to turn off driver signing.

  2. Dikovsky on March 19, 2015 at 2:19 pm said:

    Thanks a lot! It’s finaly works on my MAc OSX 10.10 and Chinese clone of Arduino Uno!

    • No problem, glad you found the info useful.

      • dikovsky on March 22, 2015 at 2:18 pm said:

        When i try to install ports to my Macbook Pro (Y 10.10), and put this string to terminal “sudo ln -s /dev/tty.wch\ ch341\ USB\=\>RS232\ 1410 /dev/tty.wch” – Arduino IDE show this port, but still writing me same error.
        Problem was my Macbook detecting Uno name as “tty.wch ch341 USB=>RS232 fd120” instread 1410.
        My magic command in Terminal was:
        ln -s /dev/tty.wch\ ch341\ USB\=\>RS232\ fd120 /dev/tty.wch

        **Sorry for my English, I’m living in Ukraine.

        • Thanks for posting this. I forgot to mention in my post that there may be some variations in the name across slightly different chips.

          • hank on May 23, 2015 at 3:26 pm said:

            how do I find it, if I have a variation?

          • What do you mean by variation? And what is it that you are trying to find?

          • hank on May 23, 2015 at 7:25 pm said:

            sorry, I’m referring to your post on mar 22 at 4:06 PM as follows:
            “Thanks for posting this. I forgot to mention in my post that there may be some variations in the name across slightly different chips.”
            I think that may be my problem in getting my uno clone to work and I just need some direction as to how to ID the chip.

        • I followed all the steps but MBP just shows:
          avrdude: ser_open(): can’t open device “unknown”: No such file or directory

          any hints?

  3. Tom on May 4, 2015 at 6:23 am said:

    I’ve tried to install the CH341 driver so I can connect to an ESP8266, but no matter what I try, I can never get the driver to show up. I can’t see the extension in the /Library/Extensions folder and I don’t see it in /dev. I’m running 10.10.3. Thoughts/suggestions?

    • Did you do step 3 and 4? Launch Terminal and then type sudo nvram boot-args=”kext-dev-mode=1″ after installing the driver but before restarting the computer?

  4. Jonas Bülow on May 18, 2015 at 12:01 pm said:

    I’m running OS X 10.10.3 and the serial device did not show up after reboot (after step 5).

    The system report identifies my arduiono as:

    USB2.0-Serial:

    Product ID: 0x7523
    Vendor ID: 0x1a86
    Version: 2.54
    Speed: Up to 12 Mb/sec
    Location ID: 0x80110000 / 6
    Current Available (mA): 500
    Current Required (mA): Unknown (Device has not been configured)

    VendorID is the same as in the PDF coming with the CH341 driver.

  5. Jonas Bülow on May 19, 2015 at 12:29 pm said:

    Update: It worked if “restart” was replaced with turn off and turn on in step 5.

  6. Dario on May 30, 2015 at 11:48 pm said:

    The question by “hank” was very pertinent indeed. I have no luck here, no port showing up, I have been following the procedure strictly, tried both with restart or shut off and on. How can I see the peripherals that are present and eventually catch them up, if they have a name that is slightly different from that you mention, could you please put a note about that? Thanx! 😉

  7. thank you very much

  8. Your method works. Thanks a lot!

    However, I have one little problem: Every time I try to upload new program to the clone, sometimes it does not run the program unless I restart the clone.

    Any way to fix this problem? Oh and btw, your command:

    sudo nvram boot-args=”kext-dev-mode=1″

    only works for me if I remove the quotation marks

  9. Brad on June 18, 2015 at 4:38 pm said:

    I had a bit of trouble with this, but finally figured out what I was doing wrong. I had to start the Arduino IDE after the Nano was plugged in. Working like a champ now.
    Thanks for all the suggestions, couldn’t have done it without them.

  10. For OSX, Step 7 should be:

    7. sudo ln -s /dev/cu.wch\ ch341\ USB\=\>RS232\ 1420 /dev/cu.wch

    • Abby on June 26, 2015 at 1:43 pm said:

      I ran this command, how do I undo this and remove it from my /dev? It reappears every time I plug it in. I don’t think it helped.

      • You would issue the rm command. so it would look something like this:

        sudo rm /dev/try.wch

        You will be promoted for a password, once you enter the password and press enter the port will be removed

  11. Hi. I’m running OS X 10.10.3 (on Mac Pro, mid 2014) and made all this steps for my arduino uno clone like You said but the port doesn’t show up in the port-section of arduino. Any suggestions, why?

  12. Hello and thank you for posting :)

    I followed you instructions step by step, tried :

    – stop and start instead of reboot,
    – with and without quotes for nvram instructions,
    – changed usb port with Arduino soft shut down.

    I bought this one http://www.amazon.fr/gp/product/B00QPUEFNW?psc=1&redirect=true&ref_=oh_aui_detailpage_o04_s00 (same as your right ?)

    I’m trying to install this on a Yosemite MB Pro retina Mid 2012 and configured the arduino soft on :

    – Adruino Nano
    – ATmega 328
    – tty.wch ch341 USB=>RS232 1420

    But when I want to push the Blink exemple, I got

    avrdude: ser_open(): can’t open device “/dev/cu.wch”: No such file or directory
    ioctl(“TIOCMGET”): Inappropriate ioctl for device

    Do you have a hint ?

    Thank you in advance :)

    • I found a solution maybe this will help to understand what append and could be useful for other people (maybe also to have an Arduino software update?)

      Found here : http://forum.arduino.cc/index.php?topic=292284.0

      —–

      Hi guys!

      Considering you have correctly installed the CH340G driver, the problem is in the spaces of the device name.
      To fix that you have to manually edit two (2) txt files of the arduino installation.

      Go where you have installed it. In my case the path is:

      /Users/MY_USERNAME/Downloads/Arduino.app/Contents/Java/hardware/arduino/avr

      Inside this directory you can see files platform.txt & programmers.txt.

      Inside these files replace -P{serial.port} with “-P{serial.port}”.
      So you simply have to add the quotes.

      One occurrence is in the first file & two in the second.

      Restart your IDE and it will work! Enjoy!

  13. I found a solution maybe this will help to understand what append and could be useful for other people (maybe also to have an Arduino software update?)

    Found here : http://forum.arduino.cc/index.php?topic=292284.0

    —–

    Hi guys!

    Considering you have correctly installed the CH340G driver, the problem is in the spaces of the device name.
    To fix that you have to manually edit two (2) txt files of the arduino installation.

    Go where you have installed it. In my case the path is:

    /Users/MY_USERNAME/Downloads/Arduino.app/Contents/Java/hardware/arduino/avr

    Inside this directory you can see files platform.txt & programmers.txt.

    Inside these files replace -P{serial.port} with “-P{serial.port}”.
    So you simply have to add the quotes.

    One occurrence is in the first file & two in the second.

    Restart your IDE and it will work! Enjoy!

  14. How do I install this driver in Ubuntu Linux?

  15. The device arduino.app is looking for was slightly different for me. I had to do:

    sudo ln -s /dev/tty.wch\ ch341\ USB\=\>RS232\ 1410 /dev/cu.wch

  16. http://forum.arduino.cc/index.php?topic=292284.msg2229300#msg2229300

    the problem is in the spaces of the device name. To fix that you have to manually edit two (2) txt files of the arduino installation.

    Go where you have installed it. In my case the path is:

    /Users/MY_USERNAME/Downloads/Arduino.app/Contents/Java/hardware/arduino/avr

    Inside this directory you can see files platform.txt & programmers.txt.

    Inside these files replace -P{serial.port} with “-P{serial.port}”. So you simply have to add the quotes.

  17. There’s a problem with the quotes from the first terminal command when copying from this site. I’m guessing the blog’s CMS autoformats quotes (maybe try posting them as a code block?)

    For those having problems, delete the quotes and then add them manually.

    Thanks

    Roo

  18. I tried steps 1..7 but tty.wch does not appear under /dev. In System Info I have the following under: USB->Ser!
    USB2.0-Ser!:

    Product ID: 0x7523
    Vendor ID: 0x1a86
    Version: 2.54
    Location ID: 0x04300000

    What is supposed to appear under /Library/Extensions? I am using OSX El Capitan.

  19. Marcel on October 6, 2015 at 3:12 am said:

    Hello!

    I have the problem, i don’t connecting the “clon” Arduino with my Macbook Pro Retina (10.11 El Capitan)

    I done the instructions. But i don’t understand the “plug-in”.
    What is that? my last step was :
    sudo ln -s /dev/tty.wch\ ch341\ USB\=\>RS232\ 1410 /dev/tty.wch

    I trying that 9 once…

    Sorry for my bad English (i come from Germany)

  20. johntan86 on October 8, 2015 at 4:16 am said:

    After update my MAC into 10.11, CH341 driver cannot be use.
    Before I update my OSX, everything is fine. Can anyone solve it?

    • Thomas Kilian on October 28, 2015 at 12:11 pm said:

      I sent a mail to China and they told me that they are going to publish a signed driver soon. For now you’re in bad luck. El Capitan will not talk to El Cheapo :-(

  21. Andrea on October 8, 2015 at 7:00 am said:

    Does the ch340G driver also work with eclipse and the arduino plugin?

  22. Thomas Kilian on October 11, 2015 at 7:56 am said:

    The issue with the scrambled name has been fixed meanwhile. Someone on StackOverflow sent a mail to the manufacturer and it has been changed. Now the device is named /dev/tty.wchusbserialfd140 (or the like).

  23. VincentdeVries on October 12, 2015 at 5:53 am said:

    Top work like a charm, many thanks!

  24. dofhskgh on October 16, 2015 at 12:31 am said:

    Thanks it is working with XP also

  25. Jessey Montgomery on October 16, 2015 at 11:40 pm said:

    Hi, I’m new to this stuff and was wondering if you have directions for installing the windows driver for my Chinese nano? Your directions are for a Mac computer. Any help will be greatly appreciated.

  26. i have a mac and follow the instructions for installing the ch341 driver and when I finish, I look at the ports available to arduino and get port:”/dev/cu.wch ch341 USB=>RS232 620″

    and if I try to run
    ln -s /dev/tty.wch\ ch341\ USB\=\>RS232\ 1410 /dev/tty.wch

    I get
    ln: /dev/tty.wch: File exists
    I can’t get it to change RS232 620 to RS232 1410
    what am I doing wrong?

    • Thomas Kilian on November 7, 2015 at 4:13 pm said:

      The file already exists. Probably you have the new driver already and don’t need the ln command but use /dev/tty.wcn directly (not sure since I can not longer test with El Capitan). Else remove the /dev/tty.wcn prior to the ln command.

  27. Hey, I tried this on elcapitan (I am new to arduino) and had the same problems as other people, as a solution I thought I may as well get a VirtualBox set up on my mac, I have succesfully got elemental OS on the virtual box and am now trying to install the driver, any suggestions/help? I am aware that this was a post about mac but would love some help.

  28. maxwellson on November 4, 2015 at 11:22 pm said:

    I have OS 10.11 (El Capitan). I followed your instructions step by step but unfortunately it didn’t work out for me. It doesn’t see any ports except bluetooth one. I also did burn a bootloader through using an original one as ISP but it didn’t work out either. I think I got some bad ones( I paid 3 bucks). Also, does anyone know if the terminal command code has something problematic? Is there anyway to undo the commands ? thanks

    • How to install driver CH340 CH341 Arduino USB to RS232 TTL serial adapter on OSX El Capitan/Yosemite

      The installation driver CH340/CH340g/CH341 for the OSX El Capitan which is required to upload the sketches into Arduino/ATmega/ATtiny etc.

      To disable kext signing you will need to do this simple steps:
      – Reboot and press CMD+R immediately after reboot to enter in Recovery Mode
      – Open Terminal from Recovery mode
      – Run the command csrutil enable –without kext
      – Reboot
      – Install driver

      Watch this video
      https://www.youtube.com/watch?v=0zuRukW7o0A&index=2&list=LLQZF7UAabeuI-fbH5KP6QNA

      Works for me!

      • Thomas Kilian on December 6, 2015 at 6:28 am said:

        Hey, cool! I gave up hope and there’s already some dust on my board. But now I can use it again. Still having the hope to see a signed driver from wch.

        • Thomas Kilian on January 3, 2016 at 2:08 am said:

          Ever since I found that after 5 or so USB re-connections my Mac is powered down the hard way. The best was to see the grey screen reading “You need to power off…” but in other cases it was just like a lightning striking my machine. So, this driver in hack-mode is not really a good idea!

  29. Thomas Kilian on November 7, 2015 at 3:15 pm said:

    The Chinese are working on a solution but for now El Capitano refuses to talk to El Cheapo. Maybe this should be pointed out in the blog itself.

  30. Roland Buczyński on November 23, 2015 at 9:33 am said:

    i get avrdude: ser_open(): can’t open device “/dev/cu.wch”: No such file or directory error whet i try to upload

    i use this board http://www.ebay.com/itm/MINI-USB-Nano-V3-0-ATmega328P-CH340G-5V-16M-Micro-controller-board-Arduino-/161403910939?hash=item25946c3b1b:g:kEYAAOSwq7JT-wVU

    os x 10.11

  31. Alfonso Avila on December 6, 2015 at 11:15 pm said:

    Thanks for this very useful info ! Works perfectly fine ! Best regards from México !

  32. Any chance you can tell me how to use the UART CP2102 driver too? :)

  33. Dylan Hu on December 24, 2015 at 3:54 pm said:

    This is not working with my mac.

Leave a Reply

Post Navigation