LinkIt 7697 as wifi adapter on Linux. Curl timing and results

July 17, 2026

LinkIt 7697 linkit0 iPerf3 and curl timing results

Test time: 2026-07-17 10:59 CST (UTC+08:00)

Test setup

  • Interface: linkit0
  • Client IPv4: 192.168.31.236/24
  • Gateway: 192.168.31.1
  • Client binding: both --bind-dev linkit0 and -B 192.168.31.236
  • Candidate source: Public iPerf3 Server List
  • Test Platform: LinkIt 7697(SeedStudio v1.0) devboard, Ubuntu 24.04 LTS

The client was explicitly bound to linkit0; these probes did not use the laptop's wlp1s0 source address.

Successful iPerf3 throughput reference: Tokyo

Taiwan public iPerf3 endpoints were unavailable during this session, so the following completed throughput numbers are from the working Tokyo endpoint 89.187.160.1:5201. These runs were also bound to linkit0.

UDP upload, host to WiFi:

Requested rateReceiver bitrateLossJitterNotes
20 Kbit/s19.9 Kbit/s0/984.188 msStable
50 Kbit/s49.4 Kbit/s0/2440.163 msStable
100 Kbit/s99.1 Kbit/s0/4890.221 msStable
250 Kbit/s, -l512212 Kbit/s0/61111.794 msCompleted, drained for 11.79 s
500 Kbit/s253 Kbit/s0/12205.835 msCompleted, drained for 19.72 s

UDP reverse, WiFi to host:

Requested rateReceiver bitrateLossJitterNotes
20 Kbit/s20.3 Kbit/s0/990.625 msStable
50 Kbit/s9.26 Kbit/s1/180N/AStalled before completing normally
100 Kbit/sN/AN/AN/ANo effective test result

TCP:

DirectionCommand shapeRemote receiver resultNotes
Uploaddefault, 5 s88.1 Kbit/sClient sent a burst of 419 Kbits, 1 retransmit, drained for 8.82 s
Upload-t 15 -w4K -M25648.8 Kbit/sClient sender accounting was 0 because ACKs arrived late
Reverse5 to 10 s0 app goodputRemote sent about 39 to 43 KiB, but the client did not receive usable TCP payload in-window

Interpretation: the current LinkIt 7697 port can move useful traffic, but the stop-and-wait UART framing and the 4-frame firmware queue dominate throughput. The sustainable direction today is UDP upload at roughly 200 to 250 Kbit/s. Reverse UDP is reliable around 20 Kbit/s. TCP works for small transfers, but is very sensitive to ACK delay and reverse-path buffering.

Candidate 1: SG.GS Taipei

  • Host: tpe.speedtest.sggs.network
  • Resolved IPv4: 124.6.34.238
  • Listed location: Taipei, Taiwan

Latency through linkit0:

5 packets transmitted, 5 received, 0% packet loss rtt min/avg/max/mdev = 75.590/76.541/78.613/1.084 ms

Candidate 2: Psychz Taipei Looking Glass

  • IPv4: 103.59.110.170
  • Published location: Taipei, Taiwan

Latency through linkit0:

3 packets transmitted, 3 received, 0% packet loss rtt min/avg/max/mdev = 20.877/21.535/21.896/0.466 ms

curl HTTP/HTTPS timing via linkit0

These tests used curl --interface linkit0 -4 so the traffic was bound to the LinkIt 7697 adapter.

Clean HTTP request without following redirects:

curl --interface linkit0 -4 --max-time 60 -sS -o /dev/null \ -w '...' http://splasky.github.io

Result:

url=http://splasky.github.io/ http_code=301 remote_ip=185.199.108.153 num_redirects=0 time_namelookup=0.000867 time_connect=0.090997 time_appconnect=0.000000 time_starttransfer=0.205249 time_total=0.211548 size_download=162 speed_download=765 exitcode=0

HTTP request with -L enabled:

url=https://splasky.github.io/ http_code=301 remote_ip=185.199.110.153 num_redirects=1 time_namelookup=0.002159 time_connect=0.099434 time_appconnect=0.000000 time_starttransfer=0.451511 time_redirect=0.457958 time_total=120.296259 exitcode=28 errormsg=Connection timed out after 119839 milliseconds

This confirms that HTTP connected and received the redirect quickly. The subsequent HTTPS leg to GitHub Pages did not complete before curl's 120 second limit in this run.

Direct HTTPS to https://splasky.github.io:

url=https://splasky.github.io/ http_code=000 remote_ip= num_redirects=0 time_namelookup=0.006276 time_connect=0.000000 time_appconnect=0.000000 time_starttransfer=0.000000 time_total=180.002933 exitcode=28 errormsg=Connection timed out after 180002 milliseconds

Direct HTTPS to the page referenced by the HTML meta refresh. The latest retest allowed curl to wait for 300 seconds:

url=https://tinymind-alpha.vercel.app/splasky/blog http_code=000 remote_ip= num_redirects=0 time_namelookup=0.018073 time_connect=0.000000 time_appconnect=0.000000 time_starttransfer=0.000000 time_total=300.001973 size_download=0 speed_download=0 exitcode=28 errormsg=Connection timed out after 300001 milliseconds

Successful HTTPS baseline to a small Cloudflare-hosted endpoint:

url=https://example.com/ http_code=200 remote_ip=172.66.147.243 num_redirects=0 time_namelookup=0.181365 time_connect=0.382486 time_appconnect=5.511462 time_starttransfer=5.740928 time_total=5.757614 size_download=559 speed_download=97 exitcode=0

curl -L follows HTTP 3xx redirects with a Location header. The successful HTML body shown earlier from https://splasky.github.io contains a browser meta refresh, not an HTTP redirect, so curl does not follow that second hop automatically.

Retest after daemon default MTU 576

Test time: 2026-07-17 after rebuilding linkit7697-net with LINKIT_TAP_MTU 576.

Runtime state:

linkit0: mtu 576 IPv4: 192.168.31.236/24 Route to 1.1.1.1: via 192.168.31.1 dev linkit0 src 192.168.31.236

The rebuilt daemon created linkit0 with MTU 576 automatically, so the MTU workaround is now applied by the host daemon instead of manual ip link set.

HTTPS retest

Single-stream Google HTTPS after daemon restart:

URL: https://www.google.com HTTP: 200 remote_ip: 142.251.157.119 time_namelookup: 0.020842 s time_connect: 0.041587 s time_appconnect: 0.285460 s time_starttransfer: 0.427610 s time_total: 2.514560 s

Sequential Vercel HTTPS retest:

URL: https://tinymind-alpha.vercel.app/splasky/blog success: 3/3 failure: 0/3 attempt 1: connect 0.024645 s, TLS 0.302415 s, first byte 0.743265 s, total 2.825054 s attempt 2: connect 0.022375 s, TLS 0.305078 s, first byte 0.627691 s, total 2.161347 s attempt 3: connect 0.022306 s, TLS 0.352918 s, first byte 0.691815 s, total 2.240396 s

A parallel Google+Vercel HTTPS stress run still failed 6/6 with 20 second connection-phase timeouts. This means MTU 576 fixes single-stream HTTPS, but concurrent HTTPS streams can still overload the current WiFi-to-host RX path.

Taiwan endpoint availability

The SG.GS Taipei iPerf3 endpoint remained unavailable:

iperf3 -c tpe.speedtest.sggs.network -p 5201 result: Connection refused

This matches the previous test and is still an endpoint availability issue, not a linkit0 connectivity issue.

Tokyo iPerf3 retest

Server: 89.187.160.1:5201

UDP upload, host to WiFi:

Requested rateReceiver bitrateLossJitterComparison
100 Kbit/s98.1 Kbit/s0/1200.328 msSame as prior 99.1 Kbit/s
250 Kbit/s, -l512243 Kbit/s0/3062.702 msBetter than prior 212 Kbit/s and much shorter drain
500 Kbit/s, -l512250 Kbit/s0/6116.340 msSimilar ceiling to prior 253 Kbit/s, still drains to 10.02 s

UDP reverse, WiFi to host:

Requested rateReceiver bitrateLossJitterComparison
20 Kbit/s21.0 Kbit/s0/251.032 msSame as prior reliable 20 Kbit/s class
50 Kbit/s51.1 Kbit/s0/611.399 msMajor improvement over prior 9.26 Kbit/s stalled run

TCP:

DirectionResultComparison
Upload, 5 sremote receiver 55.7 Kbit/s, 1 retransmit, drained to 8.73 sLower than prior 88.1 Kbit/s, still affected by ACK/flush timing
Reverse, 5 sclient receiver 0 bytes, remote sender 130 KBytes at 199 Kbit/s, 146 retransmitsStill not usable for reverse TCP app data

Retest conclusion

The MTU 576 host-daemon default materially changes the result:

  • Single-stream HTTPS now works reliably enough for Google and the Vercel blog.
  • UDP upload at 250 Kbit/s improved from 212 Kbit/s to 243 Kbit/s.
  • Reverse UDP at 50 Kbit/s improved from a stalled 9.26 Kbit/s run to a clean 51.1 Kbit/s with 0% loss.
  • The practical UDP upload ceiling is still about 250 Kbit/s.
  • Reverse TCP is still broken for useful application payload.
  • Concurrent HTTPS still overloads the current RX path, so MTU 576 is a workaround, not a complete transport fix.

Many thanks of pico-usb-wifi project.

Doing next

  • Next step I will test on milkv-duo256m and deliminate more errors.
  • Lots of bugs should be fixed.
  • SDIO
    LinkIt 7697 as wifi adapter on Linux. Curl timing and results