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

  • Updated dependencies

  • Improvements

    • Include software versioning and licensing info (see legal-info directory in artifact)
    • Force core frequency to support Bluetooth. This mirrors a Raspberry Pi 3 configuration
    • Remove espeak. This reduces firmware sizes and espeak was removed from other systems some time ago.
    • Sync display backlight settings with the Raspberry Pi 3 configuration so that the official 7" display works with the 3A as well.


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.
    • Enable compile-time wpa_supplicant options to support WPA3, mesh networking, WPS and autoscan.


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:

  • There's a new getrandom syscall that is made early in BEAM startup. This has the potential to block the BEAM before Nerves can start rngd to provide entropy. We have not seen this issue here, but have updated erlinit.config for the time being as a precaution.

  • The GCC 10.2.0 toolchain has a different name that calls out "nerves" as the vendor and the naming is now more consistent with other toolchain providers.

  • Experimental support for tooling that requires more information about the target has been added. The initial support focuses on zigler.

  • Updated dependencies


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


This release includes a patch release update to Buildroot 2020.08.2.

  • Updated dependencies

  • Improvements

    • Switched source for built-in WiFi module firmware. This pulls in newer firmware versions that were found to fix issues on the Raspberry Pi 4. It may improve built-in WiFi on other Raspberry Pis.


The main change in this release is to bump the Linux kernel to 5.4. This follows the kernel update in the Raspberry Pi OS.

If you have based a custom system off of this one, please inspect the nerves_defconfig for WiFi firmware changes. WiFi firmware is no longer being pulled from the rpi-wifi-firmware since that package is out of date.

  • Updated dependencies

  • Improvements

    • Enabled reproducible builds in Buildroot to remove some timestamp and build path differences in firmware images. This helps delta firmware updates.
    • The memory cgroup controller is no longer enabled by default. This was an upstream change. As a result, the memory cgroup directory is no longer mounted.


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.


  • Fixes

    • This fixes a regression on OSX where the USB gadget Ethernet would incorrectly try to go into RNDIS mode and not work. Gadget Ethernet works with this fix on Linux and OSX. It also works on Windows with a driver installed.
  • Updated dependencies


This release changes the behavior of the gadget port as well as the UART pins on the GPIO header. The gadget driver has been changed to use g_ether. This provides a more stable network connection at the expense of the virtual serial port. Console access has been output to the UART. If you were using the UART to connect to peripherals, you will need to disable the console. See: for more information.

  • 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.
    • linux: swap the cdc composite gadget for g_ether
  • 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.


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.

  • Bug fixes

    • This system should work out of the box now with Scenic and the offical RPi Touchscreen display. The issue preventing it from working has been fixed.
  • Updated dependencies


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 fixes an issue that broke display output on small LCD screens. Updating the Raspberry Pi firmware to the latest from the Raspberry Pi Foundation fixed the issue. See 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


This release fixes a major issue with the gadget USB port where it would hang on boot. If you have made a custom system or are overriding the erlinit.config file in your project, please make sure that your erlinit.config has:

-c null
-s "/usr/bin/nbtty --tty /dev/ttyGS0 --wait-input"
  • Bug fixes

    • Fix regression with virtual serial port where it could cause the whole USB interface to hang.
  • Improvements

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


This release bumps the Linux kernel to 4.19.25. This change had an impact on how the WiFi regulatory database gets loaded into the kernel. Instead of building it into the kernel as previously done, the kernel loads it on demand. This requires that all WiFi drivers be built as kernel modules so that the database isn't loaded before the root filesystem is mounted. If you made a custom system and see boot errors about not being able to load the regulatory database, this is the problem.

A known bug with the Raspberry Pi Zero USB gadget interface is that it sometimes doesn't load on Linux systems. Moving the gadget drivers to kernel modules seems to work around this but it takes longer to load the gadget interface.




  • Updated dependencies

    • nerves_system_br v1.6.5
    • Erlang 21.2.2
    • boardid 1.5.2
    • erlinit 1.4.9
    • OpenSSL 1.1.1a
    • Linux 4.14.89 with patches from the Raspberry Pi Foundation
  • Enhancements

    • Moved boardid config from inside erlinit.config to /etc/boardid.config
    • Compile gpiomem into the Linux kernel
    • Enable pstore, an in-memory buffer that can capture logs, kernel oops and other information when unexpected reboots. The buffer can be recovered on the next boot where it can be inspected.

v1.6.0 and before

See nerves_system_rpi3/ for history before this was forked off of nerves_system_rpi3