Serial Remote Control for the RIG RX-2 Receiver

This page describes my modifications to the RIG RX-2 receiver which enable it to be controlled remotely from a computer, using an RS-232 serial interface. The modifications are in two parts: some simple additional hardware, and a new firmware program for the PIC16C84 microcontroller.


In manual control mode, the modified receiver operates very much as the original. When the RX-2 is switched on, it will emit a 1 second  beep, during which all the display segments are turned ('lamp test'). This allows time for the signal detector circuit to settle. After the settling period, it will start scanning from channel 1, stopping only when it finds a signal. When a signal is found, the RX-2 emits a longer beep and stops scanning, until 15 seconds after the signal is lost. It then emits a short beep and re-starts scanning.

A short button press at any time will jump to the next channel and stop scanning, accompanied by a very short beep. A longer press will re-start scanning, with a longer beep.

At the same time, any characters which arrive at the serial port are checked for valid commands. There are two valid commands: 's' (or 'S' - case is not important) and 'F'. The 'F' command, followed immediately by a channel number 0 to 9, will change to that channel, and stop scanning, if a scan was in progress. 'S' will re-start scanning. No carriage return or line feed is required after the command. Any incomprehensible or extra characters are quietly ignored.

In manual operation, the modified RX-2 uses the same 5 channels as the original. However, there are 5 additional channels available to the 'F' command. The frequencies as supplied are shown below, but are very easily changed.

Channel Number Frequency (MHz) Satellite
0 137.200 ---
1 137.300 Meteor 3-5
2 137.400 Okean 1-7, Sich-1
3 137.500 NOAA 12, NOAA 15
4 137.620 NOAA 14
5 137.850 Resurs O1-N4
6 137.600 ---
7 137.700 ---
8 137.800 ---
9 137.900 ---

A button push, or an 'S' command, when the receiver is tuned to one of the 'extra' channels, will re-start scanning from channel 1.

The serial interface is designed to make the minimum demands on the computer driving it. It does not use any flow control: it operates at a fixed 1200 baud, and can handle continuous characters at this speed. There are no 'handshaking' signals. It cannot even send any data to the computer!

PIC Software

The source code for the modified PIC program is available here. This requires Microchip MPLAB/MPASM to assemble, and a suitable device programmer for the PIC16C84. I am currently trying to arrange for a supply of ready programmed devices, via RIG. Until then you will need to program your own. For convenience, here is the Intel HEX format ready for the programmer.

The software operation is based on the idea that when a person presses the button, it stays 'down' for a long time - at least a long time compared to the duration of a serial character. The serial input and push button use the same pin. The program waits for a 'low' logic level on this pin. This could either be the start of a serial character or the start of a button push. The software first attempts to decode the signal as a character. If the input is still low at the end of the character period, when it ought to be high, the software decides that it has a button push. Two separate tasks handle the button pushes and decode the received characters. For those who are interested, there is a more detailed explanation available.

Hardware Modifications

The hardware modifications have been kept as simple as possible. The serial interface uses the same PIC input pin currently used by the push-button, and can be operated in conjunction with the button. It requires no extra power supply, drawing what power it needs from the PC and through the pull-up resistor on the push-button input.

Here is the complete circuit diagram:

RX-2 Serial Interface Circuit Diagram

In the RS-232 'idle' state, DB-9 pin 2 will sit at a voltage of -5V to -12V. The opto-coupler LED will be off, and so will be the transistor. Pin 4 will be pulled up to +5V by the push-button pull-up resistor on the RX-2 circuit board. A button push will take this point low to GND, unaffected by the presence of the serial interface.
When an RS-232 character comes along, the start bit will take DB-9 pin 2 to between +5V and +12V, turning on the opto-coupler LED and transistor. The push-button input will go low, to be detected by the software.

The push button input goes to pin 9 of SK1 on the RX-2: GND is found on pin 8 of the same connector. DB-9 connector pin 5 is ground, pin 2 is Rx-data. You will need to use a 'null modem' cable with these connections. Alternatively, wire the resistor to pin 3 and use a 'straight through' cable.

You can also use a 4N25 or similar opto-isolator, the exact device is not critical. For the 4N25, GND goes to pin 4 and the push-button input to pin 5. Pins 3 and 6 are no-connect. Using an opto-isolator helps to keep electrical noise from the computer out of the receiver.


Construction technique is not critical. I built the prototype hardware on a very small piece of Veroboard which I fixed to the back of the DB-9 socket. The output is best wired straight to the push-button, using stranded hook-up wire. Take care when desoldering the existing wiring from the push-button, as the supplied parts tend to melt rather easily. If you are at all in doubt of your skills, order a replacement push-button along with the other parts! No serious harm will be caused if you get the two wires to the button crossed, but probably neither the button nor the serial input will work until you correct the situation.


  1. If you intend using this modification with a computer running Microsoft Windows NT, you should be aware that as it boots, this operating system sends a sequence of 'breaks' to each serial port it finds. These are interpreted as button pushes, causing the RX-2 to switch channels and stop scanning. A long button push - or of course an 'S' command - will restart the scan.


 Back to Weather Satellites

Last modified 10th July 1999
If you have comments or suggestions, please email me at