Information for Receiving Experiments

SuperDARN radars are built to both transmit and receive a returning signal. However, a number of radio experiments and general radio enthusiasts can receive the transmitted signals from the SuperDARN radars.

This page will show real time information about the radars with real time streaming capabilities, and show how you can incorporate the real time data feed into your own experiments, whether it be used to remove any interference or for probing the ionosphere yourself.

Current Transmitting Data

The radars below have real time data streaming capabilities (actively transmitting radars-, not transmitting now-).

Radars which are not transmitting are still likely to be taking data, they are just not actively streaming the data from the sites.

If no radars show as active, our server may be down for maintenance, check back soon!

SAS: Saskatoon
RKN: Rankin Inlet
PGR: Prince George
CLY: Clyde River
INV: Inuvik
BKS: Blackstone
FHE: Fort Hays East
FHW: Fort Hays West
KAP: Kapuskasing
GBR: Goose Bay
CVE: Christmas Valley East
CVW: Christmas Valley West
MCM: McMurdo
KOD: Kodiak
HOK: Hokkaido East
HKW: Hokkaido West

If a radar is actively transmitting, the current parameters will show in a table below:

Parameter Definitions
Parameter Definition
CPID Control program ID is the name and number given to specific experiments being run. The common programs are numbered 100-999, with special programs being run using numbers >1000. Some programs may skip beams or repeat beam measurements and as such may not be suitable for interpretations via a range-time plot. More information can be found on our CPID page.
Frequency (kHz) This shows the current operating frequency at which the radar is transmitting. This will usually jump around within a limited range.
Range Separation (km) Each beam is divided into ~75-100 'range gates', which are separated by this value in kilometers.
Nave The number of pulsed sequences transmitted.
Sky Noise (dB) The level of background noise not relating to ionospheric anomalies being tracked by the radar.
Last Data Received (UTC) Time in coordinated universal time (UTC) when the most recent data is received.
Institution The institution, usually a University or academic institution, that maintains the radar.


SuperDARN Canada collects radar data and broadcasts it to our real time displays using WebSockets and a server on our campus that does all the legwork. This means that anyone can connect to the WebSockets and collect or use the data that they are streaming. We stream our data to browsers using JavaScript, and we use a Python script to collect data streaming from the sockets to build our previous 2 hours of data in our real-time range-time plots. Below we will outline how to connect to the sockets with examples in Python and Javascript. A basic knowledge of Python programming, JavaScript or NodeJS may be needed. An active internet connect is required. If you prefer to use another language, but would still like assistance from our web programmer or engineers, contact us on to see how we can help!

Packets of Information

Each time the radar transmits and receives, a new packet of data will be made and set out of the corresponding WebSocket. At SuperDARN Canada, we find it easier to parse the incoming data stream into JSON format for reading, this allows us to treat the data as a dictionary in Python and an object in JavaScript. The following table shows what information is streamed:

Parameter Name Parameter Variable Name Call in Python Example Call in JS Example
Beam beam json_obj.['beam'] json_data.beam
Control Program cp json_obj.['cp'] json_data.cp
First Range Gate Distance (frang) frang json_obj.['frang'] json_data.frang
Frequency freq json_obj.['freq'] json_data.freq
Number of Averages nave json_obj.['nave'] json_data.nave
Sky Noise noise json_obj.['noise'] json_data.noise
Number of Range Gates nrang json_obj.['nrang'] json_data.nrang
Range Separation rsep json_obj.['rsep'] json_data.rsep
Station ID stid json_obj.['stid'] json_data.stid
Time UTC time json_obj.['time'] json_data.time

Also available via WebSockets is the returning echo data, however, we convert the data to colour values on our server, before it gets to your browser, to make the data streaming as lightweight as possible.

Getting Data using Python

We use the library websocket-client to make connecting easier.

This code can be invoked by calling python3 {radar_address} {radar_name} in a console, where the addresses are available upon request and the radar name is the shorthand three letters in lower case.
I.E. python3 wss:// sas

Getting Data using JavaScript

This code can be run as part of a website as JavaScript front end, or modified slightly to be used as a NodeJS backend or stand alone NodeJS code. The snippet uses only in build JavaScript libraries and basic JQuery.

This snippet is what fills the data above in the information cards.

If you're setting up your own experiment and come up against some problems, don't hesitate to contact our web programmer or engineers at for assistance.

WebSocket Addresses

The WebSocket addresses for each of the data streams are available upon request, we may ask for your IP address to allow access. There is one WebSocket per radar so you only need to connect to the one you want. We route the radar connections through our University of Saskatchewan campus server. All requests for addresses can be sent to the Web Programmer at

Connecting to More Than One Radar?


This is easily done in JavaScript, simply add a new object inside the RADARS variable, with corresponding address and shorthand name.


Each instance of the Python script will hold up a terminal when run. To run multiple, we invoke a shell script to run each instance in a screen. The following semi-pseudo snippet is a portion of our code to run a connection to each socket, where radar_codes and radar_address are arrays of the short hand code and the addresses above.

As always, we're here to help, just email and ask for either the web programmer or an engineer!