{"id":13577772,"url":"https://github.com/antirez/dump1090","last_synced_at":"2025-05-14T21:10:50.913Z","repository":{"id":6223893,"uuid":"7455329","full_name":"antirez/dump1090","owner":"antirez","description":"Dump1090 is a simple Mode S decoder for RTLSDR devices","archived":false,"fork":false,"pushed_at":"2024-01-21T09:54:51.000Z","size":587,"stargazers_count":2551,"open_issues_count":97,"forks_count":1352,"subscribers_count":171,"default_branch":"master","last_synced_at":"2025-04-13T18:44:34.034Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/antirez.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2013-01-05T12:53:08.000Z","updated_at":"2025-04-13T17:23:08.000Z","dependencies_parsed_at":"2024-01-21T10:35:12.873Z","dependency_job_id":null,"html_url":"https://github.com/antirez/dump1090","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antirez%2Fdump1090","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antirez%2Fdump1090/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antirez%2Fdump1090/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/antirez%2Fdump1090/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/antirez","download_url":"https://codeload.github.com/antirez/dump1090/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254227631,"owners_count":22035671,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T15:01:24.207Z","updated_at":"2025-05-14T21:10:48.398Z","avatar_url":"https://github.com/antirez.png","language":"C","funding_links":[],"categories":["C","Plane watching"],"sub_categories":[],"readme":"Dump1090 README\n===\n\nDump 1090 is a Mode S decoder specifically designed for RTLSDR devices.\n\nThe main features are:\n\n* Robust decoding of weak messages, with mode1090 many users observed\n  improved range compared to other popular decoders.\n* Network support: TCP30003 stream (MSG5...), Raw packets, HTTP.\n* Embedded HTTP server that displays the currently detected aircrafts on\n  Google Map.\n* Single bit errors correction using the 24 bit CRC.\n* Ability to decode DF11, DF17 messages.\n* Ability to decode DF formats like DF0, DF4, DF5, DF16, DF20 and DF21\n  where the checksum is xored with the ICAO address by brute forcing the\n  checksum field using recently seen ICAO addresses.\n* Decode raw IQ samples from file (using --ifile command line switch).\n* Interactive command-line-interfae mode where aircrafts currently detected\n  are shown as a list refreshing as more data arrives.\n* CPR coordinates decoding and track calculation from velocity.\n* TCP server streaming and receiving raw data to/from connected clients\n  (using --net).\n\nWhile from time to time I still add / fix stuff in my fork, I target\nminimalism of the implementation. However there is a\n[much more feature complete fork](https://github.com/MalcolmRobb/dump1090)\navailable, developed by MalcolmRobb.\n\nInstallation\n---\n\nType \"make\".\n\nNormal usage\n---\n\nTo capture traffic directly from your RTL device and show the captured traffic\non standard output, just run the program without options at all:\n\n    ./dump1090\n\nTo just output hexadecimal messages:\n\n    ./dump1090 --raw\n\nTo run the program in interactive mode:\n\n    ./dump1090 --interactive\n\nTo run the program in interactive mode, with networking support, and connect\nwith your browser to http://localhost:8080 to see live traffic:\n\n    ./dump1090 --interactive --net\n\nIn interactive mode it is possible to have a less information dense but more\n\"arcade style\" output, where the screen is refreshed every second displaying\nall the recently seen aircrafts with some additional information such as\naltitude and flight number, extracted from the received Mode S packets.\n\nUsing files as source of data\n---\n\nTo decode data from file, use:\n\n    ./dump1090 --ifile /path/to/binfile\n\nThe binary file should be created using `rtl_sdr` like this (or with any other\nprogram that is able to output 8-bit unsigned IQ samples at 2Mhz sample rate).\n\n    rtl_sdr -f 1090000000 -s 2000000 -g 50 output.bin\n\nIn the example `rtl_sdr` a gain of 50 is used, simply you should use the highest\ngain availabe for your tuner. This is not needed when calling Dump1090 itself\nas it is able to select the highest gain supported automatically.\n\nIt is possible to feed the program with data via standard input using\nthe --ifile option with \"-\" as argument.\n\nAdditional options\n---\n\nDump1090 can be called with other command line options to set a different\ngain, frequency, and so forth. For a list of options use:\n\n    ./dump1090 --help\n\nEverything is not documented here should be obvious, and for most users calling\nit without arguments at all is the best thing to do.\n\nReliability\n---\n\nBy default Dump1090 tries to fix single bit errors using the checksum.\nBasically the program will try to flip every bit of the message and check if\nthe checksum of the resulting message matches.\n\nThis is indeed able to fix errors and works reliably in my experience,\nhowever if you are interested in very reliable data I suggest to use\nthe --no-fix command line switch in order to disable error fixing.\n\nPerformances and sensibility of detection\n---\n\nIn my limited experience Dump1090 was able to decode a big number of messages\neven in conditions where I encountered problems using other programs, however\nno formal test was performed so I can't really claim that this program is\nbetter or worse compared to other similar programs.\n\nIf you can capture traffic that Dump1090 is not able to decode properly, drop\nme an email with a download link. I may try to improve the detection during\nmy free time (this is just an hobby project).\n\nNetwork server features\n---\n\nBy enabling the networking support with --net Dump1090 starts listening\nfor clients connections on port 30002 and 30001 (you can change both the\nports if you want, see --help output).\n\nPort 30002\n---\n\nConnected clients are served with data ASAP as they arrive from the device\n(or from file if --ifile is used) in the raw format similar to the following:\n\n    *8D451E8B99019699C00B0A81F36E;\n\nEvery entry is separated by a simple newline (LF character, hex 0x0A).\n\nPort 30001\n---\n\nPort 30001 is the raw input port, and can be used to feed Dump1090 with\ndata in the same format as specified above, with hex messages starting with\na `*` and ending with a `;` character.\n\nSo for instance if there is another remote Dump1090 instance collecting data\nit is possible to sum the output to a local Dump1090 instance doing something\nlike this:\n\n    nc remote-dump1090.example.net 30002 | nc localhost 30001\n\nIt is important to note that what is received via port 30001 is also\nbroadcasted to clients listening to port 30002.\n\nIn general everything received from port 30001 is handled exactly like the\nnormal traffic from RTL devices or from file when --ifile is used.\n\nIt is possible to use Dump1090 just as an hub using --ifile with /dev/zero\nas argument as in the following example:\n\n    ./dump1090 --net-only\n\nOr alternatively to see what's happening on the screen:\n\n    ./dump1090 --net-only --interactive\n\nThen you can feed it from different data sources from the internet.\n\nPort 30003\n---\n\nConnected clients are served with messages in SBS1 (BaseStation) format,\nsimilar to:\n\n    MSG,4,,,738065,,,,,,,,420,179,,,0,,0,0,0,0\n    MSG,3,,,738065,,,,,,,35000,,,34.81609,34.07810,,,0,0,0,0\n\nThis can be used to feed data to various sharing sites without the need to use another decoder.\n\nAntenna\n---\n\nMode S messages are transmitted in the 1090 Mhz frequency. If you have a decent\nantenna you'll be able to pick up signals from aircrafts pretty far from your\nposition, especially if you are outdoor and in a position with a good sky view.\n\nYou can easily build a very cheap antenna following the istructions at:\n\n    http://antirez.com/news/46\n\nWith this trivial antenna I was able to pick up signals of aircrafts 200+ Km\naway from me.\n\nIf you are interested in a more serious antenna check the following\nresources:\n\n* http://gnuradio.org/data/grcon11/06-foster-adsb.pdf\n* http://www.lll.lu/~edward/edward/adsb/antenna/ADSBantenna.html\n* http://modesbeast.com/pix/adsb-ant-drawing.gif\n\nAggressive mode\n---\n\nWith --aggressive it is possible to activate the *aggressive mode* that is a\nmodified version of the Mode S packet detection and decoding.\nTHe aggresive mode uses more CPU usually (especially if there are many planes\nsending DF17 packets), but can detect a few more messages.\n\nThe algorithm in aggressive mode is modified in the following ways:\n\n* Up to two demodulation errors are tolerated (adjacent entires in the magnitude\n  vector with the same eight). Normally only messages without errors are\n  checked.\n* It tries to fix DF17 messages trying every two bits combination.\n\nThe use of aggressive mdoe is only advised in places where there is low traffic\nin order to have a chance to capture some more messages.\n\nDebug mode\n---\n\nThe Debug mode is a visual help to improve the detection algorithm or to\nunderstand why the program is not working for a given input.\n\nIn this mode messages are displayed in an ASCII-art style graphical\nrepresentation, where the individial magnitude bars sampled at 2Mhz are\ndisplayed.\n\nAn index shows the sample number, where 0 is the sample where the first\nMode S peak was found. Some additional background noise is also added\nbefore the first peak to provide some context.\n\nTo enable debug mode and check what combinations of packets you can\nlog, use `mode1090 --help` to obtain a list of available debug flags.\n\nDebug mode includes an optional javascript output that is used to visualize\npackets using a web browser, you can use the file debug.html under the\n'tools' directory to load the generated frames.js file.\n\nHow this program works?\n---\n\nThe code is very documented and written in order to be easy to understand.\nFor the diligent programmer with a Mode S specification on his hands it\nshould be trivial to understand how it works.\n\nThe algorithms I used were obtained basically looking at many messages\nas displayed using a trow-away SDL program, and trying to model the algorithm\nbased on how the messages look graphically.\n\nHow to test the program?\n---\n\nIf you have an RTLSDR device and you happen to be in an area where there\nare aircrafts flying over your head, just run the program and check for signals.\n\nHowever if you don't have an RTLSDR device, or if in your area the presence\nof aircrafts is very limited, you may want to try the sample file distributed\nwith the Dump1090 distribution under the \"testfiles\" directory.\n\nJust run it like this:\n\n    ./dump1090 --ifile testfiles/modes1.bin\n\nWhat is --strip mode?\n---\n\nIt is just a simple filter that will get raw IQ 8 bit samples in input\nand will output a file missing all the parts of the file where I and Q\nare lower than the specified \u003clevel\u003e for more than 32 samples.\n\nUse it like this:\n\n    cat big.bin | ./dump1090 --snip 25 \u003e small.bin\n\nI used it in order to create a small test file to include inside this\nprogram source code distribution.\n\nContributing\n---\n\nDump1090 was written during some free time during xmas 2012, it is an hobby\nproject so I'll be able to address issues and improve it only during\nfree time, however you are incouraged to send pull requests in order to\nimprove the program. A good starting point can be the TODO list included in\nthe source distribution.\n\nCredits\n---\n\nDump1090 was written by Salvatore Sanfilippo \u003cantirez@gmail.com\u003e and is\nreleased under the BSD three clause license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantirez%2Fdump1090","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantirez%2Fdump1090","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantirez%2Fdump1090/lists"}