IDE 1.8.19 Step by Step, screenshot for screenshot manual for manually installing the ATTinyCore

Hi Everybody,

this step by step guide is based on information given by user @ptillisch.
This means the most fame belongs to him.

This post was made because there was a small typo in user @ptillisch workaround for manually installing the ATTinyCore. In Post # 3 is the corrected version you can lookup the original text by unfolding the details

I have tried to follow this thread to get a ATTiny85-core installed but it did not work!
2.2.1 board manager, download additional boards

One reason might be that I am using a portable installation of the Arduino IDE 1.18.19

This thread does

NOT

show all steps with screenshots and it does not explain enough details so I could analyse what steps I might have done wrong

So my question is if somebody would take the effort to create such a step by step screenshot for screenshot manual that shows each and every detail of the process how to install a core manually.

The alternative is to answer questions of what I might have done wrong in the process with me describing it in this way: step by step screenshot for screenshot.

best regards Stefan

post #2 did show what I have done to try to install it which enabled that user @hmeijdam could point on what was wrong. Again if you want to lookup the details unfold

What I have done so far is:
donwloading this zipfile
micronucleus-cli-2.5-azd1b-x86_64-mingw32.zip
and storing it in this subfolder of my portable installation
C:\Arduino-Pure-Portable\arduino-1.8.19\portable\staging\packages

added this additional Board URL in the prefrences
http_://drazzy.com/package_drazzy.com_index.json (added the "_" that it is shown as pure text instead of a link
http://drazzy.com/package_drazzy.com_index.json

closed my portable Arduino-IDE and restarted new

Then under tools (in german Werkzeuge) started the Board-Manager


letting do the boardmanager load all indexfiles

entered "ATtiny" for filtering the boards
and here start the problems
which core is the right one??

I have chosen
ATTinyCore by Spence Konde

and tried to install
as you can see from the screenshot below

The same error occured

It seems that the Arduino-IDE tried to download the file instead of using the already downloaded file in the folder
C:\Arduino-Pure-Portable\arduino-1.8.19\portable\staging\packages

especially @ptillisch
So what step did I do wrong that it did not work?

best regards Stefan#

edit here is the log of trying to install it

 Fehler beim Herunterladen von https://azduino.com/bin/micronucleus/micronucleus-cli-2.5-azd1b-i686-mingw32.zip
java.lang.RuntimeException: java.lang.Exception: Fehler beim Herunterladen von https://azduino.com/bin/micronucleus/micronucleus-cli-2.5-azd1b-i686-mingw32.zip
	at cc.arduino.contributions.packages.ui.ContributionManagerUI.lambda$onInstallPressed$2(ContributionManagerUI.java:179)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.Exception: Fehler beim Herunterladen von https://azduino.com/bin/micronucleus/micronucleus-cli-2.5-azd1b-i686-mingw32.zip
	at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:145)
	at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:79)
	at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:56)
	at cc.arduino.contributions.packages.ContributionInstaller.install(ContributionInstaller.java:108)
	at cc.arduino.contributions.packages.ui.ContributionManagerUI.lambda$onInstallPressed$2(ContributionManagerUI.java:172)
	... 1 more
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed
	at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
	at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1946)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:316)
	at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:310)
	at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1639)
	at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:223)
	at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1037)
	at sun.security.ssl.Handshaker.process_record(Handshaker.java:965)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1064)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
	at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:162)
	at cc.arduino.utils.network.HttpConnectionManager.makeConnection(HttpConnectionManager.java:138)
	at cc.arduino.utils.network.HttpConnectionManager.makeConnection(HttpConnectionManager.java:96)
	at cc.arduino.utils.network.FileDownloader.openConnectionAndFillTheFile(FileDownloader.java:217)
	at cc.arduino.utils.network.FileDownloader.downloadFile(FileDownloader.java:176)
	at cc.arduino.utils.network.FileDownloader.download(FileDownloader.java:125)
	at cc.arduino.contributions.DownloadableContributionsDownloader.download(DownloadableContributionsDownloader.java:143)
	... 5 more
Caused by: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed
	at sun.security.validator.PKIXValidator.doValidate(PKIXValidator.java:362)
	at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:259)
	at sun.security.validator.Validator.validate(Validator.java:262)
	at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
	at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
	at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
	at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1621)
	... 21 more
Caused by: java.security.cert.CertPathValidatorException: validity check failed
	at sun.security.provider.certpath.PKIXMasterCertPathValidator.validate(PKIXMasterCertPathValidator.java:135)
	at sun.security.provider.certpath.PKIXCertPathValidator.validate(PKIXCertPathValidator.java:233)
	at sun.security.provider.certpath.PKIXCertPathValidator.validate(PKIXCertPathValidator.java:141)
	at sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(PKIXCertPathValidator.java:80)
	at java.security.cert.CertPathValidator.validate(CertPathValidator.java:292)
	at sun.security.validator.PKIXValidator.doValidate(PKIXValidator.java:357)
	... 27 more
Caused by: java.security.cert.CertificateExpiredException: NotAfter: Thu Oct 26 17:15:54 CEST 2023
	at sun.security.x509.CertificateValidity.valid(CertificateValidity.java:274)
	at sun.security.x509.X509CertImpl.checkValidity(X509CertImpl.java:629)
	at sun.security.provider.certpath.BasicChecker.verifyValidity(BasicChecker.java:190)
	at sun.security.provider.certpath.BasicChecker.check(BasicChecker.java:144)
	at sun.security.provider.certpath.PKIXMasterCertPathValidator.validate(PKIXMasterCertPathValidator.java:125)
	... 32 more

best regards Stefan

Hi Everybody user @hmeijdam

checked the manual and posted the solution.

I will post the whole process for how to install a core manually for a portable installation
of Arduino-IDE 1.8.19 (the old but reliable one)

The first step is to download this zip-file

http://azduino.com/bin/micronucleus/micronucleus-cli-2.5-azd1b-i686-mingw32.zip

as a download-link
http://azduino.com/bin/micronucleus/micronucleus-cli-2.5-azd1b-i686-mingw32.zip

This file must be stored in that packages-folder that is under the "staging"-folder
So just the relative path

......\staging\packages

On my computer with the portable Arduino-IDE the complete path is

C:\Arduino-Pure-Portable\arduino-1.8.19\portable\staging\packages

Here as screenshot

If the package-zip-file is saved in this subfolder
Choose Tools - Board - Board-Manager

don't worry about the different colors this is Arduino-IDE 1.8.19 adjusted to my personal preferences dark backround etc.
The Board-Manager-window appears


Depending on how many boards you have installed it may take quite some time until the window becomes reactive

type some letters into the filter-input-line like "tiny" so the number of boards that are shown will be reduced to the relevant ones

Choose ATTinyCore and click install

You should see a blue progressbar at the botton for a few seconds

If the installation was successful you will find a folder named ATTinyCore
in the path
....\portable\packages

Do you see the difference?
The Core-ZIP-file must be stored into the subfolder
......staging\packages

Which is a different folder than
......portable\packages

If you take the click-way

Tools - Board: (Arduino Uno) - ATTinyCore -
You can choose one of the supported ATTiny-boards

I hope you can apply this manual for other boards.

best regards Stefan

Happy to be of help.

May I suggest that you add the hyperlink to the word "portable installation".

Not every reader may be familiar with the portable option.

br, Hans

It was not a typo. The instructions I provided are 100% correct for Arduino IDE 2.x users, which was appropriate in that context since the user I was supporting was using Arduino IDE 2.x. As you can see here:

As you discovered, a slight adjustment (downloading the 32-bit file instead of the 64-bit file) is needed for users like you and @hmeijdam who are using Arduino IDE 1.x, and another still (putting the file into the portable\staging\packages\ subfolder of the IDE installation instead of %LOCALAPPDATA%\Arduino15\staging\packages\ for those users who are also using the Arduino IDE 1.x portable mode.

The latter is to be expected, but the former is surprising to me. I would expect the 64-bit build of the tool to be given preference to the 32-bit version except for when running on a 32-bit machine (as happens with Arduino IDE 2.x), but I see that Arduino IDE 1.x selects the 32-bit version even on my 64-bit machine.

I do not understand what you want to say with that.

what are these files???
especcially the one with extension ".zi"

Yes I copied the URL using the right-click on link copy adress of link function

http://azduino.com/bin/micronucleus/micronucleus-cli-2.5-azd1b-i686-mingw32.zi

and

https://azduino.com/bin/micronucleus/micronucleus-cli-2.5-azd1b-x86_64-mingw32.zip

Does there exist a 32bit and a 64bit version of the ATTiny-Core????
That makes no sense at all for me.

There might be a 32bit / 64bit version of the Arduino-IDE but how the heck does installing a
core-package depend on 32bit / 64bit????

should'nt the cores and all the libraries be working with any IDE OS?

If you want to write understandable you have to explicitly name everything instead of using generalised words like "the latter" etc.

best regards Stefan

Perhaps you didn't fully understand your own instructions. I'll try to explain. In my instructions, the URL for the Windows download is:

Note that the host identifier component of the filename is x86_64-mingw32 (the identifier for the 64-bit Windows "flavour")

In your instructions the download URL is:

Note that the host identifier component of the filename is i686-mingw32 (the identifier for the 32-bit Windows "flavour").

Arduino IDE 2.x looks in the staging/packages folder for a file named micronucleus-cli-2.5-azd1b-x86_64-mingw32.zip, which is why my instructions work for Arduino IDE 2.x users. But Arduino IDE 1.x looks in that folder for a file named micronucleus-cli-2.5-azd1b-i686-mingw32.zip, which is why it still tried to download the file from the Internet even after you had downloaded micronucleus-cli-2.5-azd1b-x86_64-mingw32.zip from the URL I provided and placed it in the staging/packages folder.

I apologize for any confusion. This time it was a typo. Perhaps you can guess that the extension should have been .zip?

No, but there does exist 32-bit and 64-bit Windows builds of the Micronucleus upload tool.

An Arduino boards platform developer can specify tool dependencies in the package index file:

https://arduino.github.io/arduino-cli/dev/package_index_json-specification/#platforms-definitions:~:text=core%20archive%20file)-,toolsDependencies,-%3A%20the%20tools%20needed

When you install the boards platform using Arduino IDE, those dependencies are also installed. The contents of a boards platform are not operating system-specific, so there is only one universal platform archive to download, but tools are generally executable binaries so it is necessary for a separate build of the tool to be made for each supported host type and for an archive of each of those builds to be provided for download:

https://arduino.github.io/arduino-cli/dev/package_index_json-specification/#tools-definitions

Arduino Boards Manager selects the appropriate tool archive download for the host machine.

It is reasonable for me to assume the reader is intelligent enough to figure it out. If they can't, they are welcome to ask for clarification.

But I get the feeling you are just being deliberately obtuse. It seems quite counterproductive.

Hi @ptillisch,

thank you for answering in detail. I want to apologise. Yes there is a part in my questions asking unlikely things. I was got upset because there was a part that I did in fact not understand.

I did not know that even the upload tool is so specific to the microcontroller and that the upload tool is included in the core-package. Now everything makes sense.

Again I aplogise and thank you very much for having the patience to explain it.

best regards Stefan

In this case, the specificity is to the bootloader. ATTinyCore does use the AVRDUDE upload tool for most of its boards. But it also has support the Micronucleus bootloader used on boards that communicate with the host PC via a V-USB connection, such as the Digispark:

https://github.com/SpenceKonde/ATTinyCore/blob/1.5.2/avr/extras/UsingMicronucleus.md#micronucleus-bootloader

AVRDUDE doesn't have support for this bootloader so it is necessary to use the dedicated Micronucleus upload tool in order to support uploading to those boards.

Historically the 3rd party AVR boards platforms (e.g., David Mellis's "attiny", "Mighty 1284P") simply relied on a compatible toolchain already being available. It is usually the case since the toolchain for the "Arduino AVR Boards" platform is included with the Arduino IDE installation.

But even then it might occur that the platform requires a different version of the tool than what happens to be on a given user's system. So it is probably safest to still define tool dependencies even when a platform only requires the basic avr-gcc + AVRDUDE toolchain. And of course the tool dependency system becomes essential for platforms that require different tools.

No worries. I know all too well how frustrating this stuff can be, and I'm certain that, as with mine, the root cause of such frustration is truly caring about learning and sharing knowledge of embedded systems.

I'm glad if I was able to provide some information. I happen to find the obscure topic of the Arduino boards platform framework very interesting so I enjoy discussing it.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.