Nerves supports Erlang/OTP 26 and Elixir 1.15 now

It looks like it’s finally safe to announce that Nerves supports Erlang/OTP 26 and Elixir 1.15!

We’ve updated dozens of Nerves and closely related libraries over the past month. The Erlang and Elixir-specific updates include:

  • Runtime support for Erlang’s new TTY implementation
  • Interactive mode is no longer slow on Nerves. The Nerves default is still embedded, but it can finally be changed back for projects that want to use it. (José actually fixed this one, not us)
  • CA certificates included by default to support new Erlang SSL defaults.
  • Many, many deprecation and compile-time warning fixes

We also have Nerves system updates that are worth highlighting:

  • The Raspberry Pi 4 has been updated to support libcamera and all of the official Pi cameras
  • The GRiSP 2 port has better support for its Pmod interfaces
  • Buildroot has been upgraded from 2022.11 to 2023.02 and contains many security and bug fixes for Linux libraries

Here’s how to update an existing project:

  1. Install Elixir 1.15.1+ and OTP 26.0.2+
  2. Update the :nerves dependency to 1.10.3 or later
  3. Update your Nerves System to use :nerves_system_br v1.23.2. If using official Nerves systems, update them to the latest versions.
  4. Run mix hex.outdated --all and review library updates.
  5. Run mix firmware on your project and update rel/vm.args.eex based on an error that you’ll get at the end

For step 4, please check out the Changelog or use the hexdiff feature on for comparing versions. Most libraries maintained by the Nerves core team have the Changelog ordered first so that when you look at the diff, you can see the notes at the top. It should be safe for casual Nerves users to blindly update, but we do try to add notes there for specific situations.

For those of you customizing Nerves systems on MacOS, the Nerves system shell is not working with OTP 26, and we’re unsure when a fix will be available. We recommend looking at the nerves_systems project. It requires running Linux. Running Linux on MacOS in a UTM VM works well.

Happy hardware hacking!