Black Cat Systems

Follow our tweets!

Lost Reg Code?
Online KiwiSDRs
macOS Software
Windows Software
Ham Radio iPhone/iPad
Linux Software
Update Policy

USB Icom CI-V Interface

Radio Hobbyist Products

  22m Programmable Beacon Kit
  22m Part 15 Beacon Kit
  CW Keyer For Beacons Kit
  Jellyfish Transformer
  Cyclops Antenna Transformer

General Interest Programs

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

Amateur Radio Programs
  AirSpyHF+ Server
  Black Cat Absolute ACARS
  Black Cat ACARS
  Black Cat ALE
  Black Cat ALE Vacuum Cleaner
  Black Cat NetFinder
  Black Cat GMDSS
  Black Cat HF Fax
  Black Cat SSTV
  Carrier Sleuth
  Cocoa 1090
  Cocoa RTL Server
  DGPS Decoding
  DX Toolbox
  eQSL Factory
  KiwiSDR Monitor
  KiwiSDR Sound Client
  Morse Mania
  RF Toolbox
  SDRuno Plugin
  SDRuno Equalizer Plugin

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
Audio Spectrum Analyzer
DGPS Decoder
  HF Weather Fax
  Rad Map Tracker
  SelCall Tone Gen
  Sound Byte Control
  SWBC Schedules
  Wire Calc

About Black Cat Systems
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


Mode S (ADS-B) aircraft transponder decoder for macOS

Click on the images below to see them 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), as well as the RF Space netSDR and the SdrPlay RSP1A (and maybe other SdrPlay models).

I hope you enjoy using Cocoa1090. If you find this program useful, please consider donating, to help support development of future versions.

To use an SdrPlay, you must have already installed the Mac USB driver: API/HW DRIVER – V2.13 (20TH JUNE 2018) which can be downloaded from

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.6.0 here: (64 bit app - 27 May 2021)

Enjoy using Cocoa1090? A donation to help support updating it would be greatly appreciated. Thank you and 73!

I've run it under Mac OS X 10.6 and 10.11-10.15, It should run under 10.7 through 10.10?

If using an RTL dongle, 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. Cocoa1090 also works with the RF Space netSDR and the SdrPlay RSP1A (and maybe other SdrPlay models) in which case rtl_tcp is not needed.

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 May 27, 2021