Skip to content

EchoMuse v2.11.0

Latest

Choose a tag to compare

@github-actions github-actions released this 09 Aug 09:56
· 2 commits to main since this release
9afb204

Headphone jack fixes, and a device that can say why it has no light sensor

The headline: plugging in headphones no longer breaks the Dot

If you booted an Echo with a cable already in the 3.5mm jack, it came up
with no wake word, no working buttons and never appeared in the
dashboard. If you unplugged headphones, the speaker stayed silent until
the next reboot. Both are fixed.

Two independent faults were behind that, and neither was in the button
code:

Android was holding the speaker. With a headset present, Android's
media service claims the audio device, and EchoMuse's attempt to open it
waited behind that forever. Everything else — the buttons, the wake
word, the connection to the controller — is started after the speaker,
so one stalled open took the whole device with it. The buttons were
never broken; nothing was listening to them. That is also why unplugging
and replugging appeared to fix it.

Nothing restored the speaker after unplugging. Inserting a plug mutes
the internal amplifier, which is correct — you do not want the Dot
playing to the room while you are wearing headphones. Nothing turned it
back on, and startup was the only thing that ever did, which is exactly
why only a reboot brought it back.

Audio routing itself never needed fixing: the jack switches the output in
hardware.

What you should expect

Plug in and audio moves to the headphones. Unplug and it returns to the
speaker, within about a second. Boot with a cable in and the device
starts normally.

A note on unplugging

On the previous firmware, unplugging was once seen to stall the microphone
for about thirty seconds, with the device showing as disconnected before
reconnecting on its own. It has not reproduced on this release across
repeated plug cycles, so you are unlikely to meet it — but it is only one
device's worth of testing, so it is being tracked rather than declared
fixed. If you do see it, it recovers by itself without a restart and
nothing is lost. Details and how to help pin it down: #117.

Behaviour change worth knowing about

EchoMuse now stops Android's media service at startup, on every boot, not
only when a jack is present — the point is to stop it claiming the
speaker before we ask for it. EchoMuse drives the audio hardware directly
and does not use that service. Nothing else on the device depends on it.

Ambient light: the device now says why it found no sensor

Some Dots report no light sensor. Until now the reason was written only
to a log file on the device, which support bundles do not collect and a
reboot erases — so telling "this hardware has no sensor fitted" apart
from "the driver failed to start" needed a shell session on your own
device.

The device now reports that reason when it connects, and it appears in
support bundles. If your light sensor is missing, a bundle from Settings
→ Support will now say which of those it is. This does not make a missing
sensor appear; it makes the question answerable.

Requires the matching controller release (controller-v2.17.0) to be
displayed. On an older controller the device simply reports it and
nothing reads it — nothing breaks.

Upgrading

Nothing is required of you. No configuration changes, no re-provisioning,
and settings are preserved. As always the previous firmware stays in the
other slot and the device rolls back automatically if this one fails to
start.

What's Changed

  • docs: rewrite rooting.md plainly, and fix an attribution that read wrong by @wilbowes in #59
  • controller: ride out a data-plane blip instead of truncating the audio by @wilbowes in #60
  • docs: bring CLAUDE.md, the journal and README up to date by @wilbowes in #61
  • fix: stop telling HA a barge-in pause is the user's pause (#62) by @wilbowes in #64
  • support: one-file diagnostics bundle, built privacy-first by @wilbowes in #63
  • support: redact account names, and report the resources on both sides by @wilbowes in #69
  • support: put the controller's own log in the bundle, and thin the noise by @wilbowes in #70
  • Duck and mix music under voice instead of pausing (#67) by @wilbowes in #71
  • docs: catch the docs up to ducking, streaming TTS and shadow mode by @wilbowes in #75
  • ota: make md5 the definition of a successful firmware transfer by @wilbowes in #77
  • docs: record the OTA transfer verification, and what actually fixed the Dot by @wilbowes in #78
  • fix(docker): select esbuild binary by architecture (unblocks arm64 builds) by @QuickMythril in #81
  • ci: publish the controller image for arm64 as well as amd64 by @wilbowes in #83
  • dashboard: show the WiFi band on each device's Status tab by @wilbowes in #86
  • wizard: report the FireOS build, and say which one we test against by @wilbowes in #84
  • wizard: make WiFi failures explain themselves by @wilbowes in #85
  • wizard: check where the boot image is going before writing it by @wilbowes in #92
  • controller: stop writing every device log line twice by @wilbowes in #93
  • controller: a deleted device can come back by @wilbowes in #98
  • wizard: capture device state when a provisioning step fails by @wilbowes in #94
  • wizard: tell an absent package apart from a broken package manager by @wilbowes in #95
  • wizard: a step that loses the cable no longer hangs forever by @wilbowes in #99
  • wizard: say when a reconnect came back in the wrong mode by @wilbowes in #101
  • wizard: stop the disconnect handler crying wolf on our own reboots by @wilbowes in #102
  • esphome: rebuild HA's entity list when capabilities change by @wilbowes in #104
  • Fire the action-button hold while muted by @wilbowes in #108
  • Add buttonSingleTapEvent and buttonMultiTapMs: tap as an HA event by @bboe in #107
  • Fix the audio jack stranding the device (#80) by @wilbowes in #113
  • Report why there is no ambient light sensor (#90) by @wilbowes in #114
  • docs: the audio jack, the ALS reason, and tap-as-event by @wilbowes in #116

New Contributors

Full Changelog: v2.9.13...v2.11.0