Black Cat Systems
Follow our tweets!

Mac OS X Software
Mac OS 9 Software
Windows Software
Ham Radio iPhone/iPad
Linux Software
Update Policy
Lost Reg Code?

Radiation Detectors
USB Icom CI-V Interface
MIL-STD-188 Interface

General Interest Programs

  Atomic Mac/PC
  Audio Toolbox
  Black Cat Timer
  Diet Sleuth
  Graph Paper Maker
  Health Tracker
  Knitting Wizard
  Label Wizard
  Prog Audio Gen
  Sound Byte
  Synth 76477

Amateur Radio Programs
  Black Cat CW Keyer
  Cocoa 1090
  Cocoa RTL Server
  DGPS Decoding
  DX Toolbox
  eQSL Factory
  Morse Mania
  RF Toolbox

iPhone/iPad Apps
  Atoms To Go
  dB Calc
  Clik Trak
  DGPS Decoder
  Drill Calc
  DX Toolbox
  Elmer Extra
  Elmer General
  Elmer Tech
  Feld Hellschreiber
  Field Strength Calc
  Function Generator Pad
  HF Weather Fax
  Morse Mania
  Morse Pad
  Packet Pad
  PSK31 Pad
  SSTV Pad
  Photon Calc
  Rad Map Tracker
  RF Link Calc
  SelCall Tone Gen
  Sound Byte
  Sound Byte Control
  Spectrum Pad
  SWBC Schedules
  Synth 76477
  Synth Motion
  Transmission Line Calc
  Weather Calc
  Wire Calc

iPhone/iPad Bundles
  RF Calculator Apps
  Ham Radio Decoder Apps
  Audio Utility Apps
  Shortwave Weather Apps
  Ham Radio Exam Study Apps
  Shortwave Decoder Apps

Android Apps
  Audio Function Generator
DGPS Decoder
  HF Weather Fax
  Rad Map Tracker
  SelCall Tone Gen
  Sound Byte Control
  SWBC Schedules
  Wire Calc

About Black Cat Systems
Geiger Counter
Site Map
Our software for Mac OSX
Privacy Policy
Apple /// Emulator

Macintosh Links
Shortwave Radio
Pirate Radio
Spy Numbers Stations
Science and Electronics
Ham Radio Software
Geiger Counters


Mode S (ADS-B) aircraft transponder decoder for Mac OS X

Click on the image below to see it full sized:

Cocoa1090 is a Mode S (ADS-B) aircraft transponder decoder for Mac OS X, written for use with RTL-SDR devices (RTL based USB tuner dongles)

Starting with version 0.3.0 I have switched away from using the Google Maps API, and instead use some vector maps, because Google made changes that broke the code. Not as pretty, but it works. I do not plan on swiching back to Google maps.

Download a copy of Cocoa1090 beta version 0.3.0 here:

I've run it under Mac OS X 10.6 and 10.11, It should run under 10.7 through 10.10, and may run under 10.5.

Cocoa1090 requires that rtl_tcp be installed and running. rtl_tcp performs the actual interfacing to the RTL tuner, and serves I/Q data to Cocoa1090.

Instructions on installing RTL-SDR, which includes rtl_tcp, can be found here:

On Yosemite, I found that you can just use MacPorts to download and build the package: sudo port install rtl-sdr

Please note that I cannot provide any support for installing or using RTL-SDR.

Or you can use my new Cocoa RTL Server app.

After you have installed RTL-SDR, and run rtl_test to verify it works, you need to start rtl_tcp.

The easiest way is to go to Finder, navigate to the rtl-sdr folder you downloaded, then double click on rtl_tcp to start the tcp server.

Using a terminal window: Start rtl_tcp by opening a terminal window and typing:

Alternately, you can start it with
./rtl_tcp -g 9999
This sets the gain to the maximum value, I find this sometimes improves the decode rate.

(Note: you can quit rtl_tcp when you're all done by first quitting Cocoa1090, then wait a few seconds, then hit control-C while in the rtl_tcp terminal window. Then close the window.) Then start Cocoa1090. It should connect to rtl_tcp, an error message will be displayed if it cannot. Normally the default I/Q source address of and port 1234 will work correctly. You can change this in the Cocoa1090 preferences. There is also a value for the UDP output port, this is for future use. Note that after making any changes to these values, you must quit and restart Cocoa1090.

Cocoa1090 displays several columns of data, for the decoded information from the ADS-B frames:

ICAO - the hex value of the ICAO assigned address for the plane
TAIL - the tail number of the plane, based on the ICAO address, read from the icao.txt file. A dash is displayed if the tail number cannot be found in the file.
FLIGHT - the flight number
ALTITUDE - in feet
SPEED - in knots
LAT - latitude
LON - longitude
TRACK - bearing in degrees
MESSAGES - the total number of messages received from this plane
SEEN - how long (in seconds) since a message from this plane was received. That is,  how long since it as been seen (or heard from).
PLANE - the make and model of the plane, from the icao.txt file

The bottom of the window displays the status of the program, along with one option that may be enabled:

Preamble - the number of preambles of ADS-B frames detected
Demod - the number of ADS-B frames demodulated
Good CRC - the number of ADS-B frames with a valid CRC
Bad CRC - the number of ADS-B frames with a bad CRC
Fixed - the number of ADS-B frames with a bad CRC that were fixed (made good), followed by two numbers showing how many had 1 bad bit, and how many had 2
Frames/sec - the number of good (valid plus fixed) frames per second. This can be used as a relative indicator of activity levels, and is useful when adjusting or comparing antennas, etc

The Fix 2 check box can be checked if you wish to try and fix packets with two bad bits. This uses a lot more CPU time, and often produces bad frames. I generally leave it off (unchecked).

icao.txt file

Cocoa1090 looks for a file called extra_icao.txt when it starts. If it finds it, it loads in plane data from this file. This can be used to supplement plane data in the app. The format of this file is text, with one plane entry per line. Each line has four tab delimited fields, such as:

A318EA	N299WN	B737	B737-7H4/W
The first field is the ICAO number in hex
The second field is the tail (registration) number of the plane
The third field is the plane model (not currently used, but must be present)
The fourth field is the detailed plane information

Email your comments and questions to

Last modified June 8, 2016