USBasp am Mac erkennt meine ATmega328P-Boards nicht: "could not find USB device"
Von English mit KI übersetzt ·
Wir bauen kleine RS-485-Sensorboards um einen nackten ATmega328P herum; sie hängen an einem Bus hinter einem Gateway, das sie an Hermetry meldet. Programmiert wird bisher immer an einem Linux-Rechner in der Werkstatt mit einem USBasp. Ich versuche, mein MacBook (M2, macOS 14) für Reparaturen vor Ort einzurichten, damit ich den Linux-Laptop nicht mitschleppen muss.avrdude über Homebrew installiert. Jeder Versuch schlägt so fehl:
$ avrdude -c usbasp -p m328p -U flash:w:rs485node.hex:i
avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'
avrdude: error: unable to open programmer usbasp on port usb
Der USBasp steckt in einem USB-C-auf-USB-A-Adapter. Derselbe Programmer funktioniert unter Linux. Brauche ich unter macOS einen Treiber? Alles, was ich online finde, stammt aus dem Jahr 2012.
We build small RS-485 sensor boards around a bare ATmega328P; they sit on a bus behind a gateway that reports them to Hermetry. Programming has always been done on a Linux box in the workshop with a USBasp. I’m trying to set up my MacBook (M2, macOS 14) for field fixes so I don’t have to carry the Linux laptop.
Installed avrdude via Homebrew. Every attempt:
$ avrdude -c usbasp -p m328p -U flash:w:rs485node.hex:i
avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'
avrdude: error: unable to open programmer usbasp on port usb
The USBasp is plugged into a USB-C to USB-A adapter. Same programmer works on Linux. Do I need a driver on macOS? Everything I find online is from 2012.
Von English mit KI übersetzt ·
Auf meinem Linux-Rechner funktioniert es ohne Weiteres, einen Mac habe ich nie ausprobiert.
Works out of the box on my Linux machine, never tried a Mac.
Von English mit KI übersetzt ·
Hast du schon die avrdude-Version ausprobiert, die mit der Arduino IDE mitgeliefert wird? Manchmal ist die Homebrew-Version seltsam.
Have you tried the avrdude that comes with the Arduino IDE? Sometimes the Homebrew build is odd.
Von English mit KI übersetzt ·
Gleicher Fehler mit avrdude der Arduino IDE.
Same error with the Arduino IDE’s avrdude.
Von English mit KI übersetzt ·
Wird er überhaupt unter USB in den Systeminformationen angezeigt?
Does it even show up in System Information under USB?
Von English mit KI übersetzt ·
Daniels Frage ist der richtige erste Schritt. Unter macOS wird kein Treiber benötigt: avrdude kommuniziert über libusb mit dem USBasp, und libusb wird mit Homebrew installiert. Wenn Systeminformationen > USB „USBasp“ gar nicht auflistet, liegt es am Adapter und nicht an avrdude. Ich hatte genau das bei zwei günstigen USB-C-Adaptern in unserem Werk: Der USBasp ist ein USB-Gerät mit niedriger Geschwindigkeit, dessen Firmware USB per Bit-Banging umsetzt, und manche USB-C-Adapter und Hubs erkennen solche Geräte nicht zuverlässig. Ein eigenständig versorgter USB-A-Hub zwischen Adapter und USBasp hat es bei mir behoben, ebenso ein anderer (Apple-)Adapter.Sobald das Gerät gefunden wird, ist der nächste Fehler bei neuen Chips wahrscheinlich dieser:
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: error: program enable: target does not answer (0x01)
Ein neuer 328P läuft ab Werk mit 1 MHz über den internen Oszillator, und der Standard-ISP-Takt ist dafür zu schnell. Den Takt verlangsamen:
avrdude -c usbasp -p m328p -B 32 -U lfuse:w:0xFF:m -U hfuse:w:0xDE:m -U efuse:w:0xFD:m
avrdude -c usbasp -p m328p -B 4 -U flash:w:rs485node.hex:i
(Diese Fuse-Werte gelten für einen externen 16-MHz-Quarz; prüfen Sie Ihren, bevor Sie sie schreiben.) Die Warnung „cannot set sck period“ stammt von der alten USBasp-Firmware und ist unbedenklich, solange -B funktioniert; bei älteren Versionen erledigt der Jumper für langsamen Takt dasselbe.
Daniel’s question is the right first step. No driver is needed on macOS, avrdude talks to the USBasp through libusb, which Homebrew installs with it. If System Information > USB doesn’t list „USBasp“ at all, it’s the adapter, not avrdude. I had exactly this with two cheap USB-C adapters at our plant: the USBasp is a low-speed USB device with the firmware bit-banging USB, and some USB-C adapters and hubs don’t enumerate those reliably. A powered USB-A hub between the adapter and the USBasp fixed it for me, so did a different (Apple) adapter.
Once it’s found, the next error you’ll probably meet on fresh chips is this:
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: error: program enable: target does not answer (0x01)
A new 328P runs at 1 MHz from the internal oscillator, and the default ISP clock is too fast for it. Slow it down:
avrdude -c usbasp -p m328p -B 32 -U lfuse:w:0xFF:m -U hfuse:w:0xDE:m -U efuse:w:0xFD:m
avrdude -c usbasp -p m328p -B 4 -U flash:w:rs485node.hex:i
(those fuses are for an external 16 MHz crystal, check yours before you write them). The „cannot set sck period“ warning is the old USBasp firmware talking, harmless as long as -B works; on older ones the slow-clock jumper does the same.
Von English mit KI übersetzt ·
Prüfe außerdem den 10-auf-6-poligen ISP-Adapter, falls du einen verwendest. Ich hatte einen, bei dem MISO und MOSI vertauscht waren; er funktionierte nur bei einem Boardtyp durch Zufall.
And check the 10-to-6 pin ISP adapter if you use one. I’ve had one with MISO and MOSI crossed that worked only by luck on one board type.
Von English mit KI übersetzt ·
Es lag am Adapter. Die Systeminformationen zeigten über meinen No-Name-USB-C-Dongle nichts an; über einen Hub mit eigener Stromversorgung wird „USBasp“ angezeigt und avrdude findet ihn. Gestern habe ich vier Boards vor Ort geflasht; das brandneue Ersatzboard brauchte genau -B 32, wie tsmith gesagt hat. Die Fuses waren bei den anderen bereits gesetzt. Der Linux-Laptop bleibt ab jetzt in der Werkstatt.
Adapter it was. System Information showed nothing through my no-name USB-C dongle; through a powered hub it shows „USBasp“ and avrdude finds it. Flashed four boards in the field yesterday, the brand-new spare board needed -B 32 exactly like tsmith said. Fuses were already set on the others. Linux laptop stays in the workshop now.
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.
Mitdiskutieren
Melde dich an, um Fragen zu stellen und zu beantworten, hilfreiche Beiträge mit „Gefällt mir“ zu markieren und die Antwort zu kennzeichnen, die dein Problem gelöst hat. Jeder Beitrag bringt Punkte und Stufen.

