Community. Driven. Weather. Data. | Always Ad-Free | Developer FriendlyChecking statusDiscord
WxAlerts.org, Community Driven Weather Data
Support us
Sign in
Weather stations

Getting an ID

Register for a free CWOP ID, understand the three different identifiers the program will issue you, and get the passcode question right the first time.


Registration is free, takes minutes, and is the step that turns your packets from noise on APRS-IS into observations NOAA will actually ingest. An unregistered station transmitting into APRS-IS is visible on aprs.fi and goes no further.

The three IDs

This is the single most confusing thing about CWOP, so it is worth getting straight before you start: the program tracks you in three databases, and each one identifies you differently.

Looks like Where it matters
findU / packet callsign CW1234, DW1234, EW1234, FW1234, GW1234, or a ham callsign What you actually transmit
MADIS “NWS ID” (5 chars or fewer) C1234, D1234, E1234…, or APxxxAVxxx for hams What the QC pages key on
CWOP “Provider ID” CWxxxx…, or apxxxavxxx for hams Internal program routing

You will be given the first one. The other two are derived and you will meet them when you go looking at quality control reports.

What the letter prefixes mean: nothing about quality. CW, DW, EW, FW and GW are sequential blocks handed out in order as the program grew. CW came first and filled up, then DW, and so on. A DW station is simply newer than a CW one.

Licensed hams do not get a CW/DW number. They use their callsign.

Registering as an unlicensed observer

  1. Open the registration form at http://www.findu.com/citizenweather/cw_form.html, linked from madis.ncep.noaa.gov/cwop_signup.shtml. It asks for your name, email, nearest town, state, ZIP and elevation.
  2. You will be emailed an ID, typically a DW number these days, usually within minutes, sometimes within a day.
  3. Configure your software with that ID, your latitude and longitude, and the passcode -1.
  4. Start sending. Registration only completes once packets are actually arriving. A registered site that never sends anything is purged after 90 days.
  5. Verify at http://www.findu.com/cgi-bin/wx.cgi?call=YOURID. Data should appear within 5 to 15 minutes. Within a week you should also find yourself on MADIS and MesoWest.

To change your location or elevation later, email cwop-support@noaa.gov with decimal degrees and metres. Note the split: that email fixes the program’s metadata, but the point plotted on findU comes from the coordinates in your own packets, so you have to change both.

Registering as a licensed ham

Hams transmit under their callsign with an SSID. The APRS SSID recommendation list maintained by WB4APR assigns -13 to weather stations, so N0CALL-13 is the idiomatic choice for a fixed WX station.

Treat that as convention rather than law; the document itself says the SSIDs are “not to imply any kind of decoding ‘standard’,” and the generic slots (-1, -15) are perfectly acceptable. But -13 is what other operators will expect to see.

Register with CWOP anyway. The form has a ham path, and registering is what gets your callsign cross-referenced and quality-controlled by MADIS. You still transmit under the callsign, never under a DW number.

The passcode

The APRS-IS passcode authenticates a login. It is a 15-bit hash of the base callsign only, SSID stripped and upper-cased, seeded with 0x73e2. This is the canonical algorithm, as found in aprsc and aprslib:

#define kKey 0x73e2

short aprs_passcode(const char* theCall) {
    char rootCall[10]; char *p1 = rootCall;
    while ((*theCall != '-') && (*theCall != 0) && (p1 < rootCall + 9))
        *p1++ = toupper(*theCall++);
    *p1 = 0;

    short hash = kKey;
    short i = 0, len = strlen(rootCall);
    char *ptr = rootCall;
    while (i < len) {
        hash ^= (*ptr++) << 8;   /* high byte */
        hash ^= (*ptr++);        /* low byte  */
        i += 2;
    }
    return hash & 0x7fff;        /* always a positive 15-bit value */
}

Hams compute this locally, with the aprs.fi apps, magicbug, or aprslib.passcode() all do it. Because it is derived from the callsign, it is not a secret so much as a proof that you know what your own callsign is.

CWOP observers do not compute a passcode at all. They send the literal string -1. That is not a placeholder for something you are missing; it is the documented value, and it is what lets you inject your own weather packets without claiming to be a licensed operator.

Rules and etiquette

If you are a ham (FCC Part 97): no encryption or obscuring of meaning; you identify with your callsign, which the packet header does for you; unattended and automatic operation of beacons, digipeaters and igates is permitted within the §97.203 and §97.205 rules; and third-party traffic rules apply if you are igating international traffic. Stay on the correct frequency and keep the duty cycle reasonable.

If you are not a ham: you may not transmit on amateur RF at all. You are internet-only, pushing packets to APRS-IS over TCP. That is the entire design of the -1 path and it is completely legal. You never touch 144.390 MHz.

Both, on CWOP’s own expectations: report no faster than once every five minutes, site the station sensibly, keep your metadata accurate, and read your quality control feedback. The “wxqa” in wxqa.com stands for weather quality assurance, because the program is as much about data quality as about coverage.

Where to go next