Olimex make a wide range of handy inexpensive products. One of these is the AVR-ISP500, an USB hosted in-circuit programmer for AVR microcontrollers. I was keen to use one of these to program ATmega 168 chips to make my own Arduino-like projects.
Whilst the programmer worked perfectly on my Linux box, it sadly failed on my MacBook Pro, which runs OS 10.5.6. I emailed Olimex about this, and they provided a fix almost immediately—I emailed them on Saturday and had the fix on Monday. In short, you simply need to update the firmware to version 1.005.
Thanks and much qudos to Olimex for fixing this so quickly.
Symptoms of the problem
If things are working properly, then when you connect the device to the USB port a device should be created in /dev. On my MacBook Pro (after applying the fix) I see
$ ls /dev/cu.usb* /dev/cu.usbmodemfd1131
However with firmware 1.004 the Mac doesn't create the device. Instead, I find the following entries in the system log:
$ sudo dmesg ... 0 0 AppleUSBCDCACMControl: getFunctionalDescriptors - Descriptors are incorrect, checking... AppleUSBCDCACMData: start: InterfaceMappings dictionary not found for this device. Assume CDC Device... 0 0 AppleUSBCDCACMData: start - Find CDC driver failed ...
If you poke around in the Apple System Profiler then the device is found on the USB bus, so it's clear that there's some sort of compatibility problem.
How to fix it
Simply download the new firmware and apply it. Both the firmware and the manual can be found on the the Olimex website.
The manual describes in detail how to apply the upgrade from Windows, so that's what I did. The hardest part of the job is installing the Windows drivers, and trying not to curse at the horrors of using Windows again.
The whole process took about ten minutes.
When it's fixed
Having upgraded the firmware, just plug it back into the Mac. The system log now shows:
$ sudo dmesg ... AppleUSBCDCACMData: start: InterfaceMappings dictionary not found for this device. Assume CDC Device... AppleUSBCDC::createSerialStream NON WAN CDC Device AppleUSBCDC::createSerialStream using default naming and suffix... AppleUSBCDCACMData: Version number - 3.2.12, Input buffers 8, Output buffers 16 ...
Furthermore you really will find an entry in /dev which is just what e.g. avrdude needs.