This guide is no longer accurate with the release of version 1.6.4 of the Arduino IDE. Custom third party board support has been officially added in v1.6.4+.

Some of you may be wondering why how this works, or why it is needed. The Arduino Board Manager makes a request to the servers for a file called package_list.json every time you load the Board Manager. This works very similar to the Arduino Library Manager, but unlike the Library Manager, there is currently no support for adding third party board packages. This is where our proxy server comes in. There is no need to download the proxy server unless you wish to server your own custom board packages.

Pointing the Arduino IDE at the proxy server allows us to intercept any requests to the package_list.json file, and inject new boards into the JSON before serving it back to the IDE. This is known as a man-in-the-middle attack. Generally man-in-the-middle attacks are used for malicious purposes, so let's refer to this as "Adafruit-in-the-middle" since we are using it for friendly purposes.

You can find our additions to the JSON file by visiting the GitHub repo and examining the files in the boards and packages directories.

This guide was first published on Apr 06, 2015. It was last updated on Apr 06, 2015.
This page (How Does it Work?) was last updated on Aug 28, 2020.