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. Buildroot makes four releases a year. Major Erlang/OTP updates are held off until the next Buildroot release.
- Patch version updates are made for Buildroot minor releases and Erlang/OTP minor and patch releases. They're also made to fix bugs and add features to the build infrastructure.
This update pulls in Buildroot 2024.08 and Erlang/OTP 27.1.1. This is a major Buildroot and Erlang update.
If you're updating from Nerves systems earlier than 1.28.0, please see the 1.28.0 update instructions below.
-
Changes
- Add patch for
wpa_supplicant
to optionally enable PKCS11 support. This allows hardware security modules to supply 802.1x or WiFi credentials. - Strip write-only executables files included in releases. This is needed for the XLA shared library.
- Add patch for
-
Package updates
This is a security/bug fix update for 1.28.2
- Package updates
This is a security/bug fix update for 1.28.1
-
Changes
- Warn, but don't fail on MacOS when building on a case insensitive filesystem and files overlap. The iptables package particularly problematic. This is a temporary workaround to help get past issues created by files that aren't actually used at runtime.
-
Package updates
This updates erlinit
to support abbreviating serial numbers for easier-to-type
hostnames without forcing boardid
to produce short serial numbers. If your
Nerves system is still reporting short serial numbers, remove the -n 4
from
your rootfs_overlay/etc/boardid.config
. If you still like short serials for
hostnames, edit ``erlinit.configto specify
-n nerves-%-.4s`
- Package updates
- erlinit 1.14.0
- bb.org-overlays (bump to latest)
This update pulls in Buildroot 2024.05 and Erlang/OTP 27.0. This is a major Buildroot and Erlang update.
Nerves systems need the following updates:
- If using CircleCI, update the
build-tools
to 0.3.0 or later. E.g.,build-tools: nerves-project/build-tools@0.3.0
- Add
BR2_TOOLCHAIN_EXTERNAL_GCC_13=y
to thenerves_defconfig
to tell Buildroot that the toolchain being used is GCC 13. The default is no longer GCC 13, so it has to be set. - Update to Elixir 1.17 or later. None of the earlier versions of Elixir
support Erlang/OTP 27. If you can't update, specify an earlier version OTP
version by adding
BR2_PACKAGE_ERLANG_26
(or similar) to thenerves_defconfig
.
-
Changes
nerves_system_br
Docker image no longer runs as the root user to avoid build errors from programs that don't want to be built as root (tar 1.35)
-
Package updates
- Buildroot 2024.05
- Erlang/OTP 27.0
- rpicam-apps 1.5.0
- rpi-libcamera v0.2.0+rpt20240418
- rpi-distro-firmware-nonfree 20230625-2+rpi2
- rpi-distro-bluez-firmware 78d6a07 (latest for now)
This is a security/bug fix update for 1.27.2.
-
Fixes
- Address MacOS build issues. See #791, #792, and #797 for details.
-
Package updates
This is a security/bug fix update for 1.27.1.
- Package updates
This is a security/bug fix update for 1.27.0.
- Package updates
This update pulls in Buildroot 2024.02. This is a major Buildroot update.
Nerves systems need the following updates:
- For Raspberry Pi systems using libcamera, the version that comes with Raspberry
Pi OS has diverged from upstream libcamera. To use it, replace
BR2_PACKAGE_LIBCAMERA_*=y
withBR2_PACKAGE_RPI_LIBCAMERA_*=y
. - The Raspberry Pi applications for libcamera also changed. Replace
BR2_PACKAGE_LIBCAMERA_APPS=y
withBR2_PACKAGE_RPICAM_APPS=y
. The upstream package is calledrpicam_apps
.libcamera_apps
was the old name.
-
Fixes
- Add explicit check for
$TMPDIR
to fix a regression on MacOS 13 with v1.26.1. Thanks to @schrockwell.
- Add explicit check for
-
Package updates
This is a security/bug fix update for 1.26.0.
-
Fixes
- Update calls to mktemp to honor $TMPDIR so that it can be redirected to a case sensitive filesystem on MacOS.
-
Package updates
This update pulls in Buildroot 2023.11.1. This is a major Buildroot update from v1.25.3.
Nerves systems need the following updates:
- For Raspberry Pi systems using libcamera, change
BR2_PACKAGE_LIBCAMERA_PIPELINE_RASPBERRYPI=y
toBR2_PACKAGE_LIBCAMERA_PIPELINE_RPI_VC4=y
- If using a RISC-V processor, the ISA options changed. This involves changing
BR2_RISCV_ISA_CUSTOM_RVM=y
toBR2_RISCV_ISA_RVM=y
, etc.
-
Fixes
- Fix change to
find
on recent MacOS versions that caused the release scrubber to fail.
- Fix change to
-
Package updates
This is a security/bug fix update for 1.25.2.
- Package updates
This is a security/bug fix update for v1.25.1 that also adds support for the Raspberry Pi 5's WiFi and Bluetooth module.
-
Changes
- Update the RPi WiFi firmware to support the module on the RPi 5. This also brings in about 2 years worth of updates to the firmware so it might help other RPi's.
- Add
rpi-distro-bluez-firmware
package to supply Bluetooth firmware for the RPi 5 and other RPi's.
-
Package updates
This is a patch update to v1.25.0.
The erlinit
update will start saving and restoring random number seeds to
/root/seedrng
. Failures are logged, but ignored.
- Package updates
- erlinit 1.13.0
- pppd 2.5.0 - fixes a build issue with pppd 2.4.9 and GCC 13
This update pulls in Buildroot 2023.08.2. This is a major Buildroot update from v1.24.1 with possibly the biggest change for Nerves users being the update from OpenSSL 1.1.1 to OpenSSL 3.
Nerves systems need the following updates:
- Buildroot 2023.08 updated the default GCC version to GCC 13. Since Nerves
systems and toolchains are mostly on GCC 12 which was the default, the
nerves_defconfig
will need to be updated to select GCC 12. AddBR2_TOOLCHAIN_EXTERNAL_GCC_12=y
tonerves_defconfig
. - Buildroot's toolchain feature detection is better. OpenMP and Fortan support
are autodetect and checked against toolchain features specified in
nerves_defconfig
. To fix the warnings, addBR2_TOOLCHAIN_EXTERNAL_FORTRAN=y
andBR2_TOOLCHAIN_EXTERNAL_OPENMP=y
tonerves_defconfig
. - If using a RISC-V processor, you may need to enable the atomic instructions in the target selection. If you get build errors with Erlang concerning atomics, this is likely the issue.
- Package updates
This is a security/bug fix update for v1.24.0.
- Package updates
This update pulls in Erlang/OTP 26.1 and Buildroot 2023.05.2. For the Buildroot
portion, most projects that work with nerves_system_br
v1.23.x shouldn't need
any changes with this update, but please review the Buildroot release notes.
- Package updates
- Erlang/OTP 26.1
- Buildroot 2023.05.2 See the release notes for Buildroot 2023.05 and Buildroot 2023.05.1.
- Fixes
- Include upstream Erlang aarch64 div/rem JIT patch to fix a math error on
aarch64 devices that affects the
atecc508a
library. This library is used to authenticate connections to NervesHub and other cloud services. See erlang/otp#7567 for details. - Remove acknowledgement when a clean build might be needed when called from non-interactive terminals
- Include upstream Erlang aarch64 div/rem JIT patch to fix a math error on
aarch64 devices that affects the
This is a security/bug fix update for v1.23.1.
-
Fixes
- Patch Erlang to make CTRL-R work over ssh. See OTP PR 7499
-
Package updates
This is a security/bug fix release for v1.23.0. The patch in 1.23.0 to remove the multiline editor code in OTP 26 has been removed since the issue with ssh has been fixed in OTP 26.0.2.
-
Updates
- Allow error messages from merge-squashfs to be propogated to help debug squashfs packaging issues.
-
Package updates
This update pulls in Erlang/OTP 26.0 and Buildroot 2023.02.1. For the Buildroot
portion, most projects that work with nerves_system_br
v1.22.x shouldn't need
any changes with this update, but please review the Buildroot release notes.
-
Upgrade notes
- The default TERM setting changed from vt100 to xterm-256color. In the past, this didn't really matter. With OTP 26, the TERM setting starts being used so applications that use the terminal may change how they render.
- OTP 26.0 comes with a multiline editor. At the time of this release multiline editing didn't work with ssh so it's currently disabled.
-
Package updates
- Erlang/OTP 26.0
- Buildroot 2023.02.1. See the release notes for Buildroot 2023.02 as well.
- erlinit 1.12.3
- Package updates
This is a security/bug fix release for v1.22.6.
-
Fixes
- Remove hardcoded OPTEE filename for use with U-Boot. This is needed for BeaglePlay/TI AM625 support.
-
Package updates
This update contains an update to Nerves Heart to support "snoozing" of hardware watchdog and heart-related reboots to assist debugging heart issues. No other updates were made.
- Package updates
This is a security/bug fix release for v1.22.4.
We switched from Docker Hub to the GitHub Container Registry for new official system images. Existing Docker Hub images are not going away. However, new ones will be at ghcr.io/nerves-project/nerves_system_br. This change should not affect anyone unless you manually fetch the images.
- Package updates
This is a security/bug fix release for v1.22.3.
- Package updates
This is a security/bug fix release for v1.22.2.
-
Fixes
- Emit warnings rather than error out when stripping executables fails on the firmware image packing step. These can happen when using precompiled Rust executables. They still work. The more important architecture checks are not impacted by this change.
-
Package updates
This is a security/bug fix release for v1.22.1.
- Package updates
This is a trivial update to v1.22.0 that allows better debug output control of Nerves Heart. No other changes were made.
- Package updates
This update pulls in Buildroot 2022.11. Most projects that work with nerves_system_br v1.21.x shouldn't need any changes with this update, but please review the Buildroot release notes.
-
Updates
- Support Crosstool-NG-built RISC-V glibc toolchains
-
Package updates
-
Fixes
- Revert RTL8723DS driver update due to an incompatibility with the Allwinner D1 Linux 5.19 branch. It works with Linux 6.1 and these patches are included in Buildroot 2022.11, so upgrading Allwinner D1 systems will eventually be required.
-
Package updates
This is a security/bug fix release for v1.21.4.
-
Fixes
- Pull in RTL8723DS driver updates so that it compiles on Linux 6.1. This fixes an issue building the latest Allwinner D1 (RISC-V) kernel updates.
-
Package updates
This is a security/bug fix release for v1.21.3.
-
Fixes
- Fixes guarded poweroff via Nerves Heart to poweroff instead of halt
-
Package updates
This release updates Nerves Heart to 2.0.1. This is technically a backwards
incompatible version, but only if you use Nerves Heart statistics reports in
your code. Nerves Heart 2.0 has several improvements to address rare issues and
provide better information. The nerves_runtime
library has updates to use
these new features.
- Package updates
This is a security/bug fix release for v1.21.1.
-
Updates
- Use
MIX_BUILD_PATH
if specified for build products
- Use
-
Package updates
This is a security/bug fix release for v1.21.0.
-
Updates
- Fix nerves-env.sh use with Bash
-
Package updates
This is a major update that pulls in Buildroot 2022.08. Most projects that work with nerves_system_br v1.20 shouldn't need any changes with this update, but please review the release notes.
-
Updates
- Use OTP 25.1's new deterministic builds flag
- Many shellcheck fixes to nerves_system_br shell scripts
-
Package updates
This release reverts an update to libp11
in v1.20.5
that currently breaks
the OpenSSL engine integration with ATECC cryptographic chips (like NervesKeys).
It has no other changes.
This is a security/bug fix release for v1.20.4.
- Package updates
-
Updates
- Support aarch64 builds with Docker (Thanks to @doawoo)
-
Package updates
-
Fixes
- Fix sysroot setting when building C/C++ code in Elixir and Erlang libraries. This fixes an issue found with RISC-V, Musl C, and aggressive warnings as error settings.
-
Updates
- Support enabling the vector instruction extension on RISC-V processors.
-
Fixes
- Set
CMAKE_SYSTEM_PROCESSOR
for cmake builds. This fixes a build issue withxnnpack
and possibly other libraries. Thanks to @cocoa-xu for this fix.
- Set
-
Package updates
-
Fixes
- Fixes an issue where the Raspberry Pi Zero 2W's WiFi module's firmware wouldn't load with Linux 5.15
-
Package updates
This is a major update that pulls in Buildroot 2022.05. Most projects shouldn't need any changes with this update, but please review the release notes.
- Package updates
This is a bug fix release for v1.19.0.
- Package updates
- erlinit 1.12.1
- Raspberry Pi WiFi firmware - 20210315-3+rpt5 + Zero 2W fix
This is a major update that pulls in Buildroot 2022.02.1 and Erlang/OTP 25.
-
Package updates
-
Updates
- No longer install ERTS to the release. This means that the Mix release
generator needs to install ERTS, but it had been doing this and it had been
ignored. No changes to your project are needed. ERTS will be under
/srv
now on the device rather than/usr
. - It's now possible to use the
start.boot
boot script. It's no longer scrubbed from the release. - Build a host version of Erlang so that the host and target Erlang definitely match. This had been removed to speed up builds in the past. However, it did not work when compiling the new JIT. This is the "safe" option since mismatched host and target Erlang versions could cause problems.
- No longer install ERTS to the release. This means that the Mix release
generator needs to install ERTS, but it had been doing this and it had been
ignored. No changes to your project are needed. ERTS will be under
- Package updates
- Erlang/OTP 24.3.2. See Erlang/OTP 24.3.1 and Erlang/OTP 24.3 for other changes.
This is mostly a Buildroot and Erlang bug fix release. It should be safe to
upgrade to from v1.18.4
.
-
Changes
- boardid: Support reading serial numbers from the GRiSP2 EEPROM
- bborg-overlays: Support changing the directory where Beaglebone device tree overlays get installed. Default remains the same (/lib/firmware).
-
Package updates
This is a Buildroot and Erlang bug fix release. It should be safe to upgrade to
from v1.18.3
.
-
Changes
- Buildroot's gcc argument settings are now recorded to Nerves systems in the
buildroot-gcc-args
file. This includes flags that enable CPU features that may not be enabled by default in the toolchain. This file can be used for the newTARGET_GCC_FLAGS
variable that can be set in the Nerves System'smix.exs
package definition.
- Buildroot's gcc argument settings are now recorded to Nerves systems in the
-
Package updates
-
Changes
- Add
cmake
support via theCMAKE_TOOLCHAIN_FILE
environment variable. Pass-D CMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
when configuring a CMake project to use. Thanks to @cocoa-xu for this.
- Add
-
Fixes
- Prepend host tools to
PATH
rather than append them. SinceLD_LIBRARY_PATH
is set, there was a possibility of using a system-supplied program with a Nerves-supplied shared library. This makes this less possible. Thanks to @ejc123 for tracking this down.
- Prepend host tools to
- Fixes
- Fix issue creating SBOM information (
make legal-info
) for the RPi WiFi firmware.
- Fix issue creating SBOM information (
This is a minor update to v1.18.0.
- Changes
- Include host freetype and host libjpeg to fix compilation errors with qt5webengine. Thanks to @wzin for tracking this down and working with the Buildroot devs. The patch will be here until an upstream fix is released.
- Update WiFi firmware for all Raspberry Pi platforms. This brings in a number of fixes that were released over the past year. See changelog.
This is a major update that pulls in Buildroot 2021.11. Please review the Buildroot release notes in addition to the following:
- Add
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
to thenerves_defconfig
. Even if the kernel required host openssl, it was sometimes possible to build successfully without the option. This changed, so now the option is required. - For Raspberry Pi systems, the firmware options changed. Here's what you need
to do:
- Remove
BR2_PACKAGE_RPI_FIRMWARE_X=y
- Add
BR2_PACKAGE_RPI_FIRMWARE_BOOTCODE_BIN=y
- Add
BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI=y
for the default firmware OR - Add
BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI_X=y
for the extended firmware. This is what the official Nerves systems use. If you do this, you must change thefwup.conf
. - If you've copied and customized
fwup.conf
(usually inconfig/fwup.conf
) then you need to update the firmware filenames. You only need to do this if you're using the extended firmware. In theon-resource
blocks, change thestart.elf
resource to load fromstart_x.elf
and thefixup.dat
resource to load fromfixup_x.dat
. You'll get an error building the firmware about not being able to findstart.elf
if you don't do this.
- Remove
If in doubt, check out the differences that we made to the official systems on GitHub or on Hex.pm (e.g. the full nerves_system_rpi4 change and partial nerves_system_rpi4 change).
-
Package updates
-
Fixes
- The S3 bucket that was being used as an backup download site is no longer available to us. The new backup site is https://dl.nerves-project.org/
- Package updates
- Package updates
- Erlang/OTP 24.1.4. Also see Erlang/OTP 24.1.3 changes
- Package updates
- Package updates
This is a major update to Buildroot 2021.08. Please review the Buildroot release notification below in addition to the following.
-
Buildroot's default version of GCC changed, so add the following to your
nerves_defconfig
:BR2_TOOLCHAIN_EXTERNAL_GCC_10=y
- Package updates
- Improvements
- Make shell script shebang lines consistently call
/usr/bin/env
to findbash
. This fixes an issue with NixOS and possibly other setups. Thanks to @mayl for this change. - Resync Busybox configuration. This removes the
mim
andbase32
applets that were turned on by default on a update.
- Make shell script shebang lines consistently call
This is primarily a bug fix release for Buildroot and Erlang/OTP. The Erlinit
update brings in beta support for including a
runtime.exs
in your project. This support is new and may lead to reboot loops if you have
not configured your system to revert to previous firmware loads on failures.
- Package updates
-
Package updates
-
Improvements
- Adds a default
/etc/sysctl.conf
file to support setting kernel parameters on initialization. This requires anerves_runtime
v0.11.5
or later. The current default only enables non-root use of ICMP. This simplifies use of ICMP in Erlang and Elixir.
- Adds a default
-
Bug fixes
- Fixes an issue on MacOS where if you had
/home
in your$PATH
,mix firmware
could go from taking 10 seconds to many minutes to run due to themerge-squashfs
script. Thanks to Jonathan Palley for some serious detective work to narrow this issue down. - Fixes an issue on MacOS with exclusing files from the scrubber.
- Fixes an issue on MacOS where if you had
-
Package updates
-
Improvements
- Software Bill of Materials (SBOM) information from Buildroot can now be
packaged with Nerves systems. The system needs to add
pkg-stats
and/orlegal-info
to the make targets to use. This is an experimental update and will likely be changed and improved. Note that SBOM info has always been available, but it just hasn't been convenient. We're trying to make it more accessible. - It's now possible to build on aarch64 Linux machines.
- Software Bill of Materials (SBOM) information from Buildroot can now be
packaged with Nerves systems. The system needs to add
- Package updates
- Erlang/OTP 24.0.3
- erlinit 1.10.0
- boardid 1.11.1
- bborg-overlays: bump to latest SHA (device tree updates for BBB)
This is a major update to Buildroot 2021.05. Please review the Buildroot release notification below in addition to the following.
-
The
wpa_supplicant
options in Buildroot changed. If you're usingvintage_net_wifi
, you'll need to make sure that the control interface is enabled now. Add the following to yournerves_defconfig
:BR2_PACKAGE_WPA_SUPPLICANT_CTRL_IFACE=y
-
Package updates
- Buildroot 2021.05
- Erlang/OTP 24.0.2
- Broadcom WiFi firmware for Raspberry Pis 1:20190114-1+rpt11. Despite the version number, this is the latest from Raspberry Pi OS.
-
Improvements
- Build Nerves on RISC-V platforms. RISC-V is not officially supported, but experiments are ongoing as low cost hardware becomes available.
This is a security/bugfix release for Buildroot and Erlang.
-
Package updates
-
Improvements
- Various shellcheck warning fixes that make paths with spaces work in more places. Thanks to @pojiro for this.
This is a security/bugfix release for Buildroot and Erlang.
- Package updates
This is a major update to Buildroot 2021.02. Please review the Buildroot release notification below in addition to the following. The following changes affect all systems:
-
The
rngd
daemon's jitter entropy option changed defaults. This daemon feeds values from a hardware random number generator to the Linux kernel's entropy pool. Without it, you can experience long boot delays as programs wait for enough entropy to get good random numbers. Jitter entropy is a way of gathering entropy from the CPU without any special random number generation hardware. It's not necessary with most hardware with Nerves and it adds a boot-time delay as the CPU is measured. Previously it defaulted to off. Now you need to add the following to yournerves_defconfig
:# BR2_PACKAGE_RNG_TOOLS_JITTERENTROPY_LIBRARY is not set
-
Buildroot changed how it computes hashes over projects downloaded from version control systems. If you have made a custom system and added your own packages, you may need to update the
.hash
files to-br1
versions. The files are different so the existing checksums will not match. See buildroot 5b95a5d for more info. -
The
nervesproject/nerves_system_br
Docker image that corresponds to this release has been updated from Ubunto 18.04 LTS to Ubuntu 20.04 LTS. This fixed an internal compiler error that was seen, but resulted in some package changes (no more Python 2, for example) that might affect scripts using it.
-
Improvements
- It's now possible to include executable files for other CPU architectures in
the root filesystem without have the scrubber find them and report an error.
To use this feature, add the file
.noscrub
to the directory with the files.
- It's now possible to include executable files for other CPU architectures in
the root filesystem without have the scrubber find them and report an error.
To use this feature, add the file
-
Package updates
This release is a security and bug fix release for Buildroot and Erlang/OTP.
-
Improvements
- Add
CPPFLAGS
for projects that only use the C preprocessor - Clear out
PKG_CONFIG_PATH
to avoid confusion with host settings
- Add
-
Package updates
This release is primarily a security fix release for Buildroot and Erlang/OTP.
- Package updates
- Package updates
- Package updates
This is a security fix release that pulls in fixes from Buildroot 2020.11.1 and Erlang/OTP 23.2.2.
- Package updates
This is a major update to Buildroot 2020.11. Please review the Buildroot changes
in the release announcement below. Due to a change in how Buildroot handles
U-Boot environment options, all Nerves systems will need to update their
nerves_defconfig
as follows:
-BR2_TARGET_UBOOT_ENVIMAGE=y
-BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="${NERVES_DEFCONFIG_DIR}/uboot/uboot.env"
-BR2_TARGET_UBOOT_ENVIMAGE_SIZE="131072"
BR2_PACKAGE_HOST_UBOOT_TOOLS=y
+BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE=y
+BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SOURCE="${NERVES_DEFCONFIG_DIR}/uboot/uboot.env"
+BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE_SIZE="131072"
- Package updates
- Bug fixes
- Fix issue where files from Buildroot with spaces in them were not being included in SquashFS images. These were reported in the build output, but ignored.
This is a patch release to bump Erlang and fwup to their latest patch releases.
- Package updates
-
Bug fixes
- rpi-userland is now available for Raspberry Pi's in 64-bit mode. This fixes
pullup/pulldown support in
circuits_gpio
on the RPi4. - The Raspberry Pi WiFi firmware is now sourced from the Raspberry Pi OS. This fixes a 5 GHz issue that was seen in Japan. It is likely this fixes other issues since the Raspberry Pi OS firmware was years newer than the previous one.
- rpi-userland is now available for Raspberry Pi's in 64-bit mode. This fixes
pullup/pulldown support in
-
New features
erlinit
has an experimental feature for using an overlay filesystem for making the root filesystem writable. This makes some hot code update experiments possible. Seeerlinit
for details.
-
Package updates
This updates Erlang/OTP to the latest upstream patch release. The boardid
update brings in support for ATECCx08A improvements.
- Package updates
This release contains a patch update to Buildroot. If you haven't updated to
v1.13.0 yet, please see the BR2_TOOLCHAIN_EXTERNAL_GCC_9
note before updating
to this release.
The Raspberry Pi support has been updated. This contains an important change to
the rpi-firmware
package to allow systems to set it appropriately based on
what Linux kernel is in use. Our guidance is to use an rpi-firmware
version
with the same tag name as the Linux kernel that you're using or to pick a tag
that's close in time. The reason for this is that the rpi-firmware
package
contains files that seem to be kernel version dependent and subtle things fail
when they're out of sync. See commit 1da5838
.
- Package updates
- Buildroot 2020.08.1
- Raspberry Pi firmware and userland
- Package updates
-
Package updates
-
New features
- Support
*_FOR_BUILD
environment variables. For exampleMakefile
s used in Elixir projects can referenceCC_FOR_BUILD
to use the host's C compiler rather than the crosscompiler. This makes it possible to make build tools without hardcoding references togcc
, etc. These are the same names as those used by autotools.
- Support
This is a major update to Buildroot 2020.08. Please review the Buildroot change
notes for updated libraries and system programs. In particular, a change to the
gcc version default requires that most Nerves system update their
nerves_defconfig
files with the following line:
BR2_TOOLCHAIN_EXTERNAL_GCC_9=y
- Package updates
This release starts the migration from using /root
and the writable
application directory to using /data
. Currently /data
is a symlink to
/root
. Users are encourage to update paths in their programs to /data
as
makes sense.
- Package updates
- nerves_heart 0.3.0 - Supports configuration of the watchdog device path via
HEART_WATCHDOG_PATH
- nerves_heart 0.3.0 - Supports configuration of the watchdog device path via
- Package updates
-
Package updates
-
Bug fixes
- Fixed references to using the
-Os
optimization flag for compiling C and C++ code. Nerves uses-O2
by default everywhere else, so this makes it consistent. This will affect the optimization setting for code compiled byelixir_make
unless a project has overridden it.
- Fixed references to using the
-
New packages
- nerves_initramfs 0.4.0 - Support for failing back to known good firmware images and complicated rootfs mounting procedures for devices with limited bootloaders.
-
Package updates
- boardid 1.9.0 - Support reading serial numbers from redundant U-Boot environment blocks
- erlinit 1.7.1 - Set $HOME based on
/etc/passwd
. This does not affect most Nerves devices.
This is a major update that includes Erlang/OTP 23.0.2 and Buildroot 2020.05. If
you cannot upgrade to OTP 23, it is possible to continue using OTP 22 (22.3.4.1)
by creating a custom system with the BR2_PACKAGE_ERLANG_22
in the Buildroot
configuration.
- Package updates
- Buildroot 2020.05
- Erlang/OTP 23.0.2
- Qt 5.14.2 - This is an update from 5.14.1 that may affect webengine kiosk users
- bb.org overlays - The device tree overlays for the Beaglebone boards has been bumped to the latest. This adds support for new Beaglebone boards and peripherals.
- Raspberry Pi firmware - This has been bumped to the 1.2020601 branch. If you have a custom Raspberry Pi system, you're encouraged to bump your Linux kernel to the same tag.
This is a minor update that bumps Erlang/OTP to 22.3.3 and fwup to 1.7.0. The fwup update changes the default write behavior to verify every write. This may detect some rare, but recoverable, MicroSD failures earlier.
-
Package updates
- Erlang/OTP 22.3.3
- fwup 1.7.0 - verified write support
- Busybox - include brctl utility (~ 5 KB) to support bridge creation with VintageNet
-
Bug fixes
:os_mon
's disk usage monitoring works now. If you're using the Phoenix LiveDashboard, disk usage monitoring will show up now.
This is a minor update that brings in a patch update to Erlang/OTP (22.3.1) and initial support for applying delta firmware updates. Delta firmware updates significantly reduce Nerves firmware images sizes for small code changes. This contains the building blocks for delta firmware updates. The current process for creating patches is manual and tooling is not available yet.
-
Package updates
- Erlang/OTP 22.3.1
- erlinit 1.7.0 - tty initialization support
- fwup 1.6.0 - xdelta3/VCDIFF patch support
-
Improvements
- Support for the
NERVES_MKSQUASHFS_FLAGS
variable to adjust SquashFS filesystem creation to reduce patch size when usingfwup 1.6.0
's delta firmware update support.
- Support for the
This release updates Erlang/OTP to the latest official release. It also includes
an update to fwup
that removes a dependency on libsodium
. Unless another
package requires it, the libsodium
shared libraries will no longer be
installed in firmware images. If you are using libsodium
, double check that
it's enabled in your configuration.
- Package updates
- Erlang/OTP 22.3
- erlinit 1.6.1 - Fix for /dev/rootdisk symlink issue on some x86 and eMMC-using systems
- fwup 1.5.2 - Footprint reduction
This release updates Buildroot to 2020.02. Buildroot release notes are at http://lists.busybox.net/pipermail/buildroot/2020-March/276231.html.
-
Package updates
- Erlang/OTP 22.2.8
- rpi-firmware 1.20200212 - Raspberry Pi-based systems are encouraged to upgrade their Linux kernels to the 1.20200212 versions to match.
- boardid 1.8.0 - Support for nVidia Jetson Nano and similar boards
-
Improvements
- The default Busybox configuration contains the
mknod
now. - The new default Busybox configuration filename is
busybox.config
. The old namebusybox-1.22.config
still works, but is a symlink.
- The default Busybox configuration contains the
This release updates Qt so that kiosk projects using Qt Webengine can use a more recent chromium build. Qt 5.14.1 requires gcc 9.2 (See Nerves toolchain release 1.3.0) to get past an internal compiler error.
- Package updates
- Erlang/OTP 22.2.6
- Qt 5.14.1
This release fixes a warning and startup delay that was introduced with the rng-tools update in Buildroot. In v1.10.0, rngd would try jitterentropy even if the platform has a hwrng. Additionally jitterentropy's sanity checks fail on platforms like the Raspberry Pi Zero and print error messages to the console. With this update, jitterentropy must be manually enabled, but this behavior will change depending of the outcome of https://bugs.busybox.net/show_bug.cgi?id=12511.
- Package updates
- Erlang/OTP 22.2.4
- boardid 1.7.0 - Support for hardcoded serial number prefixes
This release pulls in security and bug fixes from Buildroot and Erlang.
- Package updates
- Buildroot 2019.11.1
- Erlang/OTP 22.2.3
- erlinit 1.6.0 - Feature update to support Yocto so no changes for Nerves users.
- boardid 1.6.0 - Support serial numbers stored in DMI/BIOS on x86
- mesa3d - Experimental update to support the Raspberry Pi 4's V3D driver
This release updates Buildroot to 2019.11. Buildroot release notes are at http://lists.busybox.net/pipermail/buildroot/2019-December/267603.html.
The second major change is to enable dnsd, udhcpd and ifconfig in the default
Busybox configuration. Due to some cleanup, Busybox's footprint actual shrank
this release. However, the new utilities that were enabled make it possible to
support the new
vintage_net
and
vintage_net_wizard
out of the box.
-
Package updates
- Buildroot 2019.11
- Erlang/OTP 22.1.8
- fwup 1.5.1
-
Improvements
- Busybox - Clean default configuration and enable dnsd, udhcpd, and ifconfig
This release pulls in security and bug fixes from Buildroot and Erlang.
- Package updates
- Buildroot 2019.08.2
- Erlang/OTP 22.1.7
- fwup 1.5.0 - GPT support, experimental filesystem encryption
- erlinit 1.5.3 - Bug fix to support Erlang slave nodes
- Package updates
- wpa_supplicant v2.9 - This pull in several security fixes and addresses a WPA-EAP crash on Raspberry Pis.
- bborg-overlays - Update to latest device tree overlays for Beaglebone boards.
This updates Buildroot to 2019.08.1 which is a security and bug fix update to 2019.08.
- Package updates
- Buildroot 2019.08.1
- Erlang/OTP 22.1.1
-
Bug fixes
- Fix path length issue when building qt5webengine/chromium on CircleCI
-
Package updates
- erlinit v1.5.2 - Reproducible build support
- Bug fixes
- Fix regression with CI scripts preventing artifacts from being published.
This updates Buildroot to 2019.08. Buildroot release notes are at http://lists.busybox.net/pipermail/buildroot/2019-September/258136.html.
- Package updates
- Buildroot 2019.08
- Package updates
- erlinit v1.5.1 - Fix issue where erlinit would stop reaping zombies if they were being created too quickly
-
Package updates
- rpi-firmware - Bump to latest version to fix framebuffer issue found on Raspberry Pi Zeros
-
Improvements
- Export pkg-config paths so that C programs with Makefiles that use pkg-config have a better chance of working
-
Patches
- Qt 5.13.0 - Fixes compilation errors when building Chromium for arm.
-
Package updates
- Erlang/OTP 22.0.7
- Package updates
- Raspberry Pi firmware updates to support the Raspberry Pi 4
- Erlang/OTP 22.0.5, 21.3.8.4, and 20.3.8.9
- Qt 5.13.0 - This fixes compilation errors when building Chromium for x86_64. Unfortunately, Raspberry Pi compiles still don't work.
- Buildroot 2019.05.1 - security and bug fixes to a variety of packages
- Package updates
- Erlang/OTP 22.0.4
This release only updates Erlang and erlinit. The erlinit change adds a feature needed for the upcoming Elixir 1.9 releases (i.e., non-Distillery releases).
- Package updates
- Erlang/OTP 22.0.3
- erlinit v1.5.0
This updates Buildroot to 2019.05. Buildroot release notes are at http://buildroot-busybox.2317881.n4.nabble.com/Buildroot-2019-05-released-td224685.html.
- Package updates
- Buildroot 2019.05
- erlang 22.0.2
This release includes a change to remove absolute paths from compiled .beam in OTP. This is just one of many changes needed to be able to generate the exact same output from the same source code. Unfortunately, other changes are needed (mostly removing timestamps) so at this point Nerves doesn't produce identical output for identical inputs.
-
Package updates
- erlang 21.3.6
-
Bug fixes
- Remove absolute paths from OTP's .beam files (enable
+deterministic
compiler flag)
- Remove absolute paths from OTP's .beam files (enable
This release provides early access for ordering the rootfs based on the OTP init
script's primload order. With this feature, one can order .beam
files
contiguously rather than distributed across the file system. This can be a boot
performance optimization on systems with slow I/O since it allows for reads from
the device to pull in multiple .beam
files into memory at a time. It requires
corresponding updates to nerves
to pass in the order.
This updates Buildroot to 2019.02. Buildroot release notes are at http://buildroot-busybox.2317881.n4.nabble.com/Buildroot-2019-02-released-td217410.html.
- Package updates
- Buildroot 2019.02
- erlang 21.2.7
-
Package updates
- erlang 21.2.6
-
Bug fixes
- Bump fwup version in the associated DockerFile
- Fix Erlang/OTP version check in dev scripts
- Package updates
- erlang 21.2.5
- fwup 1.3.0 - support expanding the data partition to be as large as possible
With this release, a host version of Erlang is no longer built. This version of Erlang isn't used except for some very rare cases that don't seem to be used any longer. This change reduces the build time by minutes.
- Package updates
- erlang 21.2.4
- boardid 1.5.3
This release also contains some cleanup to the Erlang DNS resolver
configuration. Previously, if the Erlang resolver failed, the system (C library)
resolver would be tried. Since the Erlang and system resolvers were configured
the same, this fallback to the system resolver shouldn't have worked. In the
cleanup, the fallback to the system resolver was removed. See
board/nerves-common/rootfs_overlay/etc/erl_inetrc
for the new default
configuration.
- Package updates
- OpenSSL 1.1.1a
The associated Docker image (nervesproject/nerves_system_br) now has Erlang
21.2.2 installed on it. Erlang 21.2.2 + OpenSSL 1.1.1a enable more features with
the :crypto
library like ed25519 support. See the Erlang 21.2.x release notes.
- Package updates
- erlang 21.2.2
- boardid 1.5.2
This release pulls in a bug fix/security release from Buildroot and support for
starting Erlang via the run_erl
command so that console messages can be logged
using standard OTP tools. Currently none of the official systems are switching
to run_erl
, but that may happen in the future. It's now feasible to point the
console to /dev/null
and not miss console messages if you need to lock down
all unauthenticated console access.
- Package updates
- Buildroot 2018.11.1
- erlinit 1.4.9
- boardid 1.5.1
- rpi-firmware - corresponds with 4.14.78. If you have a custom rpi you may
want to bump your kernel version especially for the RPi 3 B+ which has an
Ethernet reliability fix. See
nerves_system_rpi3
.
This is a patch release. There's no reason to upgrade unless you've run into the issues below.
- Package updates
- erlinit 1.4.8 - improves hostname checks to help avoid setting non-RFC 1123 compliant names
- boardid 1.5.0 - adds support for specifying parameters via /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.
- Package updates
- openssl 1.1.0h
- erlang 21.2
- libp11 0.4.9
This updates Buildroot to 2018.11. Buildroot release notes are at http://lists.busybox.net/pipermail/buildroot/2018-December/237402.html.
- Package updates
- Buildroot 2018.11
- erlang 21.1.4
- boardid 1.4.0 - NervesKey serial number support
Re-package v1.5.5 on hex.pm to fix archive errors from hexpm/hex#631
-
Bug fixes
- Remove Busybox commands: tc, svok, and i2c tools. These weren't intended to be enabled and either don't work with Nerves or have Elixir equivialents
- Remove Powershell and .script files from firmware for minor firmware size reductions
-
Package updates
- Buildroot 2018.08.3 - This is a security/bug fix update
- erlang 21.1.3
- boardid 1.3.0 - better ATECC508A support
-
Bug fixes
- OTP release scrubber has been fixed to detect libraries and executables that were compiled for OSX being included in Nerves releases. This happens with stale path dependency builds and can be hard to debug if you're not familiar with the issue.
-
Package updates
- Buildroot 2018.08.2 - This is a security patch update to 2018.08
- nbtty 0.4.1 - Optionally suppress output to the console until the user is availabe
- Package updates
- erlang 21.1.1
- erlinit 1.4.7 - Fixes x86_64 NVME rootfs detection issue
- fwup 1.2.6
- Package updates
- rpi-firmware - bump to the latest Linux 4.14.71 update to fix flaky USB on the Raspberry Pi Zero.
- Package updates
- bborg-overlays - Update to the latest device tree overlay set for the Beaglebone platforms
- boardid - Add preliminary support for pulling serial numbers from the ATECC508A crypto chip
This version updates Buildroot to 2018.08. If you are using a system with U-Boot, you may see a compiler error due to the new version of the device tree compiler. See http://buildroot-busybox.2317881.n4.nabble.com/Buildroot-2018-08-released-td203016.html for options.
-
Package updates
- Buildroot 2018.08
- nerves_heart 0.2.0 - Pulls in minor fix from upstream and changes printfs to logs that can be captured by the Elixir logger.
- erlang 21.0.9
-
Bug fixes
- Fixed bizarre slowdown on some Macs due to using chained calls to sed. This version converts those calls into one. Thanks to Jason Butterfield for finding and fixing this issue.
- Bug fixes
- Updated docker image with better handling for switching user in the docker-entrypoint script.
- Updated patch for erlang 21.0.6
Improved the error message presented from scripts/scrub-otp-release.sh when encountering an executable that was compiled for a different target.
- Package updates
- erlang 21.0.6
- Package updates
- Qt 5.11.1 - Update from 5.10.1 to get more recent Chromium version
- erlinit v1.4.6 - Fix permissions issue when running Chromium non-root
This release adds experimental support for Erlang/OTP 20 in systems. Official
Nerves Systems do not use this, but it's possible to enable by creating a custom
system, running make menuconfig
and navigating to the Erlang options to enable
OTP 20. Please provide feedback if this works so we know that it is sufficient
and worth maintaining going forward.
-
Package updates
- erlang 21.0.5 or 20.3.8.5
- fwup v1.2.5
- erlinit v1.4.5
-
Bug fixes
- Fix broken QMAKESPEC path for building Qt projects in Elixir projects
- Pull in the host-ncurses build patch from upstream Buildroot. This fixes the root cause that triggered the Docker update in v1.4.1.
The busybox config has been refreshed in this version but should contain no intentional changes from the previous version.
- Bug Fixes
- Updated docker image to set user id and group id in entrypoint script. This fixes an issue when building packages that require the user has a defined user.
This release adds experimental support for compiling Qt code that's inside an Elixir or Erlang project. This lets you build Qt-based UIs without having to include your Qt/C++ code inside a custom Nerves system.
This release also includes the rngd
program in all Nerves systems. Nerves
systems almost universally have a lack of entropy on start and this can delay
boot in many cases. The rngd
utility is part of the solution to supplying more
entropy to the Linux kernel at boot and is a very small binary.
-
Package updates
- Buildroot 2018.05.1 - Bugfix/security updates to many packages
- erlang 21.0.4
- fwup v1.2.4
-
Bug fixes
- Override more Make implicit variables. This catches calls to ar, as, and ld so that the crosscompiler versions can be used instead.
- Bug fixes
- Fix issue with calling readelf on shell scripts and improve error message.
- Include patch for QT5WebEngine parallel compile fix.
-
New features
- erlinit 1.4.4
- nbtty 0.4.0
-
Bug fixes
- Removed call to 'file' from OTP release scrubbing script to get rid of a warning some users were seeing.
The erlinit version bump fixes the following issues:
- When running Docker on Nerves targets, Docker would report parse errors when detecting filesystems due to erlinit not filling out a field. This fixes that.
- Applications would inherit erlinit's signal mask. This caused confusion, so now a default signal mask is passed on to the application.
The nbtty version bump fixes an issue where exiting from Erlang wouldn't be detected and adds support for specifying tty files. The latter is needed for those wanting to use configfs to configure the gadget USB interface.
- New features
- Erlang 21.0
- New features
- boardid 1.1.1
- fwup 1.2.1
- Erlang 20.3.8
The new boardid version fixes an issue with using empty serial numbers from the U-Boot environment block. The new behavior is to fall back to use other IDs if the saved serial number is blank.
The new fwup version improves the meta-uuid implementation so that firmware update servers can determine with a high degree of confidence what's running on a device without users needing be accurate with version numbers or needing to inject a version control ID into their fwup.conf scripts.
- Bug fixes
- Patched regression in Buildroot 2018.05 that made it impossible to enable QtWebEngine
- New features
- Buildroot 2018.05
- boardid 1.1.0
- bborg-overlays (latest SHA)
Buildroot 2018.05 contains the normal set of minor version bumps throughout. It let us remove 8 patches that we had been carrying around. See the Buildroot announcement for details.
The boardid
bump improves about the U-boot environment block support by
simplifying the configuration needed in the erlinit.config
script.
The bborg-overlays project has had several improvements since we last took a
snapshot of it. Some of these are needed for the upcoming device tree overlay
support in nerves_system_bbb
that uses the new U-boot overlay support.
- New features
- Erlang 20.3.6
- Qt5 5.10.1
- boardid 1.0.0
- erlinit 1.4.1
The Qt5 version bump pulls in a newer version of Chromium for those users making kiosks.
The boardid
update adds support for pulling serial numbers from U-boot
environment blocks. This is very useful if you assign serial numbers to boards
on the manufacturing line and would like hostnames, node names and mDNS to use
your serial numbers.
Note: Versioning on nerves_system_br
doesn't follow semver. This particular
release is low-risk, but it is recommended that Nerves systems specify the
nerves_system_br
version explicitly and review the change notes here to ensure
that a version bump of one of the included projects is non-breaking.
-
New features
- Erlang 20.3.5
- pigpio V67
- Buildroot 2018.02.2. This is a bugfix/security patch release to 2018.02.1
- fwup 1.1.0
-
Bug fixes
- Fixed PKG_CONFIG environment variables to point to staging (target) versions of packages. This is needed for cmake and Makefile projects that use pkg-config.
-
Removed packages
- erlang-relx - This version of relx hadn't been used in a long time. Since it was also out-of-date, the choice was made to remove it.
- Bug Fixes
- Include buildroot patch for enabling widechar for host ncurses to fix issues
with
make linux-menuconfig
rendering a lot of@?
characters.
- Include buildroot patch for enabling widechar for host ncurses to fix issues
with
-
New features
- Buildroot 2018.02.1 patch release integrated. This removes the need for two patches that we had been maintaining and includes a few minor version bugs bug fixes.
- Refactor the rootfs_overlay merge logic to support multiple rootfs_overlays.
To use this in your programs, a corresponding update is required in the
nerves
project. See nerves PR #269.
-
Bug fixes
- Prevent the scrubber from erasing /etc/services and /etc/protocol if the user provides their own versions.
-
New features
- Erlang 20.3.2
- Pull in BR patches required to support the Raspberry Pi 3 B+
-
Bug fixes
- Updated the release scrubber to call
readelf
instead offile
for checking whether an executable was made for the right system. This makes the check more portable. While doing this the Linux kernel header check was removed. This check was too conservative and disallowed Rust and Go binaries that were fine.
- Updated the release scrubber to call
- New features
- Erlang 20.3.1
- Nerves replacement to
heart
. This addresses a minor issue with calling reboot with the defaultheart
and re-adds integration with hardware watchdogs.
-
New features
- Buildroot 2018.02
-
Bug fixes
- Removed trivial .fw creation to remove need to build rebar. The reason for the removal was that it sometimes triggered compiler errors. Since only one person used the .fw file (to our knowledge), it seemed easier to skip building it. This requires a change to CI scripts in systems that publish the .fw file.
- Reduced ANSI window polling over serial ports (nbtty). This makes viewing logs a little faster and reduces the chance of stray ANSI sequences corrupting the terminal.
- New features
System tarballs no longer use the ustar format due to the 99 character path limitation. This means that they can't be untar'd with Erlang's built-in tar file support.
- New features
- fwup v1.0.0
- Buildroot 2017.11.2 - security patch release
- Enable selection of rpi-firmware to support Raspberry Pi ports that want to use Linux 4.9 rather than 4.4
- Bug fix
- Fix undeterministic build break for Erlang due to missing host-autoconf dependency.
Drop build metadata for now due to publish errors from hex.pm.
- Bug fix
- Force Erlang to use Buildroot's version of autoconf rather than the host OS's version
- New features
- Erlang 20.2.1
-
New features
-
Bug fixes
- A couple obscure new Busybox commands crept into the default config due to the Buildroot version bump in the v0.16.0. These have been disabled.
Since Nerves systems can become highly dependent on Buildroot releases, we've
decided to append the Buildroot version number to the end of the version string.
This makes it possible for us to release nerves_system_br
with different
target Buildroot versions. While it is generally good to track Buildroot
releases to obtain security fixes and improvements, this can cause unwelcome
work on a stable product. It is also critical to know when you're upgrading
Buildroot versions since many C-based packages will be updated that could result
in regressions. Buildroot does provide long term support releases
that only contain security patches so users may want to transition to those
branches to minimize upgrade risk.
-
New features
- Buildroot 2017.11
-
Bug fixes
- Fixed locale warnings in Docker for some users.
Developers can upgrade by running
docker pull nervesproject/nerves_system_br
- Fixed locale warnings in Docker for some users.
Developers can upgrade by running
- New features
- New features
- Erlang 20.1
- fwup v0.18.0
- erlinit v1.3.0
- Added QT5 webengine patches for chromium support
- moved nerves.exs to mix.exs for nerves v0.8.0
- Bug fixes
- Buildroot 2017.08.1 - This brings in the KRACK and dnsmasq vulnerability fixes among a few other small patches.
- Added back missing /etc/resolv.conf
- New features
- Buildroot 2017.08 - Primarily minor package updates throughout, but a change to how the rootfs skeleton is maintained affects all systems. Systems now need to specify a custom skeleton or receive an error. The error message has details.
- fwup v0.17.0 - This includes an exit handshake feature that can be used by nerves_firmware_ssh to avoid a race condition when reporting update errors.
- erlinit 1.2.0 - support Elixir's protocol consolidation
- nbtty - a non-blocking terminal passthrough to fix an issue with routing the IEx prompt through a gadget serial port
- Added a patch to e2fsprogs to avoid hanging on a lack of entropy during system startup when formating the application partition
- Enhancements
- If a rootfs_overlay is specified and doesn't exist, throw an error.
- Bump version of fwup to v0.16.0 (no major updates for Nerves)
- Limit the Buildroot patches to only the patches/buildroot directory. This makes way for supporting the Buildroot global patch directory in nerves_system_br. This isn't used yet.
- Fix SHA256 hashes for rpi-firmware and rpi-userland. See Issue 109.
- Bump version to work around hex issue 404
The default directory for downloading tarballs for Buildroot is now "~/.nerves/dl". This was done to facilitate sharing of downloaded tarballs with other Nerves components.
Please erase or move the files in your ~/.nerves/cache/buildroot
to the new
location.
- Bump version to work around hex issue 404
- Enhancements
- Fix deprecation warnings for Elixir 1.5
- fwup 0.15.4 - Changed signing keys to be base64 encoded. Added commandline parameters for passing public and private keys via commandline arguments
- Improved error messaging for when a toolchain is not found when requiring nerves_env.exs
-
Renaming
- Per Buildroot convention, the rootfs-additions directory is being renamed to rootfs_overlay. A symlink is put in its place to avoid breaking any systems.
- Remove qemu configurations. They always should be in the system, so this forces it. (Technically this is a breaking change, but the qemu system is currently not a particularly usable system.)
-
Bug fixes
- erlinit 1.1.4 - Fixes a hang when rebooting when using the gadget serial port on Beaglebone platforms
- erlang-history - removed package. It is not useful with OTP 20 and was a no-op in the past patch releases.
- Replace partial lookup table in merge-squashfs with logic that handles all permission types (thanks to radu for this fix)
- Bug fixes
- fwup v0.15.3 - Fix segfault on targets with 1 TB drives. This should have hit targets with smaller Flash sizes - possibly down to 16 GB. The regression was introduced in fwup v0.15.0.
- Bug fixes
- erlinit 1.1.3 - Fix hang when gracefully shutting down that was reported on an RPi3 project
-
New features
- Erlang/OTP 20
- fwup v0.15.2 - caching improvements; improved error messages; new metadata fields for storing miscellaneous user application info
-
Bug fixes
- erlinit 1.1.2 - Fix blocking I/O issue that was found when using USB gadget mode.
- New features
- fwup v0.15.0 - much improved caching, support for TRIM, u-boot improvements
- erlinit 1.1.1 - fixed problem with reaping zombie orphans (processes)
- busybox - Added dd, find, grep, and a few other utilities now that Nerves.Runtime.Shell is available
-
New features
- Buildroot 2017.05 - Primary minor package updates, but has improved Raspberry Pi firmware support and an overlay-supporting dtc compiler for the BBB.
- pigpio - New package for Raspberry Pi targets
- erlinit 1.1.0 - support for modifying the graceful shutdown timer
-
Removals
- raspijpgs - Removed package. See picam for MJPEG streaming on Raspberry Pis now.
- Bug fixes
- erlinit 1.0.1 - fix Erlang VM exit detection bug introduced by graceful shutdown feature
- Lock down which .fw file is burned in
make burn
- only affects Linux users that run manual builds
-
New features
- erlinit 1.0 - new graceful shutdown feature may break existing code. Shutdowns are no longer immediate. Code should call :init.stop after calling reboot, poweroff or halt.
- fwup 0.14.2 - contains many consistency and validation checks that may detect corruption that wasn't detected before, so there may be new failures
- rpi-userland and rpi-firmware version bumps to correspond with Raspbian Linux 4.4 updates.
-
Bug fixes
- Trim out BusyBox utilities that were automatically added on version updates. The new utilities were pretty useless on Nerves systems and ended up adding about 50KB bloat to all images.
- Bug fixes
- Fix quoting in scripts so that paths with spaces and + signs work.
- New features
- Bump Buildroot version to 2017.02
- Bump Erlang/OTP to 19.3
- Update Raspberry Pi projects to support the Raspberry Pi Zero W
- Bug fixes
- The Musl C library fix in v0.9.3 wasn't completely fixed. It worked if you
built Nerves systems using
make
locally, but notmix
. The check logic turned out to be looking for a file that may or may not exist depending on build order.
- The Musl C library fix in v0.9.3 wasn't completely fixed. It worked if you
built Nerves systems using
-
New features
- Bump fwup to v0.13.0 - contains a fix for sending progress updates through Erlang ports
-
Bug fixes
- Fix Musl C library systems by fixing a symlink. Without this fix the
system will boot and kernel panic when loading
/sbin/init
.
- Fix Musl C library systems by fixing a symlink. Without this fix the
system will boot and kernel panic when loading
IMPORTANT: This includes a kernel bump to 4.4.43 and bumps for rpi-userland and rpi-firmware. Most importantly, kernels no longer need to be marked that use device tree, so the kernel marking logic has been removed. This will break systems, but those systems should upgrade their kernels to avoid any mismatches between kernel patches and rpi-firmware.
- Bug Fixes
- Include
external.desc
in hex package
- Include
IMPORTANT: All Nerves Systems will need all references to the BR2_EXTERNAL
environment variable updated to BR2_EXTERNAL_NERVES_PATH
.
- New features
- Bump Buildroot version to 2016.11.1
- Update Erlang/OTP to 19.2
- Update erlinit v0.8.0 (multi-boot script support)
- Update fwup to v0.12.1
- Bug Fixes
- raise exceptions in nerves-env with Mix.raise instead of Nerves.Env.Exception
- pull the version info from VERSION instead of assuming git
- Enhancements
- Added System env variables for configuring distillery
- Enhancements
- Moved Config for Alix, Galileo, and AG150 to nerves_system_* repos
- Support for nerves 0.4.0 package compiler
-
Package updates
- Buildroot 2016.08
-
Bug fixes
- Many packages were removed. These include Elixir and LFE since neither are actually used. Both are added as part of the user build step, so no functionality is lost. The most visible result is that the system images are smaller and the test .fw file boots to the Erlang prompt.
- Fix false positive from scrubber when checking executable formats due to C++ template instantiations. Ignores SYSV vs. GNU/Linux ABI difference.
-
Package updates
- fwup 0.8.2
-
Bug fixes
- Updates default
erl_inetrc
to fix:nxdomain
errors from DNS resolver - Remove .img file from system images (reduces system tarball size)
- Redirect Buildroot download in case buildroot.net goes down
- Support statically linked executables in OTP releases
- Updates default
The Raspberry Pi and Beaglebone board
directories have been moved to
nerves_system_rpi*
and nerves_system_bbb
respectively. Further development
and maintenance for those platforms will happen there for future releases.
-
Package updates
- Erlang OTP 19
- Elixir 1.3.1
- fwup 0.8.0
- erlinit 0.7.3
- bborg-overlays (pull in I2C typo fix from upstream)
-
Bug fixes
- Synchronize file system kernel configs across all platforms
Note: Files in the board
directory are being moved to their corresponding
system images. This has been completed for the LinkIt Smart and Lego EV3.
The transition should be complete by next release.
-
Enhancements
- Enabled USB Printer kernel mod. Needs to be loaded with
modprobe
to use
- Enabled USB Printer kernel mod. Needs to be loaded with
-
Bug Fixes(raspberry pi)
- Enabled multicast in linux config for rpi/rpi2/rpi3/ev3
- Bug Fixes(nerves-env)
- Added include paths to CFLAGS and CXXFLAGS
- Pass sysroot to LDFLAGS
Important: If you use the BBB, a significant change to the device tree overlay interface was made. This is part of the 3.8 to 4.4.9 kernel upgrade change. This will affect user code. Additionally, the boot partition size of increased on the BBB. If you want neither of these changes, you can create a custom system image that points to the 3.8 kernel and has the old partition sizes in the fwup.conf.
- New features
- WiFi drivers enabled by default on RPi2 and RPi3
- Include wireless regulatory database in Linux kernel by default on WiFi-enabled platforms. Since kernel/rootfs are read-only and coupled together for firmware updates, the normal CRDA/udev approach isn't necessary.
- Upgraded the default BeagleBone Black kernel from 3.8 to 4.4.9. The standard BBB device tree overlays are included by default even though the upstream kernel patches no longer include them.
- Change all fwup configurations from two step upgrades to one step upgrades. If you used the base fwup.conf files to upgrade, you no longer need to finalize the upgrade. If not, there's no change.
-
Bug fixes
- syslinux fails to boot when compiled on some gcc 5 systems
- Fixed regression when booting off eMMC on the BBB
-
Package updates
- Erlang 18.3
- Elixir 1.2.5
Important: The repository changed names to nerves_system_br
. Previously it
had used hyphens. This was done as part of the mix
integration so that the
repository's name didn't have to be quoted. Please update all links.
-
New features
- Major updates to the configuration process to support storing configs more
easily outside of
nerves_system_br
. This enables reference board configurations as Hex packages or as their own git repos. Our supported configs are pulled in via git submodules so they can still be built by travis. - Support building out-of-tree
- Added more checks for compiler mismatches when building releases
- Extract nerves-id code to boardid project; add BBB and some x86 support
- Basic RPi 3 support and experimental Lego EV3, Alix, AG150, and qemu configs
- Enable Busybox ntpd and date to work around lack of Elixir package for setting the system time
- Major updates to the configuration process to support storing configs more
easily outside of
-
Bug fixes
- Enable ADCs in Beaglebone Black configuration
-
Package updates
- Buildroot 2016.02
- Elixir 1.2.4
-
Bug fixes
- Re-enable CONFIG_LEDS_GPIO in Raspberry Pi kernel
-
Package updates
- Elixir 1.2.3
-
New features
- Updated Linux kernel to 4.1 on Raspberry Pi platforms. The Raspberry Pi Zero now works. This is not thoroughly tested.
- Enable WiFi on Raspberry Pi. Application support is needed, so this is only one step to getting WiFi working out of the box.
- Update buildroot to 2016.02-rc1 to pull in current Raspberry Pi support.
- Switch default DNS resolver to use Erlang's internal support
-
Bug fixes
- Remove exrm check from nerves-elixir.mk since it's also possible to use the nerves application to package the release
-
Package updates
- fwup v0.6.0
- Many others from the Buildroot update
-
New features
- Basic Intel Galileo support
- erlang.mk support (thanks to mdsebald)
- To burn a firmware image, you can just run
make burn
.make burn-complete
is aliased tomake burn
. - Improved host/target Erlang version checking
-
Bug fixes
nerves_xxx_defconfig
config naming and docs have been cleaned up. With the recent changes many had become out of date.- Enforce 64-bit system for build since 32-bit systems can't run the Nerves toolchains
-
Package updates
- erlang 18.2.1
- elixir 1.2.1
- erlinit v0.7.0
- nerves-toolchain v0.6.0
- fwup v0.5.0
This release updates many packages and Buildroot to later versions. Most
platforms have been changed to use custom crosscompilers from
nerves-toolchain
, so that it is possible to compile much of a project
locally on non-Linux systems (Macs are the first priority).
The project has also changed names from nerves-sdk
to nerves-system-br
. This
reflects its use as a system image builder for Nerves. In Nerves terminology, a
toolchain + a system + your Elixir, Erlang, or LFE app = a firmware image.
Buildroot is the initial system image builder, but other system builders are
possible in the future.
- New features
- Use squashfs instead of ext4 for rootfs (smaller roots; enables firmware
assembly on OSX since
fakeroot
isn't needed for handling special files) - Many bash-isms and Linux-isms removed from scripts to support
zsh
and BSD builds. - Use cross-compiler toolchains from
nerves-toolchains
- Upgrade Erlang to 18.1
- Upgrade Elixir to 1.1.1
- Upgrade fwup to 0.4.2 (backwards incompatible firmware upgrade change from Nerves v0.2.3)
- Use squashfs instead of ext4 for rootfs (smaller roots; enables firmware
assembly on OSX since
This release captures the state of the Nerves master branch before some major
changes to support integration with bake
and building applications locally on
non-Linux platforms.
- Recent changes
- Raspberry Pi configs default to HDMI rather than UART
- Elixir version 1.0.5