Linux and OS X users can skip this section (although if you're a Linux user, make sure to read the Permissions on Linux section at the bottom of this page.) Windows requires a generic USB driver in order to communicate with the USBAsp. The driver will work on both 32 and 64 bit platforms. On Linux And Mac OS X no kernel driver is required, just use AVRdude and specify the correct port. The programmer will work with a wide variety of Atmel AVR microcontrollers including the Atmega8a and Atmega168a.

The CH340G USB-to-UART chip is used by a number of inexpensive development boards (e.g. WEMOS and LOLIN branded boards) and USB-to-serial adapters. It is manufactured by a Chinese company called WinChipHead or WCH (International web site, Chinese web site). Unfortunately, it often causes problems on macOS. This guide helps you resolve any problems you might have with the boards and adapters.

Windows 10 internet driver download

Like many USB-to-serial solutions, it requires a driver that creates the serial port when the board or adapter is plugged into a USB port of your Mac. Starting with macOS 10.14 Mojave, macOS provides suitable drivers out of the box, implemented by Apple itself. So no additional software is needed.

Main issues

Usbasp Mac Os X Driver

There are three main issues:

  1. Most boards only work for upload speeds / data rates up to 460,800 bps.
  2. Many users have additional drivers from WCH or Repleo installed, either from earlier macOS versions or because of obsolete tips and instructions on the internet. With the additional drivers, two serial ports will be created and one of them will be non-functional. Furthermore PlatformIO will no longer be able to automatically select the port.
  3. There are many forums and web pages with instructions how to install the WCH driver. Unfortunately, they are obsolete. While they were helpful back then, they now cause additional trouble.

Setup

Do not install any additional software for the CH340G if you are using the macOS 10.14 Mojave or later (including macOS Big Sur). macOS includes all the required components. Additional software will cause additional problems.

In your PlatformIO project, add the below line to platformio.ini and you should be ready to upload your sketch:

If you have an older macOS version and cannot upgrade to the latest version, you can download the driver from here.

Usbasp Mac Os X Driver

How to check for Apple drivers

macOS Catalina, macOS Big Sur and later:

should result in something like:

For macOS Mojave, check with ls -l /System/Library/Extensions.

How to check for other drivers

You can check for additional drivers by executing (in a terminal):

The output will look something like this:

The last entry usbserial.kext is the WCH driver. You should uninstall it (see below). The same would apply to the driver from Repleo. It’s called osx-ch341.kext.

If you can’t see any of these drivers, also check ls -l /System/Library/Extensions.

How to uninstall the WCH driver

To uninstall the driver:

  1. Unplug all boards/adapters with a CH340G chip
  2. Execute the following commands to first unload and then uninstall the driver:

If you remove the driver without first unloading it, you will have to reboot your Mac. If you stick to the order, no reboot is required.

If you want to remove a different driver or a driver in a different location, modify the command line, e.g.:

How to limit the upload speed

The CH340G and/or its driver do not reliably work with speeds of 921,600, yet that’s the default in PlatformIO for many boards. So the below line is required in platformio.ini:

Monitor speed is usually 115,200 and therefore does not need to be changed.

Checking for the serial port

When you plug in your board, the serial port should appear in /dev and have a name starting with ‘cu.’:

This is the list of all serial ports. /dev/cu.usbserial-1410 is the serial port created by Apple’s driver.

If the output however looks like so, there is a problem:

Two entries have been created for the same board because two drivers for the CH340G chip are installed. One of the ports will work, the other one will cause an error when a connection is attempted. The solution is to uninstall all non-Apple drivers (see above).

Troubleshooting

The general approach for troubleshooting is:

  1. Uninstall the WCH driver
  2. Limit the upload speed
  3. Reboot

Specific problems

Resource busy: ‘/dev/cu.usbserial-1410’

If a resource busy error, occurs, the selected serial port is most likely blocked by a second driver. Uninstalling the WCH driver or other non-Apple drivers (see above) should fix it.

Timed out waiting for packet content*

If a Timed out waiting for packet content error occurs, the upload speed is likely too high. Limit the upload speed (see above) to fix the issue.

Support this project:or send me something from my Amazon wishlist.

The following instructions are from early 2007and are pretty outdated by now. They are still here for reference, butthey are not maintained anymore and very likely won't work with recentversions of MacOS anymore.

After having developed software for the AVR under Windows andLinux the only major plattform missing was MacOS X. Since werecently got a Mini Mac in our home office i decided to builda working development chain for MacOS X as well.

This page will tell you all the Mac specific stuff.It will not cover the basics of AVR programming. Pleaselook e.g. here,here or just ask google.

A simple AVR development chain usually consists of the following parts:

Usbasp drivers windows 10
  • A compiler toolchain,
  • a hardware programming interface with
  • matching programming software and
  • a serial interface for debugging with
  • a terminal program.

The compiler toolchain

If you want a powerful, free and portable compiler for the AVRyou'll end up with gcc. Fortunately, gcc is supporting the AVR cpu forquite some time now and e.g. the WinAVR toolchain for AVRdevelopment under windows is based on this compiler. Many people havealready ported these compilers to MacOS X incl. the finkproject and others.Unfortunately i had either trouble getting some parts to installproperly (fink didn't offer to install all the required libs) or thecompilers were just outdated versions and a long time ago updated tothe latest gcc version. I therefore tried my install_avr_gcc.sh script that i amusing to achieve the same under linux. This script has the advantageof being easily updated to use the latest compiler. Furthermore itinstalls the entire toolchain into /usr/local/avr which keepsthe setup seperated and you can easily remove everything for yoursystem without a trace just by deleting the entire tree under/usr/local/avr.

In order to have the script run successfully you'll needto have some applications installed on your system. Firstof all this is the XCode developmentsuite. This is necessary since the installation scriptneeds the gcc that comes with XCode to build the mac portof the avr-gcc. Furthermore the wget, bisonand flex tools are required to build the toolchain.You can get these three from the fink project as well.

Once you have all this set up, just run install_avr_gcc.sh from the command line. The script willfirst download all source code required and then start to buildeverything. You can now take a break as this will take some time.

Once the script is done, your new compiler is installed. Type/usr/local/avr/bin/avr-gcc to test-run it.

A demo program

A simple demo application (led-blink.tgz) is available to test your setup. It was meant to be used with a Atmega8 CPU. Just untar the archive and type makeblinky.hex to compile it.

The hardware programmer

Most cheap AVR programmers are little more than a cable that directly attaches to a PCsprinter port. Unfortunately todays Macs don't come with thenecessary parallel printer port and a standardUSB-to-printer-converter cable only works with printers but not withthis kind of adapter cables.

There are commercial USB solutions for this problem, but these areusually quite expensive. Luckily Thomas Fischl has developed his usbasp, a cheap do it yourselfUSB programmer that works under windows, linux and under MacOS X.

The programming software

Usbasp comes with patches for avrdude. You'll need the avrdude sourcecode. Then apply the patches from usbasp. Recent versions ofavrdude even include usbasp support out of the box and you might nothave to patch them at all. The usbasp enabled version of avrdude usesthe libusb to access the usbasb hardware. I therefore installed libusb formacos from the finkproject. Since the avrdude configure script didn't find libusbunder /sw/lib and /sw/include i made two symboliclinks from /sw/include/usb.h to /usr/include/usb.hand from /sw/lib/libusb.a to/usr/lib/libusb.a. Avrdude compiled fine afterwards. To testyour installation with our led-blink example just connect the usbaspto your Mac (no AVR required yet) and type make program. Ifyou end up with avrdude complaining that it can't read the fuses ofyour target everything went fine, the toolchain is working, the usbaspinterface is fine and avrdude can access it. You can now startdeveloping AVR based devices under MacOS X.

Debugging via RS232

Most AVR programs do some basic debugging output via RS232. But anRS232 interface is also lacking on the latest Macs. A standardUSB-to-RS232 converter cable will do fine and you just have to makesure that there are MacOS X drivers available for your cable. The OS-X driver forPL2303 will e.g. work for plenty of these cables. Finally you'llneed some terminal software like e.g. ZTerm tocommunicate via rs232.

Working in Xcode

This AVR toolchain is usually being used from the commandline by invoking make. Hereare some instructions telling you how to run everything inside Xcode.

Usbasp Programmer Software

Download the installation script

The current version was last updated by Bram Daams on 05/28/06, download it here.

Links

  • Thomas Fischls usbasp interface
  • AVR programming software avrdude
  • A freeware terminal program named ZTerm