github wilbowes/EchoMuse emos-v0.5
emOS emos-v0.5

latest releases: controller-ea-v2.24.0-ea.2, controller-ea-v2.24.0-ea.1
3 hours ago

emOS 0.5

emOS boots on FireOS 6 as well as FireOS 5, and brings up WiFi with no Amazon
binary involved. This is the release the wizard needs to build a FireOS 6
image: earlier releases carry no 32-bit init and none of the WiFi tools, so a
FireOS 6 build refuses without it.

Provisioning a FireOS 5 device uses this release too, because the wizard always
fetches the newest. The aarch64 init has changed substantially here, so test a
FireOS 5 provision before relying on it.

Two inits, because the init must match the kernel

init is aarch64 for FireOS 5. init32 is armv7a for FireOS 6, which is the
same Linux 3.18.19 compiled 32-bit. Both are static, and the release asserts
each one's architecture and that the two are not the same file, because two
compiles differing only in a triple is where a copy-paste publishes one binary
twice.

An init of the wrong architecture boots to nothing at all, with no output, so
the wizard reads the architecture off the boot image you escrowed rather than
asking or assuming. That failure is indistinguishable from a kernel that never
started, and it already cost five flashed images once.

FireOS 6 is system-as-root: its /system is a directory inside the root
filesystem rather than a partition mounted at /system. emOS mounts the nested
tree so that /system means the same thing on both.

WiFi, with nothing of Amazon's in the path

emOS drives the combo chip itself. It loads the firmware through wmt_loader
and then 6620_launcher on FireOS 5, or wmt_launcher on FireOS 6, resolving
each by what is present rather than by what it was built for.

It also ships its own supplicant. Amazon's wpa_supplicant aborts under emOS
before main(), because it opens /dev/binder and nothing here runs Android's
service manager. So this release carries wpa_supplicant, wpa_cli and
em-wifi, built from pinned sources in the release workflow and measured
byte-identical across three builds. hostap is BSD, libnl-tiny is LGPL and
em-wifi is ours, so all three are as distributable as the init.

WPA3 is still not available. FireOS 6 does not enable it either, so moving
to the newer kernel does not change that.

em-wifi sets the network from the console, without the wizard. The socket
directory is declared inside wpa_supplicant.conf, so the init and em-wifi
both read it from whichever conf is in use rather than hardcoding it, which is
what broke three ways before. A new off-target check, wpacheck, covers 19
cases of that parsing and runs in CI.

What is published

emos-payload.zip, carrying both inits and the three WiFi tools with a
manifest of sha256s, plus the loose init for compatibility with controllers
that predate the bundle. The WiFi tools only go into a 32-bit image: the init
prefers /sbin/wpa_supplicant once one exists, so shipping them to FireOS 5
would move working devices off Amazon's supplicant as a side effect of
provisioning.

What's Changed

  • Hold numpy at 2.3.5 so the add-on starts on Proxmox kvm64 by @wilbowes in #498
  • Journal the release evening, and correct what emOS 0.4 made untrue by @wilbowes in #493
  • Tell a stale dashboard tab that it is stale by @wilbowes in #494
  • Warn everywhere against amonet-biscuit v2.0.0, and bring the FAQ up to date by @wilbowes in #500
  • Refuse a device unlocked with amonet-biscuit v2.0.0 at the wizard's first step by @wilbowes in #501
  • Bump the python-dependencies group across 1 directory with 2 updates by @dependabot[bot] in #499
  • Run emOS on FireOS 6: system-as-root, our own combo-chip bring-up, supplicant and DHCP by @wilbowes in #502
  • Support static controller endpoints for routed and tunneled devices by @NicFragale in #166
  • Say what the healthy branch does, not why err == nil was avoided by @wilbowes in #510

New Contributors

Full Changelog: v2.15.0...emos-v0.5

Don't miss a new EchoMuse release

NewReleases is sending notifications on new releases.