Skip to content

Engineering

The numbers,
and their limits.

This page is for the reader who wants to know whether any of this is real. Every figure below was measured on the running system. Where something has not been proven, it says so in the same typeface as everything else — the section near the bottom is not an appendix, it is half the point.

Two modem paths

There is no hardware modem bank. Both paths are software modems answering audio that Asterisk hands over a Unix socket, which is why sixteen lines fit on one small virtual machine instead of a rack.

Measured performance of both modem paths
Path Modulation Line rate Goodput Train
modemd — spandsp V.22bis 2,400 bps 275 B/s 1.6 s
slmbridge — slmodemd V.32bis 14,400 bps 1,444 B/s

Goodput is application bytes per second on incompressible data. Neither figure is rounded up.

Why 1,444 and not 1,800

1,444 B/s is 11,552 bps of a 14,400 bps carrier — 80%. The missing fifth is V.42 LAPM framing, acknowledgements and the occasional retrain. 80% is the correct number for a reliable-mode link, and a service quoting 1,800 B/s off a 14.4k modem would be quoting the carrier rate and calling it throughput.

The 9,979 B/s figure is not throughput

The same twenty kilobytes, as zeroes, moves at 9,979 B/s — 6.9 times faster. That is evidence that V.42bis compression is live and working, and it is the reason HTML does better than the incompressible figure suggests. It is not a speed this service can deliver on real content and it is not offered as one.

V.34 does not work; V.32bis does

V.34 failed every attempt, four out of four, even in a clean loopback with no impairment at all. Rather than ship a configuration that negotiates down unpredictably, both ends are capped at AT+MS=132,1,1200,14400. At that cap the answer side agreed 14,400 bps on six attempts out of six.

The codec lock

Modem audio is not speech, and everything a PBX normally does to audio destroys it. Asterisk 22.10.1 is built from source here with app_audiosocket and res_audiosocket enabled and func_speex and chan_websocket compiled out.

The codec path is pinned to (ulaw) with transcode:prevent, and no DSP is ever allocated on the channel. A single transcode, or one pass of echo cancellation or noise suppression, and the carrier will not train at all.

A real call, measured

A telephone call placed from the public network to +1 610 922 1996 reached Asterisk, was answered, and produced 13.2 seconds of clean recorded audio:

661 RTP packets for 660 frames

Zero loss. That is the evidence that the signalling half of this works on the real telephone network rather than on a bench.

Making the 2026 web fit

A modern news front page is 380 kilobytes. At 1,444 B/s that is four and a half minutes, and at 275 B/s it is twenty-three. The proxy is what makes the difference between a service and a demonstration.

Measured byte reduction, transparent mode, cold cache
Page Upstream Delivered Saved At 14.4k At 2400
bbc.com/news 380,079 B 5,933 B 98.4% 4.1 s was 263 s 21.6 s
en.wikipedia.org/wiki/Modem 505,622 B 24,703 B 95.1% 17.1 s was 350 s 89.8 s
news.ycombinator.com 34,863 B 16,078 B 53.9% 11.1 s 58.5 s
text.npr.org 6,095 B 2,794 B 54.2% 1.9 s 10.2 s

Hacker News reduces least, at 53.9%, because it is already almost entirely links with very little boilerplate to remove. The transformation cannot invent savings that are not there, and a table that only showed bbc.com would be selling you the best case.

The profile is keyed on your actual line

When a carrier trains, the modem daemon writes the negotiated rate to /run/litenet/sessions/<your-ip> and removes it when you hang up. The proxy reads that file to decide how hard to cut. Without it the profile would be a guess, and the wrong guess in the generous direction costs a subscriber minutes.

The output is HTML 3.2, deliberately

Scripts and stylesheets are dropped, the document is re-serialised from a parsed tree so tables cannot come out unbalanced, and images are transcoded down or replaced by numbered links. It is emitted as HTTP/1.0 with an exact Content-Length, because a 1996 client has no chunked-transfer decoder and renders the hex length lines as body text.

Budgets are pessimistic on purpose

The planning figure the proxy uses is ten bits per byte, then 80% — 192 B/s at 2,400 bps against the 275 B/s actually measured. Being pessimistic picks the leaner profile at a boundary and costs a subscriber some pictures. Being optimistic costs them twenty minutes, and they hang up.

What is not proven

A test without evidence is not a pass. These are the things this service cannot yet claim, listed because a company that publishes its own caveats is easier to believe about everything else.

Not yet demonstrated

No hardware modem has dialled in

Every speed figure on this page comes from software modems talking to each other through the audio path, with no carrier impairment at all. That is the control case, not a PSTN result. Real line noise, echo and a real V.42bis peer will move these numbers, and the honest expectation is downwards.

Not yet demonstrated

No period browser has rendered the output

The transformation is built against a researched set of Netscape 3, Mosaic and MacWeb rendering failures and is checked automatically against them on every build. But nothing has been on a real 1996 screen yet, so that is a statement about the markup, not about how it looks.

Not yet demonstrated

Authentication is local, not RADIUS

Accounts live in a PAP secrets file on the server. The authentication is real; the accounting infrastructure an ISP would normally have is not there. MS-CHAPv2 has never been tested against a client.

Not yet demonstrated

Image transcoding is unverified against a real client

It is compiled, running and producing files within its byte budget. No 1996 browser has decoded one. If a picture looks wrong to you, that is new information and worth an email.