Clone or download
Matěj Sychra
Matěj Sychra merge
Latest commit d069934 May 19, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Dockerfile fixed builder for ESP8266/ESP32 May 19, 2018
LICENSE initial commit; pinned Arduino 1.8.3 because the apt repository is ou… Aug 4, 2017
README.md added support for ESP32 Nov 28, 2017
build_and_push.sh added build script Nov 8, 2017
cmd.sh fixed build May 18, 2018
cmd.sh~ fixed build May 18, 2018

README.md

Arduino Docker Build

Docker Pulls Docker Stars License

Run the Arduino command-line builder in a docker container. This image will take it from there and turn your Arduino project into a binary which you then can flash to the ESP8266/ESP32.

Target audience

  • Application developers

    They just need a ready-made firmware.

  • Occasional firmware hackers

    They don't need full control over the complete tool chain and don't want to setup a Linux VM with the build environment.

This image has been created for purposes of the THiNX OpenSource IoT management platform.

Usage

Install Docker

Follow the instructions at https://docs.docker.com/get-started/.

Run this image with Docker

Preparation

  1. Install and run socat to tunnel the X11

brew install socat socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:"$DISPLAY"

  1. Insert your IP address here to display Arduino IDE using X11/socat

``docker run --rm -ti -e DISPLAY=192.168.1.10:0 -v pwd:/opt/workspace suculent/arduino-docker-build```

  1. Start terminal and change to the your Arduino project repository (that contains mandatory directory containing your .ino file). Then run:

docker run --rm -ti -v `pwd`:/opt/workspace suculent/arduino-docker-build

Depending on the performance of your system it takes 1-3min until the compilation finishes. The first time you run this it takes longer because Docker needs to download the image and create a container.

‼️ If you have previously pulled this Docker image (e.g. with the command above) you should update the image from time to time to pull in the latest bug fixes:

docker pull suculent/arduino-docker-build

Note for Windows users

(Docker on) Windows handles paths slightly differently. The command thus becomes (c equals C drive i.e. c:):

docker run --rm -it -v //c/Users/<user>/<arduino-builder>:/opt/arduino-builder suculent/arduino-docker-build

If the Windows path contains spaces it would have to be wrapped in quotes as usual on Windows.

`docker run --rm -it -v "//c/Users/monster tune/"/opt/arduino-builder suculent/arduino-docker-build``

User libraries

In case there is a lib folder next to your .ino file, it will be copied to ../Arduino/libraries folder from your repository.

Output

The firmware file is created in the bin sub folder of your root directory. You will also find a mapfile in the bin folder with the same name as the firmware file but with a .map ending.

Options

You can pass the following optional parameters to the Docker build like so docker run -e "<parameter>=value" -e ....

  • WORKDIR Just an parametrization example, will deprecate or be used for additional libraries.

Flashing the built binary

There are several tools to flash the firmware to the ESP8266/ESP32. If you were to use esptool (like I do) you'd run:

esptool.py --port <seria-port> write_flash 0x00000 <arduino-builder>/bin/__TO__BE__DEFINED__LATER__.bin

Support

Don't leave comments on Docker Hub that are intended to be support requests. First, Docker Hub doesn't notify me when you write them, second I can't properly reply and third even if I could often it doesn't make much sense to keep them around forever and a day. Instead ask a question on StackOverflow and assign the arduino and docker tags.

For bugs and improvement suggestions create an issue at https://github.com/suculent/arduino-docker-build/issues.

Credits

Thanks to Marcel Stoer who inspired me with his NodeMCU firmware builder on http://frightanic.com

Author

Matěj Sychra @ THiNX