ProvenRigReceipts
SQM router, tested

A router with SQM fixed my lag spikes at gigabit. One setting decides whether it costs half your upload.

Tested October 15, 20 and 21, 2026

On my Google Fiber gigabit line, a GL.iNet Flint 3 with SQM turned on took my wired PC's upload lag from 1 in 20 packets waiting +102 to +133 ms down to +1 to +3 ms, in every run. Stock, with SQM off, it beat my old Nest (a B instead of a C) but still lagged. The catch: the Flint's default queue rule, cake, held my upload to 431 to 503 Mbps instead of about 950. Its other option, fq_codel, kept 613 to 736 with lag just as low. It fixed IPv6 too. It didn't fix a phone on my old Nest's Wi-Fi, behind it.

41valid tests on router day
+1–3 ms1-in-20 upload lag with SQM on (stock: +102 to +133)
431–503Mbps upload with cake, GL's default (stock: about 950)
613–736Mbps upload with fq_codel, lag just as low
Oct 15, the Nest (before the Flint): C, +144 ms upload.
Oct 15, the Nest (before the Flint): C, +144 ms upload.
Oct 20, A6: SQM on, cake 900/900. A+, +1 ms upload.
Oct 20, A6: SQM on, cake 900/900. A+, +1 ms upload.

Test it yourself

  1. Run Waveform's free bufferbloat test on a wired PC with nothing else downloading. Note the grade and the upload's added delay (Upload Active).
  2. Turn SQM on. On my GL.iNet Flint 3 (firmware 4.10.1) it's under FLOW CONTROL › SQM; it wasn't there on the 4.8.4 firmware the router shipped with. Set the Queue Rule to fq_codel and both limits to about 90% of your plan: 900 down and 900 up on a 1 Gig plan. GL turns Network Acceleration off while SQM is on.
  3. Do three runs off and three on, switching back and forth, and change nothing else in between.
  4. Compare the upload delay first, then the upload speed. If the speed lands far under your limit, try the other Queue Rule.

One router on one line. Your router's CPU and your plan decide what SQM costs, so measure yours.

The claims, one by one

Measured

The Nest, before: a C, and lag spikes the probe can see

Three runs on the Nest, wired, with IPv6 off and auto-tuning normal: the setup video #1 ended on. All three graded C, with +123 to +183 ms added on upload. My probe's packets during the upload typically picked up +52 to +142 ms, 1 in 20 waited +248 ms or more, and the worst waited +418 ms. Two more runs on the morning of router day (Leg 0) graded C again, with 1 in 20 at +200 and +255 ms. This is what the Flint has to beat.

Upload-phase added delay for every probe packet, the Nest, Oct 15 and the morning of Oct 20. Each dot is one packet. Solid line = median, dashed = 95th percentile. SQM off, or the old Nest SQM on (each column is also labeled)
0100200300400500msp95 +253Before-1Nestp95 +257Before-2Nestp95 +248Before-3Nestp95 +255N1Nestp95 +200N2Nest
RunSettingMedianp95Worstn
the Nest, Oct 15 and the morning of Oct 20
Before-1Nest+52+253+418102
Before-2Nest+142+257+38985
Before-3Nest+75+248+30885
N1Nest+54+255+352100
N2Nest+56+200+33490

Added delay in ms during the upload phase. p95 = the 1-in-20 bad packet. n = packets timed in that phase.

Oct 15, the Nest (before the Flint): C, +144 ms upload.
Oct 15, the Nest (before the Flint): C, +144 ms upload.
Didn't work

A new router by itself isn't the fix

Stock, with SQM off, the Flint already beat my old Nest: a B instead of a C in all three Leg A runs, with 1 in 20 packets waiting +102 to +133 ms during the upload, against the Nest's +200 to +257. But it still lagged: every stock run had packets waiting an extra hundred milliseconds or more (6 to 11 of them per run). SQM is the fix, and it ships turned off.

Oct 20, A1: Stock Flint, SQM off. B, +57 ms upload.
Oct 20, A1: Stock Flint, SQM off. B, +57 ms upload.
Held up

First, proof the limit is in charge

Before any counted run, I set SQM to cake at 300 down and 150 up and ran Waveform once. Both speeds landed just under their limits, each in the right direction: 294.7 down and 148.5 up, graded A+. If they hadn't, I'd have stopped and fixed the setup before Leg A.

Oct 20, Shaping check: SQM on, cake 300/150. A+, +1 ms upload.
Oct 20, Shaping check: SQM on, cake 300/150. A+, +1 ms upload.
Held up

SQM fixes the lag on my line: +102 to +133 ms down to +1 to +3 ms

Leg A alternated stock and SQM on (cake, 900 down and 900 up), three runs each, on the wired PC. The rule, written on Oct 16 before the first run: every SQM-on run's 1 in 20 under +50 ms, and no SQM-on run overlapping any stock run. Stock graded B, B and B, with 1 in 20 packets waiting +102 to +133 ms during the upload. SQM on graded A, A and A+, with 1 in 20 at +1 to +3 ms and the worst packet at +3 to +10. It passed.

My normal ping didn't change: Waveform's idle reading was 8 to 9 ms on the Flint and 8 to 10 on the Nest. SQM only takes out the spikes under load.

Upload-phase added delay for every probe packet, Leg A: stock vs SQM on (cake, 900 / 900), in the order they ran. Each dot is one packet. Solid line = median, dashed = 95th percentile. SQM off, or the old Nest SQM on (each column is also labeled)
050100150200msp95 +114A1offp95 +3A2onp95 +133A3offp95 +1A4onp95 +102A5offp95 +2A6on
RunSettingMedianp95Worstn
Leg A: stock vs SQM on (cake, 900 / 900), in the order they ran
A1off+31+114+161110
A2on+1+3+10128
A3off+27+133+160114
A4on+0+1+10128
A5off+25+102+168109
A6on+1+2+3139

Added delay in ms during the upload phase. p95 = the 1-in-20 bad packet. n = packets timed in that phase.

Oct 20, A1: Stock Flint, SQM off. B, +57 ms upload.
Oct 20, A1: Stock Flint, SQM off. B, +57 ms upload.
Oct 20, A6: SQM on, cake 900/900. A+, +1 ms upload.
Oct 20, A6: SQM on, cake 900/900. A+, +1 ms upload.
Measured

The catch: with cake, about half my upload was gone

Cake is the Flint's default queue rule. With it on at 900/900, the upload stalled at 430.8 to 503.2 Mbps in all six runs at that limit, against 941.5 to 949.7 stock. Lowering the limit to 600 didn't move the wall (435.8 and 465.3), so the limit isn't what holds it back. GL's own SQM page warns about this. My best guess is the router's processor, since SQM switches off GL's hardware acceleration; I didn't measure its load.

At limits of 600 and up, cake also lagged on the download side in 3 of 8 runs, with 1 in 20 at +63 to +108 ms (the other five: +3 to +20). At a 300 limit both directions were clean, but the download fell to 263.3 to 293.9 Mbps, about two thirds less than stock's 908.3 to 918.1.

Upload speed, each run (Waveform), stock against cake at each limit. SQM off, or the old Nest SQM on
Stock, SQM off (Leg A)
A1948.6 Mbps
A3941.5 Mbps
A5949.7 Mbps
cake at 900 / 900
A2460.8 Mbps
A4477.2 Mbps
A6488.3 Mbps
B1 redo503.2 Mbps
B6499.7 Mbps
C3430.8 Mbps
cake at 600 / 600
B2435.8 Mbps
B5465.3 Mbps
cake at 300 / 300
B3287.1 Mbps
B4288 Mbps
GL's own SQM page (firmware 4.10.1, Oct 20): "on high-speed connections, enabling this may lead to a reduction in peak throughput performance."
GL's own SQM page (firmware 4.10.1, Oct 20): "on high-speed connections, enabling this may lead to a reduction in peak throughput performance."
Measured

One setting got a big chunk back: fq_codel

GL's Queue Rule menu has two options, cake and fq_codel. At the same 900/900 limit, fq_codel kept 612.8 to 735.9 Mbps of upload in all four runs, against cake's 430.8 to 503.2, and the lag stayed just as low: 1 in 20 at +2 to +4 ms (cake: +1 to +3). On the download side it never lagged: 1 in 20 at +1 to +8 ms in all four. Four runs is a strong lead, not proof. It's what I run now: fq_codel at 900 both ways.

Upload speed, each run at a 900 / 900 limit (Waveform). SQM off, or the old Nest SQM on
cake
A2460.8 Mbps
A4477.2 Mbps
A6488.3 Mbps
B1 redo503.2 Mbps
B6499.7 Mbps
C3430.8 Mbps
fq_codel
C2735.9 Mbps
C4708.7 Mbps
C5700.6 Mbps
C6612.8 Mbps
Oct 21, C3: SQM on, cake 900/900. A+, +1 ms upload. This capture cut off Waveform's grade tile; the grade is the one logged on test day.
Oct 21, C3: SQM on, cake 900/900. A+, +1 ms upload. This capture cut off Waveform's grade tile; the grade is the one logged on test day.
Oct 21, C4: SQM on, fq_codel 900/900. A+, +1 ms upload. This capture cut off Waveform's grade tile; the grade is the one logged on test day.
Oct 21, C4: SQM on, fq_codel 900/900. A+, +1 ms upload. This capture cut off Waveform's grade tile; the grade is the one logged on test day.
Measured

No hit on one-connection downloads

Video #1's fix cost me single-connection downloads, so I checked whether SQM does the same. After each PC result, I timed one 100 MB download over a single connection from a Hetzner server in Ashburn, VA (Mbps = bytes × 8 ÷ total time). Stock, it ran 395 to 554 Mbps across 9 runs. With SQM on at a 900 limit, 499 to 718 across 15. No hit; if anything, a little faster. In Leg D, curl went over IPv4 on some runs and IPv6 on others.

curl.exe -s -o NUL -m 20 -w "%{size_download} %{time_total} %{time_connect}" https://ash-speed.hetzner.com/100MB.bin
One 100 MB download over a single connection after each run (curl). SQM off, or the old Nest SQM on
Stock, SQM off
A1518 Mbps
A3550 Mbps
A5517 Mbps
D1457 Mbps
D3490 Mbps
D5395 Mbps
D5 redo554 Mbps
D7497 Mbps
D9536 Mbps
SQM on at a 900 limit
A2681 Mbps
A4559 Mbps
A6552 Mbps
B1 redo499 Mbps
B6596 Mbps
C2684 Mbps
C3689 Mbps
C4695 Mbps
C5718 Mbps
C6691 Mbps
D2591 Mbps
D4594 Mbps
D6669 Mbps
D8598 Mbps
D10635 Mbps
Held up

It fixes IPv6 too

In my last video, IPv6 meant F grades on my old router. On the Flint I turned IPv6 on two ways: GL's default, NAT6, and native (ISP-assigned) IPv6, the way the Nest gave it. Counting only the runs where Chrome's connections were logged going over IPv6: stock graded A, B, B, C and B, never an F, with 1 in 20 packets at +30 to +148 ms during the upload. With fq_codel at 900/900 it got an A or A+ every time, at +3 to +5 ms, and +3 to +14 ms on the download side. D1 and D2 ran before that logger started, so they're listed but not counted.

Source: Video #1's receipts: IPv6 on the old router

Upload-phase added delay for every probe packet, IPv6 on, NAT6 (GL's default): stock vs fq_codel 900 / 900. Each dot is one packet. Solid line = median, dashed = 95th percentile. SQM off, or the old Nest SQM on (each column is also labeled)
0255075100125150msp95 +104D1offp95 +4D2onp95 +30D3offp95 +3D4onp95 +98D5offp95 +86D5 redooffp95 +4D6on
Upload-phase added delay for every probe packet, IPv6 on, native: stock vs fq_codel 900 / 900. Each dot is one packet. Solid line = median, dashed = 95th percentile. SQM off, or the old Nest SQM on (each column is also labeled)
050100150200msp95 +148D7offp95 +4D8onp95 +98D9offp95 +5D10on
RunSettingMedianp95Worstn
IPv6 on, NAT6 (GL's default): stock vs fq_codel 900 / 900
D1off+25+104+150103
D2on+2+4+7146
D3off+18+30+35120
D4on+1+3+7140
D5off+28+98+118113
D5 redooff+26+86+117111
D6on+1+4+17124
IPv6 on, native: stock vs fq_codel 900 / 900
D7off+43+148+193105
D8on+1+4+13142
D9off+31+98+164102
D10on+1+5+13126

Added delay in ms during the upload phase. p95 = the 1-in-20 bad packet. n = packets timed in that phase.

Oct 21, D7: Stock Flint, SQM off, IPv6 on (native). C, +72 ms upload.
Oct 21, D7: Stock Flint, SQM off, IPv6 on (native). C, +72 ms upload.
Oct 21, D8: SQM on, fq_codel 900/900, IPv6 on (native). A+, +1 ms upload.
Oct 21, D8: SQM on, fq_codel 900/900, IPv6 on (native). A+, +1 ms upload.
Didn't work

It can't fix the Wi-Fi on a mesh behind it

My old Nest stayed plugged in behind the Flint, with its own Wi-Fi on. My phone on the Nest's Wi-Fi graded C and C with SQM off, and D and C with fq_codel on: +161 to +210 ms added on upload either way. No better. On the Flint's own Wi-Fi, the same phone got an A every time, SQM off or on (Leg F, next). My best guess is that the lag builds inside the Nest, where the Flint's SQM can't reach; I didn't test that. If you add an SQM router, connect your gaming devices to it directly, wired or on its own Wi-Fi.

Oct 21, E1, phone on the Nest's Wi-Fi: Stock Flint, SQM off. C, +161 ms upload.
Oct 21, E1, phone on the Nest's Wi-Fi: Stock Flint, SQM off. C, +161 ms upload.
Oct 21, E2, phone on the Nest's Wi-Fi: SQM on, fq_codel 900/900. D, +210 ms upload.
Oct 21, E2, phone on the Nest's Wi-Fi: SQM on, fq_codel 900/900. D, +210 ms upload.
Couldn't tell

Someone else maxing out the internet: couldn't tell

Leg F asked a household question: does SQM protect my wired PC while someone else maxes out the internet? The PC sat idle with the probe running while my phone, on the Flint's own Wi-Fi, ran Waveform. But the phone alone couldn't make the Flint lag. With SQM off it pulled 1,105.1 to 1,122.4 Mbps down, and the idle PC's 1 in 20 stayed at +2 ms (worst +2 to +10). With nothing to fix, there's no verdict: that was the rule, set before the runs.

The phone graded A in all six valid runs. Those results are my read-outs, because the phone's incognito tab blocks screenshots. One side finding: with SQM on, the idle PC picked up small spikes (1 in 20 at +10 to +41 ms) that the stock runs didn't. I can't say why for sure.

Every run

Every graded test I ran, in order, including the invalid ones (marked, with the reason) and three off-plan runs. Delays are added on top of the idle ping, in ms; speeds are Waveform's, in Mbps. Each result links to Waveform's own result screenshot, and to the original Waveform page where I saved its link. Leg F's phone results are my read-outs: the phone's incognito tab blocks screenshots. Blank cells weren't logged.

Oct 15: the Nest, before the Flint

Three runs on the Google Nest Wifi Pro, the router video #1 was tested on. Same PC, same probe and the same settings as every run after it: wired, IPv6 off, auto-tuning normal.

RunTimeWhat changedIPv6GradeIdle+Down+UpMbps ↓/↑Result
Before-113:31The Nest (before)OffC9+15+144602.1 / 412.3Waveform · Screenshot
Before-213:34The Nest (before)OffC10+16+183675.3 / 395.7Waveform · Screenshot
Before-313:36The Nest (before)OffC8+17+123622.6 / 415.4Waveform · Screenshot

Oct 20: the Nest again, same morning (Leg 0)

Two runs on the Nest the morning of router day, to separate any Chrome or Windows update effect from the router.

RunTimeWhat changedIPv6GradeIdle+Down+UpMbps ↓/↑Result
N112:58The Nest (same-morning control)OffC8+17+131799.9 / 439.8Waveform · Screenshot
N213:04The Nest (same-morning control)OffC9+16+101721.9 / 433.1Waveform · Screenshot

Oct 20: the shaping check

One run with SQM on, cake, 300 down / 150 up, before any counted run, to prove the router shapes the right direction.

RunTimeWhat changedIPv6GradeIdle+Down+UpMbps ↓/↑Result
Shaping check13:48SQM on, cake 300/150OffA+8+0+1294.7 / 148.5Waveform · Screenshot

Oct 20: stock Flint vs SQM on (Leg A)

SQM off (stock, acceleration on) vs on (cake, 900/900), alternating, 3 each. The order and the pass rule were fixed before the first run.

RunTimeWhat changedIPv6GradeIdle+Down+UpMbps ↓/↑Result
A114:17Stock Flint, SQM offOffB8+15+57918.1 / 948.6Waveform · Screenshot
A214:21SQM on, cake 900/900OffA9+15+0795.1 / 460.8Waveform · Screenshot
A314:26Stock Flint, SQM offOffB8+20+56910 / 941.5Waveform · Screenshot
A414:30SQM on, cake 900/900OffA9+5+1809 / 477.2Waveform · Screenshot
A514:36Stock Flint, SQM offOffB9+20+49908.3 / 949.7Waveform · Screenshot
A614:41SQM on, cake 900/900OffA+9+2+1845.8 / 488.3Waveform · Screenshot

Oct 21: the speed limit, 900 / 600 / 300 (Leg B)

SQM on, cake, symmetric limits stepped down and back up: 900, 600, 300, 300, 600, 900. The saved captures cut off Waveform's grade tile, so each grade here is the one logged on test day; the latency and speed tiles show.

RunTimeWhat changedIPv6GradeIdle+Down+UpMbps ↓/↑Result
B109:46SQM on, cake 900/900
Invalid. The PC's Ethernet link had renegotiated to 10 Mbps (reseated, back at 1 Gbps for the redo).
OffF13+116+14879.5 / 9.7Screenshot
B1 redo09:55SQM on, cake 900/900OffA10+3+2853.8 / 503.2Screenshot
B210:00SQM on, cake 600/600OffA+8+1+1564.5 / 435.8Screenshot
B310:06SQM on, cake 300/300OffA8+8+0263.3 / 287.1Screenshot
B410:16SQM on, cake 300/300OffA+9+0+0293.9 / 288Screenshot
B510:21SQM on, cake 600/600OffA8+18+1542 / 465.3Screenshot
B610:25SQM on, cake 900/900
Graded C on the download side (Waveform +70 down; my probe's 1 in 20 while downloading: +108 ms). The upload stayed clean.
OffC9+70+0802.9 / 499.7Screenshot

Oct 21: cake vs fq_codel at 900 (Leg C)

The two queue rules GL offers, at the same 900/900 limit. B6 stands in for the first cake run. The saved captures cut off Waveform's grade tile, so each grade here is the one logged on test day; the latency and speed tiles show.

RunTimeWhat changedIPv6GradeIdle+Down+UpMbps ↓/↑Result
C210:38SQM on, fq_codel 900/900OffA10+6+0833.6 / 735.9Screenshot
C310:44SQM on, cake 900/900OffA+8+2+1857.9 / 430.8Screenshot
C410:49SQM on, fq_codel 900/900OffA+8+1+1863.5 / 708.7Screenshot
C511:19SQM on, fq_codel 900/900OffA+8+0+1872.8 / 700.6Screenshot
C611:22SQM on, fq_codel 900/900OffA+8+1+1867.1 / 612.8Screenshot

Oct 21: IPv6 on, router NAT6 (Leg D)

IPv6 on at the PC and the Flint (GL's default NAT6), SQM off vs fq_codel 900/900.

RunTimeWhat changedIPv6GradeIdle+Down+UpMbps ↓/↑Result
D111:36Stock Flint, SQM off
Not counted as IPv6 proof: Chrome's connection logger started after this run.
On, router NAT6B9+11+43875.3 / 943.7Screenshot
D211:42SQM on, fq_codel 900/900
Not counted as IPv6 proof: Chrome's connection logger started after this run.
On, router NAT6A+9+1+0853.6 / 576.4Screenshot
D311:50Stock Flint, SQM offOn, router NAT6A12+17+18908.9 / 917.6Screenshot
D411:56SQM on, fq_codel 900/900On, router NAT6A12+6+1617.1 / 592.7Screenshot
D512:02Stock Flint, SQM offOn, router NAT6B8+20+49900.7 / 948.5Screenshot
D5 redo12:06Stock Flint, SQM offOn, router NAT6B8+12+42855.2 / 931.7Screenshot
D612:11SQM on, fq_codel 900/900On, router NAT6A+8+1+3844.7 / 639.6Screenshot

Oct 21: IPv6 on, native (Leg D top-up)

The Flint's IPv6 switched to Native, so the PC gets ISP-assigned IPv6 the way it did on the Nest. SQM off vs fq_codel 900/900.

RunTimeWhat changedIPv6GradeIdle+Down+UpMbps ↓/↑Result
D712:32Stock Flint, SQM offOn, native (ISP-assigned)C+15+72878.4 / 929.9Screenshot
D812:37SQM on, fq_codel 900/900On, native (ISP-assigned)A++0+1846.6 / 778.7Screenshot
D912:41Stock Flint, SQM off
Mostly IPv6: one Cloudflare IPv4 connection showed up during the upload.
On, native (ISP-assigned)B+24+52881.9 / 926.7Screenshot
D1012:45SQM on, fq_codel 900/900On, native (ISP-assigned)A++2+3863.4 / 735.9Screenshot

Oct 20-21: the phone loads the line (Leg F)

The PC sits idle with the probe running while the phone on the Flint's 6 GHz Wi-Fi runs Waveform. SQM off vs cake 900/900. The phone's results are Brent's read-outs (its incognito tab blocks screenshots).

RunTimeWhat changedIPv6GradeIdle+Down+UpMbps ↓/↑Result
F1 redo15:18Stock Flint, SQM offOffA13+19+71105.4 / 178.2Read-out
F2 redo15:24SQM on, cake 900/900
Invalid. PC not idle in the 30 s baseline (3 samples over 5 Mbps, peak 338.6): short upload bursts from another app on the PC.
OffA15+27+10828.2 / 348.9Read-out
F2 redo 215:38SQM on, cake 900/900OffA13+8+4833 / 393Read-out
F3 redo15:44Stock Flint, SQM offOffA15+8+21105.1 / 376.9Read-out
F415:53SQM on, cake 900/900OffA15+10+4750.7 / 337Read-out
F509:00Stock Flint, SQM offOffA14+12+51122.4 / 468.2Read-out
F609:06SQM on, cake 900/900OffA12+6+3846.4 / 447.3Read-out

Oct 20: Leg F, phone on the Nest (off-plan)

The phone had auto-joined the Nest's Wi-Fi, so these three don't count toward Leg F. Kept in the record.

RunTimeWhat changedIPv6GradeIdle+Down+UpMbps ↓/↑Result
F1 Nest14:46Stock Flint, SQM offOffD20+51+214388.7 / 301.2Read-out
F2 Nest14:57SQM on, cake 900/900OffD18+58+203401.8 / 301.9Read-out
F3 Nest15:05Stock Flint, SQM off
Invalid. PC not idle (one sample at 467.3 Mbps, source unknown).
OffC16+27+155504 / 359.3Read-out

Oct 21: a phone on the Nest's Wi-Fi (Leg E)

The phone on the Nest's Wi-Fi (behind the Flint), PC idle, SQM off vs fq_codel 900/900. Graded by Waveform's upload delay; no probe.

RunTimeWhat changedIPv6GradeIdle+Down+UpMbps ↓/↑Result
E113:06Stock Flint, SQM offOffC16+31+161449 / 360.1Screenshot
E213:10SQM on, fq_codel 900/900OffD13+26+210487.6 / 306.2Screenshot
E313:15Stock Flint, SQM offOffC14+31+181480.3 / 355.9Screenshot
E413:18SQM on, fq_codel 900/900OffC16+28+177487.9 / 377.9Screenshot

Probe run windows

Each run's time window in its probe file, so anyone can rerun analyze_v2.py and get the same numbers.

RunFileStartEnd
Before-12026-10-15-nest-baseline-probe-runs-1-3.csv13:29:0913:31:40
Before-22026-10-15-nest-baseline-probe-runs-1-3.csv13:31:4113:34:50
Before-32026-10-15-nest-baseline-probe-runs-1-3.csv13:34:5113:36:55
N12026-10-20-leg-0-nest-control-probe.csv12:58:0013:00:29
N22026-10-20-leg-0-nest-control-probe.csv13:04:1613:05:50
Shaping check2026-10-20-leg-a-flint-probe.csv13:48:0013:50:08
A12026-10-20-leg-a-flint-probe.csv14:17:0014:18:28
A22026-10-20-leg-a-flint-probe.csv14:21:0014:22:48
A32026-10-20-leg-a-flint-probe.csv14:26:0014:27:53
A42026-10-20-leg-a-flint-probe.csv14:30:0014:31:48
A52026-10-20-leg-a-flint-probe.csv14:36:0014:37:23
A62026-10-20-leg-a-flint-probe.csv14:41:0014:42:35
B1 redo2026-10-21-leg-b-flint-probe.csv09:55:0009:57:13
B22026-10-21-leg-b-flint-probe.csv10:00:0010:02:48
B32026-10-21-leg-b-flint-probe.csv10:06:0010:14:15
B42026-10-21-leg-b-flint-probe.csv10:14:3010:19:06
B52026-10-21-leg-b-flint-probe.csv10:21:0010:23:09
B62026-10-21-leg-b-flint-probe.csv10:25:0010:27:55
C22026-10-21-leg-c-flint-probe.csv10:38:0010:41:10
C32026-10-21-leg-c-flint-probe.csv10:44:0010:47:52
C42026-10-21-leg-c-flint-probe.csv10:49:0011:17:03
C52026-10-21-leg-c-flint-probe.csv11:19:0011:21:07
C62026-10-21-leg-c-flint-probe.csv11:22:0011:24:06
D12026-10-21-leg-d-flint-probe.csv11:36:0011:38:26
D22026-10-21-leg-d-flint-probe.csv11:42:0011:43:49
D32026-10-21-leg-d-flint-probe.csv11:50:0011:52:04
D42026-10-21-leg-d-flint-probe.csv11:56:0011:58:37
D52026-10-21-leg-d-flint-probe.csv12:02:0012:04:13
D5 redo2026-10-21-leg-d-flint-probe.csv12:06:0012:07:45
D62026-10-21-leg-d-flint-probe.csv12:11:0012:13:17
D72026-10-21-leg-d-native-flint-probe.csv12:32:0012:34:30
D82026-10-21-leg-d-native-flint-probe.csv12:37:0012:39:13
D92026-10-21-leg-d-native-flint-probe.csv12:41:0012:42:45
D102026-10-21-leg-d-native-flint-probe.csv12:45:0012:47:30

Method

Setup

Internet
Google Fiber, 1 Gig plan
Before
Google Nest Wifi Pro at the Fiber Jack (the Oct 15 baseline, and Leg 0 on Oct 20). Its software wasn't re-read in October; it updates itself (3.78.518349 when last read, Sep 29).
Router
GL.iNet Flint 3 (GL-BE9300). It shipped on firmware 4.8.4, which had no SQM in its admin panel, and was upgraded to GL's 4.10.1 release on Oct 20 before any Flint run (read 1:27 PM). Its admin panel still read v4.10.1 on Oct 26, so every Flint run used 4.10.1.
Windows
Windows 11 Home 25H2, build 26200.9711, for every run. The update that brought it finished installing at the Oct 13 restart, and nothing else installed through Oct 21 (Windows' own update log). It read 26200.9711 on Oct 16, 20 and 25.
Browser
Chrome 155 on Oct 15 (155.0.8059.41 installed Oct 13 and 155.0.8059.80 read Oct 16, so the exact patch isn't known), and 155.0.8059.85 read the morning of Oct 20. Not re-read on Oct 21: by Oct 27 Chrome had updated itself to 156.0.8078.48, and no record dates that update, so the Oct 21 PC runs (Legs B, C and D) used Chrome 155 or 156.
Connection
PC wired to the router, 1 Gbps link (Realtek PCIe GbE, energy saving off), checked before every PC leg after run B1 fell to 10 Mbps (B1 is marked invalid and was redone). The Flint's WAN port linked to the Fiber Jack at 2.5 Gbps.
Phone (Legs E and F)
Brent's Pixel on 6 GHz Wi-Fi: the Nest's in Leg E, the Flint's in Leg F. Its grades are Waveform's own screenshots (Leg E) or Brent's read-outs (Leg F).

What I didn't test

Raw data

The files every number on this page is built from. Check my work. Each file opens as plain text; save it from your browser to keep a copy.

Probe samples, the Nest before the Flint (Oct 15)time, UDP DNS round trip to 1.1.1.1 (ms, -1 = timeout), ICMP ping (ms, -1 = lost), network card upload and download Mbps. About 4.5 samples per second.
Probe samples, Leg 0: the Nest, the morning of Oct 20 (N1, N2)Same columns as above, for the whole leg. Each run's window is in the probe table on this page.
Probe samples, the shaping check and Leg A (Oct 20)Same columns, for the whole leg.
Probe samples, Leg B: the speed limits (Oct 21)Same columns, for the whole leg.
Probe samples, Leg C: cake vs fq_codel (Oct 21)Same columns, for the whole leg.
Probe samples, Leg D: IPv6 on, NAT6 (Oct 21)Same columns, for the whole leg. With IPv6 on, the UDP probe went to Cloudflare's IPv6 DNS address.
Probe samples, Leg D top-up: IPv6 on, native (Oct 21)Same columns, for the whole leg.
Probe samples, Leg F on Oct 20 (the idle PC while the phone ran Waveform)Same columns. Read with analyze_window.py and the marker file below.
Probe samples, Leg F on Oct 21 (F5, F6)Same columns. Read with analyze_window.py and the Oct 21 marker file.
Leg F markers, Oct 20, the off-plan runs (phone on the Nest's Wi-Fi)time, run, start or end, pressed by hand as the phone's Waveform test started and finished. Marker F1 to F3 here are the run table's F1 Nest to F3 Nest.
Leg F markers, Oct 20 (phone on the Flint's Wi-Fi)Same columns. The marker console numbered marks in order, so its names differ from the run table's: marker F1 = F1 redo, F2 = F2 redo (invalid), F3 = void (a console glitch logged a start and end one second apart, 15:36:05 to 15:36:06, with no test behind it), F4 = F2 redo 2, F5 = F3 redo, F6 = F4.
Leg F markers, Oct 21 (F5, F6)Same columns, from a fresh marker console: marker F1 = F5, F2 = F6.
Router ping, Leg 0 (the Nest)time, target, round trip to the router in ms (-1 = lost), about 5 times a second. Published copy: every target value reads "router" in place of the router's private address; everything else is as recorded.
Router ping, the shaping check and Leg ASame columns. Published copy: every target value reads "router" in place of the router's private address; everything else is as recorded.
Router ping, Leg BSame columns. Published copy: every target value reads "router" in place of the router's private address; everything else is as recorded.
Router ping, Leg CSame columns. Published copy: every target value reads "router" in place of the router's private address; everything else is as recorded.
Router ping, Leg D (NAT6)Same columns. Published copy: every target value reads "router" in place of the router's private address; everything else is as recorded.
Router ping, Leg D top-up (native)Same columns. Published copy: every target value reads "router" in place of the router's private address; everything else is as recorded.
Router ping, Leg F on Oct 20Same columns. Published copy: every target value reads "router" in place of the router's private address; everything else is as recorded.
Router ping, Leg F on Oct 21Same columns. Published copy: every target value reads "router" in place of the router's private address; everything else is as recorded.
Chrome's connections, Leg D, first logger (D3)time, Chrome's open IPv4 and IPv6 connections, and the IPv6 addresses they went to, once a second. This first version logged only the IPv6 remotes.
Chrome's connections, Leg D (D4 to D6)time, Chrome's open IPv4 and IPv6 connections, once a second: how the IPv6 runs are proven. Published copy: the remotes column (every address Chrome was connected to, including the router's private one) is left out; everything else is as recorded.
Chrome's connections, Leg D top-up (D7 to D10)Same columns. Published copy: the remotes column (every address Chrome was connected to, including the router's private one) is left out; everything else is as recorded.
probe.ps1The probe from video #1, unchanged: times a small UDP DNS query and a ping to Cloudflare about 4.5 times a second, with the network card's traffic. Read-only.
routerping.ps1Pings the local router about 5 times a second alongside the probe, to split local delay from internet delay. Read-only.
chromefam.ps1Logs Chrome's open connections once a second as IPv4 or IPv6, from the PC's own connection table. Sends no traffic.
markers.ps1The Leg F marker console: press Enter as the phone's test starts and as its result shows. Doesn't touch the network.
analyze_v2.pyTurns a probe file (and optionally a router-ping file) into each run's idle baseline, added delay per phase, worst packet and packets over +100 ms: python analyze_v2.py <start> <end> <probe.csv> [routerping.csv].
analyze_window.pyThe Leg F analyzer: the idle PC's added delay in the 45 s after each start mark, against the 30 s before it: python analyze_window.py <probe.csv> <markers.csv> [routerping.csv].