A guerrilla cable testing tool for the rest of us.
Because Fluke costs more than my car.
MikLink turns any MikroTik RouterBoard into a cable testing probe. It runs diagnostics and generates PDF reports you can hand to clients or slap on an electrician's desk.
Built for IT techs caught in the eternal war between "the cable works" and "10 Mbps is not working".
The app communicates with RouterOS 7.x via the REST API – no custom firmware, no SSH hacks, just clean HTTP calls.
You're an IT professional. An electrician just finished the structured cabling. They say it's done. You plug in and get garbage speeds. They blame your switch. You blame their crimping. Nobody wins. The client is pissed.
Professional tools like Fluke cost $2,000+. That's insane for small MSPs or one-off projects.
Use a €100 MikroTik RouterBoard as your probe. MikLink does the rest.
flowchart LR
subgraph phone [📱 Your Phone]
App[MikLink App]
end
subgraph probe [🔌 Probe]
MT[MikroTik RouterBoard]
end
subgraph cable [🔗 Cable Under Test]
WO[Wall Outlet]
PP[Patch Panel]
SW[Switch]
end
subgraph infra [🏢 Infrastructure]
Router[Router / SpeedTest Server]
end
App <-->|WiFi + REST API| MT
MT -->|Ethernet| WO
WO --> PP
PP --> SW
SW --> Router
App -->|Generate| PDF[📄 PDF Report]
| Feature | What it does |
|---|---|
| 🔗 Link Status | Verifies physical connection and negotiated speed. Detects if you're stuck at 10/100 when you should be at gigabit. |
| 🧪 Cable Test (TDR) | Time-Domain Reflectometry on supported models. Finds opens, shorts, and cable length issues. |
| 📊 Speed Test | Throughput test to verify end-to-end performance. Stress the cable, prove it works (or doesn't). |
| 🔍 Neighbor Discovery | LLDP/MNDP/CDP detection. See what's connected on the other end. |
| 🏓 Ping Test | Customizable ping tests to multiple targets. Verify routing and latency. |
| 📑 PDF Reports | Professional-looking reports with all test results. No more arguing. |
The PDF generator is highly customizable:
- Orientation: Portrait or landscape layout
- Column selection: Choose which data columns to include
- Hide empty columns: Keep reports clean and relevant
- Signature fields: Optional spaces for tester and cabling technician signatures
- Include/exclude empty tests: Filter out skipped or incomplete tests
My go-to setup is a MikroTik hAP ax2 powered by a UGreen 10000mAh powerbank with a USB-C to barrel jack adapter that tricks the powerbank into delivering 12V @ ~1.5A. Fits in a bag, lasts for hours.
Total cost: ~€130 for a portable cable tester. Fluke who?
| Requirement | Value |
|---|---|
| Android | 11+ (API 30) – works great on older phones/tablets |
| MikroTik RouterOS | 7.x with REST API enabled |
| Access Level | Admin credentials to the RouterBoard |
- Download the APK from Releases
- Configure probe: Enter MikroTik IP, username, password
- Create client: Company name, network settings, socket ID format
- Create test profile: Choose which tests to run
- Connect the cable you want to test
- Run test and wait for results
- Export PDF and close the discussion
The MikroTik needs minimal setup. Here's what you need:
- Create a bridge for the WiFi interfaces
- Set up WiFi as AP so your phone can connect
- Configure a DHCP server on the wireless side
- Enable REST API (
/ip service set www-ssl disabled=no)
The app handles DHCP client or static IP configuration on the test port automatically.
📝 Example Configuration (hAP ax2)
/interface bridge add name=bridge1
/interface ethernet switch set 0 cpu-flow-control=yes
/interface wifi configuration add channel.band=5ghz-ax .skip-dfs-channels=all \
.width=20/40mhz-Ce country=Italy disabled=no hide-ssid=no \
installation=indoor mode=station-bridge name=cfg1 \
security.authentication-types=wpa2-psk,wpa3-psk \
.encryption=ccmp,gcmp,ccmp-256,gcmp-256 .passphrase=YourPassword ssid=Miklink
/interface wifi set [ find default-name=wifi1 ] configuration=cfg1 \
configuration.mode=ap disabled=no
/interface wifi set [ find default-name=wifi2 ] channel.band=2ghz-ax \
configuration=cfg1 configuration.mode=ap disabled=no
/ip pool add name=dhcp_pool0 ranges=172.29.0.2-172.29.0.254
/ip dhcp-server add address-pool=dhcp_pool0 interface=bridge1 name=dhcp1
/interface bridge port add bridge=bridge1 interface=wifi1
/interface bridge port add bridge=bridge1 interface=wifi2
/ip address add address=172.29.0.1/24 interface=bridge1 network=172.29.0.0
/ip dhcp-server network add address=172.29.0.0/24 dns-none=yes gateway=172.29.0.1
# Enable REST API
/ip service set www-ssl disabled=no
If your client's main router is also a MikroTik, you can enable the built-in Bandwidth Test Server:
/tool bandwidth-server set enabled=yes authenticate=no
Configure MikLink to point to that server IP. The speed test will stress the entire cable run from your probe to the core switch. Ultimate proof of performance.
Let's be real – this is beta software built with vibe coding. Here's what you should know:
| Issue | Status | Notes |
|---|---|---|
| Incomplete translations | 🟡 WIP | Italian/English mix. PRs welcome. |
| Rapid sequential tests | 🟠 Bug | Starting tests too quickly can cause issues. Take a breath between tests. |
| HTTP communication | 🟢 By design | Yes, it's HTTP(S) between your phone and the MikroTik. They're on the same WiFi. If someone's MITMing your probe's WiFi, you have bigger problems. |
| TDR implementation | 🟡 Partial | The cable test doesn't strictly follow MikroTik's docs. It works, but don't bet your career on it. For real certifications, buy a Fluke. |
This project was built 100% with vibe coding (AI-assisted development).
What this means:
- It works, but it's not a textbook example of clean code
- There are probably better ways to do everything
- I prioritized "solves the problem" over "elegant architecture"
- The code might make senior devs cry
If you're a purist, this repo may cause physical pain. You've been warned.
- Technical Architecture – For the nerds who want to understand (or judge) the code
- Database Schema – Room database structure
- Build Instructions – How to compile this mess
- ADRs – Why things are the way they are
The code is here. Do whatever you want with it.
PRs welcome, but I can't promise fast reviews. If you find a critical bug, open an issue. If you want to refactor everything because the code offends you—go ahead, you're probably right.
This tool is provided AS-IS with no warranties.
I'm not responsible if:
- The report says a cable is good when it's garbage
- The report says a cable is garbage when it's fine
- An electrician gets offended by the report
- Your client uses the PDF as evidence in court
- Anything, really
For official certifications, buy a Fluke.
MIT – Do whatever you want, you owe me nothing.

shitworks
'cause shit always works
Built with 🤖 vibe coding and 😤 frustration at bad cabling.










