Get these three wrong and every result is fiction
Five phones go into service. Each one gets its own script file — they are not interchangeable, and a phone running the wrong file reports another telco's results under the wrong name.
| Order | Label the phone | Network it must be on | Reports as |
|---|---|---|---|
| 1st | MAXIS | Maxis / Hotlink SIM — mobile data on, WiFi off | maxis |
| 2nd | CELCOMDIGI | Celcom or Digi SIM — mobile data on, WiFi off | celcomdigi |
| 3rd | U MOBILE | U Mobile SIM — mobile data on, WiFi off | umobile |
| 4th | UNIFI | No SIM. WiFi on a TM/Unifi fibre line | unifi |
| 5th | TIME | No SIM. WiFi on a TIME fibre line | time |
On the table before you begin
Keep the SIMs alive
Each phone uses well under 100 MB a month — you're paying to keep the line open, not for data. Put a monthly reload reminder on someone's calendar. An expired SIM looks a lot like a blocked domain.
The Digi question — ten minutes, on the CelcomDigi phone only
Celcom and Digi merged but may still run two networks. No sixth phone needed: once the CelcomDigi phone is finished, put the Digi SIM in it, run the block-address test in Part 5 again, then put the Celcom SIM back. Same answer means one network — keep either SIM and drop the other. A different answer means we need a sixth phone, so send both results over.
Do this on the phone itself, not on a computer. Two apps, both from GitHub.
Both apps must come from GitHub
Not the Play Store — that version is abandoned and will not work. And don't mix sources: if you get Termux from GitHub and Termux:Boot from anywhere else, Termux:Boot silently does nothing, and the phone stops reporting the first time it restarts.
Open Chrome on the phone and go to:
github.com/termux/termux-app/releases
The newest release is at the top of the page. Under it, tap Assets to expand the file list if it's collapsed.
There are about ten files. You want the one that ends in _arm64-v8a.apk
and has apt-android-7 in the middle. It looks like this:
termux-app_v0.118.3+apt-android-7-github-debug_arm64-v8a.apk
The version number will be higher by the time you read this — that's fine, just match
the two highlighted parts. Ignore every apt-android-5 file; those are for
phones from 2015.
If Android says "App not installed"
The phone is an older 32-bit model. Go back and download the
_universal.apk file from the same list instead — it works on every phone.
When the download finishes, tap it to open. Android will warn about installing from an unknown source — tap Settings → turn on Allow from this source → go back → Install.
Now the second app. Go to:
github.com/termux/termux-boot/releases
This is what restarts the checker after the phone reboots. Without it, one power cut or Android update takes this telco offline permanently.
Same routine: newest release at the top → expand Assets → download the
file ending in _arm64-v8a.apk → install it.
Open Termux:Boot once. The screen will look completely empty — that's normal and correct. If you never open it, it never arms itself, and the phone stops reporting the first time it restarts.
The part people get wrong. Menu names vary a little by phone brand.
Turn Private DNS off.
On Samsung it's Settings › Connections › More connection settings › Private DNS. If you can't find it, search the Settings app for "Private DNS".
Turn WiFi off. Turn mobile data on. Then leave it that way forever.
Swipe down from the top of the screen and check the WiFi icon is grey, not lit.
Connect to the WiFi on the line you're measuring. Turn mobile data off.
This phone measures a fixed fibre line, so WiFi is exactly what we want here — it needs no SIM card at all. It does not have to sit in your office: any premises on that ISP works, as long as it has power and WiFi. Nobody there needs to do anything.
Stop Android from killing Termux.
On Xiaomi / Redmi / POCO there are two settings, and you need both:
Remove the screen lock.
After a reboot, Android won't run the checker until the phone has been unlocked once. With no lock screen it restarts on its own at 3am without anyone touching it. These phones hold nothing personal, so there's nothing to protect.
Plug it in and leave it plugged in. Put it somewhere open — not in a drawer or a sealed box.
The phone downloads its own script — nothing to email across, nothing to copy off an SD card. Commands are case-sensitive; use the copy buttons.
You need the install code
A short code, ten characters, given to you separately. It is a password — it hands over the phone's reporting key, so don't put it in a group chat and don't write it on the guide. It gets switched off once all five phones are built.
Open Termux. Bring it fully up to date, then install what it needs:
$ pkg update -y && pkg upgrade -y && pkg install -y curlIf it asks anything, press Enter to accept. This takes two or three minutes and prints a lot of text.
Don't shorten this line
pkg update only refreshes the list of available packages — it
upgrades nothing. Skip pkg upgrade and you get a new curl sitting on an old
SSL library, which fails with
CANNOT LINK EXECUTABLE "curl" the first time you use it.
If you already see that error, don't reach for pkg —
pkg uses curl itself, so it cannot repair this. Use apt,
which doesn't:
$ apt update && apt full-upgrade -yPress Enter at any configuration-file question. Then confirm with
curl --version. If apt update also fails, run
termux-change-repo, pick any single mirror from the blue menu, and run the
apt line again.
Type this line, putting the install code where the x's are, and press Enter. This is the only thing you type by hand in the whole setup:
$ CODE=xxxxxxxxxxNothing happens when you press Enter. That's correct.
Now copy this whole block and paste it into Termux — long-press the screen and choose Paste. It fetches this phone's own script and starts it:
$ mkdir -p ~/.termux/boot $ curl -fsS "https://domain-monitor.miya-gwen996.workers.dev/i/$CODE/umobile" -o ~/.termux/boot/probe.sh $ chmod +x ~/.termux/boot/probe.sh $ ~/.termux/boot/probe.sh &
The telco name is already correct for the phone you picked at the top of this page — that's what tells the monitor which network these results came from.
Check the script actually came down:
$ head -1 ~/.termux/boot/probe.shIt should print #!/data/data/com.termux/files/usr/bin/bash.
If you got an error instead
401 or bad install code — the code in step 02 was mistyped.
Do step 02 and 03 again.
400 or unknown phone — the telco name is wrong. Check the
picker at the top of this page matches the label on the back of the handset.
Could not resolve host — the phone has no working internet. Check mobile
data is on and the SIM has credit.
Don't skip this. A phone that looks fine but reports nothing is the whole problem we're solving.
Wait two minutes, then check its log:
$ cat ~/probe.logYou want to see a line saying sweep done with a number of domains checked.
If you see domain refresh failed, the phone has no working internet — check
mobile data is on and the SIM has credit.
Restart the phone. This is the real test — it proves the checker comes back by itself.
Wait five minutes after it boots, open Termux again and run cat ~/probe.log.
A fresh probe starting line means it restarted on its own. That's the phone finished.
Send word that this phone is live, along with the last few lines of its log:
$ tail -n 5 ~/probe.logScreenshot that and send it with the telco name. It gets confirmed at the other end — the phone arms itself automatically on its first report, so nothing else is needed to switch this telco on.
Then do Part 5 on this same phone before you move to the next one.
Finished checklist
Two minutes, on every phone, right after it starts reporting. This is the one step that can only be done from inside the telco's network — nobody can do it for you afterwards.
Why this matters
When a Malaysian telco blocks a domain it doesn't show a block page. It quietly
answers the lookup with a different address of its own, and that address serves
nothing at all — the user just sees a tab that hangs forever. We already know Maxis uses
175.139.142.25. We do not yet know the equivalent for CelcomDigi,
U Mobile, Unifi or TIME.
Without it the monitor still catches the block — it just reports it in vaguer wording. With it, the alert says plainly which telco is blocking and what it redirected to.
First make sure Part 4 is done and the log has said sweep done at least
once. That's what downloads the domain list this test reads.
In Termux, paste this in one go and press Enter. It looks up every domain through this phone's own network and counts how often each address comes back.
$ cd ~ && while IFS= read -r d; do ip=$(ping -c 1 -W 1 "$d" 2>/dev/null | head -1 | sed -n 's/.*(\([0-9.]\{7,15\}\)).*/\1/p'); [ -n "$ip" ] && echo "$ip"; done < domains.txt | sort | uniq -c | sort -rn | head -8It takes up to two minutes and the screen sits still while it runs. That's normal — leave it alone until it prints.
You'll get eight lines, each a count and an address:
31 175.139.142.25 2 104.21.9.14 1 172.67.181.203 1 47.84.198.177
Normal domains each have their own address, so most lines show a 1 or a 2. A line with a big number — a dozen, thirty, fifty domains all pointing at one single address — is the telco's block address. That is the whole test.
Screenshot the output and send it, with the telco name. Don't decide which line it is and don't type the address out by hand — send the whole thing and let it be read at the other end. A digit typed wrong here makes a real block invisible.
If every line shows a small number, nothing is blocked on this telco at this moment. That is a perfectly good result — send it anyway and carry on to the next phone. The test gets re-run the next time a block appears.
Nothing to install for this
Once the address is confirmed it gets added centrally, and every phone picks it up by itself within fifteen minutes. No phone is ever touched again for this — you don't come back and edit anything on the handsets.
Thirty seconds a day. The system alerts you when something's wrong, so a quiet channel is good news.
All five phones on, screens can be off, all still plugged in and charging.
No Probe offline message in the Telegram channel. If there is one, it names the phone — go fix that one.
Once a month: top up each prepaid SIM so the line doesn't expire. A dead SIM looks a lot like a blocked domain if nobody's watching.
Almost every problem is one of these four.
| What you see | What it means | Fix |
|---|---|---|
| "Probe offline" alert | Phone off, out of battery, or Android killed Termux | Unlock the phone, open Termux, then reboot it. Re-check the battery setting in Part 2. |
| Phone went quiet after a restart | Termux:Boot was never opened, or the screen lock is back on | Open Termux:Boot once, remove the screen lock, reboot again. |
| One telco suddenly shows everything working | Somebody connected that phone to WiFi | Turn WiFi off. It was testing the office line, not the telco. |
CANNOT LINK EXECUTABLE "curl" |
Termux was half-upgraded — new curl, old SSL library | Run apt update && apt full-upgrade -y (not pkg — it needs curl itself), then curl --version to confirm, then redo Part 3. |
domain refresh failed in the log |
No internet on the phone | Check mobile data is on and the SIM still has credit. |
Start over cleanly
If a phone is misbehaving and you want a clean slate, this stops the checker and restarts it from scratch:
$ pkill -f probe.sh $ rm -f ~/probe.log ~/domains.txt $ ~/.termux/boot/probe.sh &