Android → Wi-Fi Direct or USB → your PC

Your PC on the phone's mobile data

No mobile router, no second SIM, no hotel Wi-Fi. Your phone is already a modem — PocketModem gives your laptop the connection it is already paying for, anywhere the phone has signal.

Link · 5 GHz Wi-Fi Direct 156.0 Mbps ↓ · 101.0 Mbps ↑ · 1.7 ms

Measured on a Galaxy A53 over LTE. The link runs well above the cellular connection it carries — the tunnel is not the bottleneck.

The modem you already own

A phone is a modem with a screen. PocketModem stops treating those as two purchases.

A mobile router is a second device to buy, a second line to pay for, and a third thing to remember to charge. It does one job your phone already does — and does badly, because it is the one you leave behind.

Your phone is charged, in your pocket, and on the best network you could get. PocketModem turns that into a connection your laptop can use, anywhere the phone has signal.

A mobile router The phone in your pocket

No second device, no second SIM, nothing extra to charge or lose.

Hotel and cafe Wi-Fi Your own connection

A network you control, on any desk, in any country your plan reaches.

Finding a socket for the router A cable, if you want one

USB carries the same tunnel at 284 Mbps and charges the phone while it works.

Fifteen minutes of setup One button

The PC remembers the pairing and connects itself the next time.

When you'd reach for it

The pattern is the same every time: you have a laptop, you have signal, and the thing in between is the problem.

Working somewhere with bad Wi-Fi

Cafe networks are slow, captive portals log you out, and hotel Wi-Fi charges per device. Your phone already has a better connection than any of them — this hands it to the laptop.

On a train, in a car, in a field

Anywhere there is no Wi-Fi at all. The phone is charged and in your pocket, which is exactly the device a mobile router keeps failing to be.

The home line is down

Outages happen mid-deadline. A laptop back online in under a minute, on a connection you already pay for, is the difference between a delay and a lost day.

Travelling with one SIM

A local SIM in the phone covers the laptop too. No roaming router, no second data plan, no hunting for a shop that sells one at the airport.

Pushing a release from a hotel room

Large uploads over a shared network are miserable. A tunnel of your own, measured at 156 Mbps down and 101 up over LTE, usually beats the building's connection outright.

A second machine, briefly

A colleague's laptop, a test box, a machine being set up before it has network. Up to four PCs share one phone, each paired separately and each revocable.

Why it isn't tethering

What leaves the phone is one app making ordinary connections. There is no forwarded packet, because at the IP layer there is no second device.

A hotspot hands your PC to the carrier's tethering stack. That stack is the thing that gets metered separately, throttled, or refused outright.

PocketModem never touches it. The phone reads your PC's TCP and UDP streams and opens ordinary Android sockets to the same destinations, bound to the cellular interface, then copies bytes between the two.

Stated plainly: this makes the traffic architecturally identical to app traffic. It is not a claim of undetectability by other means, and there is no TTL rewriting or fingerprint spoofing anywhere in it. Whether you may use it is between you and your carrier's terms.

Things a modem cannot do

Replacing a mobile router is the low bar. These are the parts that have no equivalent in a box with one pipe and no idea what is in it.

Keep the expensive traffic off it

Windows Update and Steam are excluded out of the box, and you can add any site or address range. Those keep using the network they were already on, so nothing disconnects — a modem has one pipe and everything takes it.

Be there before you are

Installed as a service, it connects at boot, before anyone logs in, and keeps retrying while the phone is away. A machine that reboots overnight is online again without being asked.

Stop one machine taking it all

Cap the whole connection, or any single computer. The limit lets bursts through at full speed and only holds back sustained transfers, so browsing stays quick while a download is kept to its share — and the phone stays usable.

Decide what may connect at all

Every computer is named and listed, and any of them can be blocked on the spot — it drops immediately rather than at its next reconnect. Turn on approval and a new machine waits until you say yes, so the pairing code alone is no longer enough.

Answer to your own resolver

Point DNS at a Pi-hole, a company resolver, or anything else you run. A modem hands you whatever the carrier gives it.

Against a hotspot

Everyone has used the built-in hotspot. It is worth being precise about where this differs, because two of those rows are the whole reason the project exists.

Phone hotspot PocketModem
Carrier sees A tethered device One app on your phone
Uses the tethering stack Yes Never
Counts against a tether allowance Yes It is ordinary data
Needs root No No
Radio Access point for anything nearby One paired PC, or a cable
Data usage One total for everything Per computer, with a bar for each
Limits None, or the whole connection off A monthly cap overall, and one per computer
Encryption WPA2, shared passphrase WPA2 plus per-frame AES-GCM
Survives a dropped link Apps lose their connections Adapter stays up, tunnel rebuilds
Choose what uses mobile data All or nothing Per site or per address range
Starts without you Toggled by hand each time A service, connected before you log in
DNS Whatever the carrier hands out Yours, including a home resolver
Which computers may connect Anyone with the passphrase Approved list, blockable per machine
Speed limits None Overall, and per computer
Battery Access point running constantly Same, or charging over USB

A hotspot is simpler and works with anything that speaks Wi-Fi. If that suits you, use it — this exists for when it does not.

What it does

Six things that took the longest to get right.

Every app
A real virtual network adapter, so browsers, Steam, Windows Update and games work untouched. No proxy settings, nothing per-application.
Four links
Traffic spread across four parallel connections. One lost Wi-Fi frame stalls a quarter of it instead of freezing everything — the failure that makes older tools feel unreliable.
Reconnects
When the link drops the adapter stays up and the tunnel rebuilds underneath it, so applications keep their connections rather than watching the network vanish.
Data caps
Usage tracked per day and per billing cycle, anchored on your carrier's cycle day rather than the calendar month. At the cap it refuses new connections instead of cutting you off mid-download.
Per computer
A hotspot shows one number for everything, because it cannot tell which device spent it. Every PC here is paired individually, so usage is broken down by machine — and each can have a limit of its own, so one laptop cannot spend the whole allowance.
Encrypted
A pairing code authorises each PC and keys AES-GCM on every frame. Joining the Wi-Fi is not enough to use the connection, or to read it.
Or a cable
USB carries the same tunnel when Wi-Fi is congested — measured at 284 Mbps, and it charges the phone while it runs. Not USB tethering: the cable is only a pipe, and the phone still opens its own sockets.
Four PCs
Several machines share one phone, each with its own streams, NAT table and DNS cache.

Measured, not estimated

The link and the tunnel were timed separately, so a slow result could be attributed to one or the other rather than guessed at.

156Mbps
Down
101Mbps
Up
1.7ms
Latency
4links
Parallel
77
Tests passing

Getting started

You need both halves — the phone app and one desktop app. They work as a pair.

On the phone

Open PocketModem and tap Wi-Fi Direct. It shows a pairing code and a Wi-Fi passphrase.

On the PC

Run PocketModem, enter the pairing code, press Connect. It joins the phone's network itself, and asks for elevation only at that point — creating a network adapter is privileged.

The passphrase is only needed once. After that the PC remembers both and can connect on its own whenever the phone starts sharing.
PhoneAndroid 12 or newer, with Wi-Fi Direct
PCWindows 10/11 x64, or Linux x64 with a tun-capable kernel
RightsAdministrator on Windows, root or CAP_NET_ADMIN on Linux

Command line

Everything the app does is available from a terminal, and --json makes any command scriptable.

pocketmodem                       # prompts for the pairing code
pocketmodem -t k7m2xq4p           # with a known code
pocketmodem connect --for 2h      # disconnect after two hours
pocketmodem status                # is a tunnel running?
pocketmodem doctor                # why it will not connect
pocketmodem recover               # restore routing after a crash

doctor

Works through platform, privileges, driver, Wi-Fi group, reachability and leftover routes in order, then says what to do about anything it finds — rather than reporting that the connection failed.

Choosing what uses mobile data

Rules are matched on the destination, so they apply to every program at once. Excluded traffic keeps using whatever network the PC was already on — it is not blocked, it simply does not take the phone.

pocketmodem split                          # what the rules are now
pocketmodem split bypass steamcontent.com  # keep it off the phone
pocketmodem split bypass 203.0.113.0/24    # a range works too
pocketmodem split via 198.51.100.5         # force one through
pocketmodem split remove steamcontent.com  # drop a rule
pocketmodem split only-listed              # invert: nothing unless listed

Windows Update, Steam and the private address ranges are excluded from the start. The most specific rule wins, so a range can be excluded with one address inside it kept. Changes apply on the next connection.

A hostname rule takes effect when the name is next looked up, since a packet carries an address and not a name. Rules written as an address or a range apply immediately.

Running without logging in

Installed as a service, the PC connects at boot and keeps retrying while the phone is away — backing off as it goes, so a phone that is simply switched off does not mean an attempt every second all night.

pocketmodem install-service --token=k7m2xq4p --passphrase=<wifi>
pocketmodem uninstall-service

Administrator or root is required, and the pairing code is stored in the service definition rather than separately, so removing the service removes the credential with it. Uninstalling also restores normal routing.

Which computers may connect

Every PC that connects is listed on the phone, with a name you can change. Block one and it drops immediately rather than at its next reconnect. Turn on Approval required and a machine that has never connected waits until you allow it, so someone who reads the pairing code off your screen still cannot get in.

A router calls this MAC filtering, and it is worth being exact. Android offers no way to refuse a device at the Wi-Fi Direct radio, so a blocked machine can still join the group — it just cannot use the connection, because every PC identifies itself before anything is relayed. The identity used is the pairing, not the MAC, since Android randomises the device address between sessions and a filter keyed on it would forget your laptop every time it reconnected.

Speed limits

Cap the connection as a whole, or any single computer, in Mbps. The limit holds one second of capacity, so a page load bursts through at full speed and only sustained transfers are slowed — a limited link feels slow rather than broken.

Traffic over the limit is delayed rather than dropped, which lets the sender upstream slow down on its own instead of retransmitting. Limits apply to new data at once; a transfer already running slows rather than failing.

DNS

The default is 1.1.1.1; the phone's own resolver is not reachable from the PC. Change it in Settings in the app, or per connection:

pocketmodem --dns 192.168.1.10     # a Pi-hole on the local network

When it breaks

The PC has no internet after a crash

Routing changes are journalled to disk before they are applied and replayed on next start, so this should recover on its own. If it does not:

pocketmodem recover

Or run Fix my internet from the Start menu. Disabling and re-enabling the Wi-Fi adapter also clears everything.

Some sites load, others do not

Usually MTU. The tunnel probes for it, but a network in the middle can still black-hole large packets. pocketmodem doctor will say more.

It says degraded

Fewer than four links are up. The tunnel works with one; throughput and stall resistance drop. Usually a weak radio link.

Windows warns about the installer

It is not code-signed, so SmartScreen does not recognise it — a statement about the certificate, not the software. Choose More info, then Run anyway.

Over a cable instead

The same tunnel runs over USB, which is worth reaching for when the 2.4 GHz band is crowded or you want the phone charging while it works. It measured 284 Mbps down and 245 Mbps up — roughly double the wireless link, and far above any cellular connection it would carry.

This is not USB tethering. Android's tethering stack is exactly what PocketModem avoids; the cable only carries the tunnel, and the phone still opens its own cellular sockets the same way it does over Wi-Fi Direct.

How it works

Three pieces. The middle one is where the idea lives.

Two transports, one tunnel

The link is a dumb pipe either way — nothing above it changes.

TransportMeasuredReach for it when
Wi-Fi Direct156 / 101 MbpsThe phone stays in your pocket
USB284 / 245 MbpsWi-Fi is congested, or you want the phone charging

The virtual adapter

Wintun on Windows, /dev/net/tun on Linux. A real network interface is why every application works with no configuration — the main advantage over proxy-based tools, which only cover apps you configure.

The tunnel

Raw IP packets are classified and multiplexed across four parallel TCP connections. Four rather than one because a single connection means one lost frame stalls every stream behind it, felt as an occasional total freeze rather than steady slowness.

Userspace NAT

The phone never forwards a packet. It parses each stream and opens an ordinary Android socket to the destination, bound explicitly to the cellular network, then copies bytes between the two.

UDP gets the same treatment, with a socket per flow. Without it DNS, QUIC and games all break — which is what proxy-based tethering tools usually get wrong.

Security

The Wi-Fi group is WPA2, but a group passphrase is shared with every device that ever paired, so it is not a session secret. Two further layers:

  • Pairing code — the phone rejects any client that does not present it, so joining the Wi-Fi does not by itself grant use of the connection.
  • AES-GCM — every frame is sealed with a key derived from that code, so traffic is unreadable to anything else on the link.

Nothing is sent anywhere else. No account, no telemetry, no server — the phone and the PC talk directly.

Building

Requires the .NET 9 SDK; the phone app additionally needs JDK 17 and the Android SDK.

dotnet build
dotnet test PocketModem.Tests

# Windows — Wintun (amd64) must sit beside the exe
dotnet publish PocketModem.App -c Release -r win-x64 -o dist

# Linux
dotnet publish PocketModem.App -c Release -r linux-x64 -o dist-linux

The desktop client is open source under MIT. The Android app is proprietary.

Version 1.0.0

Download

You need the phone app and one desktop app. They work as a pair.

Android Android 12 or newer, with Wi-Fi Direct. Signed, but not from the Play Store — allow installation when prompted. APK · 18 MB
Windows Windows 10 or 11, 64-bit. Bundles the Wintun driver. Needs Administrator to connect. Installer · 9 MB
Linux x64, tun-capable kernel, NetworkManager. Needs root or CAP_NET_ADMIN. Archive · 9 MB
The Windows installer is not code-signed. SmartScreen will say it does not recognise it — a statement about the certificate, not the software. Choose More info, then Run anyway.

Then

  1. Open PocketModem on the phone and tap Wi-Fi Direct
  2. Note the pairing code and passphrase
  3. Run PocketModem on the PC, enter the code, press Connect

The documentation covers the rest, including what to do when something goes wrong.

Privacy & terms · 8 September 2026

The short version

The app itself has no analytics and no telemetry. Your browsing is never recorded. The only thing that reaches a server of ours is proof that you paid.

PocketModem moves your PC's traffic through your phone. Everything about that — which sites you visit, what you send, who you connect to — stays between your devices and is never sent to us, stored by us, or inspected. The desktop client is open source, so that part is checkable rather than something you take on faith.

PocketModem is paid software, and validating a subscription does require a small amount of data. That is set out in full below rather than buried.

What stays on your devices

None of the following is transmitted anywhere.

WhatWhereWhy
Pairing code and Wi-Fi passphrasePhone, and each paired PCSo you do not retype them every time
Daily and monthly byte totalsPhoneData caps and the usage display
Session historyPhoneStart and end time, bytes moved, and the local address of the PC — not what was visited
Crash reportsPC onlyWritten to a local file so a crash leaves evidence. Never uploaded
Routing journalPC onlyLets normal routing be restored if the app is interrupted
Never recorded, on device or anywhere else: the sites you visit, the addresses you connect to, DNS lookups, or the contents of any packet. The tunnel relays traffic; it does not read it.

Subscriptions

Paid features are sold through Google Play. Google handles the payment itself — we never see your card details, billing address or full name, and Google does not pass them to us.

To check that a subscription is genuine and still active, the app sends the following to a server we operate:

WhatWhy it is needed
Play purchase tokenThe receipt Google issues. It is what we verify with Google to confirm the subscription is real and current
Product and order identifierWhich plan was bought, and to recognise a renewal or refund
An install identifierA random value generated on first run, so an entitlement follows your install. It is not your device ID, advertising ID, phone number or account
App version and Android versionTo reject builds with a known billing defect

That is the complete list. No usage data, no traffic data, no location, no contacts, no advertising identifier, and nothing about what you do with the connection.

Why a server at all. A subscription check that runs only on the phone can be bypassed by editing the app. Validating the receipt with Google server-side is the only way to make a paid product hold. It is also the reason this page can no longer say "there is no server" — for billing, there now is one.

Lawful basis

Under GDPR this processing is necessary to perform our contract with you — you bought a subscription and we have to honour it — rather than resting on consent. Under KVKK the equivalent basis is that it is directly related to and necessary for performing that contract.

Google Play

Installing through Google Play means Google collects data about that install independently of us, under their privacy policy, not this one. That typically includes your Google account, device model, and purchase records.

Two things Google may also show us, in aggregate:

  • Crash reports and ANRs. Android can send crash traces to Play, and we can see them in Play Console. These are stack traces and device models, aggregated across users — they do not identify you and contain nothing about your traffic. Android asks for your consent to this, and you can turn it off in your device settings.
  • Install and subscription statistics. Counts of installs, uninstalls, renewals and cancellations by country and device. Aggregate figures, not individual records.

We do not add any analytics of our own. There is no Firebase, no Crashlytics, no advertising SDK and no third-party tracker in the app — which you can verify from the build file in the repository.

Your traffic

Traffic passes through the phone by design — that is what the product does — but it is relayed, not inspected, stored or copied. Between your PC and the phone every frame is encrypted with AES-GCM using a key derived from your pairing code.

Beyond the phone your traffic is exactly as private as it would be if you had opened the same connections on the phone itself. HTTPS stays HTTPS; anything unencrypted was already unencrypted.

Who else is involved

  • Google — processes payments and distributes the app. A payment processor and, for the data described above, a separate controller.
  • Our hosting provider — runs the server that validates subscriptions, in Germany. A processor acting on our instructions.
  • Your mobile operator — carries the traffic, as it would for any app on your phone.
  • Wintun — the bundled Windows network driver. It runs locally and is a driver, not a service.
  • GitHub — hosts the downloads. Fetching a release is a request to GitHub; the app itself never contacts them.

Nothing is sold, rented or shared for advertising. There are no data brokers, and no third party receives your data for their own purposes.

How long we keep it

WhatKept
Subscription recordsWhile the subscription is active, then up to the period tax law requires records of a sale to be retained
Install identifierDeleted with the subscription record
Server logs30 days, then deleted
Everything on your devicesUntil you delete it or uninstall

Data is stored on servers in Germany, inside the EEA. If that ever changes, this page changes with it.

Your rights

Under GDPR and KVKK you may request a copy of the personal data we hold about you, ask for it to be corrected, ask for it to be deleted, object to processing, or ask for it in a portable form.

In practice that means the subscription records above — which is all we hold. Everything else lives on your devices, where you can inspect and delete it yourself without asking us.

Write to dev.emirbaycan@gmail.com and we will respond within 30 days. Deleting a subscription record ends the entitlement it proves, so a refund request should go to Google first.

You also have the right to complain to a supervisory authority — in Turkey the Personal Data Protection Authority (KVKK), or in the EU your national data protection authority.

Children

PocketModem is not directed at children and we do not knowingly collect data from anyone under 16. If you believe a child has provided data through a subscription, write to us and it will be deleted.

Your carrier, and what this software does not decide

PocketModem routes your PC's traffic through your mobile connection. Whether that use is permitted is governed by your agreement with your mobile operator and by the law where you are. That is yours to check, not something this software can decide for you.

The traffic is architecturally ordinary app traffic — the phone opens its own sockets rather than forwarding packets. That is a description of how it works, not a claim that any particular use complies with your operator's terms, and not advice that it does.

You are responsible for the data you move and the charges you incur. The built-in cap helps with the second, but it is a convenience, not a guarantee.

Warranty and liability

The software is provided as is, without warranty of any kind, express or implied, including the implied warranties of merchantability, fitness for a particular purpose and non-infringement.

To the fullest extent the law allows, we are not liable for any damages arising from use of or inability to use the software — including lost data, lost profits, business interruption, data charges, or action taken by your mobile operator.

Two things this cannot do, and does not try to. Nothing here excludes liability for death or personal injury caused by negligence, or for fraud — no agreement can. And where you deal as a consumer you have statutory rights that cannot be signed away, including your rights over a purchase made through Google Play; nothing here affects them. Anything above that a court finds unenforceable is severed, and the rest continues to apply.

Changes and contact

If this page changes the date at the top moves. A change that materially affects what is collected will be announced in the app before it takes effect.

Questions go to dev.emirbaycan@gmail.com, or the issue tracker.