-
ET Phone Home v0.6.1
StableAll checks were successfulClaims ledger / Every README claim has a test (push) Successful in 10sRelease / Build Windows Release (push) Successful in 1m42sRelease / Build Linux Release (push) Successful in 4m27sRelease / Build Android Release (push) Successful in 1m52sRelease / Build Desktop GUI (Linux) (push) Successful in 3m10sRelease / Publish Forgejo release (push) Successful in 10sreleased this
2026-10-17 04:42:50 -07:00 | 143 commits to main since this releaseFixed
- USB tethering on Android 8-10. The app's USB server listened on
::1; adbd before Android 11 forwardsadb forwardconnections to127.0.0.1only, so every USB connection was refused on those versions (found by the new API 26 emulator test). It now listens on 127.0.0.1. - Linux release binary ran only on the newest distros. It needed glibc 2.39 (the CI image's), so it did not even start on Debian 12 or Ubuntu 22.04. Releases are now linked against glibc 2.31 with libdbus built in (no system libdbus needed); the nightly distro matrix runs a real tunnel on Debian 11-13, Ubuntu 20.04-24.04, Fedora, Arch and openSUSE.
- A dropped WiFi link left a dead tunnel behind. The desktop kept the TUN device and default route for 90 s, and the phone held the dead session until TCP gave up (~15 min), refusing the desktop when it came back. The desktop now sends keepalives and gives up after 30 s; the phone ends a session whose (keepalive-sending) desktop has been silent for 30 s.
- WiFi crashed the app on Android 8 and 9. The first encrypted WiFi connection crashed the app with
NoSuchMethodError(the TLS layer called a Java 8SSLSocketFactorymethod these Android versions lack); found by the API 26 emulator test. TLS is now layered through Bouncy Castle's own implementation of that method. - Bluetooth could never connect to a real phone. The desktop always dialed RFCOMM channel 1, but Android assigns channels dynamically (the app was on channel 6 on a Galaxy Note20), and the app told users to connect to
02:00:00:00:00:00(Android hides the real Bluetooth address from apps). The app now listens on its own service UUID and shows its name; the desktop asks BlueZ to connect that service (BlueZ looks the channel up over SDP and hands over the socket, which also works from a container) and--addressaccepts the phone's name as paired. Verified on a Samsung Galaxy Note20 (Android 13): public HTTPS, DNS and a byte-identical download over Bluetooth, from a desktop whose only way out was the tunnel. - The desktop client no longer sets
net.ipv4.ip_forward=1on the computer (it never needed it and never undid it). --reconnectno longer retries a protocol-version mismatch or a rejected token forever; it stops with the reason. The retry budget and backoff count failures since the last working session, not over the client's lifetime.
Added
- Nightly CI: integrity at scale (256 MiB both ways with digests, 100 parallel TCP + 50 UDP flows), failure and recovery (USB unplug, WiFi drop, app killed, Ctrl-C, crash, lossy link), throughput/latency baseline, upgrade compatibility with the previous release, a Linux distro matrix, arm64, the Windows client under wine, and the real APK on Android 8 and 14 emulators. Weekly mutation testing of the desktop and phone cores.
Fixed
- USB tethering on Android 8-10. The app's USB server listened on
::1; adbd before Android 11 forwardsadb forwardconnections to127.0.0.1only, so every USB connection was refused on those versions (found by the new API 26 emulator test). It now listens on 127.0.0.1. - Linux release binary ran only on the newest distros. It needed glibc 2.39 (the CI image's), so it did not even start on Debian 12 or Ubuntu 22.04. Releases are now linked against glibc 2.31 with libdbus built in (no system libdbus needed); the nightly distro matrix runs a real tunnel on Debian 11-13, Ubuntu 20.04-24.04, Fedora, Arch and openSUSE.
- A dropped WiFi link left a dead tunnel behind. The desktop kept the TUN device and default route for 90 s, and the phone held the dead session until TCP gave up (~15 min), refusing the desktop when it came back. The desktop now sends keepalives and gives up after 30 s; the phone ends a session whose (keepalive-sending) desktop has been silent for 30 s.
- The desktop client no longer sets
net.ipv4.ip_forward=1on the computer (it never needed it and never undid it). --reconnectno longer retries a protocol-version mismatch or a rejected token forever; it stops with the reason. The retry budget and backoff count failures since the last working session, not over the client's lifetime.
Added
- Nightly CI: integrity at scale (256 MiB both ways with digests, 100 parallel TCP + 50 UDP flows), failure and recovery (USB unplug, WiFi drop, app killed, Ctrl-C, crash, lossy link), throughput/latency baseline, upgrade compatibility with the previous release, a Linux distro matrix, arm64, the Windows client under wine, and the real APK on Android 8 and 14 emulators. Weekly mutation testing of the desktop and phone cores.
Planned for v0.5.0
- TLS encryption for WiFi/Bluetooth modes
- Desktop GUI application
- Traffic statistics and graphs
- Root mode with iptables routing for better performance
- Advanced routing and traffic filtering rules
Planned for v1.0.0+
- Multiple device support
- Data usage limits and alerts
- Traffic compression for bandwidth optimization
- Custom DNS server configuration
- Mobile data usage tracking
Release Notes
v0.4.0 Highlights
Version 0.4.0 represents a major milestone, elevating ET Phone Home from Alpha to Beta status. All three tethering modes (USB, WiFi, Bluetooth) are now fully functional with enterprise-grade features:
- Complete Bluetooth Support: Both Android and Desktop implementations finished
- Security: Token-based authentication protects WiFi and Bluetooth connections
- Reliability: Auto-reconnect ensures connections stay active
- Convenience: Connection profiles and mDNS discovery simplify usage
- Production Ready: Comprehensive testing and documentation
Migration Guide: v0.3.0 → v0.4.0
Breaking Changes
None. Version 0.4.0 is fully backward compatible with v0.3.0.
New Optional Features
Token Authentication:
- WiFi and Bluetooth connections now support (but don't require) authentication tokens
- Old command:
sudo etphonehome wifi --host 192.168.1.100 - New command:
sudo etphonehome wifi --host 192.168.1.100 --token AbC123XyZ - USB mode unchanged (no tokens needed)
Connection Profiles:
# Old way - manual command every time sudo etphonehome wifi --host 192.168.1.100 # New way - save once, use forever etphonehome save-profile home --type wifi --host 192.168.1.100 sudo etphonehome connect homeAuto-Reconnect:
# Add --reconnect to any connection command sudo etphonehome wifi --host 192.168.1.100 --reconnectmDNS Discovery:
# New discover-wifi command replaces manual IP finding sudo etphonehome discover-wifiAndroid App Changes
- WiFi and Bluetooth modes now display authentication tokens
- Copy the displayed token for desktop connection
- Tokens are automatically generated on first use
- Same tokens persist across app restarts
Known Issues
- Windows Bluetooth: Some configurations may require manual COM port setup
- Linux Bluetooth: Requires
libdbus-1-devpackage for compilation - mDNS Discovery: May not work across different network subnets (by design)
Future Roadmap
v0.5.0 (Planned):
- TLS encryption for WiFi/Bluetooth modes
- Desktop GUI application
- Traffic statistics and graphs
- Root mode with iptables routing
v1.0.0 (Planned):
- Multiple device support
- Data usage limits and alerts
- Traffic compression
- Custom DNS configuration
How to Read This Changelog
- Added - New features
- Changed - Changes in existing functionality
- Deprecated - Soon-to-be removed features
- Removed - Removed features
- Fixed - Bug fixes
- Security - Security improvements
- Documentation - Documentation updates
Links
- Repository: https://git.canutethegreat.com/CanuteTheGreat/etphonehome
- Documentation: docs/
- Issue Tracker: https://git.canutethegreat.com/CanuteTheGreat/etphonehome/issues
Contributing
See CONTRIBUTING.md for how to contribute to this project.
License
This project is licensed under the MIT License. See LICENSE for details.
For more details on any release, see the corresponding version tag in the repository.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
2 downloads
- USB tethering on Android 8-10. The app's USB server listened on