Work / Tools / Phone IP Finder

No. 43 · Tools · Recovery

Cracked screen. Photos still inside.

scrcpy can rescue everything on a phone with a broken screen. It just needs the phone's local IP. You cannot read that IP, because you cannot see the screen. This is the small browser tool that finds it for you, from the network side, before you ever touch the phone.

1 pageWhole tool, one URL
0 installBrowser only
5 minFrom cracked to mirrored
WorkerCloudflare KV, edge-cached

Act I · The Story

Five minutes between panic and relief.

It is the same week, every year, for someone you know. Glass meets concrete. The phone keeps working. The screen does not. The photos cannot wait for a service centre's queue.

  1. Minute 0

    The phone falls.

    You can hear notifications. The phone is alive. The screen is a spider web. You cannot see the IP. You cannot tap a "show IP" toggle. You cannot do anything visible on it.

  2. Minute 1

    scrcpy needs an IP.

    scrcpy can mirror the phone over Wi-Fi and let you control it from a laptop. Pictures, contacts, that one note from your father · all reachable. But it needs the phone's local IP. And only the phone knows that.

  3. Minute 2

    The phone has been telling you all along.

    A tiny Termux boot script on the phone has been posting its IP to a Cloudflare Worker every few minutes. The Worker writes the latest IP and timestamp into KV. You set this up months ago and forgot.

  4. Minute 3

    You open the URL on a laptop.

    One page. No login. IP: 10.10.9.50 · Updated: 15:12 IST. No-cache headers, the truth right now.

  5. Minute 5

    scrcpy connects. The photos come back.

    You run adb connect 10.10.9.50:5555, then scrcpy. Your phone screen appears on your laptop. You unlock with the right pattern, blind, on memory. You drag the photos out.

Act II · How it works

A worker. A KV store.
A boot script. That is all.

No cloud account, no SaaS. Cloudflare Workers + KV is free at this scale. The phone pushes its IP every five minutes. The page reads it back, no-cache, instantly.

  phone (Termux:Boot)            cloudflare worker            your laptop
  +---------------------+         +---------------------+         +---------------------+
  | every 5 minutes:    |  POST   | /update             |   GET   | open the URL        |
  | read wlan0 IP       | ─────►  | verify SECRET       | ◄────── | phoneip.dmj.one /   |
  | curl /update        |  json   | KV.put('latest')    |  text   | IP: 10.10.9.50      |
  +---------------------+         +---------------------+         | Updated: 15:12 IST  |
                                                                  +---------------------+
  always-on                       no cache, no bloat              one page, no install

The Stack

Three small pieces. Free at this scale.

  • Cloudflare Workers
  • Cloudflare KV
  • Termux + Termux:Boot
  • Bash + wget
  • scrcpy / adb
  • Plain JavaScript
  • No-cache headers

Act III · Proof

Built once. Used the day you need it most.

Boot-time auto-restart

Termux:Boot runs update_ip.sh on every reboot. Old loops are killed via PIDFILE, so multiple boots never stack background processes. Logs to ~/update_ip.log.

No-cache from the worker

The worker sets Cache-Control: no-store, Pragma: no-cache, Expires: 0. The IP you read is always the latest one the phone reported, never an edge stale.

Shared secret on POST

Only the phone (or anything that has the UPDATE_SECRET) can write. Anyone can read, because the read URL is on a private subdomain you only share with yourself.

IST-formatted timestamp

The timestamp is rendered in Asia/Kolkata, 24-hour. So when you read "15:12:22" you know without thinking whether the loop is alive or stuck.

Tiny tools. Outsized days.

I build the small things you only need once a year, that save the day when you do. Free to host, no app to install, no account to sign up for.