---
title: "Differential Radiometry"
description: Correlating RSSI measurements between two dishes to separate sky signals from receiver noise
sidebar:
  order: 7
---

import { Steps, Aside, LinkCard } from '@astrojs/starlight/components';

Single-dish radiometry with the BCM4515 is limited by receiver instability. The LNA gain drifts with temperature, the tuner's AGC adjusts in discrete steps, and the ADC's reference voltage wanders. When you see an RSSI change, you can't tell whether the sky got brighter or the receiver got noisier. This is the fundamental problem that drove radio astronomers to invent Dicke switching in 1946.

With two dishes, you get a simpler solution. Both receivers observe the same patch of sky simultaneously. Any RSSI variation that appears in both time series at the same moment is a real sky signal — because independent receivers don't drift in unison. Variations that appear in only one receiver are instrument noise. Cross-correlating the two time series extracts the common signal and suppresses the independent noise, improving sensitivity by a factor of approximately 1.4 (the square root of 2).

<Aside type="note" title="Two-dish experiment">
This is the only DVB experiment in this section that requires two complete Birdcage setups — two Carryout G2 dishes, two serial connections, two computers (or one computer with two serial ports). The equipment cost is real. The other DVB experiments work with a single dish.
</Aside>

## What you'll measure

- **Correlated sky signal** — RSSI variations common to both receivers, isolated from instrument noise
- **Receiver noise characterization** — the uncorrelated component tells you how much noise each receiver contributes
- **Atmospheric emission** — the troposphere radiates thermal noise at Ku-band that varies with water vapor content, detectable as a correlated signal when both dishes point at the same airmass
- **Scintillation separation** — tropospheric scintillation (rapid signal fluctuations caused by turbulent air cells) is correlated between dishes separated by less than a few hundred meters, while receiver noise is not

## How it works

Each dish measures a total power:

```
P_dish1(t) = S(t) + N1(t)
P_dish2(t) = S(t) + N2(t)
```

Where `S(t)` is the sky signal (identical for both dishes pointed at the same direction) and `N1(t)`, `N2(t)` are the independent receiver noise contributions. The cross-correlation of the two time series is:

```
<P1 * P2> = <S^2> + <S*N1> + <S*N2> + <N1*N2>
```

The last three terms average to zero over time because the noise is uncorrelated with both the signal and the other receiver's noise. What remains is `<S^2>` — the sky signal power, free of receiver contamination.

In practice, you don't need to compute a formal cross-correlation. Even simple simultaneous averaging — plotting both RSSI time series on the same graph and looking for features that appear in both — gives you most of the benefit.

## Prerequisites

- Two Carryout G2 dishes, both homed and calibrated
- Both dishes pointed at the same sky position (within 1 degree)
- Both LNAs enabled (`dvb` > `lnbdc odu`)
- Both serial connections logging to separate files with timestamps
- A method to synchronize timestamps between the two logs (NTP-synced clocks on both computers, or a shared timestamp source)

### Dish placement

The two dishes should be:

- **Close enough** that they see the same atmospheric conditions (within ~200 meters for tropospheric correlation)
- **Far enough** that they don't shadow each other or create ground reflections (at least 3 meters apart)
- **Same elevation above ground** — different ground reflections at different heights add uncorrelated systematic errors

Ideally, place them side by side on the same flat surface with 3-10 meters of separation.

## Procedure

<Steps>

1. **Home and calibrate both dishes independently.**

   On dish 1:
   ```
   TRK> mot
   MOT> h 0
   MOT> h 1
   ```

   On dish 2 (separate serial session):
   ```
   TRK> mot
   MOT> h 0
   MOT> h 1
   ```

2. **Point both dishes at the same sky position.** Choose a position away from known satellites for a clean radiometry baseline, or point at a satellite for signal correlation work.

   On both dishes:
   ```
   MOT> a 0 180
   MOT> a 1 45
   ```

   The pointing doesn't need to be perfect — 1 degree of agreement is sufficient for correlation work since the Carryout G2's beam is several degrees wide at Ku-band.

3. **Enable LNA on both dishes.**

   On each dish:
   ```
   MOT> q
   TRK> dvb
   DVB> lnbdc odu
   DVB> q
   TRK> dvb
   ```

4. **Establish baseline noise independently.** Take a 10-sample RSSI reading from each dish and record the mean and spread.

   On each dish:
   ```
   DVB> rssi 10
   Reads:10  RSSI[avg: 498  cur: 502]
   ```

   The two dishes will have different noise floors — component tolerances mean no two receivers are identical. That's fine. You're looking for correlated *changes*, not matching absolute values.

5. **Start synchronized RSSI logging.** On both dishes, begin streaming RSSI at the same time (coordinate by clock or a verbal countdown).

   On each dish:
   ```
   DVB> rssi 100
   ```

   For longer integration, repeat the `rssi 100` command in a loop or use the ADC submenu's streaming monitor:

   ```
   DVB> q
   TRK> adc
   ADC> m
   ```

   The ADC `m` command streams continuous RSSI readings with carriage-return overwriting. Log the serial output — each line contains a timestamp (from your logging tool) and the RSSI value.

6. **Run for an extended period.** Meaningful correlation requires enough data points to average down the noise. At one reading per second, collect at least 30 minutes of simultaneous data. Longer is better — overnight runs capture diurnal atmospheric variation.

7. **Introduce a known signal change.** To validate that your correlation pipeline is working, create a deliberate common-mode signal:

   - Slew both dishes across a strong satellite — both RSSI traces should peak at the same moment
   - Wait for a cloud to pass — atmospheric attenuation affects both dishes simultaneously

</Steps>

## Interpreting results

Align the two RSSI time series by timestamp and examine them together.

**Correlated features (real sky signal):**

| Feature | What it means |
|---------|---------------|
| Both traces dip simultaneously | Cloud or rain attenuation — troposphere absorbing Ku-band signal |
| Both traces rise simultaneously | Satellite or source entering the beam, or clearing weather |
| Both traces show same rapid fluctuations (seconds timescale) | Tropospheric scintillation — turbulent cells in the atmosphere |
| Both traces show same slow drift (hours timescale) | Diurnal atmospheric emission change (thermal) |

**Uncorrelated features (receiver noise):**

| Feature | What it means |
|---------|---------------|
| Step change in one trace only | AGC adjustment in that receiver |
| Slow drift in one trace only | Temperature-dependent gain drift in that LNA or tuner |
| Random fluctuation in one trace only | Receiver thermal noise (normal) |

### Quantifying the improvement

Compute the Pearson correlation coefficient between the two time series over a sliding window (e.g., 60-second windows). Values near 1.0 indicate the signal dominates (both dishes see the same thing). Values near 0 indicate receiver noise dominates (independent fluctuations). The correlation coefficient as a function of time shows when sky signals are present and when you're noise-limited.

<Aside type="tip" title="Simple correlation in Python">
For a quick check, dump both RSSI logs into arrays and compute `numpy.corrcoef(rssi1, rssi2)[0,1]`. A value above 0.3 indicates detectable common-mode signal. Above 0.7 means the sky signal is strong relative to receiver noise. Below 0.1 means your observation is receiver-noise-limited and you need longer integration time or a stronger source.
</Aside>

## Going further

- **Rain fade measurement** — point both dishes at a geostationary satellite during a rain event. The correlated RSSI drop measures atmospheric attenuation independent of receiver drift. Compare with the single-dish [rain fade experiment](/experiments/dvb/rain-fade/) to see how much receiver noise contaminates the single-dish measurement.
- **Atmospheric emission mapping** — tilt both dishes through a range of elevations. The atmosphere's thermal emission increases at lower elevation angles (longer path through the troposphere). Differential radiometry separates this real elevation-dependent signal from the receiver gain changes that also happen when motors move.
- **Baseline extension** — if the two dishes are separated by more than a few hundred meters, tropospheric scintillation decorrelates and becomes part of the noise rather than the signal. This lets you probe larger-scale atmospheric structure.
- **More than two dishes** — each additional dish adds another independent noise realization. With N dishes, the sensitivity improvement scales as the square root of N. Three dishes give a factor of 1.7, four dishes give a factor of 2.
- **Intensity interferometry** — while true phase-coherent interferometry requires synchronized local oscillators (which the BCM4515 doesn't provide), intensity correlation between separated dishes can detect spatial structure in bright sources. This is an advanced topic that requires careful calibration and long integration times.

<LinkCard title="Radio Telescope Mode" href="/guides/radio-telescope/" description="The RSSI measurement and azscanwxp capabilities that underpin all DVB radiometry experiments." />
<LinkCard title="Console Command Reference" href="/reference/console-commands/" description="DVB and ADC submenu commands for RSSI, AGC, and streaming measurements." />
