Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/SpaceNeuroX/proxy-turn-vk-android/llms.txt

Use this file to discover all available pages before exploring further.

The Tunnel tab is the operational heart of qWDTT. It lets you select an active profile, initiate the VPN connection, watch the staged connection pipeline in real time, read Go client logs, and review session traffic statistics. It is the primary screen you interact with once a profile is configured.

Connecting

1

Select a profile

Open the Profiles tab and tap any profile card to make it the active profile. The active profile is highlighted with a colored border.
2

Switch to the Tunnel tab

The Tunnel tab reflects the currently active profile name and server address.
3

Tap Connect

Tap the Connect button. If this is the first connection, Android will show a system VPN permission dialog — tap OK to allow qWDTT to create a VPN interface.
4

Wait for tunnel up

The connection pipeline shows each phase in sequence. When the last step turns green and the pipeline disappears, the WireGuard tunnel is active.
The VPN permission dialog appears only once per app installation. If you are using SOCKS5 mode instead of VPN mode, no permission dialog is shown.
To disconnect, tap Disconnect on the Tunnel tab, or use the Disconnect action in the persistent notification. The tunnel runs inside TunnelService, an Android foreground service. It acquires a PARTIAL_WAKE_LOCK and a WIFI_MODE_FULL_LOW_LATENCY Wi-Fi lock to prevent the system from putting the Go process to sleep.

Connection pipeline

The connection pipeline is a visual step-by-step progress display that appears while qWDTT is establishing the tunnel. Enable or disable it with the connectionPipelineEnabled setting (Settings → Behaviour). The stages in VPN mode are:
StepWhat happens
DNSPre-flight check: the Go client’s DNS server (e.g. Yandex, Cloudflare) is probed before launching the process
VKTURN credentials are fetched from the VK Calls API (anonymous or account mode)
CaptchaShown only when VK triggers Smart Captcha; solved automatically or via WebView
WRAPWRAP/RTP transport is negotiated with the server
TURNTURN relay allocation is confirmed
DTLSDTLS handshake with wdtt-server completes
WorkersGo worker threads reach the server and begin passing traffic
VPNWireGuard config is applied via Android VpnService
DoneTunnel is fully up; pipeline hides after 4 seconds
In SOCKS5 mode the final step is SOCKS (local proxy listener ready) instead of VPN. If a step times out (default 10 s; 30 s for the VK step in account mode), the pipeline shows a red indicator on the failed step and the connection attempt is aborted.

Logs tab

The Logs sub-tab inside Tunnel streams the Go client’s combined stdout/stderr in real time.
  • Log entries are grouped by type and deduplicated by key, so a repeating error appears as a single line with a counter rather than flooding the view.
  • Up to 100 entries are kept; oldest entries are dropped when the limit is reached.
  • Entries are sorted by priority: critical pipeline events at the top, statistics and verbose output at the bottom.
  • Detailed logs (detailedLogs setting) enables additional verbose output from the Go client, including unhandled lines that are normally suppressed.
  • Auto-switch to Logs (autoSwitchToLogs setting, default true) automatically activates the Logs sub-tab as soon as you tap Connect, so you can watch progress immediately.
Red log entries indicate errors. The unread error count is shown as a badge on the Tunnel tab. Tap Clear to reset the badge.

Traffic statistics

While the tunnel is running, the Go client emits [STATISTICS] lines every few seconds. qWDTT parses these and displays:
  • Active workers — number of currently connected Go worker threads
  • Bytes in/out — traffic for the current session
Traffic per session is also incrementally written back to the profile record (in 1 MB increments), so the cumulative data usage is preserved across reconnects and visible on the profile card.

Home screen widget

The Tunnel Widget (provided by TunnelWidgetProvider) can be added to the Android home screen. It shows the current connection state and a brief status string, and it updates automatically whenever the tunnel state changes.

Quick Settings tile

qWDTT adds a Quick Settings tile to the Android notification shade. Add it once by editing your Quick Settings panel and dragging the qWDTT tile into place.
  • When the tunnel is off: tile label is qWDTT: Выкл — tap to connect using the last saved profile.
  • When the tunnel is on: tile label is qWDTT: Вкл — tap to disconnect.
If VPN permission has not been granted yet, tapping the tile when in VPN mode opens a full-screen permission prompt before starting.

Watchdog and automatic reconnection

TunnelService registers a ConnectivityManager.NetworkCallback that monitors every non-VPN internet interface. When the underlying network changes (e.g. switching from mobile data to Wi-Fi, or the IP changes), the service calls TunnelManager.restartTransport(), which:
  1. Kills the Go process and waits for the UDP listen port to be released.
  2. Reloads the WireGuard interface.
  3. Restarts the Go client with the same parameters.
The watchdog inside TunnelManager also watches for zombie processes (running but 0 active workers for 90 s) and crashes, restarting with exponential back-off (up to 30 s between attempts). Stop on Wi-Fi (stopOnWifi setting, default false): when enabled, the tunnel is cleanly disconnected the moment the device transitions onto a validated Wi-Fi network. This is useful when you only need the tunnel on mobile data.
If the active network disappears entirely (e.g. flight mode), TunnelManager.pause() is called to kill the Go process without stopping the foreground service. As soon as any internet interface returns, TunnelManager.resume() restarts the process automatically.

SOCKS5 mode

As an alternative to Android VpnService, qWDTT can run in SOCKS5 mode. In this mode:
  • No VPN permission is required.
  • The Go client starts userspace WireGuard internally and exposes a local SOCKS5 proxy at 127.0.0.1:<socksPort> (default 1080).
  • You configure individual apps to use this proxy via their built-in proxy settings.
  • The Android VPN interface is never created; system DNS and routing are not modified.
Switch modes via Settings → Connection → Connection mode (vpn or socks). The SOCKS listen port is configurable with socksPort (default 1080, valid range 1–65535).
Go client (userspace WireGuard) → SOCKS5 at 127.0.0.1:1080
The SOCKS listener address is shown in the notification and in the Stats area of the Tunnel tab while connected.
The tunnel requires at least one live VK call hash. If all hashes in the active profile are dead (the call was ended for everyone), TURN credential fetching will fail and the connection pipeline will stop at the VK step. To recover, join a new call and update the hash in the profile.

Build docs developers (and LLMs) love