This page is also available in English
Vad är AIS?
AIS (Automatic Identification System) är ett system för sjöfarten som via VHF-radion sänder ut ett fartygs identifikation och position till andra fartyg i närheten. Varje sådant fartyg tar också emot AIS-data från andra fartyg och visar deras positioner på en skärm. Sjöfartsverket samlar in alla positioner och distribuerar dem till bl.a. hamnarnas trafikövervakning.AIS är ett globalt system. Det är obligatoriskt för alla passagerarfartyg och för alla andra större fartyg i internationell trafik från den 1 juli 2003. Fram till 2008 kommer successivt mindre och mindre flytetyg vara tvungna att ha en AIS-transponder ombord. Läs mer om tidplan och teknik på Sjöfartsverkets webbsida.
AIS sänder på två kanaler (161,975 och 162,025 MHz på VHF-bandet) som
är reserverade över hela världen för detta ändamål. Sändningarna sker i
9600 bps och modulationssättet är GMSK (Gaussian Minimum Shift Keying).
Varje sändning är cirka 0,03 sekunder. Det kan vara svårt att höra AIS på radion,
då det låter som brus, men man brukar kunna se nålen på S-metern hoppa till,
eller höra brusspärren slå till och från.
Hobbyavkodning av AIS
För att kunna sätta en fjäder i avkodningshatten lade jag ner några kvällar på att se om det gick att få några läsbara positionsrapporter från fartyg i Göteborgs hamn. Det gick ganska bra.Största delen av tiden gick åt till att samla in information om AIS-protokollet, om GMSK-modulation och om NRZI-kodning av bitströmmen. Onödigt mycket tid gick åt till att få tag på modemkretsen CMX589. Man ska leta på det minst tänkbara stället först..!

På oscilloskopbilden till höger ska »Training sequence» i B-kanalen vara i stort sett sinusformad, men istället är det nästan trekantsvåg. Detta ställer till problem för GMSK-kretsen. Antagligen ger en annan radio med andra MF-filter bättre (eller sämre) resultat, jag ska prova det någon gång.

Så småningom, om jag får fason på signalen från radion, flyttar jag över allt på ett veroboard. Ännu ett av mina vidrigt fula, men fungerande, byggen...
AIS-programmet
Ja, hårdvaran är inget kul att pilla med, men utan den blir det ingen signal in till programmet. Utmaningen i ett sånt här projekt är ju att göra mjukvaran -- koppla kretsar kan vem som helst göra. Det här projektet, liksom flera av mina andra avkodningsprojekt, har mjukvara på två ställen. Dels i PCn, förstås, där de stora grejerna händer, och dels i en »lillhjärna», en liten PIC- eller Atmelkontroller som sitter närmast hårdvaran och avlastar PCn från skitgöra. AIS-bygget använder en Atmel AVR 2313 som tar emot bitströmmen från GMSK-kretsen, letar upp synk och startflagga, sköter nrzi-avkodning och bit unstuffing. PCn får därför data serverat i snygga paket på serieporten, klara att kodas av enligt AIS-protokollet.Jag hade tidigare gjort program för att avkoda Mobitex och NMT. Stommen till de programmen kunde jag använda även till AIS. Den del av programmen som hämtar in data från serieporten och lägger in den i en bitkö är identisk. Själva avkodningen börjar i andra änden av kön, så att säga. Efter nån kvälls programmerande fick jag så upp de första fragmenten av AIS-data på skärmen:

Den första raden är en positionsrapport (msgid = 1) från mmsi 265430000 som är Stena Carisma (Danmarkskatamaranen). Endast rubrikerna avkodas än så länge.
msgid 4 är från länken i Brudaremossens TV-mast som skickar UTC. (Och faktiskt också sin position -- ifall den skulle komma på driven, kan man tänka.)
Väldigt mycket skräp som synes, troligen beroende på analog hårdvara som inte är gjord för 9600 bps. Det är här de största förbättringarna kan göras, protokollet är nu »knäckt» och resten är bara programmeringsövningar. Ingen idé att lägga ner för mycket energi innan man har rena och snygga data in.



Symbolerna blir hyfsat skalenliga, men för kartbilder i liten skala, eller för pyttesmå båtar får man nog plotta dem med nån minimistorlek. Och det vore väl kanske snyggare om man ritade nåt mer båtliknande än tändstickor.
Sammanfattning
Mina teorier stämde och projektets mjukvarudel får anses vara framgångsrikt avklarad. När lusten faller på ska jag se till att fixa snygga signaler från radion så att mottagningen blir störningsfri. Nästa steg är att få upp positionerna på en karta på PCn, eventuellt med web-interface. Men det är alltså massa hårdvarupill först (vilket jag inte tycker är särskilt roligt) så det lär dröja.Uppdatering december 2004
Nu finns det ett program som avkodar AIS med hjälp av ljudkortet, och som dessutom har många trevliga finesser, bl.a. plottar det fartyg på sjökort eller satellitbilder. Kolla på www.shipplotter.com. Här finns en skärmdump från Shipplotter som visar ett plott över norra Kattegatt.
Uppdatering september 2005
Ja, den här sidan börjar bli lätt daterad, nu när det finns flera mottagare att köpa på marknaden till överkomliga priser. Två år går fort. Av »historiska och sentimentala» skäl låter jag sidan ligga kvar iallafall.
Jag har också lagt ut en gammal simpel avkodare för NMEA/AIVDM-meddelanden som du kan provköra om du har meddelanden i NMEA-format. De flesta färdigköpta AIS-mottagare verkar lämna positionsrapporter i detta format. Sidan är på engelska och har inga finesser men fungerar troligen ;-)
Rådump ur loggen
Här är lite råa data från mottagningen. Bland allt skräpet kan den tålmodige urskilja en del korrekta positioner, klockslag och fartygsnamn. Jag bedömer sändningarna som »avsedda för allmänheten» och jag kan därför lugnt visa dem här. (Lag 2003:389 om elektronisk kommunikation, 6 kap 23§.) För det är ju faktiskt så, att fartygen sänder ut AIS-informationen till omgivningen av säkerhetsskäl, just för att tala om vilka de är och var de befinner sig.2003-10-04 22:28:18 (1) 265177000: ns 15, rot 0, 0 kn, 351/ 262, 6403942, 1269413 (3,1 km) 2003-10-04 22:28:20 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:28:31 (5) STENA DANICA (SKFH), T: 60, Dr: 0,0m, GOTEBORG FREDRIKSHAN 2003-10-04 22:28:38 (1) 265177000: ns 15, rot 0, 0 kn, 311/ 262, 6403942, 1269413 (3,1 km) 2003-10-04 22:28:56 (1) 265509390: ns 15, rot 128, 0 kn, 170/ 511, 6404408, 1269558 (3,1 km) 2003-10-04 22:28:57 (1) 265177000: ns 15, rot 0, 0 kn, 239/ 262, 6403942, 1269413 (3,1 km) 2003-10-04 22:29:00 (1) 399647728: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:29:03 (1) 265509390: ns 15, rot 128, 0 kn, 169/ 511, 6404783, 1263054 (9,5 km) 2003-10-04 22:29:18 (1) 265177000: ns 15, rot 0, 0 kn, 273/ 262, 6403941, 1269413 (3,1 km) 2003-10-04 22:29:20 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:29:30 (5) STENA DANICA (SKFH), T: 60, Dr: 0,0m, GOTEBORG FREDRIKSHAN 2003-10-04 22:29:40 (1) 265177000: ns 15, rot 0, 0 kn, 317/ 262, 6403941, 1269413 (3,1 km) 2003-10-04 22:29:41 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:29:51 (1) 265509390: ns 15, rot 128, 0 kn, 168/ 511, 6404404, 1269561 (3,1 km) 2003-10-04 22:29:57 (1) 265177000: ns 15, rot 0, 0 kn, 4/ 262, 6403941, 1269413 (3,1 km) 2003-10-04 22:30:18 (1) 265509390: ns 3, rot 128, 0 kn, 155/ 511, 6404404, 1269562 (3,1 km) 2003-10-04 22:30:20 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:30:35 (3) 621730184: ns 5, rot 0, 0 kn, 314/ 223, 6405388, 1270927 (2,8 km) 2003-10-04 22:30:41 (1) 399647728: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:30:44 (5) PR.CESS OF SCANDINA. (OWEN 2), T: 60, Dr: 6,0m, KRISTIANS1ND , 2003-10-04 22:31:00 (4) rpt 0, mmsi 2655150, 2003-10-04 20:31:01 2003-10-04 22:31:00 Acc 0, 6402747 1276633 ( 4,3 km) 57,69N 12,06E 2003-10-04 22:31:01 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:31:17 (1) 265177000: ns 15, rot 0, 0 kn, 13/ 262, 6403941, 1269414 (3,1 km) 2003-10-04 22:31:31 (5) STENA DANICA (SKFH), T: 60, Dr: 0,0m, GOTEBORG FREDRIKSHAN 2003-10-04 22:31:37 (1) 265177000: ns 15, rot 0, 0 kn, 326/ 262, 6403941, 1269414 (3,1 km) 2003-10-04 22:31:41 (4) rpt 0, mmsi 2655150, 2003-10-04 20:31:41 2003-10-04 22:31:41 Acc 0, 6402747 1276633 ( 4,3 km) 57,69N 12,06E 2003-10-04 22:31:41 (1) 265509390: ns 15, rot 128, 0 kn, 166/ 511, 6404405, 1269561 (3,1 km) 2003-10-04 22:32:01 (4) rpt 0, mmsi 2655150, 2003-10-04 20:32:01 2003-10-04 22:32:01 Acc 0, 6402747 1276633 ( 4,3 km) 57,69N 12,06E 2003-10-04 22:32:01 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:32:17 (1) 265177000: ns 15, rot 0, 0 kn, 358/ 262, 6403941, 1269414 (3,1 km) 2003-10-04 22:32:21 (1) 265509390: ns 15, rot 128, 0 kn, 166/ 511, 6404405, 1269567 (3,1 km) 2003-10-04 22:32:31 (5) STENA DANICA (SKFH), T: 60, Dr: 0,0m, GOTEBORG FREDRIKSHAN 2003-10-04 22:32:37 (1) 265177000: ns 15, rot 0, 0 kn, 70/ 262, 6403942, 1269414 (3,1 km) 2003-10-04 22:32:57 (1) 265177000: ns 15, rot 0, 0 kn, 333/ 262, 6403942, 1269414 (3,1 km) 2003-10-04 22:33:01 (4) rpt 0, mmsi 2655150, 2003-10-04 20:33:01 2003-10-04 22:33:01 Acc 0, 6402759 1276634 ( 4,3 km) 57,69N 12,06E 2003-10-04 22:33:17 (1) 265509390: ns 15, rot 128, 0 kn, 170/ 511, 6404406, 1269560 (3,1 km) 2003-10-04 22:33:21 (1) 265509390: ns 15, rot 128, 0 kn, 174/ 511, 6404406, 1269560 (3,1 km) 2003-10-04 22:33:40 (1) 265177000: ns 15, rot 0, 0 kn, 323/ 262, 6403941, 1269413 (3,1 km) 2003-10-04 22:33:53 (4) rpt 0, mmsi 922877139, 13481-13-05 18:15:41 2003-10-04 22:33:53 Acc 1, 7710830 -8251207 (9612,9 km) 157,31N 114,95E 2003-10-04 22:33:54 (3) 232732256: ns 5, rot 128, 0 kn, 196/ 1, 6404479, 1270247 (2,6 km) 2003-10-04 22:34:00 (1) 265177000: ns 15, rot 0, 0 kn, 147/ 262, 6403940, 1269413 (3,1 km) 2003-10-04 22:34:01 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:34:20 (1) 265509390: ns 15, rot 128, 0 kn, 178/ 511, 6404407, 1269560 (3,1 km) 2003-10-04 22:34:21 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:34:31 (5) STENA DANICA (SKFH), T: 60, Dr: 0,0m, GOTEBORG FREDRIKSHAN 2003-10-04 22:34:41 (1) 265509390: ns 15, rot 128, 0 kn, 169/ 511, 6404407, 1269559 (3,1 km) 2003-10-04 22:35:00 (1) 265177000: ns 15, rot 0, 0 kn, 331/ 262, 6403940, 1269413 (3,1 km) 2003-10-04 22:35:01 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:35:17 (1) 265177000: ns 15, rot 0, 0 kn, 149/ 262, 6403940, 1269413 (3,1 km) 2003-10-04 22:35:20 (4) rpt 0, mmsi 2655150, 2003-10-04 20:35:21 2003-10-04 22:35:20 Acc 0, 6402748 1276632 ( 4,3 km) 57,69N 12,06E 2003-10-04 22:35:21 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:35:28 (1) 265509390: ns 15, rot 128, 0 kn, 165/ 511, 6404408, 1269557 (3,1 km) 2003-10-04 22:35:30 (5) STENA DANICA (SKFH), T: 60, Dr: 0,0m, GOTEBORG FREDRIKSHAN 2003-10-04 22:35:41 (1) 265509390: ns 15, rot 128, 0 kn, 177/ 511, 6404409, 1269557 (3,1 km) 2003-10-04 22:35:57 (1) 265177000: ns 15, rot 0, 0 kn, 161/ 262, 6403940, 1269412 (3,1 km) 2003-10-04 22:36:14 (1) 265509390: ns 15, rot 128, 0 kn, 171/ 511, 6404409, 1269558 (3,1 km) 2003-10-04 22:36:17 (1) 265177000: ns 15, rot 0, 0 kn, 107/ 262, 6403941, 1269412 (3,1 km) 2003-10-04 22:36:20 (4) rpt 0, mmsi 2655150, 2003-10-04 20:36:21 2003-10-04 22:36:20 Acc 0, 6402747 1276633 ( 4,3 km) 57,69N 12,06E 2003-10-04 22:36:21 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:36:22 (1) 388412445: ns 11, rot 0, 1 kn, 352/ 508, 6993631, 1899149 (861,2 km) 2003-10-04 22:36:31 (5) STENA DANICA (SKFH), T: 60, Dr: 0,0m, GOTEBORG FREDRIKSHAV 2003-10-04 22:36:37 (1) 265177000: ns 15, rot 0, 0 kn, 34/ 262, 6403941, 1269412 (3,1 km) 2003-10-04 22:36:41 (1) 388412445: ns 11, rot 0, 1 kn, 338/ 511, 6994387, 1899056 (861,6 km) 2003-10-04 22:36:45 (5) PR.CESS OF SCANDINA. (OWEN 2), T: 60, Dr: 6,0m, KRISTIANSAND & 2003-10-04 22:37:01 (1) 265177000: ns 15, rot 0, 0 kn, 24/ 262, 6403941, 1269412 (3,1 km) 2003-10-04 22:37:17 (1) 265509390: ns 15, rot 128, 0 kn, 167/ 511, 6404409, 1269558 (3,1 km) 2003-10-04 22:37:20 (4) rpt 0, mmsi 2655150, 2003-10-04 20:37:21 2003-10-04 22:37:20 Acc 0, 6597413 1287513 (195,0 km) 59,44N 12,06E 2003-10-04 22:37:21 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:37:30 (5) STENA DANICA ! (SKFH), T: 60, Dr: 0,0m, GOTEBORG FREDRIKSHAN 2003-10-04 22:37:58 (1) 265509390: ns 15, rot 128, 0 kn, 171/ 511, 6404409, 1269558 (3,1 km) 2003-10-04 22:38:01 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:38:17 (1) 265509390: ns 15, rot 128, 0 kn, 170/ 511, 6404409, 1269557 (3,1 km) 2003-10-04 22:38:21 (1) 265177000: ns 15, rot 0, 0 kn, 279/ 263, 6403941, 1269412 (3,1 km) 2003-10-04 22:38:21 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:38:22 (1) 388412445: ns 11, rot 0, 1 kn, 343/ 508, 6992874, 1899240 (860,7 km) 2003-10-04 22:38:38 (1) 265177000: ns 15, rot 0, 0 kn, 140/ 263, 6403941, 1269412 (3,1 km) 2003-10-04 22:38:41 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:38:58 (1) 265509390: ns 15, rot 128, 0 kn, 170/ 511, 6404410, 1269558 (3,1 km) 2003-10-04 22:39:06 (1) 265509390: ns 15, rot 128, 0 kn, 167/ 511, 6404411, 1269558 (3,1 km) 2003-10-04 22:39:18 (1) 265177000: ns 15, rot 0, 0 kn, 242/ 263, 6403941, 1269412 (3,1 km) 2003-10-04 22:39:21 (1) 265509390: ns 15, rot 128, 0 kn, 154/ 511, 6404412, 1269558 (3,1 km) 2003-10-04 22:39:31 (5) &(J\C@HB\BBCAQE@AAE (6VLQQA), T: 120, Dr: 0,0m, ^Z(JTZ$OPH$JX RV6PB\ 2003-10-04 22:39:37 (1) 265177000: ns 15, rot 0, 0 kn, 193/ 263, 6403941, 1269412 (3,1 km) 2003-10-04 22:39:53 (1) 265509390: ns 15, rot 128, 0 kn, 174/ 511, 6404412, 1269558 (3,1 km) 2003-10-04 22:39:57 (3) 265514500: ns 5, rot 128, 0 kn, 158/ 511, 6405848, 1271890 (2,8 km) 2003-10-04 22:40:01 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:40:18 (1) 265509390: ns 15, rot 128, 0 kn, 140/ 511, 6404412, 1269557 (3,1 km) 2003-10-04 22:40:20 (4) rpt 0, mmsi 2655150, 2003-10-04 20:40:21 2003-10-04 22:40:20 Acc 0, 6402747 1276633 ( 4,3 km) 57,69N 12,06E 2003-10-04 22:40:21 (1) 265509390: ns 15, rot 128, 0 kn, 169/ 511, 6404411, 1269557 (3,1 km) 2003-10-04 22:40:30 (5) STENA DANICA (SKFH), T: 60, Dr: 0,0m, GOTEBORG FREDRIKSHAN 2003-10-04 22:40:40 (4) rpt 0, mmsi 2655150, 2003-10-04 20:40:41 2003-10-04 22:40:40 Acc 0, 6402747 1276633 ( 4,3 km) 57,69N 12,06E 2003-10-04 22:40:41 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:40:57 (1) 265509390: ns 15, rot 128, 4 kn, 296/ 254, 3231965, 543113 (3253,8 km) 2003-10-04 22:41:01 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:41:17 (1) 265177000: ns 15, rot 0, 0 kn, 184/ 263, 6403942, 1269413 (3,1 km) 2003-10-04 22:41:20 (4) rpt 0, mmsi 2655150, 2003-10-04 20:41:21 2003-10-04 22:41:20 Acc 0, 6402747 1276634 ( 4,3 km) 57,69N 12,06E 2003-10-04 22:41:21 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:41:30 (4) rpt 0, mmsi 2655150, 2003-10-04 20:41:31 2003-10-04 22:41:30 Acc 0, 6402747 1276634 ( 4,3 km) 57,69N 12,06E 2003-10-04 22:41:40 (1) 399394728: ns 15, rot 0, 0 kn, 300/ 263, 6403941, 1269412 (3,1 km) 2003-10-04 22:41:41 (1) 265430000: ns 0, rot 0, 0 kn, 0/ 77, 6404019, 1270105 (2,5 km) 2003-10-04 22:41:57 (1) 265509390: ns 15, rot 128, 0 kn, 186/ 511, 6404411, 1269561 (3,1 km) 2003-10-04 22:42:00 (4) rpt 0, mmsi 2655150, 2003-10-04 20:42:01 2003-10-04 22:42:00 Acc 0, 6402747 1276635 ( 4,3 km) 57,69N 12,06E 2003-10-04 22:42:02 (1) 265509390: ns 15, rot 128, 0 kn, 136/ 511, 6404410, 1269568 (3,1 km) 2003-10-04 22:42:17 (1) 265177000: ns 15, rot 0, 0 kn, 229/ 263, 6403940, 1269412 (3,1 km) 2003-10-04 22:42:20 (4) rpt 0, mmsi 2655150, 2003-10-04 20:42:21 2003-10-04 22:42:20 Acc 0, 6402747 1276635 ( 4,3 km) 57,69N 12,06E 2003-10-04 22:42:21 (1) 265509390: ns 15, rot 128, 0 kn, 101/ 511, 6404412, 1269564 (3,1 km) 2003-10-04 22:42:30 (3) 578806975: ns 3, rot 140, 65 kn, 200/ 363, 5415439, 3174149 (2142,9 km) 2003-10-04 22:42:30 (4) rpt 0, mmsi 2655150, 2003-10-04 20:42:31 2003-10-04 22:42:30 Acc 0, 6402747 1276635 ( 4,3 km) 57,69N 12,06E 2003-10-04 22:42:31 (5) STENA DANICA (SKFH), T: 60, Dr: 0,0m, GOTEBORG FREDRIKSHAN 2003-10-04 22:42:36 (3) 219077000: ns 5, rot 0, 0 kn, 232/ 223, 6405391, 1270926 (2,8 km) 2003-10-04 22:42:45 (5) PR.CESS OF SCANDINA. (OWEN 2), T: 60, Dr: 6,0m, KRISTIANSAND 2003-10-04 22:43:00 (1) 265177000: ns 15, rot 0, 0 kn, 172/ 263, 6403941, 1269412 (3,1 km) 2003-10-04 22:43:00 (4) rpt 0, mmsi 2655150, 2003-10-04 20:43:01 2003-10-04 22:43:00 Acc 0, 6402749 1276636 ( 4,3 km) 57,69N 12,06E 2003-10-04 22:43:20 (1) 265177000: ns 15, rot 0, 0 kn, 255/ 263, 6403942, 1269412 (3,1 km)