Good day! I'm trying to use my Arduino Uno as an ISP to program an ATTiny85. When I try to upload anything to the chip I'm getting "Bad CPU in executable" I've installed Rosetta 2 via home brew and confirmed that it's running. I've downloaded the latest version of Arduino IDE. Is there anything else I need to know in order to get this running
Hi @ashleykay8555. I'm going to ask you to provide the full verbose output from an upload attempt.
This procedure is not intended to solve the problem. The purpose is to gather more information.
Please do this:
- Select File > Preferences... (or Arduino IDE > Settings... for macOS users) from the Arduino IDE menus.
The "Preferences" dialog will open. - Uncheck the box next to Show verbose output during:
☑compile in the "Preferences" dialog. - Check the box next to Show verbose output during: ☐ upload.
- Click the "OK" button.
The "Preferences" dialog will close. - Attempt an upload, as you did before.
- Wait for the upload to fail.
- You will see an "Upload error: ..." notification at the bottom right corner of the Arduino IDE window. Click the "COPY ERROR MESSAGES" button on that notification.
- Open a reply here on this forum topic by clicking the "Reply" button.
- Click the
<CODE/>icon on the post composer toolbar.
This will add the forum's code block markup (```) to your reply to make sure the error messages are correctly formatted.
- Press the Ctrl+V keyboard shortcut (Command+V for macOS users).
This will paste the error output from the upload into the code block. - Move the cursor outside of the code block markup before you add any additional text to your reply.
- Click the "Reply" button to publish the post.
Thanks for the quick reply!
FQBN: attiny:avr:ATtinyX5:cpu=attiny85
Using board 'ATtinyX5' from platform in folder: /Users/ashleyfoster/Library/Arduino15/packages/attiny/hardware/avr/1.0.2
Using core 'arduino' from platform in folder: /Users/ashleyfoster/Library/Arduino15/packages/arduino/hardware/avr/1.8.6
Detecting libraries used...
/Users/ashleyfoster/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=attiny85 -DF_CPU=1000000L -DARDUINO=10607 -DARDUINO_attiny -DARDUINO_ARCH_AVR -I/Users/ashleyfoster/Library/Arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino -I/Users/ashleyfoster/Library/Arduino15/packages/attiny/hardware/avr/1.0.2/variants/tiny8 /Users/ashleyfoster/Library/Caches/arduino/sketches/8D77004C44DD0C04F86597E1BCA142C6/sketch/Blink.ino.cpp -o /dev/null
Generating function prototypes...
/Users/ashleyfoster/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=attiny85 -DF_CPU=1000000L -DARDUINO=10607 -DARDUINO_attiny -DARDUINO_ARCH_AVR -I/Users/ashleyfoster/Library/Arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino -I/Users/ashleyfoster/Library/Arduino15/packages/attiny/hardware/avr/1.0.2/variants/tiny8 /Users/ashleyfoster/Library/Caches/arduino/sketches/8D77004C44DD0C04F86597E1BCA142C6/sketch/Blink.ino.cpp -o /private/var/folders/rl/sz5p0gms2_7gnr2mshdshq780000gn/T/1085460065/sketch_merged.cpp
/Users/ashleyfoster/Library/Arduino15/packages/builtin/tools/ctags/5.8-arduino11/ctags -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives /private/var/folders/rl/sz5p0gms2_7gnr2mshdshq780000gn/T/1085460065/sketch_merged.cpp
Compiling sketch...
/Users/ashleyfoster/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=attiny85 -DF_CPU=1000000L -DARDUINO=10607 -DARDUINO_attiny -DARDUINO_ARCH_AVR -I/Users/ashleyfoster/Library/Arduino15/packages/arduino/hardware/avr/1.8.6/cores/arduino -I/Users/ashleyfoster/Library/Arduino15/packages/attiny/hardware/avr/1.0.2/variants/tiny8 /Users/ashleyfoster/Library/Caches/arduino/sketches/8D77004C44DD0C04F86597E1BCA142C6/sketch/Blink.ino.cpp -o /Users/ashleyfoster/Library/Caches/arduino/sketches/8D77004C44DD0C04F86597E1BCA142C6/sketch/Blink.ino.cpp.o
Compiling libraries...
Compiling core...
Using precompiled core: /Users/ashleyfoster/Library/Caches/arduino/cores/attiny_avr_ATtinyX5_cpu_attiny85,clock_internal1_cfb399df9fbd0fe8d92f45898e428128/core.a
Linking everything together...
/Users/ashleyfoster/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-gcc -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=attiny85 -o /Users/ashleyfoster/Library/Caches/arduino/sketches/8D77004C44DD0C04F86597E1BCA142C6/Blink.ino.elf /Users/ashleyfoster/Library/Caches/arduino/sketches/8D77004C44DD0C04F86597E1BCA142C6/sketch/Blink.ino.cpp.o /Users/ashleyfoster/Library/Caches/arduino/sketches/8D77004C44DD0C04F86597E1BCA142C6/../../cores/attiny_avr_ATtinyX5_cpu_attiny85,clock_internal1_cfb399df9fbd0fe8d92f45898e428128/core.a -L/Users/ashleyfoster/Library/Caches/arduino/sketches/8D77004C44DD0C04F86597E1BCA142C6 -lm
/Users/ashleyfoster/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 /Users/ashleyfoster/Library/Caches/arduino/sketches/8D77004C44DD0C04F86597E1BCA142C6/Blink.ino.elf /Users/ashleyfoster/Library/Caches/arduino/sketches/8D77004C44DD0C04F86597E1BCA142C6/Blink.ino.eep
/Users/ashleyfoster/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-objcopy -O ihex -R .eeprom /Users/ashleyfoster/Library/Caches/arduino/sketches/8D77004C44DD0C04F86597E1BCA142C6/Blink.ino.elf /Users/ashleyfoster/Library/Caches/arduino/sketches/8D77004C44DD0C04F86597E1BCA142C6/Blink.ino.hex
/Users/ashleyfoster/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-size -A /Users/ashleyfoster/Library/Caches/arduino/sketches/8D77004C44DD0C04F86597E1BCA142C6/Blink.ino.elf
Sketch uses 676 bytes (8%) of program storage space. Maximum is 8192 bytes.
Global variables use 9 bytes (1%) of dynamic memory, leaving 503 bytes for local variables. Maximum is 512 bytes.
"/Users/ashleyfoster/Library/Arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude" "-C/Users/ashleyfoster/Library/Arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf" -v -V -pattiny85 -cstk500v1 -P/dev/cu.usbmodem1101 -b19200 "-Uflash:w:/Users/ashleyfoster/Library/Caches/arduino/sketches/8D77004C44DD0C04F86597E1BCA142C6/Blink.ino.hex:i"
Failed programming: cannot execute upload tool: fork/exec /Users/ashleyfoster/Library/Arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude: bad CPU type in executable
The problem is that a very old version of the AVRDUDE upload tool is being used. Years ago, Arduino only distributed 32-bit builds of AVRDUDE. This was done because they were compatible with older 32-bit macOS machines as well as modern 64-bit machines. However, Apple dropped support for 32-bit applications in a later version of macOS. Arduino produced 64-bit macOS builds of AVRDUDE at that time, but only for the versions of AVRDUDE currently in use. Arduino did not retroactively produce 64-bit macOS builds of obsolete AVRDUDE versions.
It is not clear to me why this obsolete version of AVRDUDE is installed on your computer. I guess you installed some other obscure 3rd party boards platform that specifies it as a dependency.
Additionally, I don't understand why Arduino IDE selected this version of AVRDUDE, even though you surely also have a newer version installed. A contributing factor to this problem is the fact that you are using the David Mellis "attiny" platform to add support for the ATtiny85 to Arduino IDE. This platform doesn't specify in its configuration which version of AVRDUDE Arduino IDE should use, which leaves some room for Arduino IDE to select a suboptimal version. The David Mellis "attiny" platform has historical significance due to being a foundational 3rd party boards platform. However, it has not been maintained for the last decade and the community has since moved on to using the technically superior 3rd party ATTinyCore platform. I recommend you switch to using ATTinyCore. It does specify a modern version of AVRDUDE in its configuration, which will ensure Arduino IDE will use that compatible version.
You can follow the instructions here to install ATTinyCore:
After that, select Tools > Board > ATTinyCore > ATtiny25/45/85 (No bootloader) from the Arduino IDE menus, and also the appropriate configuration from the other submenus of Arduino IDE's Tools menu.
Then try programming your ATiny85 once again. Hopefully this time everything will work as expected.
I've set the url as noted in the installation steps. But when I go to the Board Manager and search for ATTinyCore, there's nothing. Are we sure this url is still available?
I'm getting a certificate error because the link is not secured. Is there a safe place to download the package? "Some indexes could not be updated. Get "https://drazzy.com/package_drazzy.com_index.json": tls: failed to verify certificate: x509: certificate has expired or is not yet valid: “drazzy.com” certificate is expired: http://drazzy.com/package_drazzy.com_index.json"
I am using a different url and I think it's the same board but not positive.
Here is the URL and some screen grabs. Like I said I am not sure if it is the sae as what you want but it sounds similar.
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
OK, that is unfortunate. I see a formal report about the problem has been submitted to the platform maintainer here (All the SpenceKonde/DrAzzy platforms use the same package index, so this problem affects all of them and renewing the SSL certificate will fix the problem for all of them at once):
As a workaround, please do this:
- Select File > Preferences... (or Arduino IDE > Settings... for macOS users) from the Arduino IDE menus.
The "Preferences" dialog will open. - Remove the
http://drazzy.com/package_drazzy.com_index.jsonURL from the "Additional Boards Manager URLs" field in the "Preferences" dialog - Enter the following URL into the "Additional Boards Manager URLs" field in the "Preferences" dialog:
https://raw.githubusercontent.com/SpenceKonde/ReleaseScripts/refs/heads/master/package_drazzy.com_index.json
If there are already Boards Manager URLs in the field, separate them with commas.- ⓘ This is the same file you get from the URL at the URL provided by the official installation instructions. This is just the URL of the source file maintained by SpenceKonde/DrAzzy in a GitHub repository they own. That source file is uploaded to the drazzy.com website. So there is no technical difference between the URLs other than the fact that the first is hosted on a website with an SSL certificate managed by SpencKonde (and thus subject to breaking whenever they forget to update the certificate before it expires), while the other is hosted on GitHub (and thus has an SSL certificate managed by a dedicated team of people at Microsoft who are definitely not going to allow it to expire).
- Click the "OK" button.
The "Preferences" dialog will close. - You will now see a "Downloading index: ..." notification at the bottom right corner of the IDE window. Wait for that notification to close.
- Select Tools > Board > Boards Manager... from the Arduino IDE menus to open the "Boards Manager" view in the left side panel.
- Find the "ATTinyCore" entry in the list of boards platforms.
- Click the "INSTALL" button at the bottom of the entry.
- Wait for the installation process to finish, as indicated by a notification at the bottom right corner of the Arduino IDE window:
Successfully installed platform ...
You should now see the boards of the installed platform under the Tools > Board > ATTinyCore menu in Arduino IDE.
You can try this link to the json file: https://raw.githubusercontent.com/SpenceKonde/ReleaseScripts/refs/heads/master/package_drazzy.com_index.json
It is the same file as on the drazzy website which is having security problems. I found this old discussion of the recurring problem. https://forum.arduino.cc/t/issue-accessing-http-drazzy-com-package-drazzy-com-index-json/1354916
Edit: Whoops, already answered by ptillisch, who is much more thorough at explaining and is faster typist than me.
Thank you so much for your help! I'm having the worst luck with this
I was able to get ATTinyCore as an installation option, however. Failed to install platform: 'ATTinyCore:1.5.2'. 2 UNKNOWN: Get "https://azduino.com/bin/micronucleus/micronucleus-cli-2.5-azd1-x86_64-apple-darwin.tar.bz2": dial tcp 3.218.2.136:443: connect: connection refused Confirmed I'm not able to navigate to this url via Safari either: https://azduino.com/bin/micronucleus/micronucleus-cli-2.5-azd1-x86_64-apple-darwin.tar.bz2.
Thanks but that didn't do the trick either. Fiddlesticks. ![]()
Well that’s a shame, it seems ATTinyCore has fallen into a state of disrepair. I don’t know what azduino dot com is, perhaps it is another DrAzzy server that is not up and running. Installing the core manually by unzipping the archive into the hardware folder may be your best bet. That is mentioned in the Installation link of the GitHub archive: https://github.com/SpenceKonde/ATTinyCore
Or wait to see if DrAzzy/SpenceKonde is able to repair the server and get certificates installed.
Or fork the repo and doctor it up to use GitHub as the server for all the tidbits of the core so everything is all served from one (unbroken) source. And then maintain the new fork for the rest of us. I would do that myself but I fear I would not have enough knowledge to maintain it adequately.
I'm planning on waiting to see if Drazzy updates their certificate.
Until them I'll have to keep prototyping my project with a Nano. Thanks for the recommendations!
Hi, just wanted to let you know the certificate for drazzy.com has been renewed and the AttinyCore now shows up in boards manager. However I'm still getting a similar error when trying to install: Failed to install platform: 'ATTinyCore:avr:1.5.2'.
Error: 2 UNKNOWN: Get "https://azduino.com/bin/micronucleus/micronucleus-cli-2.5-azd1b-x86_64-mingw32.zip": dial tcp 3.218.2.136:443: connectex: No connection could be made because the target machine actively refused it.
Hopefully this issue gets rectified soon.
Even more unfortunate! I actually did check this at the time I made my previous reply (because I remembered it was a additional failure point during previous incidents of unavailability of the ATTinyCore file hosting infrastructure), but it seems the azduino.com website SpenceKonde/DrAzzy operates has gone down since that time.
The workaround will be to manually download the micronucleus-cli-2.5-azd1-x86_64-apple-darwin.tar.bz2 from a copy made by the Internet Archive Wayback machine before the time when azduino.com went down. I'll provide instructions you can follow to do that:
- Click the following link:
https://web.archive.org/web/20251012082117/https://azduino.com/bin/micronucleus/micronucleus-cli-2.5-azd1-x86_64-apple-darwin.tar.bz2
Your web browser will start a file download. - Wait for the file download to finish.
- Use macOS Finder to copy the downloaded file to the folder at the following path on your hard drive:
/Users/ashleyfoster/Library/Arduino15/staging/packages
The Libraryfolder is hidden by default. You can make it visible by pressing the Command+Shift+. keyboard shortcut.
Now try installing ATTinyCore again using Boards Manager, just as you did before. Hopefully this time it will be successful.
ⓘ The reason this workaround works is because Arduino IDE stages the files it downloads in that /Users/ashleyfoster/Library/Arduino15/staging/packages folder. It always checks to see if the file is already present in that folder before downloading it from the Internet. If the file is present, and if its checksum matches the checksum specified in the platform's package index, Arduino IDE uses the existing file instead of wasting time making a redundant download. So when we manually place the necessary file in that folder, it allows Arduino IDE to skip trying to download it from the dead URL on azduino.com.
Hi @EH4472. You can work around this with a procedure similar to what I provided above. However, there are some differences since you are using Windows instead of macOS. I'll provide instructions for Windows users:
- Click the following link:
https://web.archive.org/web/20251012082117/https://azduino.com/bin/micronucleus/micronucleus-cli-2.5-azd1b-x86_64-mingw32.zip
Your web browser will start a file download. - Wait for the file download to finish.
- Use Windows File Explorer to copy the downloaded file to the folder at the following path on your hard drive:
(whereC:\Users\<username>\AppData\Local\Arduino15\staging\packages<username>is your Windows username)
If looking for it with your file manager or command line, note that the AppDatafolder is hidden by default. On Windows "File Explorer", you can make it visible by opening the "View" menu, then checking the box next to "☐ Hidden items".
Now try installing ATTinyCore again using Boards Manager, just as you did before. Hopefully this time it will be successful.



