Dutch Phone Relay
How my Dutch 06 number keeps working on my iPhone while the SIM stays home in the Netherlands.
Overview
A Redmi Note 7 with the Simyo prepaid SIM sits plugged in at home on Wi-Fi. It relays texts and forwards calls; everything else runs on the iPhone.
| What | How |
|---|---|
| Send texts | “NL SMS” shortcut on the iPhone → SMSGate → Redmi |
| Receive texts | Redmi → SMSGate webhook → ntfy notification |
| Make calls | MyTello, showing the 06 number as caller ID |
| Receive calls | Simyo call forwarding → CheapConnect 085 number → Groundwire |
| Remote access | Tailscale + adb over the network |
Credentials (SMSGate login, ntfy topic, SIP password) are deliberately not on this page. They live in my password manager.
01 Sending texts
- Run NL SMS from the home screen or Siri, enter the number as
+316…and the message. - The shortcut sends
POST https://api.sms-gate.app/3rdparty/v1/messageswith basic auth and the body below. - SMSGate runs in cloud mode with Notification channel: SSE Only. The Redmi runs a Chinese MIUI ROM without Google Play Services, so Google push isn't available.
{ "textMessage": { "text": "Hello" }, "phoneNumbers": ["+316…"] }
Check a message's status with GET /3rdparty/v1/messages/<id>, or in the SMSGate app under Messages.
02 Receiving texts
- The ntfy iOS app subscribes to a private topic on ntfy.sh. Notifications are titled “SMS from <number>”.
- The webhook uses ntfy templating:
?tpl=yes&t=SMS from {{.payload.sender}}&m={{.payload.message}}. - MIUI's spam filter is set to Allow for both “Messages from strangers” and “Service notifications” (Security → Blocklist → SMS blocklist). Otherwise texts from unknown numbers and verification codes never reach SMSGate.
03 Making calls
- MyTello on the iPhone, verified with the 06 number, so outgoing calls show the 06 as caller ID.
- The verification code arrived through the SMS relay above.
04 Receiving calls
- CheapConnect prepaid VoIP with an 085 number, €8.95 a year, renews 1 November 2027. SIP server
sip.cheapconnect.net, port5080(avoids SIP ALG). - Groundwire (€9.99 one-off) holds the SIP account and wakes the iPhone with push.
- Forwarding costs €0.10 per minute of Simyo prepaid credit.
Forwarding codes (dial on the Redmi)
| Action | Code |
|---|---|
| Forward all calls | *21*085… (national format, dialled as a call) |
| Turn forwarding off | #21 |
The GSM-style **21*…# fails on Simyo 4G, and +31 format gives “number not in service”. Android doesn't show a forwarding icon even when it's active, so a test call is the only check.
05 Remote access
- Tailscale (F-Droid build) on the Redmi is set as the always-on VPN, so it reconnects after a reboot.
- Network adb listens on port 5555:
adb connect 100.98.25.119:5555
adb -s 100.98.25.119:5555 shell pidof me.capcom.smsgateway
Android 10 without root turns network adb off on every reboot. Tailscale comes back, adb doesn't: someone at home has to plug the phone into a computer and run adb tcpip 5555.
Upkeep & troubleshooting
- Keep the SIM alive: Simyo deactivates prepaid SIMs with no activity for 6 months. Send at least one text every few months. Credit doesn't expire.
- Is the relay online?
GET https://api.sms-gate.app/3rdparty/v1/devicesshowslastSeenfor the Redmi. - Sending fails with “No SIMs found”: MIUI's own permissions (MIUIOP 10004–10032) for SMSGate must be set to allow. The SIM sits in slot 2.
- Texts don't arrive: check MIUI's blocklist (see 02), and that READ_SMS/RECEIVE_SMS are allowed for
me.capcom.smsgateway. - Calls don't ring: check Groundwire shows the account as registered, then re-dial the forwarding code on the Redmi.