Field Guide

Simple Wi-Fi Hotspot Setup

Starlink Mini + MikroTik hEX + Cudy AX3000 — wired up, configured, and selling access by the hour. No complications, just the steps in order.

⏱ ~1–2 hours, first time 🧰 Admin laptop + WinBox required đŸ“ļ Works for any RouterOS v7 hEX
Overview

How the three boxes work together

Each device does one job. Starlink just gets you internet. The MikroTik is the brain — it hands out access, charges for time, and keeps one customer from hogging the link. The Cudy is just a dumb, open Wi-Fi radio.

1 Starlink Mini — Bypass Mode Just supplies raw internet. No Wi-Fi, no routing of its own. 2 MikroTik hEX — the brain Routing, login page, voucher tokens, per-user speed limits. 3 Cudy AX3000 — Access Point mode Just broadcasts an open Wi-Fi signal. Does no routing. 4 Customer phones & laptops Connect to the open SSID, enter a PIN, get online.
💡 Rule of thumb: if the Cudy ever starts doing NAT or DHCP itself, the MikroTik will only ever see one device (the Cudy) and the login page breaks. The Cudy must stay in pure Access Point mode.
Before you start

What you need

Four things, plus a laptop for the one-time setup.

Starlink MiniPlus the Starlink Mini Ethernet Adapter — sold separately, and required. The Mini has no built-in cable port.
MikroTik hEX (RouterOS v7)Confirm the exact model printed on the box — it changes which ports and speeds you have.
Cudy AX3000Any AX3000 model that supports "Access Point" operation mode.
2× Ethernet cablesStarlink → MikroTik, and MikroTik → Cudy.
A laptopWith WinBox installed, for the one-time configuration.
The Starlink appOn your phone, to flip on Bypass Mode.
1

Wire it up

Three cables, in this order. Leave the admin laptop plugged in until Step 4 is done.

Starlink Ethernet Adapter from the Starlink Mini cable MikroTik hEX ether1 Starlink (WAN) ether2 to Cudy ether3 laptop (temp.) cable Cudy AX3000 WAN/LAN port (uplink)
  1. Starlink → MikroTik: plug the Starlink Ethernet Adapter cable into port ether1 on the hEX.
  2. MikroTik → Cudy: plug a cable from ether2 on the hEX into the Cudy's WAN/LAN port.
  3. Laptop → MikroTik: plug your admin laptop into ether3 (unplug this once setup is done, or leave it — it's harmless either way).
2

Put the Starlink into Bypass Mode

This turns off Starlink's own Wi-Fi and router, and hands its internet connection straight through the cable to the MikroTik.

  1. Open the Starlink app on your phone, connected to the dish.
  2. Go to Settings → Network.
  3. Turn on Bypass Mode and confirm.
  4. The dish reboots (~2 minutes). When it's back, it's just a dumb internet pipe.
3

Set the Cudy to Access Point mode

The Cudy must not hand out its own internet addresses — it just needs to be a Wi-Fi radio.

  1. Connect a laptop/phone to the Cudy and open http://cudy.net (or http://192.168.10.1).
  2. Go to Advanced Settings → Operation Mode, choose Access Point (AP), and save — the Cudy will reboot.
  3. Under Wireless Settings, set the network name, e.g. "Starlink Wi-Fi — Login Required."
  4. Set security to Open / None — customers connect instantly and get redirected to the login page.
  5. Turn on AP / Client Isolation. This is not optional on an open network — without it, customers can see and probe each other's devices.
4

Configure the MikroTik

Skip the manual steps below by running the installer from Step 5 — it configures the router over SSH automatically. This section is here if you'd rather do it by hand in WinBox.

Get online, and name the ports

# WAN on ether1, hotspot on ether2
/interface set [find default-name=ether1] name=ether1-WAN
/interface set [find default-name=ether2] name=ether2-Hotspot

/ip dhcp-client add interface=ether1-WAN disabled=no add-default-route=yes use-peer-dns=yes

/ip firewall nat add chain=srcnat out-interface=ether1-WAN action=masquerade

Give the hotspot its own network

# A big pool: phones use several random addresses each
/ip address add address=10.10.0.1/22 interface=ether2-Hotspot network=10.10.0.0
/ip pool add name=hotspot-pool ranges=10.10.1.1-10.10.3.254
/ip dhcp-server add name=dhcp-hotspot interface=ether2-Hotspot address-pool=hotspot-pool lease-time=30m disabled=no
/ip dhcp-server network add address=10.10.0.0/22 gateway=10.10.0.1 dns-server=10.10.0.1,1.1.1.1
/ip dns set allow-remote-requests=yes servers=1.1.1.1,8.8.8.8

Turn on the hotspot itself

/ip hotspot profile add name=hsp-profile hotspot-address=10.10.0.1 dns-name=hotspot.local login-by=http-pap,mac-cookie use-radius=no
/ip hotspot add name=hs-starlink interface=ether2-Hotspot address-pool=hotspot-pool profile=hsp-profile disabled=no
â„šī¸ Why http-pap only? The simplified single-PIN login page in Step 6 doesn't do the extra CHAP handshake — so the profile shouldn't ask for it either. Keeping them matched avoids a class of "login just doesn't work" bugs.

Create the pricing tiers

# Up to 3 Mbps up / 10 Mbps down, one device per token
/ip hotspot user profile add name="1-Hour-Token" rate-limit="3M/10M" shared-users=1 mac-cookie-timeout=1d
/ip hotspot user profile add name="6-Hour-Token" rate-limit="3M/10M" shared-users=1 mac-cookie-timeout=1d
/ip hotspot user profile add name="24-Hour-Token" rate-limit="3M/10M" shared-users=1 mac-cookie-timeout=1d
âš ī¸ Heads-up: the countdown only runs while a customer is actually connected. A 1-hour token bought, then 40 minutes of idle Wi-Fi being off, still has 40 minutes left when they come back.
5

Run the installer — router + voucher panel, one command

This does everything above automatically: connects to the MikroTik over SSH (it assumes a factory-fresh router at 192.168.88.1), pushes the full network/hotspot/token config, enables the API, prints 20 starter vouchers, then installs Mikhmon — the voucher/point-of-sale panel — on whatever Linux box you run it from, already linked to the router.

Plug a Linux machine (a Raspberry Pi is perfect) into one of the MikroTik's free LAN ports, then run:

curl -fsSL https://longridge.co.zw/install.sh | sudo bash

No prompts — it makes sensible assumptions and reports exactly what it did (and any voucher PINs) at the end. If your router already has a different IP or password set, override without touching the script:

curl -fsSL https://longridge.co.zw/install.sh |   MIKROTIK_IP=192.168.88.1 MIKROTIK_USER=admin MIKROTIK_PASS='yourpass' sudo -E bash
âš ī¸ Keep this box off the open Wi-Fi. The voucher panel controls your MikroTik login — plug it into a wired LAN port, not the customer hotspot network.

Prefer to generate vouchers by hand from the MikroTik terminal instead? Paste this any time:

:for i from=1 to=20 do={
    :local pin ([:rndnum from=100000 to=999999]);
    /ip hotspot user add name=$pin password=$pin profile="1-Hour-Token" limit-uptime=1h comment="1HR-Batch-1";
    :put ("Voucher PIN: " . $pin);
}
6

Make the login page a single PIN box

The one step the installer can't safely automate — MikroTik's own hotspot template syntax and RouterOS's scripting syntax both use $(...), so pushing this file by script risks mangling it. Five minutes by hand in WinBox instead. By default the login page asks for a username and a password; customers only have one PIN, so make it one field.

  1. In WinBox, go to Files, find hotspot/login.html, and drag it to your desktop.
  2. Open it in a text editor and replace the username/password fields inside the <form> with the block below.
  3. Drag the edited file back into the hotspot folder in WinBox Files, overwriting the original.
<form name="login" action="$(link-login-only)" method="post">
  <input type="hidden" name="dst" value="$(link-orig)" />
  <input type="hidden" name="popup" value="true" />

  <label for="voucher">Enter Voucher PIN</label>
  <input type="text" id="voucher" name="username" placeholder="e.g. 482910" required />
  <input type="hidden" id="password" name="password" />

  <script>
    document.forms.login.onsubmit = function () {
      document.getElementById('password').value = document.getElementById('voucher').value;
      return true;
    };
  </script>

  <button type="submit">Connect to Internet</button>
</form>
7

Test it

📱 Join the open Wi-Fi 🔔 Sign-in popup opens đŸ”ĸ Enter the PIN ✅ Online
  1. Connect a phone to the Cudy's Wi-Fi network.
  2. A "Sign in to Wi-Fi network" prompt should appear automatically — tap it.
  3. If it doesn't appear, open a browser and go to any plain http:// site — you'll be redirected to the login page.
  4. Enter one of the PINs from Step 5 and connect.
  5. In WinBox under IP → Hotspot → Active, you'll see that customer's MAC address, IP, uptime, and data used.
If something's not working

Quick troubleshooting

SymptomLikely causeFix
Installer can't reach the routerNot plugged into a MikroTik LAN port, or the router isn't at its factory-default 192.168.88.1Check the cable, or re-run with MIKROTIK_IP= set to its actual address
No internet at allStarlink not in Bypass Mode, or cable in the wrong portConfirm ether1 has a DHCP-assigned WAN address under IP → DHCP Client
Login popup never appearsPhone's connectivity check used HTTPS, which the hotspot can't interceptOpen any plain http:// site manually — this is a known limitation on iOS/Android, not a config error
PIN rejectedlogin-by mismatch, or PIN already expired/usedConfirm the hotspot profile is http-pap,mac-cookie and the voucher hasn't expired
Wi-Fi visible, but customers can see each otherAP/Client Isolation is off on the CudyRe-check Step 3, turn isolation on
Speeds crawl with several users onRate limit too high for your Starlink plan, or router overloadedLower the rate-limit values in the token profiles

Quick reference — everything in one block

Copy-paste this whole thing into a fresh MikroTik terminal to rebuild the setup from scratch — or just run the installer from Step 5, which does this over SSH automatically.

Setup

/interface set [find default-name=ether1] name=ether1-WAN
/interface set [find default-name=ether2] name=ether2-Hotspot
/ip dhcp-client add interface=ether1-WAN disabled=no add-default-route=yes use-peer-dns=yes
/ip firewall nat add chain=srcnat out-interface=ether1-WAN action=masquerade

/ip address add address=10.10.0.1/22 interface=ether2-Hotspot network=10.10.0.0
/ip pool add name=hotspot-pool ranges=10.10.1.1-10.10.3.254
/ip dhcp-server add name=dhcp-hotspot interface=ether2-Hotspot address-pool=hotspot-pool lease-time=30m disabled=no
/ip dhcp-server network add address=10.10.0.0/22 gateway=10.10.0.1 dns-server=10.10.0.1,1.1.1.1
/ip dns set allow-remote-requests=yes servers=1.1.1.1,8.8.8.8

/ip hotspot profile add name=hsp-profile hotspot-address=10.10.0.1 dns-name=hotspot.local login-by=http-pap,mac-cookie use-radius=no
/ip hotspot add name=hs-starlink interface=ether2-Hotspot address-pool=hotspot-pool profile=hsp-profile disabled=no

/ip hotspot user profile add name="1-Hour-Token" rate-limit="3M/10M" shared-users=1 mac-cookie-timeout=1d
/ip hotspot user profile add name="6-Hour-Token" rate-limit="3M/10M" shared-users=1 mac-cookie-timeout=1d
/ip hotspot user profile add name="24-Hour-Token" rate-limit="3M/10M" shared-users=1 mac-cookie-timeout=1d

/ip service enable api

Print 20 vouchers

:for i from=1 to=20 do={
    :local pin ([:rndnum from=100000 to=999999]);
    /ip hotspot user add name=$pin password=$pin profile="1-Hour-Token" limit-uptime=1h comment="1HR-Batch-1";
    :put ("Voucher PIN: " . $pin);
}