This is a security/bug fix patch release. It should be safe to update for everyone.


This release updates to Buildroot 2021.08 and OTP 24.1. If you have made a custom system off this one, please review the nerves_system_br v1.17.0 release notes.


This release updates Erlang/OTP from 24.0.3 to 24.0.5 and Buildroot from 2021.05 to 2021.05.1. Both of these are security/bug fix updates. This is expected to be a safe upgrade from v1.16.1 for all users.

  • Updated dependencies

  • Improvements

    • Beta support for using a runtime.exs script for runtime configuration.
    • Added a provision task to the fwup.config to enable re-provisioning a MicroSD card without changing its contents.
    • Adds a default /etc/sysctl.conf that enables use of ICMP in Erlang. This requires nerves_runtime v0.11.5 or later to automatically load the sysctl variables. With it using :gen_udp to send/receive ICMP will "just work". It also makes it easier to add other sysctl variables if needed.


This release updates Nerves Toolchains to v1.4.3 and OTP 24.0.3. It should be safe for everyone to apply.


This release updates to Buildroot 2021.05 and OTP 24.0.2. If you have made a custom system off this one, please review the nerves_system_br v1.16.0 release notes.

  • Updated dependencies

  • Improvements

    • This release now contains debug symbols and includes the Build-ID in the ELF headers. This makes it easier to get stack traces from C programs. As before, the Nerves tooling strips all symbols from firmware images, so this won't make programs bigger.


This is a security/bug fix release that updates to Buildroot 2021.02.1 and OTP 23.3.1. It should be safe for everyone to apply.


This release updates to Buildroot 2021.02 and OTP 23.2.7. If you have made a custom system off this one, please review the nerves_system_br v1.15.0 release notes.

The Nerves toolchain has also been updated to v1.4.2. This brings in Linux 4.14 headers to enable use of cdev and eBPF. This won't affect most users.


This release updates to Buildroot 2020.11.2, GCC 10.2 and OTP 23.2.4.

When migrating custom systems based, please be aware of the following important changes:


This is a bug fix release and contains no major changes.


This release includes a patch release update to Buildroot 2020.08.2.


  • Fixes
    • Adds libnl back to support VintageNet


The main change in this release is to bump the Linux kernel to 5.4. This follows similar updates to Linux 5.4 across the official Nerves systems. Please review the linux-5.4.defconfig for changes.

  • Updated dependencies

  • Improvements

    • Enabled reproducible builds in Buildroot to remove some timestamp and build path differences in firmware images. This helps delta firmware updates.
  • Fixes

    • Running images using the script works again. This is unsupported, but may be useful as a start for running images via qemu.


This release updates to Buildroot 2020.08 and OTP 23.1.1.


This release updates to Buildroot 2020.05.1 and OTP 23.0.3 which are both bug fix releases.

  • Updated dependencies

  • New features

    • The /data directory now exists for storing application-specific data. It is currently a symlink to /root. Using /data will eventually be encouraged over /root even though currently there is no advantage. This change makes it possible to start migrating paths in applications and libraries.
  • Fixes

    • Fixed old references to the -Os compiler flag. All C/C++ code will default to using -O2 now.


  • Fixes
    • Remove nerves_system_linter from hex package. This fixes mix dependency errors in projects that reference systems with different nerves_system_linter dependency specs.


This release updates the system to use Buildroot 2020.05 and Erlang/OTP 23. Please see the respective release notes for updates and deprecations in both projects for changes that may affect your application.



  • Updated dependencies
    • nerves_system_br v1.11.2
    • Erlang 22.3.1
    • erlinit 1.7.0 - tty initialization support
    • fwup 1.6.0 - xdelta3/VCDIFF patch support
    • Enable unixodbc so that Erlang's odbc application can be used in projects


This release updates Buildroot to 2020.02 and upgrades gcc from 8.3 to 9.2. While this is a minor version bump due to the Buildroot release update, barring advanced usage of Nerves, this is a straightforward update from v1.10.2.



  • Enhancements

    • Set expand=true on the application data partition. This will only take effect for users running the complete task, fwup will not expand application data partitions that exist during upgrade tasks.
    • Trim supported wifi drivers to match other base systems.
    • Remove udev since its not used.
  • Updated dependencies


This release updates Buildroot to 2019.11 with security and bug fix updates across Linux packages. Enables dnsd, udhcpd and ifconfig in the default Busybox configuration to support vintage_net and vintage_net_wizard. See the nerves_system_br notes for details.

  • Updated dependencies
  • Bug fixes
    • Enable multiple IP tables for vintage_net
    • Sync filesystem config with other Nerves systems
    • Enable Linux software watchdog


This release updates Buildroot to 2019.08.2 with security and bug fix updates across Linux packages. See the nerves_system_br notes for details. Erlang/OTP is now at 22.1.7.


This release pulls in security and bug fix updates from nerves_system_br. Erlang/OTP is now at 22.1.1.


This release updates Buildroot to 2019.08 with security and bug fix updates across Linux packages. See the nerves_system_br notes for details.




This release

This release updates Erlang to OTP 22 and gcc from version 7.3.0 to 8.3.0. See the nerves_system_br and toolchain release notes for more information.


  • Bux fixes
    • Add TAR option --no-same-owner to fix errors when untarring artifacts as the root user.
  • Updated dependencies


  • Improvements

    • Bump C compiler options to -O2 from -Os. This provides a small, but measurable performance improvement (500ms at boot in a trivial project tested on nerves_system_rpi0).
  • Updated dependencies





  • Updated dependencies

  • Enhancements

    • Moved boardid config from inside erlinit.config to /etc/boardid.config


This pulls in a pending patch in Buildroot to update the version of OpenSSL from 1.0.2 to 1.1.0h. This fixes what appears to be issues with Erlang using OpenSSL engines. It also enables Erlang crypto algorithms such as ed25519 that have been added in recent Erlang releases.



This release updates the Linux kernel from 4.13 to 4.18.9.


This release contains various updates to provisioning variables and data.

Host requirements

Building firmware using this system requires fwup to be updated on your host computer to at least v1.2.5. The target minimum version requirement has not changed from 0.15.0.

Serial numbers

Device serial numbers are now set using NERVES_SERIAL_NUMBER instead of SERIAL_NUMBER. This is to reduce ambiguity on the source of the serial by name spacing it along side other Nerves variables. The U-Boot environment key has also changed from serial_number to nerves_serial_number. The erlinit.config has been updated to provide backwards compatibility for setting the hostname from the serial number by checking for nerves_serial_number and falling back to serial_number.

Custom provisioning

Provisioning data is applied at the time of calling the fwup task complete. The complete task is executed when writing the firmware to the target disk. During this time, fwup will include the contents of a provisioning file located at ${NERVES_SYSTEM}/images/fwup_include/provisioning.conf. By default, this file only sets nerves_serial_number. You can add additional provisioning data by overriding the location of this file to include your own by setting the environment variable NERVES_PROVISIONING. If you override this variable you will be responsible for also setting nerves_serial_number.


This release upgrades gcc from version 6.3.0 to 7.3.0. See the toolchain release notes for more information.



This release updates Erlang to OTP 21.0


This release fixes some issues and adds firmware UUID support. This support can be used to unambiguously know what's running on a device.

  • Updated dependencies

  • Bug fixes

    • Empty serial numbers stored in the U-Boot environment would be used instead of reverting to devices IDs built into the CPU or board.
    • It wasn't possible to enable QtWebEngine (needed for kiosk apps)


This release adds official support for provisioning serial numbers to devices. Other information can be provisioned in a similar manner. See the for details.

Buildroot was also updated to 2018.05. Be sure to review the nerves_system_br link for the changes in the embedded Linux components.


This release is nearly identical to rc.1 except with the deps bump to 1.0 and documentation/comment updates.


This release contains updates to Erlang and heart from nerves_system_br and mostly cosmetic changes to this project. The trivial .fw files are no longer created by CI scripts. If you've forked this project and are building systems using CI, make sure to update your publish scripts.




  • Updated dependencies

  • Changes

    • Temporarily disable the system linter since it fails and the fix requires some time.


  • Updated dependencies

  • Enhancements

    • Increased memory in qemu script to 1 GB. 128 MB works, but can cause some apps to reboot with out of memory errors.

    • Start running nerves_system_linter to check for configuration errors.

    • Automount the boot partition readonly at /boot

    • Support for reverting firmware.

      See Reverting Firmware for more info on reverting firmware. See fwup-revert.conf for more information on how fwup handles reverting.




  • Updated dependencies
  • Enhancements
    • erlinit added aliased /dev/rootdisk* for referencing the boot disk. See the readme for more info.
    • Updated nerves to 0.8. Move nerves.exs into mix.exs




  • Initial release