Nerves Runtime Versions Save

Small, general initialization and utilities for Nerves devices

v0.13.7

4 months ago
  • Changes
    • Add Nerves.Runtime.Heart.guarded_immediate_reboot/0 to ungracefully reboot.
    • Modify Nerves.Runtime.FwupOps.factory_reset/1 to immediately reboot to avoid a graceful shutdown unintentionally partially undoing the factory reset work.
    • Default EXT4 application partitions to remount read-only when formatted. This changes the behavior from file I/O returning file system corruption errors to file I/O returning read-only filesystem errors. The change was made for consistency with F2FS and to lock things down as soon as corruption was detected.

v0.13.6

6 months ago
  • Changes
    • Fix errant return from Nerves.Runtime.reboot when using guarded reboots. This resulted in code running after the reboot call that wasn't expected to have been run.
    • Simplify and harden power off and reboot for edge cases

v0.13.5

7 months ago
  • Changes
    • Add Nerves.Runtime.FwupOps to make it easier to run commands from the revert.fw (older) and ops.fw (newer) files. The firmware revert logic had always used this, and this makes getting to factory reset and preventing reverts easier. Some operations aren't available on all Nerves systems.
    • Various documentation and syntactical updates instigated by Elixir 1.15.

v0.13.4

1 year ago
  • Changes
    • Fixed new compiler warnings with Elixir 1.15
    • Support the Nerves Heart v2.2 snooze feature. Nerves.Runtime.Heart.snooze/0 will request that heart continues to pet the hardware watchdog and ignore lack of updates from Erlang for a short amount of time to allow debug of conditions that would otherwise be interrupted by a watchdog timeout.
    • Report errors from Heart functions rather than hang forever when Erlang :heart is unresponsive.
    • Support additional status from Nerves Heart v2.2 to report the initial bootup grace period timeout and snooze timeout remaining.

v0.13.3

1 year ago
  • Changes
    • Fixed poweroff with Nerves Heart v2.0 (be sure to use Nerves Heart v2.0.2 as well). Thanks to @amclain for finding and fixing this.

v0.13.2

1 year ago

Support Nerves Heart v2.0.0 attributes and features. Nerves Heart v2.0.0 is a major update that addresses rare cases where devices would fail to reboot or detect an issue. It also adds helpful statistics. See the docs for details. Nerves Heart v1.x versions are still supported.

  • Changes
    • Support guarded reboot and poweroff if Nerves Heart 2.0 is available. Reboots and poweroffs still gracefully stop the VM, but they now don't require Busybox reboot or poweroff, and they stop petting the hardware watchdog to set a hard limit.
    • Support Nerves Heart initialization completion notifications. This lets you protect the time between boot and :heart.set_callback/1 should something happen that prevents the callback from being set. This addresses an issue where the VM would think everything is great since it wasn't calling the callback to find out that it was not.

v0.13.1

1 year ago
  • Changes
    • Handle another way key-value stores were being mocked pre-v0.13.0.
    • Fix default boardid_path in mix.exs

v0.13.0

1 year ago

This update replaces Nerves.Runtime.target/0 with Nerves.Runtime.mix_target/0. It is not believed that the former function was used much, but if you do use it, note the return value change in mix_target/0.

  • Changes
    • Support customizable key-value store backends so that it's possible to store firmware and board metadata outside of U-Boot environment blocks. See the :kv_backend configuration option.
    • Support changing the firmware revert script path (see :revert_fw_path)
    • Decide host vs. target differences at compile time to avoid target-only or host-only logic and dependencies existing unnecessarily at run-time.

v0.12.0

1 year ago

This is a major update to nerves_runtime that removes SystemRegistry. SystemRegistry has been disabled by default for years, but it could be re-enabled if device insertion and removal events were needed. That functionality has been moved to nerves_uevent and updated to use the property_table library used by VintageNet.

Elixir 1.11 is the minimum supported Elixir version now.

To upgrade from prior versions of nerves_runtime:

  1. If you're using :system_registry at all, please review the :nerves_uevent documentation for new library.
  2. Remove config :nerves_runtime, :kernel, use_system_registry: false from your target.exs. It's not used any more.
  3. If you had config :nerves_runtime, :kernel, autoload_modules: false in your target.exs, change it to config :nerves_uevent, autoload_modules: false.
  • Bug fixes

    • Run reboot and poweroff sequences in their own Erlang process. This fixes a bug were the process that calls reboot gets killed partway through the reboot process and the system doesn't actually reboot.
  • Changes

    • Kernel logging and syslog monitoring has been moved to nerves_logging. The functionality is the same as before, but it's now possible to use without nerves_runtime.
    • Added convenience routines for getting status from nerves_heart.

v0.11.10

2 years ago
  • Bug fixes
    • Update the initial device scan to be deterministic and to trigger events for containers before the devices they contain. This fixes a subtle issue that prevented RT5379 WiFi module drivers from automatically being loaded.
    • Batch up modprobe invocations