WGControl

org.supersane.wgcontrol
by Zapstore _@zapstore.dev

Automated WireGuard tunnel control via home Wi-Fi and Bluetooth.

Republished from GitHub / F-Droid by the Zapstore main account.

WGControl automatically manages your WireGuard tunnel based on your Wi-Fi and Bluetooth connections. It disables the tunnel when connected to your configured home Wi-Fi or selected Bluetooth devices (e.g., Android Auto) and re-enables it upon leaving. This app is a VibeCode product. I have thoroughly tested all functions and believe everything works reliably. However, I assume no responsibility for errors, results of errors, or atomic fallout. Key Features: - Wi-Fi & Bluetooth Detection: Automatically toggles the tunnel based on home networks or paired Bluetooth devices. - Real-Time Monitoring: Continuously checks system-level VPN status and enforces the target state. - Ping Connectivity Check (optional, off by default): Verifies internet availability via ICMP/TCP ping to a configurable host (example.com by default) before re-enabling the tunnel. - Notification Pause Buttons: Manually override the tunnel from the status notification - indefinitely or for a configurable duration - without opening the app. - Admin Password Protection: Secures configuration tabs using salted PBKDF2 hashing. - Local Logging: Tracks tunnel commands and network events locally for up to 24 hours with search and export capabilities. - QuickSettings Tiles and widget to control pause. Essential Setup Steps: 1. WireGuard App: Enable "Allow user-controlled tunnel management" in settings. 2. Grant Permission: Allow "WireGuard tunnel control" permission. 3. Location Access: Set to "Allow all the time" for background Wi-Fi detection. 4. Battery Optimization: Disable for BOTH WGControl and the WireGuard app. Note: Not affiliated with WireGuard or Jason A. Donenfeld. Controls the official WireGuard app via its public broadcast interface.

First release: Oct 18, 2026, 1 total release.

Most recent release: Oct 18, 2026.

Repo

Appears in 0 app stacks.

0 sats / 0 zaps received in the past year.

Sats Received

Underlying data available via MCP: app_zaps, app_releases.

Zap Count

Underlying data available via MCP: app_zaps, app_releases.

Releases

  • Oct 18, 2026 WGControl-1.47.61910
    Version 1.47 Changelog EN * New: manage several WireGuard tunnels, with per-Wi-Fi-network assignment ("Configured Networks") and separate default tunnels for Wi-Fi, mobile data, and roaming * New: home screen widget with status, current network, active tunnel, Bluetooth info, and the same pause buttons as the notification; adapts to widget size (abbreviated labels/icon buttons when narrow), background style and opacity configurable * Changed: Quick Settings tile long-press now opens the app (Status tab) instead of the system App Info screen * Changed: the timed-pause duration can now be entered down to the second, in M:SS format (e.g. 0:20 for a 20-second pause), not just in whole minutes * Fixed: pause/resume log entries now correctly show their actual source (notification, Quick Settings tile, app, or widget) * Fixed: importing a pre-v47 backup now correctly resets multi-tunnel settings * Fixed: removed leftover duplicate string resources that caused release build failures
    More…
    * Fixed: the "Is this Android Auto?" Bluetooth prompt had stopped appearing since version 1.46 when an already long-paired device (e.g. your own car) reconnects - it had accidentally been restricted to the rare moment of fresh pairing itself. It now appears again on every reconnect of a not-yet-selected but actually paired device - unpaired nearby devices still don't trigger it * Fixed: if the tunnel stayed active despite the deactivate command (e.g. WireGuard not reacting immediately), WGControl previously only retried at the next regular check (up to several minutes later) - now uses the same independent, short-interval retry already used for activation * Fixed: the language picker in Settings used to also offer languages WGControl itself has no translation for (came from the device's operating system itself, not the app) - the app would still have fallen back to English in those languages. The dropdown now only lists the languages WGControl actually supports (currently German and English) * Fixed: already-answered "Is this your car?" Bluetooth prompts weren't included in backups - after a restore, the prompt would reappear for those devices. Now backed up as well * Changed: the ping reachability test before tunnel activation is now off by default, so WGControl no longer connects to an external host (example.com by default) without being asked - still available in Settings, no safety loss since activation itself already has its own verify/retry loop * Fixed: the permission WireGuard itself requires, CONTROL_TUNNELS, was never requested - previously had to be granted by hand via system settings or adb, otherwise WireGuard silently dropped activation/deactivation commands. Now requested together with the other permissions * Fixed: a ping target starting with a hyphen could be misinterpreted by the system ping command as an extra option instead of the target address - hardened against this * New: when restoring a backup, you can now choose whether the backed-up settings are only merged (previous behavior) or fully reset to defaults first - your admin password is unaffected either way * New: logging can now also be toggled directly from the Status tab, not just in Settings * Fixed: the TCP fallback for the internet-reachability check (used when the ping binary isn't available) tested port 53 (DNS) on the target host - on ordinary websites like the (now former) default target google.com that port is closed, so the fallback likely never worked. Now uses port 443 (HTTPS), which is open on virtually every website * New: right after the first location-permission grant, the app now shows a short explanatory popup and then opens the system location-permission page of the app directly (Android 10: system dialog) so you can select "Allow all the time" (needed for reliable background home-network detection) - Android's own initial permission dialog doesn't offer that option. Previously this hint only lived passively in the Status tab, waiting to be discovered * Fixed: R8 was not enabled in release build Changelog DE * Neu: Mehrere WireGuard-Tunnel verwaltbar, mit Zuordnung pro WLAN ("Konfigurierte Netze") und getrennten Standard-Tunneln für WLAN, Mobilfunk und Roaming * Neu: Home-Bildschirm-Widget mit Status, aktuellem Netzwerk, aktivem Tunnel, Bluetooth-Info und denselben Pause-Buttons wie die Benachrichtigung; passt sich der Widget-Größe an (Kürzel/Icon-Buttons bei schmaler Breite), Hintergrund und Deckkraft einstellbar * Geändert: Langes Drücken der Schnelleinstellungen-Kachel öffnet jetzt die App (Status-Tab) statt der System-App-Info-Seite * Geändert: Dauer der zeitgesteuerten Pause lässt sich jetzt sekundengenau im Format M:SS eingeben (z. B. 0:20 für eine 20-Sekunden-Pause), nicht mehr nur in vollen Minuten * Behoben: Protokolleinträge zum Pausieren/Fortsetzen zeigen jetzt korrekt die tatsächliche Quelle * Behoben: Import eines Backups von vor Version 47 setzt Mehrfach-Tunnel-Einstellungen jetzt korrekt zurück * Behoben: verwaiste doppelte String-Ressourcen entfernt (verursachten Release-Build-Fehler) * Behoben: Die "Ist das Android Auto?"-Bluetooth-Nachfrage erschien seit Version 1.46 nicht mehr, wenn ein bereits seit Längerem gekoppeltes Gerät (z. B. das eigene Auto) sich neu verbindet - sie war damals versehentlich auf den seltenen Moment der frischen Kopplung selbst beschränkt worden. Erscheint jetzt wieder bei jeder Neuverbindung eines noch nicht ausgewählten, aber tatsächlich gekoppelten Geräts - unbekannte, ungekoppelte Geräte in der Nähe lösen sie weiterhin nicht aus * Behoben: Blieb der Tunnel trotz Deaktivierungs-Befehl aktiv (z. B. weil WireGuard nicht sofort reagierte), wurde bisher erst beim nächsten ohnehin fälligen Check erneut versucht (bis zu mehreren Minuten später) - jetzt mit demselben eigenständigen, kurzfristigen Wiederholungsversuch wie beim Aktivieren * Behoben: Die Sprachauswahl in den Einstellungen bot bisher auch Sprachen an, für die WGControl selbst gar keine Übersetzung hat (stammten vom Betriebssystem selbst, nicht aus der App) - in diesen Sprachen wäre die App weiterhin auf Englisch zurückgefallen. Dropdown zeigt jetzt nur noch die tatsächlich von WGControl selbst unterstützten Sprachen (aktuell Deutsch und Englisch) * Behoben: Bereits beantwortete "Ist das dein Auto?"-Bluetooth-Nachfragen wurden bei einer Sicherung nicht mitgespeichert - nach einer Wiederherstellung kam die Nachfrage für diese Geräte erneut. Wird jetzt mitgesichert * Geändert: Der Ping-Erreichbarkeitstest vor der Tunnel-Aktivierung ist jetzt standardmäßig aus, verbindet sich also nicht mehr ungefragt mit einem externen Host (standardmäßig example.com) - weiterhin in den Einstellungen aktivierbar, kein Sicherheitsverlust, da die Aktivierung selbst ohnehin eine eigene Verify/Retry-Schleife hat * Behoben: Die von WireGuard selbst benötigte Berechtigung CONTROL_TUNNELS wurde bisher nie angefragt - musste bisher manuell über die Systemeinstellungen oder adb erteilt werden, sonst wurden Aktivierungs-/Deaktivierungsbefehle von WireGuard still verworfen. Wird jetzt zusammen mit den übrigen Berechtigungen angefragt * Behoben: Ein Ping-Ziel, das mit einem Bindestrich beginnt, konnte vom System-ping-Befehl als zusätzliche Option statt als Zieladresse fehlinterpretiert werden - abgesichert * Neu: Beim Wiederherstellen einer Sicherung lässt sich jetzt wählen, ob die gesicherten Einstellungen nur zusammengeführt (bisheriges Verhalten) oder vorher komplett auf die Standardwerte zurückgesetzt werden sollen - Admin-Passwort bleibt davon unberührt * Neu: Die Protokollierung lässt sich jetzt auch direkt im Status-Tab ein-/ausschalten, nicht mehr nur in den Einstellungen * Behoben: Der TCP-Ersatztest für die Internet-Erreichbarkeit (falls kein ping-Binary verfügbar ist) prüfte Port 53 (DNS) des Ziel-Hosts - bei normalen Websites wie dem (inzwischen nicht mehr aktuellen) Standard-Ziel google.com war dieser Port aber zu, der Fallback griff also vermutlich nie. Jetzt Port 443 (HTTPS), der bei praktisch jeder Website offen ist * Neu: Direkt nach der ersten Standortberechtigungs-Erteilung zeigt die App jetzt einen kurzen Erklär-Hinweis und öffnet dann direkt die Standort-Berechtigungsseite der App (Android 10: Systemdialog), um dort "Immer zulassen" zu wählen (für zuverlässige Hintergrund-Erkennung des Heimnetzes) - Android selbst bietet das im ersten Berechtigungsdialog nicht an. Bisher stand dieser Hinweis nur passiv im Status-Tab, musste also erst entdeckt werden * Behoben: R8 war im Release Build nicht aktiviert