-
ET Phone Home v0.7.0
StableAll checks were successfulClaims ledger / Every README claim has a test (push) Successful in 9sRelease / Build Linux Release (push) Successful in 2m6sRelease / Build Windows Release (push) Successful in 1m44sRelease / Build Android Release (push) Successful in 2m5sRelease / Build Desktop GUI (Linux) (push) Successful in 4m2sRelease / Publish Forgejo release (push) Successful in 14sRelease / Sign the APK with the ETPH release key and attach it (push) Successful in 3sRelease / Verify the published release (push) Successful in 0sreleased this
2026-10-18 18:46:14 -07:00 | 115 commits to main since this releaseChanged
- New app id and name: "Errant Solutions ETPH" (
solutions.errant.etph). This is the name and id the app will have on Google Play (ETPH = ET Phone Home); the launcher icon is labelled "ETPH". Android treats a new app id as a different app, so 0.7.0 installs next to an older ET Phone Home (com.etphonehome) instead of updating it. While the old app is still installed, the new one says so on its main screen, with a button that opens the old app's App info page (Uninstall is there). Uninstall the old app afterwards, and re-pair WiFi/Bluetooth desktops with the token the new app shows (the tokens belong to the app, so they did not carry over). USB needs nothing new. Settings such as the connection mode start fresh too. - The APK on the releases page is signed with the ETPH release key (the key registered for
solutions.errant.etphwith Google's Android developer verification, SHA-25601:11:AF:00:57:D7:E9:28:90:FB:CE:02:E9:92:7A:85:E5:EA:B2:AD:AC:2C:00:76:55:E1:7C:B0:CF:7F:68:40). Releases up to 0.6.1 carried a public debug key. - Google Play release pipeline: the Play bundle is built unsigned on a normal runner and signed with the upload key on a dedicated signer, then uploaded to the internal testing track (
release-play-*tags; a manual run is a dry run that changes nothing in Play). Store listing text and the Data safety answers live instore/.
Fixed
- A connection that stalled mid-handshake locked every desktop out of the phone. The phone serves one desktop at a time, and once a connection had sent its first byte nothing timed out until the handshake finished. So a connection that sent one byte, or a TLS ClientHello, and then went quiet held the session slot indefinitely, before any token check. Anyone on the same WiFi, or any app on the phone for the USB port, could do this. The whole handshake now has to finish within 15 s, otherwise the connection is dropped.
- A phone-side filter rule with an invalid IPv4 address triggered a DNS lookup. Rule addresses like
256.1.1.1were handed to the system resolver as hostnames, which blocked the session while the lookup ran, and on networks whose DNS answers every name the rule ended up applying to an unrelated address. Rule addresses are now parsed as numeric IPv4/IPv6 literals only, and anything else drops the rule. - A phone-side filter rule naming one IPv6 host covered its whole /32. A rule address with no
/prefixdefaulted to /32 for IPv6 as well as IPv4, so blocking2001:db8::1blocked all of2001:db8::/32, and in whitelist mode allowing it allowed the whole /32. A bare IPv6 address is now /128. - IPv6 packets could slip past the phone's protocol and port rules. The packet parser stopped walking IPv6 extension headers after 8, and didn't know the Authentication Header, so TCP behind 9+ extension headers or an AH header came out as "any protocol, no ports" and a rule like
block tcp 443didn't match it. The parser now walks the whole chain (always bounded by the packet length) and understands AH.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
2 downloads
- New app id and name: "Errant Solutions ETPH" (