Balón nad Německem letí ve dvanácti kilometrech výšky a vysílá s výkonem 20 mW. Přesto ho zaslechne několik desítek přijímačů a na webu si můžeš přečíst, jak je tam nahoře zima. WSPR je protokol, který z velmi slabého signálu vyždímá zprávu o padesáti bitech. Vysvětlím, jak to funguje, a rozluštíme spolu skutečnou zprávu z balónu.

Co je WSPR a k čemu je dobré
WSPR (čti „višper“) je zkratka z Weak Signal Propagation Reporter. Vymyslel ho Joe Taylor, K1JT, nositel Nobelovy ceny za fyziku a autor programů pro slabé signály (WSJT), a představil ho v roce 2008. Nejde o spojení. Stanice vysílá krátkou zprávu, která říká jen: „jsem tu, tady stojím a vysílám tak a tak silně“. Ostatní stanice ji poslouchají, a když ji rozluští, pošlou hlášení do společné databáze. Na mapě pak vidíš, kam až signál došel.
Smysl je jednoduchý. Místo hádání, jestli je pásmo otevřené, to prostě změříš. Vysíláš pár desítek minut s malým výkonem a podle toho, kdo tě slyšel, hned víš, kam šíření dnes funguje. Zprávy se vysílají ve dvouminutových cyklech, vždy od sudé minuty UTC, takže se všichni musí řídit přesným časem.


Jak se z textu stane signál
WSPR vysílá jedinou věc: 50 bitů. Do nich se vejde značka, čtyřmístný lokátor a výkon. Zbytek je zabezpečení proti šumu a to, jak se ta data nakonec vysílají. Projdi to se mnou krok za krokem na zprávě OK2ZIL JN89 23.
1. Značka se změní na číslo
Každý znak značky dostane číslo (číslice 0 až 9, písmena 10 až 35, u posledních tří znaků písmena A až Z jako 0 až 25 a mezera 26). Pak se čísla postupně spojují, jako když z číslic skládáš číslo, jen s jinými základy. Pro OK2ZIL:
n = 24 (O) n = 36·n + 20 = 884 (K) n = 10·n + 2 = 8 842 (2) n = 27·n + 25 = 238 759 (Z) n = 27·n + 8 = 6 446 501 (I) n = 27·n + 11 = 174 055 538 (L)
Značka je tedy číslo 174 055 538. Vejde se do 28 bitů.
2. Lokátor a výkon
Lokátor JN89 se podobně převede na číslo 14 719 (15 bitů). Výkon se vyjádří v dBm: 23 dBm je asi 0,2 W. Připočte se 64 a vyjde 87 (7 bitů). Výkon smí mít jen 19 hodnot: 0, 3, 7, 10, 13, 17, 20, 23, 27, 30, 33, 37, 40, 43, 47, 50, 53, 57 a 60 dBm.
Všechno se slepí do jednoho čísla: značka posunutá o 22 bitů, lokátor o 7 bitů a výkon na konci. Vznikne 730 041 841 139 671. V binárním zápisu je to přesně 50 bitů. Kdybychom měli ještě jeden bit navíc, nevešel by se nikam.
3. Ochrana proti šumu: konvoluční kodér
Za 50 bitů se přidá 31 nul a celých 81 bitů projde konvolučním kodérem. Je to jednoduchý obvod: posuvný registr, do kterého bity vcházejí jeden po druhém a vždycky si „pamatuje“ posledních pár z nich. Po každém novém bitu kodér z registru spočítá dva výstupní bity. Každý z nich vznikne tak, že se sečtou (XOR, součet bez přenosu) určité předem dané pozice registru. Z jednoho bitu na vstupu tedy vyjdou dva na výstupu.
Chytrá věc je, že výstup nezávisí jen na právě vloženém bitu, ale i na těch předchozích. Každý bit se tak „rozmaže“ do několika výstupních bitů za sebou. Malý příklad s registrem dlouhým jen 3 bity, kde první výstup sčítá všechny tři pozice a druhý první a třetí:
vstup 1 0 1 1 0 0 (poslední dvě nuly vyprázdní registr) výstup 11 10 00 01 01 11
WSPR používá stejný princip, jen s registrem dlouhým 32 bitů a dvěma pevně danými „recepty“ pro sčítání (v programech zapsané jako 0xF2D05351 a 0xE4613C47). Proto těch 31 nul na konci: právě tolik je třeba, aby se registr po posledním skutečném bitu zase vyprázdnil. Z 81 bitů tak vznikne 162.
K čemu to je? Kdyby se každý bit vyslal jednou, jeden poškozený bit by znamenal chybu ve zprávě. Takhle nese informaci o každém původním bitu celá skupina výstupních bitů a přijímač ji může poskládat i tehdy, když se část z nich v šumu ztratí. Jako kdybys každé slovo v dopise napsal rozepsané do tří různých vět: když se jedna věta ztratí, ostatní ještě pořád řeknou, co v dopise stálo.
Pak se bity promíchají (prokládání). Šum obvykle poškodí několik bitů za sebou. Po promíchání jsou poškozené bity rozházené po celé zprávě a oprava je snazší. Nakonec se ke každému bitu přidá hodnota z pevné synchronizační posloupnosti, takže z každého bitu vznikne symbol 0, 1, 2 nebo 3.


4. Čtyři tóny
Symbol 0 až 3 určuje, který ze čtyř tónů se právě vysílá. Tóny jsou od sebe vzdálené 1,4648 Hz, což je rychlost, jakou se symboly střídají (12 000 / 8 192). Jeden symbol trvá 0,6827 s, 162 symbolů dohromady 110,592 s. Všechny čtyři tóny se vejdou do čtyř a půl hertzu, celý signál zabere kolem 6 Hz. Hovor v SSB zabere 2 500 Hz, takže se na pásmu vedle sebe vejde spousta stanic.


Proč to funguje pod šumem
WSPR se dekóduje při poměru signálu k šumu asi −27 až −31 dB. Číslo je vztažené k šumu v pásmu 2 500 Hz, ne k šířce samotného signálu. Signál ale zabírá jen 6 Hz. Kdybychom ho poslouchali jen v jeho vlastní šířce, ubylo by šumu o 10·log(2500/6) = 26 dB, takže signál je tam pod šumem jen o necelých 5 dB. To je hrubý odhad a nic víc, skutečný dekodér pracuje s pravděpodobnostmi a s přesným časováním po celých 110 sekund.
Konvoluční kód dekóduje Fanův algoritmus. Můžeš si ho představit jako turistu na křižovatce stezek, který u každého rozcestí vybere cestu, jež nejlépe vypadá. Když zjistí, že se odchýlil, vrátí se na poslední rozcestí a zkusí jinou. Neprochází všechny možnosti, jen ty nadějné. Dekodér ve WSJT-X tak zvládne i signál, který by uši neslyšely.
Cena za tuto citlivost je malá rychlost: za dvě minuty se přenese 50 bitů, to je asi 0,4 bitu za sekundu. A také fakt, že WSPR nemá kontrolní součet. Když dekodér na hranici šumu něco „najde“, nikdo mu to nepotvrdí, občas proto vzniknou zprávy, které nikdo nevysílal.
Balóny: data schovaná ve zprávě
V padesáti bitech není místo pro výšku ani teplotu. Radioamatéři to vyřešili šalamounsky: telemetrie se nevysílá jako příloha, ale jako druhá, obyčejná WSPR zpráva, jejíž značka, lokátor a výkon už nejsou skutečná značka, lokátor a výkon, ale kódují data. Protokol o tom neví, dekodér ji přijme jako každou jinou. Princip vymyslel Hans Summers, G0UPL (QRP Labs), dnes ho používají tracker U4B a projekt Traquito.
Balón proto vysílá dvě zprávy za sebou, v oknech po dvou minutách:
- běžná zpráva se značkou majitele, čtyřmístným lokátorem a výkonem;
- telemetrie o dvě minuty později, na stejném kmitočtu. Značka se každou chvíli mění, protože nese měření.
První a třetí znak telemetrické značky (0, 1 nebo Q a jedna číslice) neslouží datům, jsou to číslo kanálu. Díky nim se pozná, který balón vysílá, a díky přesnému rozvrhu minut se může na jednom kmitočtu vystřídat víc balónů. Celkem je takových kanálů 600.
Rozluštíme QM9WYE
V neděli 8. 11. 2026 jsem v databázi wspr.live našel dvě zprávy balónu AI7NO:
10:40 AI7NO JO43 13 dBm běžná zpráva 10:42 QM9WYE EQ36 23 dBm telemetrie
Značka. Písmena Q a 9 jsou kanál. Zbývá M W Y E, tedy čísla 22, 22, 24 a 4. Spojí se stejně jako u značky OK2ZIL:
N1 = ((22·26 + 22)·26 + 24)·26 + 4 = 402 172 402 172 = 376 · 1068 + 604
Zbytek 604 krát 20 metrů je 12 080 m, výška balónu. Číslo 376 se rozdělí na 15 · 24 + 16, což jsou písmena P a Q. K lokátoru JO43 z první zprávy tak přibyly dva znaky a poloha balónu je JO43pq, tedy přesnější než čtvercová čtyřmístná.
Lokátor a výkon. EQ36 23 se přečte jako jedno číslo. Písmena mají základ 18, číslice 10, výkon se bere jako pořadí v seznamu 19 dovolených hodnot (23 dBm je osmý v pořadí, tedy číslo 7):
N2 = ((((4·18 + 16)·10 + 3)·10 + 6)·19 + 7 = 167 891
Teď se číslo rozebírá odspodu, vždy zbytkem po dělení:
| Krok | Dělitel | Zbytek | Význam |
|---|---|---|---|
| 167 891 | 2 | 1 | příznak: základní telemetrie |
| 83 945 | 2 | 1 | GPS platná |
| 41 972 | 42 | 14 | rychlost 14 · 2 = 28 uzlů (52 km/h) |
| 999 | 40 | 39 | napětí: 2,00 + 39 · 0,05 = 3,95 V |
| 24 | – | 24 | teplota 24 − 50 = −26 °C |
Balón tedy letěl ve výšce 12 080 metrů, venku bylo −26 °C, letěl rychlostí 52 km/h nad Šlesvickem-Holštýnskem a solární článek dával 3,95 V. Všechno z jedné zprávy, která vypadá jako hlášení neexistující stanice. Zkus to sám v poli níže.


Rozlušti si zprávu balónu
Vlož zprávu telemetrie z databáze wspr.live nebo z WSPRnetu, jednu zprávu na řádek, ve tvaru značka lokátor výkon. Příklad je předvyplněný (balón AI7NO z článku).
- Běžná zpráva balónu (nepovinná), např.
AI7NO JO43 13. Vysílá se o dvě minuty před telemetrií a díky ní vyjde poloha na šest znaků. - Telemetrie (povinná): zpráva se „značkou“ jako
QM9WYE(první znak 0, 1 nebo Q).
Pořadí řádků je jedno, program je pozná podle tvaru značky.
Platí jen pro základní telemetrii (U4B / Traquito Basic Telemetry). Jiné formáty se tu nerozluští. Výpočet probíhá ve tvém prohlížeči, nic se neodesílá ani neukládá.
Že rozluštění sedí, jsem si ověřil dvěma nezávislými cestami. Rychlost 28 uzlů z telemetrie dává asi 52 km/h. Když stejné zprávy porovnám podle polohy, balón se mezi dvěma zprávami posunul o 9,3 km za 10 minut, tedy 55 km/h. Obě čísla vyšla ze zcela různých veličin a shodují se. Celý dopolední let od 9:30 do 12:20 UTC mám rozluštěný v 16 dvojicích zpráv: výška se držela mezi 12 060 a 12 120 m, teplota mezi −18 a −38 °C a balón urazil cestu od jihozápadu Hamburku asi 140 km na sever.
Stejně jsem rozluštil dvě „chybná dekódování“, která jsem si na stránce WSPR zapsal 22. října: 157VCE a 1H7GCQ. Byly to dvě telemetrie kanadského balónu VE3VRO, který letěl ve výšce 13,4 km nad Lvím zálivem rychlostí 62 uzlů.
Jak se vejde šest set balónů do jednoho kmitočtu
Na 20 m se balónové telemetrie vysílají v okolí 14,097 MHz. Deset minut se dělí na pět dvouminutových oken (0., 2., 4., 6. a 8. minuta) a ve čtyřech kmitočtových polohách uvnitř úzkého pásma. Číslice a písmeno (0, 1 nebo Q a číslo) dávají třicet kombinací. Když je vynásobíš pěti minutami a čtyřmi kmitočty, vyjde 600 kanálů. Balón s kanálem 248 tedy vždycky začíná ve stejné minutě desítky a ve stejném kmitočtovém okénku, ostatní ho nerozhodí.
Párování nejde vždycky hladce. Přijímač, který slyšel první zprávu, nemusí slyšet druhou. Traquito spojuje dvě zprávy podle toho, že je slyšel stejný přijímač a že se hlášené kmitočty liší nejvýš o 5 Hz. Když na kanálu letí dva balóny najednou, toleranci zpřísňuje, a když ani to nepomůže, přiřazení odmítne. QRP Labs jde dál: využívá hlášení většího počtu přijímačů, aby odhadl jejich chyby kmitočtu.
Plusy a mínusy
| Způsob | Kmitočet | Co přenáší | Poznámky |
|---|---|---|---|
| WSPR (U4B, Traquito) | krátké vlny, 20 m | 50 bitů za dvě minuty | výkon kolem 27 mW (U4B); příjem dělá celosvětová síť hlídačů; zpráva dorazí s odstupem |
| APRS | 144,800 MHz (VKV) | 1200 Bd, AX.25 | dosah je omezen výhledem na přijímač; zprávy chodí rychle |
| Horus Binary | obvykle 434 MHz (UHF) | 4FSK, 100 Bd v příkladu projektu | potřebuje blízké přijímače, ale přenáší víc dat |
| Iridium (RockBLOCK 9603) | satelit | zprávy až 340 bajtů | fungují všude, ale za poplatek a s větším příkonem; modul váží asi 45 g |
| SPOT (Globalstar) | satelit | polohové zprávy | výrobce uvádí použití do 6 500 m n. m., tedy ne pro stratosféru; předplatné |
Co se WSPR povedlo. Vysílač s výkonem desítek miliwattů a solárním článkem vydrží ve vzduchu dny i týdny. Přijímat ho může kdokoli se starým počítačem a RTL-SDR, takže se nemusíš starat o vlastní přijímací stanice. Data jsou veřejná, a když chceš vědět, kde balón právě je, stačí otevřít mapu.
Co mu chybí. Nová zpráva přijde jen jednou za deset minut, poloha a telemetrie jsou o dvě minuty rozdělené a víc než pár čísel se do nich nevejde. Dekodér občas přečte zprávu, která nikdy nebyla vyslána. V místě, kde balón nikdo neposlouchá, ho nevidíš. Pro řízení letu nebo hledání přistání se nehodí, na to se používá APRS nebo Horus. Nejsilnější je tam, kde potřebuješ dlouhou dobu sledovat letící balón po celém světě za pár korun.
Na co se WSPR používá jinak
Databáze spotů je zajímavá i pro vědce. Skupina HamSCI (Ham Radio Science Citizen Investigation) zkoumá s pomocí radioamatérských přijímačů ionosféru. Ve Geophysical Research Letters vyšla v roce 2022 práce o pozorování velkých putujících poruch ionosféry z dat několika automatických amatérských sítí, mezi nimi WSPRnet. K zatmění Slunce v roce 2017 existuje studie Frissella a kolegů, vyhodnocující chování šíření radioamatérských signálů. Jde o širší sady amatérských dat, ne pouze o WSPR. První výsledky z zatmění v dubnu 2024 zveřejnila skupina HamSCI jako rychlý přehled.
Líbí se mi na tom, že nikdo nestavěl drahou aparaturu. Stovky lidí si doma zapnuly přijímač a ten měří za ně.
Jak se do toho dát
- Poslouchat. Stačí počítač, přijímač (i levný RTL-SDR) a program WSJT-X. Zapnout, nastavit přesný čas a nechat běžet.
- Vysílat. Malý vysílač s Si5351 a Raspberry Pi Pico stojí pár stovek korun. Pozor na dolní propust a přesnost kmitočtu.
- Dívat se. Všechny spoty jsou ve veřejné databázi wspr.live ↗. Moje stránka WSPR OK2ZIL z ní bere data pro mou stanici a rozluští balóny, které slyším.
Zdroje
Protokol WSPR
Quest for Optimum Coding and Modulation Schemes for EME ↗
J. Taylor, 2008. Původní popis kódování a modulace WSPR.
wspr-tools, encode.py ↗
R. Östling. Jak se značka, lokátor a výkon zabalí do 50 bitů.
Telemetrie balónů
VE3KCL balloon S-4 ↗
H. Summers. Původní telemetrický protokol pro pico balóny.
Fingerprinting ↗
Jak se párují dvě zprávy a co dělat při kolizi kanálů (16. 11. 2023).
Data
Věda
First Observations of Large Scale Traveling Ionospheric Disturbances Using Automated Amateur Radio Receiving Networks ↗
Geophysical Research Letters 49 (2022).
Modeling Amateur Radio Soundings of the Ionospheric Response to the 2017 Great American Eclipse ↗
N. Frissell a kol., Geophysical Research Letters 45 (2018).
April 8, 2024 Solar Eclipse QSO Party First Results ↗
První výsledky měření při zatmění Slunce.
Stav k 9. 11. 2026. Příklad dekódování vychází z mého záznamu spotů balónu AI7NO z wspr.live. Vzorce telemetrie jsem přepočítal vlastním programem a shodují se s publikovaným příkladem Traquito. Referenční 162 symbolový vektor oficiálního kodéru jsem neověřoval.