EmergencyRadio.org
Beyond the Static - the EmergencyRadio.org blogRSS
decoding weather gadgets

Decoding the ghost weather network at 929.6625 MHz

The Ambient Information Network, the commercial weather broadcast that fed the 2000s desk-gadget forecasters, is still transmitting in 2026. Monitoring hobbyists documented the record framing and the network behind it in 2020, and asked there how the numbers were encoded. As far as we can tell nobody answered. That is what this page works out.

What it is

The Ambient Information Network is a one-way weather datacast: a commercial broadcast of city forecasts, sent in the clear, addressed to consumer appliances that sold at least a million units. It rides a paging network, the same kind that fed 1990s pagers: a set of GPS-synchronized transmitters all sending the same thing on the same frequency, cheap receivers listening for their own number, and no way for any of them to answer back. The transmitters you hear are local, but the content is national, which is why an indoor antenna in one state pulls in cities from six others. It is FLEX, at 6400 baud. It still runs around the clock in 2026, carrying about 75 cities on a typical day.

Each city's message holds twelve printable characters: the first two are the current temperature, the remaining ten a five-day forecast, one pair per day, high then low. A short header wraps it, carrying the day of the week on the city's own clock, and a run of flag characters carrying the weather icons.

A radio waterfall display four minutes tall, spanning 929.59 to 929.69 MHz, with time running downward. A channel at 929.6125 MHz shows a wide stack of bright bursts arriving almost without pause. A second channel at 929.6625 MHz, labeled the weather datacast, shows short isolated bursts separated by long dark gaps. A thin unchanging line at the tuner center is labeled a receiver artifact rather than a signal. Below the waterfall, a readout headed What Came Out Of It lists five decoded payloads: Traverse City MI 24.5 C, Kalamazoo MI 21.6 C, Burlington IA 27.8 C, Bend OR 24.5 C, and Tillamook OR 21.6 C.
Four minutes out of a twelve-minute recording. The weather datacast sends a short burst and then falls quiet for a minute or more, while the commercial paging channel beside it runs almost without pause. Both are FLEX; only one carries weather. The cities below were decoded from the full recording.

None of this needs unusual equipment. The recording above was made with a USB software-defined radio dongle and the little telescoping dipole that comes bundled with it, opened to about six inches tip to tip and sitting indoors, with free software doing the decoding. If you want to listen for yourself, our guide to the $40 dongle covers which one to get and how to set it up.

The network

AIN was the delivery system for Ambient Devices' weather line: the 5-Day Weather Forecaster and its Brookstone- and Bushnell-branded siblings, which the company claimed had sold over a million units by 2012. The devices were radio receivers with a factory-assigned address, displaying whatever the broadcast last sent them. Forecast data came from a single upstream provider (AccuWeather, printed on most faceplates).

From Ambient's own site: "the nationwide wireless Ambient Information Network" (2004), the flagship Forecaster at $99.99 (2005), and the promise that devices "require no setup—they automatically display the forecast for 150 cities across the United States" (2007). Citations at the bottom.

Monitors on RadioReference watched it go dark in February 2020, one of them reporting San Antonio silent before midnight on the 13th, with Portland, Boston and parts of Indiana going the same way around then. Whatever happened, something is still transmitting in 2026, around the clock, and the identifiers it addresses suggest it is not the old retail broadcast. The company's site is still standing, though its customer login stopped answering long ago, and we could not establish who is paying a paging carrier to keep this going. It is a bit of a ghost in the machine.

Who the broadcast addresses

The addresses are FLEX capcodes, leased from the paging carrier. Two things in the traffic are worth noting about them.

From 150 cities to 60

Ambient's 2007 site advertised 150 default cities; the list it actually published held 148. Crossed against what is heard in 2026:

The broadcast is unchanged in character: open, unaddressed to any person, and receivable by anyone in range.

The patent sheds some light

Ambient patented the system. US application 2007/0035661, "Methods and apparatus for displaying transmitted data", describes an earlier forecaster whose screen drew temperature as a column of dots rather than numerals, and sets out how a forecast was encoded.

Patent line drawing of a weather forecaster display. A row of five weather icons runs across the top, each above a day-of-week letter. A Fahrenheit scale from 0 to 110 runs down the left side, with stacked square dots under each day marking that day's temperature range. The city name Cambridge MA appears along the bottom next to a small transmitter symbol.
Figure 3 of Ambient's patent: the earlier display, with five icons, five day letters, and temperature drawn as dots against a scale.

Its budget for one location is about 25 bytes: two for the temperature scale, three for five weather icons, one for the day-of-week letters, six for the temperature dots, and thirteen for a text label. That is the same system one generation earlier, running a different format: the 2026 signal carries numerals rather than dots and fits a city into twelve characters.

Four things in it line up with what the signal shows now. Day-of-week is a real transmitted field rather than an artifact of our reading. Weather icons are their own field of sixteen states at four bits each, which is the right shape for the flag run described below. Devices are addressed by a unique identifier obtained from the paging operator. And several cities travel in one packet.

One line settles a question our decode could not. The patent notes that "smaller micropackets of a single byte can be used to update only the current temperature", separately from the forecast. That explains why the current temperature sits in its own character range and needs its own model: it is a different kind of update, not part of the forecast block.

The payload format

Each city's message carries a 12-character payload of printable ASCII, structured as six two-character pairs.

The trick to reading it is that the alphabet is the thermometer. Each character stands one step warmer than the one before it, and the step is two degrees Fahrenheit, so b is 2 °F above a and a temperature arrives written as a letter.

Pair 0 is the current temperature, written as a two-digit number. The first character is a coarse step of 3 °F. The second is a fine digit worth 0, 1 or 2 °F, which is why that position only ever holds @, A or B: it is counting in base three, and @ is zero. Together they give whole degrees Fahrenheit:

current °F = 3 × first character − 196 + (second character − `@`)

Checked against 1,089 National Weather Service observations across 36 cities, that lands 1.9 °C from the reported temperature on average, with no systematic bias either way. What remains is mostly the distance between a city and the weather station we compared it to, and it does not shrink when the readings are matched more tightly in time.

Pairs 1-5 are a five-day forecast: one day per pair, high then low. The evidence:

One verbatim record

An example. The 12-character payload as transmitted:

ZBkbicecfbfb

Split into its six pairs:

Pair Chars Encodes Decoded
0 ZB Current temperature 24.4 °C / 76 °F
1 kb Day 1 high / low 30 / 18 °C (85 / 64 °F)
2 ic Day 2 high / low 27 / 19 °C (81 / 66 °F)
3 ec Day 3 high / low 23 / 19 °C (73 / 66 °F)
4 fb Day 4 high / low 24 / 18 °C (75 / 64 °F)
5 fb Day 5 high / low 24 / 18 °C (75 / 64 °F)

The scale is in Fahrenheit, and one step along the alphabet is two degrees of it. Both halves of a pair use that same step and differ only in where they start:

high °F = 2 × the character's code point − 129
low  °F = 2 × the character's code point − 132

So a reads 65 °F as a high and 62 °F as a low, and every letter after it adds two. Whole degrees Fahrenheit at 2 °F resolution is the natural choice for something sold in American shops, and it explains why the values never carry a decimal place: there is nothing finer to carry.

Checked against the National Weather Service's published forecasts, which anyone can repeat, highs and lows both land about 2 °C away. That figure is a property of the yardstick more than of the decode, which the next paragraph gets to.

A caveat about the yardstick. The NWS is an independent forecaster, not the source this broadcast carries, so a disagreement between the two can mean our decode is off or simply that two forecasters differ on the same day. The error figures above are therefore an upper bound on decode error. A tighter number would need the provider's own feed, which you would have to take on trust. The bound is checkable.

A few records

Tacoma, Green Bay, Niagara Falls, Las Vegas, Alexandria, Brownsville.

Each row takes a single forecast day out of that city's most recent clean reception and compares it against the National Weather Service forecast for that same date. The rows use forecast days one to three, whichever the archive still covered. The cities were not heard at the same moment and do not need to be, since every row is an independent check.

city forecast characters day decoded high / low °C NWS high / low °C diff
Tacoma WA i`g]h]h\j^ 1 27 / 16 25 / 14 +2 / +2
Green Bay WI memcj`jajc 3 28 / 16 29 / 17 -1 / -1
Niagara Falls NY icjcjdhbga 3 28 / 20 28 / 19 +0 / +1
Las Vegas NV umumulvmvm 1 41 / 30 43 / 29 -2 / +1
Alexandria LA ogpgpgqgng 3 35 / 23 37 / 25 -2 / -2
Brownsville TX piqjpipiqj 2 36 / 27 36 / 27 +0 / +0

Mean absolute difference: 1.2 °C on the highs and 1.2 °C on the lows, against real forecasts running from 14 to 43 °C. Highs and lows are checked separately here. The cities run from the Pacific Northwest coast to the desert to the subtropical border, and all of them land within a degree or two at both ends of the day.

Most of these cities transmit their names in clear text; Las Vegas is identified by its 3-letter code, which the agreement here corroborates, since a payload matched to the wrong city misses by a lot.

The ten characters shown are the forecast half of the payload, which both of the network's message framings carry identically. Paste any of them into the decoder and read the row for the day this table quotes.

Decode a record yourself

Try these, each exercises something different:

Over the air, characters sometimes arrive damaged. Nothing in our capture falls below the character [, so characters below it are thrown out before fitting. A single bad character left in is enough to pull the whole scale off, which makes the filter the difference between a right answer and a confident wrong one.

That filter has a season in it, and it is worth being plain about. [ sits at roughly 51 °F, and every record behind it was received in July, in cities that never got that cold. So "too cold to be real" and "damaged" are currently the same test, and in January they will stop being the same thing: a genuine overnight low in Green Bay lands below the floor and gets discarded as damage. The filter is right about the records we have and cannot be trusted outside the weather they were captured in. A winter capture settles it, and until then a cold reading here should be read as unknown rather than as corruption.

The header carries a local weekday

Three of the five header characters are fixed framing and one identifies the city. The fifth is a date, and it runs on each city's own clock. Group the records by UTC date and the field looks noisy; group them by local date and it snaps into place. The changeover settles it: the value advanced at 00:15 local in Central, then 00:15 in Mountain, then 00:10 in Pacific. One zone per hour, moving west.

It is a weekday rather than a calendar date, advancing one step a day and wrapping around at the end of the week. This recording spans three of them: & (0x26) on Saturday, ' (0x27) on Sunday, and ! (0x21) on Monday.

The flag run holds the icons

Ambient's umbrella patent says the forecaster's screen used "icons to represent the likelihood of precipitation". That is a testable claim, because the National Weather Service publishes a chance of precipitation for every city and day.

Numbering the flag characters from ! upward, the same way the weekday field counts, and matching each position against the published chance of precipitation for that day:

code symbol typical chance of precipitation
0 ! 6%
1 " 11%
2 # 24%
3 $ 39%

The codes climb with the chance of rain. Code 0 is the dry end, and it is far and away the most common character in a July capture.

Four of sixteen states, and only the dry end of the range. A July capture cannot produce the wetter or wintry pictures at all, so the table stops where the evidence stops and grows as the seasons turn.

What is left

Nothing about the structure is a mystery now. What is missing is coverage: twelve more icon states that only other seasons will produce, the weekday codes for days this capture did not span, and 53 city labels with no public list to resolve them against. Those fill in with time rather than insight.

We'll update the page as we learn more.

If this is your kind of puzzle, write to contact@emergencyradio.org. Same address if you know of an earlier decode of this payload, and we'll link it here.

Want to listen for yourself? Work like this runs on a software-defined radio, the class of ~$40 USB receiver that turns any computer into a wideband set. Our software-defined radio guide covers which one to get and what it will hear.

Sources

Scope. This is a one-way commercial broadcast sent in the clear, with no encryption, no scrambling and no privacy modulation, addressed to appliances rather than to persons, and received the way any over-the-air broadcast is received. The only content examined, retained, or written about is the weather datacast itself. Findings describe the data format; individual forecast values are facts and not owned by anyone, but the provider's compiled feed is their product. The handful of records shown above are a fixed historical snapshot published for verification, never refreshed, and no feed is republished in bulk here. Find an error, tell us, and it gets corrected prominently.