View Source Changelog
This project does NOT follow semantic versioning. The version increases as follows:
- Major version updates are breaking updates to the build infrastructure. These should be very rare.
- Minor version updates are made for every major Buildroot release. This may also include Erlang/OTP and Linux kernel updates. These are made four times a year shortly after the Buildroot releases.
- Patch version updates are made for Buildroot minor releases, Erlang/OTP releases, and Linux kernel updates. They're also made to fix bugs and add features to the build infrastructure.
v1.27.0
This is a major Buildroot update.
Please see the nerves_system_br v1.27.0 release notes for upgrade instructions if you've forked this system.
- Updated dependencies
v1.26.0
This is a major Buildroot update.
Please see the nerves_system_br v1.26.0 release notes for upgrade instructions if you've forked this system.
- Updated dependencies
v1.25.1
This is a security/bug fix update.
Package updates
v1.25.0
This is a major Buildroot and toolchain update.
Please see nerves_system_br v1.25.0 release notes for upgrade instructions if you've forked this system.
- Updated dependencies
v1.24.1
This is a security/bug fix update.
- Package updates
v1.24.0
This is a Buildroot version update that appears to mostly contain bug and security fixes. It should be a low risk upgrade from v1.23.2.
- Updated dependencies
v1.23.2
- Updated dependencies
v1.23.1
This is a bug and security fix update. It should be a low risk upgrade.
Fixes
- Fix CTRL+R over ssh
Updated dependencies
v1.23.0
This is a major update that brings in Erlang/OTP 26 and Buildroot 2023.02.2.
New features
- CA certificates are included for OTP 26.
Updated dependencies
v1.22.2
This is a bug and security fix update. It should be a low risk upgrade.
- Updated dependencies
v1.22.1
This is a bug fix and Erlang version bump from 25.2 to 25.2.3. It should be a low risk upgrade from v1.22.0.
- Updated dependencies
v1.22.0
This is a Buildroot version update that appears to mostly contain bug and security fixes. It should be a low risk upgrade to v1.21.2.
- Updated dependencies
v1.21.2
Changes
- Two Buildroot patch updates and an Erlang minor version update
- Nerves Heart v2.0 is now included. Nerves Heart connects the Erlang runtime to a hardware watchdog. v2.0 has numerous updates to improve information that you can get and also has more safeguards to avoid conditions that could cause a device to hang forever.
Updated dependencies
v1.21.1
Changes
- Fix regression when building on x86_64 Linux where wrong toolchain was used.
- Reduce first-time Linux kernel download by using tarball source
Updated dependencies
v1.21.0
Changes
- Support aarch64 Linux builds
- Add libdtc to support runtime loading of device tree overlays
Updated dependencies
v1.20.3
- Updated dependencies
v1.20.2
- Updated dependencies
v1.20.1
Fixes
- Fix a Buildroot configuration error that caused a non-Nerves GCC 11.2 toolchain to be used instead of the Nerves GCC 11.3 toolchain. Due to an ABI difference, NIFs and ports wouldn't work.
Changes
- Write to the end of the data partition when writing complete images. This makes it possible to use the data partition in qemu without additional work.
Updated dependencies
- Linux 5.4.204
v1.20.0
This release updates to Buildroot 2022.05 and uses GCC 11.3 (from GCC 10.3).
- Updated dependencies
v1.19.0
This release updates to Buildroot 2022.02.1 and OTP 25.0. While this should be an easy update for most projects, many programs have been updated. Please review the changes in the updated dependencies for details.
- Updated dependencies
v1.18.4
This release bumps Erlang to 24.3.2 and should be a low risk upgrade from the previous release.
- Updated dependencies
v1.18.3
This is a Buildroot and Erlang bug and security fix release. It should be a low risk upgrade from the previous release.
- Updated dependencies
v1.18.2
This is a Buildroot and Erlang bug fix release. It should be a low risk upgrade from the previous release.
Updated dependencies
Changes
- Specify CPU-specific flags when compiling NIFs and ports. This fixes an issue where some optimizations could not be enabled in NIFs even though it should be possible to have them. E.g., ARM NEON support for CPUs that have it.
v1.18.1
Updated dependencies
Changes
- Programs that use OpenMP will run now. The OpenMP shared library
(
libgomp.so
) was supplied by the toolchain, but not copied.
- Programs that use OpenMP will run now. The OpenMP shared library
(
v1.18.0
This release updates to Buildroot 2021.11 and OTP 24.2. If you have made a
custom system, please review the nerves_system_br
release
notes.
Updated dependencies
Improvements
- Support for the
dl.nerves-project.org
backup site. Due to a GitHub outage in November, there was a 2 day period of failing builds since some packages could not be downloaded. We implemented the backup site to prevent this in the future. This update is in thenerves_defconfig
. - Use new build ORB on CircleCI. This ORB will shorten build times to fit in CircleCI's new free tier limits. Please update if building your own systems.
- Support for the
v1.17.3
- Updated dependencies
v1.17.2
- Updated dependencies
v1.17.1
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)
v1.17.0
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.
- Updated dependencies
v1.16.2
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 thefwup.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 requiresnerves_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.
- Beta support for using a
v1.16.1
This release updates Nerves Toolchains to v1.4.3 and OTP 24.0.3. It should be safe for everyone to apply.
- Updated dependencies
v1.16.0
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.
v1.15.1
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.
- Updated dependencies
v1.15.0
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.
- Updated dependencies
v1.14.0
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:
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
v1.13.4
This is a bug fix release and contains no major changes.
- Updated dependencies
v1.13.3
This release includes a patch release update to Buildroot 2020.08.2.
- Updated dependencies
v1.13.2
- Fixes
- Adds
libnl
back to support VintageNet
- Adds
v1.13.1
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
run_qemu.sh
script works again. This is unsupported, but may be useful as a start for running images via qemu.
- Running images using the
v1.13.0
This release updates to Buildroot 2020.08 and OTP 23.1.1.
Updated dependencies
New features
- Added support for updating the root filesystem using firmware patches. See the firmware patch docs for more information.
v1.12.2
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.
- The
Fixes
- Fixed old references to the
-Os
compiler flag. All C/C++ code will default to using-O2
now.
- Fixed old references to the
v1.12.1
- Fixes
- Remove
nerves_system_linter
from hex package. This fixes mix dependency errors in projects that reference systems with differentnerves_system_linter
dependency specs.
- Remove
v1.12.0
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
v1.11.2
- Updated dependencies
- nerves_system_br v1.11.4
- Erlang 22.3.4.1
- fwup 1.7.0
v1.11.1
- 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
v1.11.0
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.
- Updated dependencies
- nerves_system_br v1.11.0
- linux 4.19.108
- Erlang 22.2.8
v1.10.2
- Updated dependencies
- nerves_system_br v1.10.2
- Erlang 22.2.4
v1.10.1
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.
- Set
Updated dependencies
- nerves_system_br v1.10.1
- Erlang 22.2.3
v1.10.0
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
- nerves_system_br v1.10.0
- Erlang 22.1.8
- Linux 4.19.87
- Bug fixes
- Enable multiple IP tables for
vintage_net
- Sync filesystem config with other Nerves systems
- Enable Linux software watchdog
- Enable multiple IP tables for
v1.9.2
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.
- Updated dependencies
v1.9.1
This release pulls in security and bug fix updates from nerves_system_br
.
Erlang/OTP is now at 22.1.1.
- Updated dependencies
v1.9.0
This release updates Buildroot to 2019.08 with security and bug fix updates
across Linux packages. See the nerves_system_br
notes for details.
- Updated dependencies
v1.8.2
- Updated dependencies
v1.8.1
- Updated dependencies
v1.8.0
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.
Enhancements
- Enable source-based routing in the Linux kernel to support vintage_net
Updated dependencies
v1.7.2
- Bux fixes
- Add TAR option
--no-same-owner
to fix errors when untarring artifacts as the root user.
- Add TAR option
- Updated dependencies
v1.7.1
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).
- Bump C compiler options to
Updated dependencies
v1.7.0
- Updated dependencies
- nerves_system_br v1.7.0
- Erlang 21.2.7
- Linux 4.19.29
v1.6.3
- Updated dependencies
- nerves_system_br v1.6.8
- Erlang 21.2.6
v1.6.2
- Updated dependencies
- nerves_system_br v1.6.6
- Erlang 21.2.4
- boardid 1.5.3
v1.6.1
Updated dependencies
- nerves_system_br v1.6.5
- Erlang 21.2.2
- boardid 1.5.2
- erlinit 1.4.9
- OpenSSL 1.1.1a
Enhancements
- Moved boardid config from inside erlinit.config to /etc/boardid.config
v1.6.0
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.
- Updated dependencies
- nerves_system_br v1.6.1
- Erlang 21.2
- Added dependencies
- wpa_passphrase
- libp11 0.4.9
v1.5.1
- Updated dependencies
v1.5.0
This release updates the Linux kernel from 4.13 to 4.18.9.
- Updated dependencies
- nerves_system_br v1.5.2
- Linux 4.18.9
- Erlang 21.0.9
v1.4.0
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
.
- Updated dependencies
v1.3.0
This release upgrades gcc from version 6.3.0 to 7.3.0. See the toolchain release notes for more information.
- Updated dependencies
v1.2.1
- Updated dependencies
v1.2.0
This release updates Erlang to OTP 21.0
Enhancements
- Enable Enable NO_HZ in linux kernel for performance.
Updated dependencies
v1.1.1
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)
v1.1.0
This release adds official support for provisioning serial numbers to devices. Other information can be provisioned in a similar manner. See the README.md 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.
- Updated dependencies
v1.0.0
This release is nearly identical to rc.1 except with the deps bump to 1.0 and documentation/comment updates.
- Updated dependencies
v1.0.0-rc.1
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
v1.0.0-rc.0
- Updated dependencies
v0.5.0
- Updated dependencies
v0.4.1
Updated dependencies
Changes
- Temporarily disable the system linter since it fails and the fix requires some time.
v0.4.0
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.
v0.3.2
- Updated dependencies
v0.3.1
- Updated dependencies
v0.3.0
- 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
v0.2.1
- Updated dependencies
v0.2.0
- Updated dependencies
v0.1.0
- Initial release