CHANGELOG.md

# Changelog

This project does NOT follow semantic versioning. The version increases as
follows:

1. Major version updates are breaking updates to the build infrastructure.
   These should be very rare.
2. 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.
3. 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.

## v0.9.0

This is a major Buildroot update.

Please see the [nerves_system_br v1.27.0 release notes](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.26.0)
for upgrade instructions if you've forked this system.

* Updated dependencies
  * [nerves_system_br v1.27.0](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.27.0)
  * [Buildroot 2024.02](https://lore.kernel.org/buildroot/87msrczp4z.fsf@48ers.dk/)
  * [Erlang/OTP 26.2.3](https://erlang.org/download/OTP-26.2.3.README)

## v0.8.0

This is a major Buildroot update.

Please see the [nerves_system_br v1.26.0 release notes](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.26.0)
for upgrade instructions if you've forked this system.

* New features
  * Add device tree compiler to support compiling overlays at runtime

* Updated dependencies
  * [Erlang/OTP 26.2.2](https://erlang.org/download/OTP-26.2.2.README)
  * [nerves_system_br v1.26.1](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.26.1)
  * [Buildroot 2023.11.1](https://lore.kernel.org/buildroot/87cyu2k2gu.fsf@48ers.dk/T/)

## v0.7.1

This is a security/bug fix update.

 Package updates
  * [Erlang/OTP 26.2.1](https://erlang.org/download/OTP-26.2.1.README)
  * [nerves_heart 2.3.0](https://github.com/nerves-project/nerves_heart/releases/tag/v2.3.0)

## v0.7.0

This is a major Buildroot and toolchain update that also adds support for HDMI
output and runtime device tree overlays.

Please see [nerves_system_br v1.25.0 release notes](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.25.0)
for upgrade instructions if you've forked this system.

* New features
  * Fixed issues preventing the HDMI output from working and enabled libcairo to
    support Scenic. Scenic works out of the box, but it appears that there are
    still HDMI output issues for some monitors (1024x768 display instead of 1080p).
  * Enabled runtime device tree overlay support. This is currently an expert
    feature, but it does work for simple overlays.

* Updated dependencies
  * [nerves_system_br v1.25.2](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.25.2)
  * [Buildroot 2023.08.4](https://lore.kernel.org/buildroot/87o7f6t7fs.fsf@48ers.dk/T/)
  * [Erlang/OTP 26.1.2](https://erlang.org/download/OTP-26.1.2.README)


## v0.6.1

This is a security/bug fix update.

* Package updates
  * [nerves_system_br v1.24.1](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.24.1)
  * [Erlang/OTP 26.1.1](https://erlang.org/download/OTP-26.1.1.README)
  * [Buildroot 2023.05.3](https://lore.kernel.org/buildroot/87h6ngup34.fsf@48ers.dk/T/)

## v0.6.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.

* New features
  * Support factory reset, preventing firmware reverts. See [Nerves.Runtime.FwupOps](https://hexdocs.pm/nerves_runtime/Nerves.Runtime.FwupOps.html)

* Updated dependencies
  * [nerves_system_br v1.24.0](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.24.0)
  * [Buildroot 2023.05.2](https://lore.kernel.org/buildroot/87ledrkrpp.fsf@48ers.dk/T/), [2023.05.1](https://lore.kernel.org/buildroot/87351m8qm4.fsf@48ers.dk/T/), [2023.05](https://lore.kernel.org/buildroot/87r0qn2c77.fsf@48ers.dk/T/)
  * [Erlang/OTP 26.1](https://erlang.org/download/OTP-26.1.README)

## v0.5.2

* Changes
  * Add common USB to UART device drivers (Thanks to @Lucassifoni)

* Updated dependencies
  * [nerves_system_br v1.23.3](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.23.3)

## v0.5.1

This is a bug and security fix update. It should be a low risk upgrade.

* Fixes
  * Fix CTRL+R over ssh

* Updated dependencies
  * [nerves_system_br v1.23.2](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.23.2)
  * [Buildroot 2023.02.2](https://lore.kernel.org/buildroot/87y1je6wva.fsf@48ers.dk/T/)

## v0.5.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
  * [nerves_system_br v1.23.1](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.23.1)
  * [Buildroot 2023.02.2](https://lore.kernel.org/buildroot/87wn03ifbl.fsf@48ers.dk/T/)
  * [Erlang/OTP 26.0.2](https://erlang.org/download/OTP-26.0.2.README)

## v0.4.3

This is a bug and security fix update. It should be a low risk upgrade.

* Updated dependencies
  * [nerves_system_br v1.22.5](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.22.5)
  * [Buildroot 2022.11.3](https://lore.kernel.org/buildroot/878rfuxbxx.fsf@dell.be.48ers.dk/T/)

## v0.4.2

This is a bug fix and Erlang version bump from 25.2 to 25.2.3. It should be a
low risk upgrade from v0.4.1.

* Fixes
  * Set Erlang crash dump timer to 5 seconds, so if an Erlang crash dump does
    happen, it will run for at most 5 seconds. See erlinit.conf.

* Updated dependencies
  * [nerves_system_br v1.22.3](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.22.3)
  * [Buildroot 2022.11.1](https://lore.kernel.org/buildroot/87ilh4dvax.fsf@dell.be.48ers.dk/T/#u)

## v0.4.1

* Changes
  * Patch upstream device tree in v0.4.0 so that it supports the LEDs, SPI and
    I2C0 without additional configuration.

## v0.4.0

** Not firmware upgradable from v0.3.2! **

This release pulls in upstream updates that remove bootloader workarounds, but
required the U-Boot environment block to move. This means that it's not possible
to firmware update from v0.3.2 to this one.

* Changes
  * Switch from Musl C to Glibc. This was done to increase compatibility -
    specifically with RustlerPrecompiled which doesn't support Musl C on RISC-V.

* Updated dependencies
  * [nerves_system_br v1.22.1](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.22.1)
  * Linux 6.1 with smael's Allwinner D1 updates
  * GCC 12.2

## v0.3.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
  * [nerves_system_br v1.21.6](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.21.6)
  * [Erlang/OTP 25.2](https://erlang.org/download/OTP-25.2.README)
  * [Buildroot 2022.08.3](https://lore.kernel.org/buildroot/87r0x7z5cw.fsf@dell.be.48ers.dk/T/#u)
  * [nerves_heart v2.0.2](https://github.com/nerves-project/nerves_heart/releases/tag/v2.0.2)

## v0.3.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
  * [nerves_system_br v1.21.2](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.21.2)
  * [Erlang/OTP 25.1.2](https://erlang.org/download/OTP-25.1.2.README)

## v0.3.0

* Changes
  * Support aarch64 Linux builds

* Updated dependencies
  * [nerves_system_br v1.21.1](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.21.1)
    and also see [nerves_system_br v1.21.0](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.21.0)
  * [Buildroot 2022.08.1](http://lists.busybox.net/pipermail/buildroot/2022-October/652816.html)
  * [Erlang/OTP 25.1.1](https://erlang.org/download/OTP-25.1.1.README)

## v0.2.5

* Updated dependencies
  * [nerves_system_br v1.20.6](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.20.6)
  * [Erlang/OTP 25.0.4](https://erlang.org/download/OTP-25.0.4.README)
  * [Buildroot 2022.05.2](http://lists.busybox.net/pipermail/buildroot/2022-August/650546.html)
  * Also see [Buildroot 2022.05.1 changes](http://lists.busybox.net/pipermail/buildroot/2022-July/647814.html)

## v0.2.4

* Fixes
  * Fix USB gadget mode on MacOS

## v0.2.3

This release synchronizes the device tree configuration with upstream's new
MangoPi MQ Pro device tree. This has at least two noticable changes:

1. The Blue LED is now called `":status"`. It was `"blue:indicator"` so any
   references will need to be updated.
2. The SPI device that's on the GPIO header pins is now `spidev0`. This makes it
   the same as the Raspberry Pi, so this was a welcome change.

* Updates
  * Update Linux to smauel's wip-all branch. This is currently his latest and it
    includes device tree updates specifically for the MangoPi MQ Pro.
  * Serial numbers are now 8 hex digits since collisions were found with just 4.
  * USB Gadget mode works on the OTG port (right-most port)
  * Reverting firmware works now

## v0.2.2

* Updates
  * Various deletions to the device tree to free up GPIOs that weren't used.
  * Fix I2C0 pins

* Updated dependencies
  * [nerves_system_br v1.20.4](https://github.com/nerves-project/nerves_system_br/releases/tag/v1.20.4)
  * [Erlang/OTP 25.0.3](https://erlang.org/download/OTP-25.0.3.README)

## v0.2.1

This release has several updates, but mostly makes it possible to use SPI now.

* Updates
  * Linux 5.19-rc0 (smauel's wip-d1 Linux branch)
  * SPI1 works now through the GPIO header
  * Clean up DTB handling. The U-Boot device tree is the only one that's used so
    all patching and building of the Linux one has been removed. Also U-Boot is
    updated on firmware updates. This isn't good, but it's easier than reburning
    the MicroSD card every time.

## v0.2.0

This release updates the Linux kernel to 5.18 in the hopes of fixing some Linux
kernel flakiness.

U-Boot has changed enough that I don't believe that a v0.1.1 image is
upgradable. Please rewrite your MicroSD image.

* Updates
  * Linux 5.18-rc4 (smauel's wip-d1 Linux branch)
  * Switch to the Nezha device tree since upstream updates have fixed the
    warnings that caused me to create a custom dts.
  * Enable earlycon for earlier logging from Linux

## v0.1.1

The release fixes some issues that made v0.1.0 hard to use. The flaky MMC boot
issue is still present. If your board hits it, unplugging and replugging in the
MicroSD card has been found to be a more reliable workaround than rebooting.

* Updates
  * Enable the RISC-V vector extension

* Fixes
  * Fix compilation warnings when using C standard headers. If a library had
    `-Werror`, these would end up breaking Elixir libraries that had C/C++ code.
  * Make sure that the watchdog is active during boot and can't be disabled.
    This recovers (with a reboot) from some more hangs.

## v0.1.0

This is the initial release.