Note
AI Generated on behalf of @allangood by Claude Code.
This release makes stopping and restarting more robust. It follows up on 2026.11.7 with fixes from a second code review: shutdown is now quick even while a process is starting, the add-on gets enough time to release the dongle on stop, and a couple of config mistakes are caught instead of silently breaking things.
No configuration changes are required to upgrade. If you run the standalone Docker image, see the upgrade notes about the stop timeout.
๐ Faster, cleaner shutdown
- Stopping during startup no longer hangs. A shutdown that arrived while rtl_tcp or rtlamr was starting (at boot, waking from the sleep cycle, or during a watchdog restart) waited up to 30 s for the process to become ready. That ran past the 10 s stop timeout, so the container was killed. It now gives up at once, and no longer resets the USB device on the way out. (#464)
- More time to release the dongle. In the worst case, stopping rtlamr and then rtl_tcp takes about 21 s. If the container is killed partway through, rtl_tcp may not release the dongle, and the next start fails with
usb_claim_interfaceerrors. The add-on now asks the Supervisor for 30 s (timeout: 30). A normal stop still takes about 6 s. (#466) - No false errors on shutdown. Stopping the add-on while it was restarting a process logged
Failed to restart ..., shutting downat ERROR level, even though nothing had failed. (#469)
โ๏ธ Config mistakes caught
custom_parameters.rtltcpcan no longer move rtl_tcp to the wrong port. A-pthere used to win over the port inrtltcp_host, while rtlamr still connected tortltcp_host, so the two never met. The port now comes only fromrtltcp_host, and a-pis ignored with a warning. If you set both to the same port, nothing changes for you. (#467)- A negative
watchdog_timeoutis rejected. It used to restart the receiver, with a USB reset, in a tight loop. The add-on options now refuse it, and standalone config loading fails with a clear message. (#468)
๐งช Development
- In the mock
docker composesetup, a watchdog restart no longer tries to reset a USB device that isn't there, which made the app exit. (#465) rtltcp_hostis now parsed in one place (#470). The sleep-cycle wait is simpler (#471), and a flaky process test is fixed (#472).
Upgrade notes
- Standalone Docker: Docker also kills containers after 10 s by default. Add
--stop-timeout 30todocker run, orstop_grace_period: 30sin Compose, as the README now shows. The Home Assistant add-on sets this itself. - If you passed
-pincustom_parameters.rtltcp, move that port intortltcp_host(for example127.0.0.1:1235).
See CHANGELOG.md for the full entry.
What's Changed
- Let a shutdown interrupt process startup by @allangood in #464
- Skip the USB reset in rtl_tcp recovery when using the mock by @allangood in #465
- Give the container 30s to stop instead of 10s by @allangood in #466
- Take the local rtl_tcp port only from rtltcp_host by @allangood in #467
- Reject a negative watchdog_timeout by @allangood in #468
- Don't log a requested shutdown as a failed restart by @allangood in #469
- Parse rtltcp_host in one place by @allangood in #470
- Simplify the interruptible sleep in the sleep cycle by @allangood in #471
- Fix the race in test_read_line_returns_none_after_exit by @allangood in #472
- Release v2026.11.8 by @allangood in #473
Full Changelog: 2026.11.7...2026.11.8