{"id":46,"date":"2026-07-22T21:00:00","date_gmt":"2026-07-22T19:00:00","guid":{"rendered":"https:\/\/airex.se\/blogg\/ftrack-flygplan-och-fel-tuner\/"},"modified":"2026-08-04T16:26:42","modified_gmt":"2026-08-04T14:26:42","slug":"ftrack-flygplan-och-fel-tuner","status":"publish","type":"post","link":"https:\/\/airex.se\/blogg\/ftrack-flygplan-och-fel-tuner\/","title":{"rendered":"Ett flygplan p\u00e5 fyrtio sekunder \u2014 och spec-bladet som aldrig fanns"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Reseappen jag <a href=\"https:\/\/airex.se\/blogg\/res-mer-nu-tva-varumarken\/\">skrev om f\u00f6rra veckan<\/a> har en karta som visar var deltagarna befinner sig under resan. Den har ocks\u00e5 ett h\u00e5l: n\u00e4r folk flyger \u00e4r kartan tom f\u00f6r dem i flera timmar. Flygl\u00e4ge betyder ingen position, och det finns inget s\u00e4tt runt det.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Behovet var allts\u00e5 konkret: <strong>visa var deltagarna \u00e4r medan de sitter i luften.<\/strong> Och l\u00f6sningen ligger i att sluta fr\u00e5ga passageraren och b\u00f6rja lyssna p\u00e5 planet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Varje trafikflygplan s\u00e4nder identitet, h\u00f6jd, fart, kurs och koordinater flera g\u00e5nger i sekunden, okrypterat, till vem som helst som lyssnar. Det beh\u00f6vs en mottagare f\u00f6r hundralappar och en antenn. Resultatet ligger p\u00e5 <a href=\"https:\/\/ftrack.mer.nu\/\">ftrack.mer.nu<\/a>.<\/p>\n\n\n\n<figure class=\"airex-fig\">\n<svg viewBox=\"0 0 720 380\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\"\n     aria-label=\"Flygplanen s\u00e4nder sin position sj\u00e4lvmant. Mottagaren h\u00f6r dem inom horisonten; bortom den tar n\u00e4tverket vid.\">\n  <style>\n    .t { font-family:\"Familjen Grotesk\", system-ui, sans-serif; font-weight:700; font-size:14px; fill:#0e1a1c; }\n    .m { font-family:\"IBM Plex Mono\", ui-monospace, monospace; font-size:10.5px; fill:#78898a; letter-spacing:.09em; }\n    .r { font-family:\"IBM Plex Mono\", ui-monospace, monospace; font-size:10.5px; fill:#a5381f; letter-spacing:.09em; }\n    .b { font-family:Newsreader, Georgia, serif; font-size:13px; fill:#3a4c4d; }\n    .ink { stroke:#0e1a1c; stroke-width:1.5; fill:none; }\n    .sig { stroke:#a5381f; stroke-width:1.3; fill:none; }\n    .dash{ stroke:#78898a; stroke-width:1.3; stroke-dasharray:5 5; fill:none; }\n  <\/style>\n  <defs>\n    <g id=\"plan\">\n      <path d=\"M0,-7 L5,6 L0,3 L-5,6 Z\" fill=\"#0e1a1c\"\/>\n    <\/g>\n  <\/defs>\n\n  <!-- textblocket, helt f\u00f6r sig sj\u00e4lvt \u00f6verst -->\n  <text class=\"m\" x=\"20\" y=\"30\">PLANET S\u00c4NDER SJ\u00c4LVMANT, FLERA G\u00c5NGER I SEKUNDEN<\/text>\n  <text class=\"b\" x=\"20\" y=\"54\">identitet \u00b7 h\u00f6jd \u00b7 fart \u00b7 kurs \u00b7 koordinater<\/text>\n  <text class=\"r\" x=\"20\" y=\"76\">INGEN APP \u00b7 INGET TILLST\u00c5ND \u00b7 INGET FLYGL\u00c4GE ST\u00c4NGER AV DET<\/text>\n  <path class=\"ink\" d=\"M20 92 L700 92\" opacity=\".22\"\/>\n\n  <!-- horisont -->\n  <path class=\"ink\" d=\"M20 316 Q360 276 700 316\"\/>\n  <text class=\"m\" x=\"20\" y=\"342\">JORDYTAN \u2014 HORISONTEN S\u00c4TTER R\u00c4CKVIDDEN<\/text>\n\n  <!-- mast -->\n  <path class=\"ink\" d=\"M300 288 L300 224 M290 224 L310 224 M293 214 L307 214 M296 204 L304 204\"\/>\n  <text class=\"t\" x=\"286\" y=\"268\" text-anchor=\"end\">Mottagare<\/text>\n\n  <!-- tv\u00e5 plan inom r\u00e4ckh\u00e5ll -->\n  <use href=\"#plan\" transform=\"translate(214,150) rotate(38)\"\/>\n  <use href=\"#plan\" transform=\"translate(392,136) rotate(-24)\"\/>\n  <path class=\"sig\" d=\"M222 158 Q262 186 296 204\"\/>\n  <path class=\"sig\" d=\"M384 146 Q344 178 306 202\"\/>\n  <text class=\"b\" x=\"150\" y=\"140\" text-anchor=\"end\">h\u00f6rs direkt<\/text>\n  <path class=\"ink\" d=\"M156 136 L204 146\" opacity=\".35\"\/>\n\n  <!-- plan bortom horisonten -->\n  <use href=\"#plan\" transform=\"translate(628,214) rotate(-14)\" opacity=\".33\"\/>\n  <path class=\"dash\" d=\"M312 210 Q470 196 612 210\"\/>\n  <text class=\"r\" x=\"470\" y=\"182\" text-anchor=\"middle\">BORTOM HORISONTEN<\/text>\n  <text class=\"b\" x=\"628\" y=\"248\" text-anchor=\"middle\">n\u00e4tverket tar vid<\/text>\n<\/svg>\n<figcaption>Passageraren kan inte rapportera sin position. Farkosten hon sitter i g\u00f6r det hela tiden.<\/figcaption>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Datorn som inte fick startas om<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Mottagaren sattes p\u00e5 en liten enkortsdator som redan gjorde tv\u00e5 andra saker: r\u00e4knade fordon med en AI-accelerator, och \u2014 viktigare \u2014 fungerade som <strong>tredje r\u00f6st i ett kluster<\/strong>. Faller den r\u00f6sten bort kan de tv\u00e5 servrarna i klustret inte l\u00e4ngre avg\u00f6ra vem som har r\u00e4tt om de tappar kontakten med varandra.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Det gjorde en normalt trivial detalj till ett krav: <em>ingen omstart.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Radiomottagare av den h\u00e4r typen k\u00e4nns igen av systemet som TV-mottagare, och den drivrutinen l\u00e4gger beslag p\u00e5 enheten. Standardr\u00e5det \u00f6verallt \u00e4r att svartlista drivrutinen och starta om. Det gick allts\u00e5 inte.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lyckligtvis kan mottagarprogramvaran koppla loss drivrutinen i farten, medan systemet k\u00f6r. Det tog en rad i loggen och noll driftst\u00f6rning. Po\u00e4ngen \u00e4r inte tricket i sig utan vanan: <strong>fr\u00e5ga alltid vad maskinen mer g\u00f6r innan du f\u00f6ljer ett standardr\u00e5d som slutar med omstart.<\/strong> Just den h\u00e4r datorn ser ut som en leksak och h\u00e5ller ihop ett kluster.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ett flygplan p\u00e5 fyrtio sekunder<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Allt startade. Kartan renderade. Antennen satt p\u00e5 plats med mottagarens position inlagd.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Och s\u00e5 f\u00e5ngade den <strong>ett flygplan p\u00e5 fyrtio sekunder.<\/strong> Det n\u00e4rmaste och starkaste, sedan tomt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fels\u00f6kningen var kort, f\u00f6r programvaran sa det rakt ut i sin egen logg: <em>d\u00e5lig tuner, mottagningen p\u00e5 1090 MHz kommer bli fruktansv\u00e4rd.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En s\u00e5dan h\u00e4r mottagare best\u00e5r i princip av tv\u00e5 delar: en avkodningskrets och en tuner. Avkodningskretsen \u00e4r densamma i alla billiga varianter. <strong>Tunern avg\u00f6r allt<\/strong> \u2014 och den i min dongel toppar strax \u00f6ver 1100 MHz. Flygtrafiken ligger p\u00e5 1090. Den var allts\u00e5 precis, precis inom r\u00e4ckh\u00e5ll och d\u00e4rmed n\u00e4stan d\u00f6v.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Samma antenn, samma mjukvara, samma himmel. Byte till en mottagare med r\u00e4tt tuner ger tjugo till \u00e5ttio g\u00e5nger fler plan. En komponent f\u00f6r ett par hundra kronor \u00e4r skillnaden mellan ett verktyg och en tom karta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">En egen antenn r\u00e4cker inte hela v\u00e4gen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">H\u00e4r \u00e4r en begr\u00e4nsning v\u00e4rd att vara \u00e4rlig om, eftersom den f\u00f6ljer direkt av fysiken. En mottagare p\u00e5 ett tak ser ungef\u00e4r tjugo till trettio mil, och bara det som \u00e4r h\u00f6gt nog att synas \u00f6ver horisonten. Den t\u00e4cker starten och en bit av v\u00e4gen \u2014 sedan \u00e4r planet borta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00f6r en resa s\u00f6derut betyder det att egen mottagning aldrig kan f\u00f6lja hela flygningen. Det som l\u00f6ser det \u00e4r de \u00f6ppna n\u00e4tverk d\u00e4r tusentals hobbymottagare delar sina data: matar man in sina egna observationer f\u00e5r man i geng\u00e4ld tillg\u00e5ng till allas. D\u00e5 blir str\u00e4ckan komplett.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vilket ger en fin arbetsf\u00f6rdelning: den egna mottagaren \u00e4r beviset och den lokala precisionen, n\u00e4tverket \u00e4r r\u00e4ckvidden. Och att bygga den egna f\u00f6rst var inte on\u00f6digt \u2014 utan den hade jag inte f\u00f6rst\u00e5tt vad datan \u00e4r, var den kommer ifr\u00e5n eller varf\u00f6r den ibland saknas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Spec-bladet som aldrig fanns<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">H\u00e4r kommer den obekv\u00e4ma delen, och det \u00e4r den enda anledningen till att det h\u00e4r inl\u00e4gget \u00e4r v\u00e4rt att l\u00e4sa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tidigare samma dag hade jag fr\u00e5gat en spr\u00e5kmodell vad det var f\u00f6r mottagare jag k\u00f6pt. Den svarade utf\u00f6rligt och med full s\u00e4kerhet: r\u00e4tt fabrikat, en k\u00e4nd modellbeteckning, den goda tunern, temperaturkompenserad oscillator, ordentlig antennkontakt, matningssp\u00e4nning f\u00f6r f\u00f6rst\u00e4rkare. Ett komplett datablad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ingenting av det stod i annonsen. D\u00e4r stod bara <em>&#8221;RTL-SDR dipolantennsats&#8221;<\/em> och ett artikelnummer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Modellen hade m\u00f6nstermatchat mot den mest k\u00e4nda produkten i kategorin och fyllt i resten. Verkligheten var en klon med billig tuner \u2014 precis den som inte klarar 1090 MHz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Det som g\u00f6r felet l\u00e4rorikt \u00e4r att det inte s\u00e5g ut som ett fel. Svaret var v\u00e4lformulerat, tekniskt korrekt <em>som beskrivning av en annan produkt<\/em>, och inneh\u00f6ll inget som skavde. Det fanns ingen tvekan att reagera p\u00e5. Jag hade inget sk\u00e4l att kontrollera \u2014 och det \u00e4r precis vad som g\u00f6r den h\u00e4r felsorten farlig.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L\u00e4xan \u00e4r konkret: <strong>h\u00e5rdvaruspecifikationer ska l\u00e4sas ur enheten, inte ur en beskrivning.<\/strong> Ett kommando som listar den anslutna enhetens verkliga krets tar tv\u00e5 sekunder och hade sparat en best\u00e4llning, en kv\u00e4ll och en besvikelse.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Versionsnummer \u00e4r inte specifikationer<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En besl\u00e4ktad f\u00e4lla, som jag ocks\u00e5 gick i. Den ledande tillverkarens senaste modell heter V4. En annan tillverkare s\u00e4ljer en produkt vars namn slutar p\u00e5 &#8221;v5&#8221;. Det h\u00f6gre numret \u00e4r inte nyare eller b\u00e4ttre \u2014 det \u00e4r ett annat f\u00f6retags r\u00e4knare.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I en kategori d\u00e4r tillverkarna namnger fritt \u00e4r versionsnumret marknadsf\u00f6ring. <strong>J\u00e4mf\u00f6r komponenten, inte siffran.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sidosp\u00e5ret som gav noll<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Samma mottagare kan lyssna p\u00e5 433 MHz, d\u00e4r bland annat d\u00e4cktryckssensorer i bilar s\u00e4nder. Fyra minuters lyssning gav noll paket.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tv\u00e5 oberoende orsaker, och det \u00e4r det intressanta:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Antennen var kapad f\u00f6r fel band.<\/strong> Den satt inst\u00e4lld f\u00f6r flygtrafik, med ben p\u00e5 sex\u2013sju centimeter. F\u00f6r 433 MHz vill man ha ungef\u00e4r sjutton. En antenn \u00e4r inte en generell mottagare \u2014 den \u00e4r avst\u00e4md mot en frekvens, och fel l\u00e4ngd g\u00f6r den n\u00e4stan d\u00f6v.<\/li>\n<li><strong>Sensorerna s\u00e4nder bara n\u00e4r hjulen rullar.<\/strong> De sover n\u00e4r bilen st\u00e5r still, av samma batterisk\u00e4l som g\u00f6r telefoner till d\u00e5liga fyrar.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Med tv\u00e5 samtidiga orsaker till noll resultat hade jag kunnat fels\u00f6ka den ena i timmar utan att komma n\u00e5gonstans. Det \u00e4r v\u00e4rt att komma ih\u00e5g: <em>noll \u00e4r s\u00e4llan ett fel, det \u00e4r ofta tv\u00e5.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">S\u00e5 vet du att det funkar<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>L\u00e4s enhetens egen logg innan du misst\u00e4nker antennen.<\/strong> Mottagarprogrammet sa rakt ut att tunern var fel. Jag hade kunnat l\u00e4gga en kv\u00e4ll p\u00e5 att flytta antennen i st\u00e4llet f\u00f6r att l\u00e4sa tv\u00e5 rader.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>M\u00e4t antal plan per minut, inte att tj\u00e4nsten \u00e4r ig\u00e5ng.<\/strong> En tom karta ser ut som en fungerande karta en lugn natt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Kontrollera att den publika sidan verkligen renderar<\/strong>, inte bara att den svarar. En karta som ger 200 och sedan misslyckas med att h\u00e4mta sina data ser frisk ut f\u00f6r allt utom ett \u00f6ga.<\/p>\n\n\n\n<figure class=\"airex-fig\"><img decoding=\"async\" src=\"\/blogg\/wp-content\/themes\/airex\/assets\/img\/ftrack-karta.webp\" alt=\"Flygkarta med tre plan och deras sp\u00e5r \u00f6ver M\u00e4lardalen\" loading=\"lazy\"><figcaption>Kartan i dag: tre plan med sp\u00e5r. N\u00e4r inl\u00e4gget skrevs var siffran ett \u2014 p\u00e5 fyrtio sekunder.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Vad jag tar med mig<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>En komponent kan avg\u00f6ra hela projektet.<\/strong> Allt annat var r\u00e4tt: antennen, placeringen, mjukvaran, konfigurationen. En krets f\u00f6r ett par hundralappar best\u00e4mde skillnaden mellan noll och \u00e5ttio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Det farligaste svaret \u00e4r det v\u00e4lformulerade.<\/strong> En modell som hittar p\u00e5 ett datablad l\u00e5ter exakt som en modell som l\u00e4st ett. Skillnaden syns inte i texten \u2014 bara i verkligheten, och f\u00f6rst n\u00e4r paketet \u00e4r \u00f6ppnat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Och det som gjorde hela omv\u00e4gen v\u00e4rd besv\u00e4ret:<\/strong> behovet var att fylla ett tomt f\u00e4lt i en resekarta, och l\u00f6sningen visade sig ligga i radiomottagning snarare \u00e4n i mer arbete p\u00e5 telefonsidan. Det som s\u00e5g ut som en funktion att bygga i appen var i sj\u00e4lva verket en fr\u00e5ga om att lyssna p\u00e5 r\u00e4tt frekvens.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Behovet var att visa var resedeltagarna \u00e4r medan de sitter i luften. L\u00f6sningen var att sluta fr\u00e5ga passageraren och lyssna p\u00e5 planet \u2014 och den sv\u00e5raste l\u00e4xan handlade om ett datablad som aldrig fanns.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-46","post","type-post","status-publish","format-standard","hentry","category-bygget"],"_links":{"self":[{"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/posts\/46","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/comments?post=46"}],"version-history":[{"count":2,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/posts\/46\/revisions"}],"predecessor-version":[{"id":50,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/posts\/46\/revisions\/50"}],"wp:attachment":[{"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/media?parent=46"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/categories?post=46"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/airex.se\/blogg\/wp-json\/wp\/v2\/tags?post=46"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}