Skip to content
Alan Johnston edited this page Jul 23, 2026 · 43 revisions

Simulated Doppler Frequency Shift

If you upgrade your software to the latest master-b branch, you can try out simulated Doppler Shift.

Here's a Raspberry Pi Disk Image you can download and write to a 16 GB micro SD card or larger. The usual username pi and password raspberry

Here's the instructions you can use if your Pi Zero 2 is connected to the internet:

   cd
   cd CubeSatSim
   git pull
   git checkout master-b
   ./upgrade

You will need to reboot when the upgrade is finished.

Doppler Shift

Doppler frequency shift occurs if there is a speed difference between a transmitter and a receiver, such as an orbiting satellite and a ground station on the earth.

The CubeSatSim can simulated Doppler shift by assuming an orbit, calculating the frequency shift, then applying that new frequency each time the CubeSatSim begins a transmission. This allows for simulated Doppler shift for APRS, CW, SSTV, and Repeater modes. For continuous transmission modes such as FSK, BPSK, and FUNcube, Doppler shift can't be simulated.

The best way to observe Doppler shift is to use CW (Morse Code) mode, since the frequency can be updated after each character is transmitted. Also, when Doppler shift is enabled, the CubeSatSim will transmit true CW, instead of the FM modulated CW audio that it normally uses. You will decode this CW using USB or LSB decoding (CW modes also work, but the wider bandwidth of USB and LSB mode is easier). You will hear the tone of the CW signal change over time.

In APRS and SSTV modes, each time a new transmission starts, the frequency will be slightly different. In the Cross Band Repeater mode, each time you transmit and break the squelch, the repeated transmission frequency will be slightly different.

Here's how to try it. First switch to CW Mode (Morse Code) by pressing and holding the pushbutton until 5 blinks, or by logging into your Pi Zero 2 and typing this command:

   CubeSatSim/config -m

After a reboot or a restart, you should hear CW on 434.9 MHz. It will be the usual FM mode. To hear the Doppler shift, you will need a 70cm SSB radio or an SDR such as the RTL-SDR and the Raspberry Pi Ground Station (FIABv4) or your computer.

To turn on simulated Doppler shift, use this command:

   cd
   CubeSatSim/config -K

Type y or yes to enable Doppler shift, then type sim for Simulated Doppler Shift mode:

   pi@cubesatsimc:~ $ CubeSatSim/config -K
   
   CubeSatSim v2.2 configuration tool
   
   Editing the Doppler frequency shift setting in
   the configuration file for CubeSatSim
   
   Simulated Doppler frequency shift mode enabled
   
   Do you want Doppler frequency shift ON (y/n) 
   y
   
   Do you want simulated Doppler shift or rigctld Doppler (sim/rig)
   sim
   Simulated Doppler frequency shift mode enabled
   
   CubeSatSim configuration sim.cfg file updated to: 
   
   AMSAT 2 0.0000 0.0000 no 3 434.9 435 no 0 0 no 60 sim
   
   Restarting

After the restart or reboot, the sound of the CW will change. If you are still listening using FM, instead of tones, you will hear clicks. If you are looking on an SDR waterfall, the signal will be much skinnier. If you select USB decoding and click just to the left of the signal, you should hear the Morse Code tone again.

The blue transmit LED will also blink on and off with each dit and dah when Simulated Doppler Mode is enabled.

The frequency will be slightly shifted from your 434.9 MHz default (or another frequency if you used the CubeSatSim/config -F command to change it). The frequency will initially be close to 434.909 MHz, but it will decrease over time. The rate is also slightly slower.

As you listen over time, you should hear the note of the CW tone decrease. After a minute or two, the tone might go away as the frequency has shifted below where you are tuned. Click again to just to the left of the signal, and you will hear it again. About 5 minutes since you enabled, the frequency will be at 434.9 MHz, but it will also be changing rapidly. If you zoom into the waterfall (if you are using OpenWebRX, click on the magnifier plus icon in the lower right box a few times, you will be able to see the frequency bending over time.

Here's how it looks in OpenWebRX if you slow down the waterfall (by clicking on the Settings icon in the top left, logging in with the username admin and password raspberry and then click on General Settings then scroll down to Waterfall Settings and for FFT Speed set 2 then click Apply and Save as shown here: Screenshot 2026-07-22 at 9 17 39 PM

In this waterfall, you can see the "S" curve characteristic of a Doppler shifted satellite signal.

OpenWebRX waterfall showing Doppler Frequency Shift

After another 5 minutes, the frequency will not be changing very fast, and will be around 434.891 MHz. Then, the frequency will jump back to around 434.909, which is as if it is the start of a new pass (AOS).

If you switch to APRS mode, you will also see the APRS packet frequency shift over time in the same shape, although you won't hear a frequency shift like in CW mode.

In SSTV mode, at the start of each SSTV image, the simulated Doppler shift will be calculated, but the frequency will be constant for the 30 seconds it takes to transmit the whole image.

In the other modes (FSK, BPSK, and FUNcube), you will not see a simulated Doppler shift.

You can view the instantaneous doppler shifted frequencies by typing the command CubeSatSim/config

   pi@cubesatsim:~ $ CubeSatSim/config 
   
   CubeSatSim v2.2 configuration tool
   
   Mode is CW
   
   Simulated Telemetry is OFF
   No simulated failure
   Random Failure Mode is OFF
   Simulated Doppler frequency shift enabled
   Current TX and RX Frequency (Hz) is: 434891461 434991461
   Balloon mode is OFF
   Current command count is: 0
   Squelch level is: 3
   Radio command and control is OFF
   RX PL code is: 0 TX PL code is: 0
   Battery saver mode is OFF
   Transmit beacon telemetry is ON
   USB Sound Card detected
   FM TXC is present
   No RTL-SDR detected
   
   Current sim.cfg configuration file:
   AMSAT 6   0.0000   0.0000 no 3 434.9 435 no 0 0 no 60 sim
   To change, include an OPTION
   To see options, type config -h

Rigctl Control Doppler

A more advanced Doppler shift based on actual satellite passes can be generated using Rigctl Doppler Shift Mode.

You select this mode by:

   cd
   CubeSatSim/config -K

Then type y or yes to enable Doppler shift, then type rig for Rigctl Doppler Shift mode.

In this mode, a satellite tracking application, such as Gpredict, Radio Control is used to control the frequency and the doppler shift of the CubeSatSim. If you enable Boot to Graphical User Interface (GUI) on your Pi Zero 2, you can run Gpredict on your Pi Zero 2. Or, you can run it on any computer on the same network as the Pi Zero 2, including the FIABv4 Raspberry Pi Ground Station or your Windows or Mac laptop.

Clone this wiki locally