{"id":17053130,"url":"https://github.com/bschwind/esp-build","last_synced_at":"2025-03-23T05:23:22.718Z","repository":{"id":140637302,"uuid":"64236226","full_name":"bschwind/esp-build","owner":"bschwind","description":"A Dockerized build environment for building and flashing ESP8266 programs with esp-open-rtos","archived":false,"fork":false,"pushed_at":"2020-05-01T02:46:54.000Z","size":8,"stargazers_count":6,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-20T17:51:48.676Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bschwind.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-07-26T16:16:37.000Z","updated_at":"2022-12-14T19:57:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"356d2869-ee5b-4bdd-b14c-26aea30d7b8e","html_url":"https://github.com/bschwind/esp-build","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bschwind%2Fesp-build","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bschwind%2Fesp-build/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bschwind%2Fesp-build/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bschwind%2Fesp-build/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bschwind","download_url":"https://codeload.github.com/bschwind/esp-build/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245058747,"owners_count":20554165,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-14T10:11:25.047Z","updated_at":"2025-03-23T05:23:22.695Z","avatar_url":"https://github.com/bschwind.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"esp-open-rtos Build Environment\n===============================\n\n[![Docker Pulls](https://img.shields.io/docker/pulls/bschwind/esp-open-rtos.svg)](https://hub.docker.com/r/bschwind/esp-open-rtos/) [![Docker Stars](https://img.shields.io/docker/stars/bschwind/esp-open-rtos.svg)](https://hub.docker.com/r/bschwind/esp-open-rtos/) [![](https://images.microbadger.com/badges/image/bschwind/esp-open-rtos.svg)](https://microbadger.com/images/bschwind/esp-open-rtos \"Get your own image badge on microbadger.com\") [![License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](https://github.com/bschwind/esp-build/blob/master/LICENSE)\n\nThis Dockerfile contains the dependencies necessary to create a toolchain for the ESP8266 chip.\nIt is based on [esp-open-rtos](https://github.com/SuperHouse/esp-open-rtos) and allows for easy building and flashing\nto the ESP8266 chip for projects written with esp-open-rtos.\n\n**Note**: Espressif now offers an [official FreeRTOS-based SDK](https://github.com/espressif/ESP8266_RTOS_SDK) which is quite easy to set up and use without docker, especially if you place it in your project as a git submodule. I would recommend giving it a try as I'm not currently maintaining this docker image.\n\nDependencies\n------------\n- [Docker](https://www.docker.com/products/docker-toolbox)\n- [Virtualbox](https://www.virtualbox.org/wiki/Downloads) (if you're not on Linux)\n\nQuick Setup\n-----------\n\n* `docker pull bschwind/esp-open-rtos`\n* `cd` to your esp-open-rtos project\n* Without USB flashing support: `docker run --rm -it -e \"ESPBAUD=921600\" -v $(PWD):/home/esp/esp-open-rtos/examples/project bschwind/esp-open-rtos /bin/bash`\n* With USB flashing support: `docker run --rm -it --privileged -e \"ESPBAUD=921600\" -v /dev/bus/usb:/dev/bus/usb -v $(PWD):/home/esp/esp-open-rtos/examples/project bschwind/esp-open-rtos /bin/bash`\n\nEither step will put you in an interactive shell inside the container. If you have a Makefile in your project directory, you can immediately\nrun `make` and your source should get compiled. `make flash` will attempt to flash the code to `/dev/ttyUSB0`, assuming you're using the\nMakefiles from esp-open-rtos examples.\n\nFlashing Images from the Container\n----------------------------------\n\nIf you're on docker-machine (OS X or Windows), you need to forward your USB device within Virtualbox. This is best managed in the VirtualBox GUI.\n\nSteps:\n\n* Stop your docker virtual machine host, if applicable\n* Plug in the USB serial device you will use to flash to the ESP8266\n* Install [virtualbox extensions](https://www.virtualbox.org/wiki/Downloads) to support USB (Ctrl-F \"extension\" on that page)\n  * OS X -\u003e Under \"Virtualbox\" -\u003e Preferences, go to the Extensions tab\n  * Windows -\u003e Same thing?\n  * Click the \"Adds new package\" button and select the extension pack you downloaded\n* Return to the main VirtualBox GUI\n* Right click on your docker VM and select \"Settings\"\n* Select \"Ports\" -\u003e \"USB\"\n* Check the box \"Enable USB Controller\" and select \"USB 2.0 (EHCI) Controller\"\n* Under \"USB Device Filters\" click the USB icon with the green plus sign to add a USB device\n* Select your USB serial device (in my case it was \"FTDI FT232R USB UART [0600]\")\n* Click OK until you're back to the main Virtualbox GUI\n* At this point you can restart your virtual machine with `docker-machine start \u003cYOUR_DOCKER_VM_NAME\u003e`\n* Run docker as we did in Quick Setup: `docker run --rm -it --privileged -v /dev/bus/usb:/dev/bus/usb -v $(PWD):/home/esp/esp-open-rtos/examples/project bschwind/esp-open-rtos /bin/bash`\n  * NOTE: With the `-v /dev/bus/usb:/dev/bus/usb` volume, the `/dev/bus/usb` on the lefthand side of the colon refers to docker VM's USB directory, *not* your host machine (you likely won't find that path on OS X)\n* `/dev/ttyUSB0` should now be available\n* Run `make` and then `make flash` on an example project or your own\n\nIf you're on Linux, it should be sufficient to share your USB device either as a docker volume or with the `--device` flag. However, I have not yet tested Linux.\n\nSerial Debugging\n----------------\n\n[Picocom](https://github.com/npat-efault/picocom) is installed in this image by default. Invoke it with `picocom -b 115200 /dev/ttyUSB0` (change the baud rate and device path accordingly)\n\nStop it with `Ctrl-A Ctrl-X`\n\nPRO TIP\n-------\n\nWhen running `make flash` from esp-open-rtos's Makefiles, it will print out the flashing command it uses, for example `esptool.py -p /dev/ttyUSB0 --baud 115200 write_flash -fs 16m -fm qio -ff 40m 0x0 ../../bootloader/firmware_prebuilt/rboot.bin 0x1000 ../../bootloader/firmware_prebuilt/blank_config.bin 0x2000 ./firmware/blink_timers.bin`\n\nSee that `--baud 115200`? You can change it to higher values with the ESPBAUD environment variable which is passed into the `docker run` command and the ESP8266 should honor it (in most cases?). Valid values I've had success with are [230400, 460800, 921600]\nwith 921600 flashing in under 4 seconds (241,664 bytes). This can significantly speed up development time.\n\nWith any flashing baud rate, I have noticed more occasional errors with this setup than I have with the Arduino IDE or other environments, I'm not sure what the cause is.\nThe flash will sometimes get stuck at 99% with `A fatal error occurred: Timed out waiting for packet header`. I've found this actually happens *less* often on 921600 baud,\nbut it can still happen. If anyone knows what's up with that, please let me know!\n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbschwind%2Fesp-build","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbschwind%2Fesp-build","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbschwind%2Fesp-build/lists"}