A few weeks ago I wanted to know exactly what my internet connection looked like. Not just “am I getting my plan speed” but the full path: my Wi-Fi link quality, the ONT model, GPON signal levels, the ISP’s backbone, and where my packets go after they leave my house.

Turns out, almost all of this is visible from a Linux terminal.

Before blaming your ISP, check the actual link between your machine and the router:

iw dev wlan0 link

This shows your SSID, frequency, signal strength, and PHY rate. My output:

signal: -65 dBm
rx bitrate: 288 MBit/s HE-MCS 5
tx bitrate: 51 MBit/s HE-MCS 4

The PHY rate (288 Mbps) is the theoretical max at this signal level. Real TCP throughput is roughly 50-70% of that after overhead and contention.

Architecture Diagram

Find Your Modem Model

Your gateway is at 192.168.1.254 (or whatever your DHCP server says). Hit it in a browser, or poke at it from the terminal:

curl -s http://192.168.1.254/ | grep -i "product\|model\|huawei"

I found mine is a Huawei HG8240T5 — a GPON ONT with an integrated router and Wi-Fi AP, Singtel-branded firmware. This little box terminates the fibre from the exchange.

Check Your Optical Signal

GPON (Gigabit Passive Optical Network) uses a splitter in the field — one fibre from the exchange splits to serve multiple homes. The ONT reports its optical levels if you can reach the admin panel.

The key metrics:

Metric Good Range My Value
RX Power -27 to -8 dBm -15 dBm
TX Power 0.5 to 5 dBm 1.93 dBm
Temperature -10 to 85 °C 60 °C

-15 dBm RX is excellent. You only start seeing bit errors below -25 dBm.

Architecture Diagram

Trace the Path

A simple ping and traceroute reveals more than you’d think:

ping -c 10 8.8.8.8
traceroute -n 8.8.8.8

My latency to Google DNS averages 4 ms. That’s remarkable — it means the exchange is very close (likely within a few kilometres) and the GPON network has minimal oversubscription.

Architecture Diagram

Measure Real Throughput

Speed test websites are fine but curl gives you the raw number without browser overhead:

curl -o /dev/null -w "%{speed_download}\n" \
  http://speedtest.singapore.linode.com/100MB-singapore.bin

Convert to Mbps: bytes_per_sec × 8 ÷ 1,000,000.

My Wi-Fi test: ~147 Mbps. A parallel test with 3 concurrent streams hit ~273 Mbps — the Wi-Fi link was saturated.

Architecture Diagram

Key Takeaway

Your internet connection is a chain. The weakest link determines your experience. For most people on Wi-Fi, the plan speed is irrelevant — the wireless link is the bottleneck, not the subscription.

Related: Hardware Bottlenecks — Why Your Wi-Fi Caps Your Speed