Add Experiments section — 14 RF science experiments across DVB and SDR
New section documents what you can do with the positioner beyond satellite TV: On-board DVB (7 experiments, ready to test): - Solar radio monitoring, rain fade radiometry, geostationary arc census, RFI mapping, antenna pattern measurement, DVB signal intelligence, differential radiometry External SDR (7 experiments, planned): - Hydrogen line (1420 MHz), NOAA HRPT (1.7 GHz), EME monitoring (1296 MHz), GPS/GNSS (1575 MHz), Iridium (1626 MHz), directional ADS-B (1090 MHz), Inmarsat L-band (~1.5 GHz) Also adds shared SDR hardware setup page (feeds, LNAs, bias tee safety, BladeRF/RTL-SDR specs), overview with status table, Experiments card on homepage, and sidebar with nested DVB/SDR groups.
This commit is contained in:
parent
6cd33cea9c
commit
317288218a
@ -34,6 +34,22 @@ export default defineConfig({
|
||||
label: 'Understanding',
|
||||
autogenerate: { directory: 'understanding' },
|
||||
},
|
||||
{
|
||||
label: 'Experiments',
|
||||
badge: { text: 'New', variant: 'tip' },
|
||||
items: [
|
||||
{ label: 'Overview', slug: 'experiments' },
|
||||
{ label: 'SDR Hardware Setup', slug: 'experiments/sdr-hardware' },
|
||||
{
|
||||
label: 'On-Board DVB (Ku-Band)',
|
||||
autogenerate: { directory: 'experiments/dvb' },
|
||||
},
|
||||
{
|
||||
label: 'External SDR (Multi-Band)',
|
||||
autogenerate: { directory: 'experiments/sdr' },
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: 'Project Journal',
|
||||
badge: { text: 'Living', variant: 'note' },
|
||||
|
||||
219
src/content/docs/experiments/dvb/antenna-pattern.mdx
Normal file
219
src/content/docs/experiments/dvb/antenna-pattern.mdx
Normal file
@ -0,0 +1,219 @@
|
||||
---
|
||||
title: "Antenna Pattern Measurement"
|
||||
description: Characterizing the dish's beam width and sidelobe structure using a known satellite as a point source
|
||||
sidebar:
|
||||
order: 5
|
||||
---
|
||||
|
||||
import { Steps, Aside, LinkCard } from '@astrojs/starlight/components';
|
||||
|
||||
A geostationary satellite is effectively a point source at infinity. Its angular size is negligible compared to the dish beam width, which means scanning the dish across the satellite and recording RSSI at each position maps the antenna's radiation pattern directly. This tells you the 3 dB beam width (half-power point), first sidelobe level, and overall beam shape -- numbers that matter for every other experiment in this section.
|
||||
|
||||
## What you'll measure
|
||||
|
||||
The dish's far-field radiation pattern in one or two planes (AZ cut, EL cut, or both). The key parameters:
|
||||
|
||||
| Parameter | Expected value (33" x 23" dish at 12 GHz) | Why it matters |
|
||||
|-----------|---------------------------------------------|---------------|
|
||||
| AZ beam width (3 dB) | ~2.0--2.5 degrees | Determines angular resolution for sky mapping |
|
||||
| EL beam width (3 dB) | ~3.0--4.0 degrees | Wider because the dish is shorter in the EL plane |
|
||||
| First sidelobe | -15 to -20 dB below peak | Sets dynamic range for nearby source separation |
|
||||
| Beam symmetry | Slightly elliptical | Reflects the physical dish geometry |
|
||||
|
||||
The theoretical beam width for a uniformly illuminated circular aperture is approximately `lambda / D` radians. At 12 GHz (lambda = 0.025 m) with an 84 cm dish, that gives about 1.7 degrees. The practical beam is wider because the feed illumination tapers toward the dish edges, and the reflector is elliptical rather than circular.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Motors homed and calibrated (see [Calibration & Homing](/guides/calibration/))
|
||||
- TV search disabled (see [Disabling TV Search](/guides/disabling-search/))
|
||||
- LNA enabled (`dvb` then `lnbdc odu`)
|
||||
- A strong geostationary satellite locked with RSSI > 1000 and Lock = 1
|
||||
- Serial logging to a file with timestamps
|
||||
- A spreadsheet or plotting tool (Python/matplotlib, gnuplot, LibreOffice Calc)
|
||||
|
||||
<Aside type="note" title="Why geostationary, not the Sun?">
|
||||
The Sun works as an alternate target (see [Solar Radio Monitoring](/experiments/dvb/solar-radio/)), but it has two disadvantages for pattern measurement: its 0.5 degree angular diameter partially fills the beam, which broadens the measured pattern; and its signal is weaker than a strong geostationary transponder, giving worse SNR on the sidelobes. A geostationary satellite is a true point source with a strong, stable signal -- ideal for this measurement.
|
||||
</Aside>
|
||||
|
||||
## Finding and locking a target satellite
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Calculate look angles for a geostationary satellite.** DISH Network 110W, 119W, or 129W are strong targets in North America. Use [dishpointer.com](https://www.dishpointer.com) or Stellarium with your latitude/longitude.
|
||||
|
||||
2. **Position the dish at the computed AZ/EL.**
|
||||
|
||||
```
|
||||
TRK> mot
|
||||
MOT> a 0 218.7
|
||||
MOT> a 1 38.5
|
||||
```
|
||||
|
||||
3. **Enable the LNA and verify signal.**
|
||||
|
||||
```
|
||||
MOT> q
|
||||
TRK> dvb
|
||||
DVB> lnbdc odu
|
||||
DVB> rssi 50
|
||||
Reads:50 RSSI[avg: 1305 cur: 1311]
|
||||
```
|
||||
|
||||
If RSSI is near the noise floor (~500), nudge AZ and EL in 0.5 degree increments until you find the peak. A locked signal should be well above 1000.
|
||||
|
||||
4. **Fine-tune for peak RSSI.** Adjust AZ in 0.2 degree steps, recording RSSI at each position. Park at the maximum. Repeat for EL. This is the beam center -- record this position as your reference (AZ_0, EL_0).
|
||||
|
||||
```
|
||||
DVB> q
|
||||
TRK> mot
|
||||
MOT> a 0 218.5
|
||||
MOT> q
|
||||
TRK> dvb
|
||||
DVB> rssi 50
|
||||
Reads:50 RSSI[avg: 1320 cur: 1318]
|
||||
```
|
||||
|
||||
Record: AZ_0 = 218.5, EL_0 = 38.5, RSSI_peak = 1320.
|
||||
|
||||
</Steps>
|
||||
|
||||
## Azimuth cut (E-plane pattern)
|
||||
|
||||
Scan in azimuth while holding elevation constant at EL_0. This traces the antenna pattern in the azimuth plane.
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Decide your scan range and step size.** A range of +/- 5 degrees from beam center covers the main lobe and first sidelobes. A step size of 0.1--0.2 degrees gives good resolution on the main lobe; 0.5 degrees is sufficient for the sidelobes.
|
||||
|
||||
For a high-resolution scan: 100 positions across 10 degrees = 0.1 degree steps.
|
||||
|
||||
2. **Move to the starting position.**
|
||||
|
||||
```
|
||||
TRK> mot
|
||||
MOT> a 0 213.5
|
||||
```
|
||||
|
||||
This is AZ_0 - 5.0.
|
||||
|
||||
3. **Step through azimuth, recording RSSI at each position.** At each step:
|
||||
|
||||
```
|
||||
MOT> a 0 213.5
|
||||
MOT> q
|
||||
TRK> dvb
|
||||
DVB> rssi 50
|
||||
Reads:50 RSSI[avg: 502 cur: 498]
|
||||
DVB> q
|
||||
TRK> mot
|
||||
MOT> a 0 213.7
|
||||
MOT> q
|
||||
TRK> dvb
|
||||
DVB> rssi 50
|
||||
Reads:50 RSSI[avg: 504 cur: 501]
|
||||
```
|
||||
|
||||
This is tedious manually. For a complete scan, use `azscan` in the MOT submenu:
|
||||
|
||||
```
|
||||
TRK> mot
|
||||
MOT> azscan 10 0 500
|
||||
```
|
||||
|
||||
This sweeps 10 degrees in AZ at the current EL, with a 500 ms delay between positions. The output includes RSSI at each position. Log the serial output.
|
||||
|
||||
4. **Record all (offset, RSSI) pairs.** Offset = AZ - AZ_0 for each position.
|
||||
|
||||
</Steps>
|
||||
|
||||
## Elevation cut (H-plane pattern)
|
||||
|
||||
Same procedure, but scan in elevation while holding azimuth constant at AZ_0.
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Return to beam center.**
|
||||
|
||||
```
|
||||
TRK> mot
|
||||
MOT> a 0 218.5
|
||||
```
|
||||
|
||||
2. **Step through elevation.** The EL range is constrained by the firmware limits (18--65 degrees on the G2). Scan as far as you can on each side of EL_0.
|
||||
|
||||
```
|
||||
MOT> a 1 33.5
|
||||
MOT> q
|
||||
TRK> dvb
|
||||
DVB> rssi 50
|
||||
```
|
||||
|
||||
Repeat in 0.2 degree EL steps across +/- 5 degrees (or to the firmware limit). There is no built-in EL scan command, so this must be done manually or scripted over serial.
|
||||
|
||||
3. **Record all (offset, RSSI) pairs.** Offset = EL - EL_0 for each position.
|
||||
|
||||
</Steps>
|
||||
|
||||
<Aside type="tip" title="Scripting the measurement">
|
||||
Manual stepping through 50--100 positions is slow and error-prone. Birdcage's rotctld interface accepts position commands over TCP, and the RSSI extension (`R 10` on port 4533) returns signal strength. A simple Python loop that sets position, waits for settle, reads RSSI, and logs the result automates the entire scan in minutes. See the [Radio Telescope Guide](/guides/radio-telescope/) for the rotctld RSSI protocol.
|
||||
</Aside>
|
||||
|
||||
## Processing the data
|
||||
|
||||
### Normalize to dB
|
||||
|
||||
Convert raw RSSI to a relative power scale in dB, referenced to the peak:
|
||||
|
||||
```
|
||||
pattern_dB(offset) = 10 * log10(RSSI(offset) / RSSI_peak)
|
||||
```
|
||||
|
||||
The peak is 0 dB by definition. The 3 dB beam width is the angular distance between the two points where `pattern_dB = -3`.
|
||||
|
||||
### Example AZ pattern data
|
||||
|
||||
| AZ offset (deg) | RSSI | Pattern (dB) |
|
||||
|------------------|------|-------------|
|
||||
| -3.0 | 510 | -4.13 |
|
||||
| -2.0 | 620 | -3.28 |
|
||||
| -1.5 | 850 | -1.91 |
|
||||
| -1.0 | 1150 | -0.60 |
|
||||
| -0.5 | 1290 | -0.10 |
|
||||
| 0.0 | 1320 | 0.00 |
|
||||
| +0.5 | 1295 | -0.08 |
|
||||
| +1.0 | 1140 | -0.64 |
|
||||
| +1.5 | 860 | -1.86 |
|
||||
| +2.0 | 615 | -3.31 |
|
||||
| +3.0 | 505 | -4.17 |
|
||||
|
||||
In this example, the -3 dB points are near +/- 2.0 degrees, giving a 3 dB beam width of approximately 4.0 degrees in azimuth. (These are illustrative values -- your actual pattern will depend on the dish surface accuracy, feed position, and frequency.)
|
||||
|
||||
### Plotting
|
||||
|
||||
Plot `pattern_dB` vs. offset angle for both AZ and EL cuts on the same graph. The AZ cut will be narrower (larger dish dimension in AZ) and the EL cut wider (smaller dish dimension in EL). Overlay the theoretical pattern for a uniformly illuminated elliptical aperture if you want a comparison reference.
|
||||
|
||||
## Interpreting the pattern
|
||||
|
||||
| Feature | What it tells you |
|
||||
|---------|-------------------|
|
||||
| 3 dB beam width | Angular resolution for sky mapping and satellite discrimination |
|
||||
| Main lobe symmetry | Feed alignment quality -- asymmetric main lobe means the feed is off-axis |
|
||||
| First sidelobe level | How well the dish rejects signals from adjacent satellites (typically 2 degrees apart in geostationary arc) |
|
||||
| Sidelobe asymmetry | Feed offset direction or reflector surface deformations |
|
||||
| Noise floor offset | Pattern measurement dynamic range -- if sidelobes disappear into the noise floor at -10 dB, your effective dynamic range is 10 dB |
|
||||
|
||||
If the beam is significantly wider than expected, the feed may not be at the reflector's focal point. Adjust the feed position along the focal axis and re-measure. The optimal position minimizes beam width and maximizes peak RSSI simultaneously.
|
||||
|
||||
## Going further
|
||||
|
||||
**Full 2D pattern.** Combine AZ and EL scans at multiple cross-cuts (e.g., AZ cuts at EL_0, EL_0 + 1, EL_0 + 2) to build a 2D contour map of the beam. This reveals any coma or astigmatism from feed misalignment.
|
||||
|
||||
**Dual-polarization pattern.** Measure the pattern at both H-pol and V-pol using `peak rssits` at each position. The cross-pol pattern (sidelobes in the orthogonal polarization) indicates the dish's polarization purity, which matters for experiments comparing polarization channels.
|
||||
|
||||
**Frequency dependence.** If you can select different transponder frequencies with `dvb t <n>`, measure the pattern at two or three frequencies. The beam should narrow at higher frequencies (shorter wavelength). The ratio of beam widths should be approximately proportional to the ratio of wavelengths.
|
||||
|
||||
**Calibrating sky maps.** The beam pattern is the point spread function (PSF) of your radio telescope. Deconvolving the PSF from a sky map (from the [Radio Telescope Guide](/guides/radio-telescope/) workflow) improves angular resolution and separates closely spaced sources. This is the same technique used by professional radio observatories.
|
||||
|
||||
<LinkCard title="Solar Radio Monitoring" href="/experiments/dvb/solar-radio/" description="The Sun as an alternate beam pattern target -- useful when no strong satellite is available at your elevation." />
|
||||
<LinkCard title="Radio Telescope Guide" href="/guides/radio-telescope/" description="The azscanwxp workflow that produces sky maps. Beam pattern data directly improves the quality of those maps." />
|
||||
<LinkCard title="Console Command Reference" href="/reference/console-commands/" description="Full details on mot a, azscan, dvb rssi, and peak rssits commands." />
|
||||
177
src/content/docs/experiments/dvb/differential-radiometry.mdx
Normal file
177
src/content/docs/experiments/dvb/differential-radiometry.mdx
Normal file
@ -0,0 +1,177 @@
|
||||
---
|
||||
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." />
|
||||
190
src/content/docs/experiments/dvb/dvb-sigint.mdx
Normal file
190
src/content/docs/experiments/dvb/dvb-sigint.mdx
Normal file
@ -0,0 +1,190 @@
|
||||
---
|
||||
title: "DVB Signal Intelligence"
|
||||
description: Identifying active transponders, modulation parameters, and carrier characteristics through blind scanning
|
||||
sidebar:
|
||||
order: 6
|
||||
---
|
||||
|
||||
import { Steps, Aside, LinkCard } from '@astrojs/starlight/components';
|
||||
|
||||
The BCM4515 tuner includes a blind scan mode that searches for DVB-S and DVB-S2 carriers without knowing their parameters in advance. Combined with the transponder table generator, channel parameter display, and streaming AGC/SNR/NID readouts, you can fully characterize the signals transmitted by any satellite in the dish's beam — frequency, symbol rate, modulation type, FEC rate, and network identity.
|
||||
|
||||
This is signal intelligence at the RF physical layer. You're identifying what carriers exist and how they're modulated, not decoding content. The output tells you which transponders are active, how they're configured, and how strong they are — enough to identify the satellite operator and compare against published transponder plans.
|
||||
|
||||
## What you'll measure
|
||||
|
||||
- **Transponder inventory** — frequency, symbol rate, and modulation for every detectable carrier on a given satellite
|
||||
- **Signal quality** — RSSI, SNR, and AGC levels per transponder
|
||||
- **Network identity** — the DVB Network ID (NID) embedded in each carrier's transport stream, which identifies the broadcast network
|
||||
- **Lock statistics** — carrier lock reliability, glitch count, and signal stability over time
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Motors homed and calibrated (see [Calibration & Homing](/guides/calibration/))
|
||||
- TV search disabled (see [Disabling TV Search](/guides/disabling-search/))
|
||||
- A target satellite in the beam — either a known satellite from the [Geostationary Census](/experiments/dvb/geostationary-census/) or a position estimated from orbital data
|
||||
- Serial output logged to a file
|
||||
|
||||
<Aside type="note" title="Blind scan range">
|
||||
The firmware's default blind scan parameters cover 18000-24000 ksps (kilosymbols per second) symbol rate range with 0.35 rolloff. This handles most Ku-band DVB-S/S2 carriers. Very low symbol rate carriers (narrowband data channels, occasional-use transponders) below 18000 ksps may not be detected.
|
||||
</Aside>
|
||||
|
||||
## Procedure
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Point the dish at a target satellite.** Use a known position from a previous census, or estimate from orbital data.
|
||||
|
||||
```
|
||||
TRK> mot
|
||||
MOT> a 0 195
|
||||
MOT> a 1 42
|
||||
```
|
||||
|
||||
Replace the azimuth and elevation with values appropriate for your target and location.
|
||||
|
||||
2. **Enable the LNA and verify signal.**
|
||||
|
||||
```
|
||||
MOT> q
|
||||
TRK> dvb
|
||||
DVB> lnbdc odu
|
||||
DVB> rssi 10
|
||||
Reads:10 RSSI[avg: 872 cur: 880]
|
||||
```
|
||||
|
||||
RSSI well above the ~500 noise floor confirms a satellite signal is present. If you're near the noise floor, adjust pointing in small increments (0.5-degree steps on AZ and EL) until RSSI peaks.
|
||||
|
||||
3. **Check the current tuner configuration.**
|
||||
|
||||
```
|
||||
DVB> config
|
||||
```
|
||||
|
||||
This reports the BCM4515 hardware and firmware version (ID 0x4515, Rev B0, FW v113.37 on the G2). Useful as a baseline reference.
|
||||
|
||||
```
|
||||
DVB> dis
|
||||
```
|
||||
|
||||
Shows the currently configured channel parameters — frequency, symbol rate, LNB polarity. This is what the tuner will start from before blind scanning.
|
||||
|
||||
4. **Run the blind scan.**
|
||||
|
||||
```
|
||||
DVB> srch
|
||||
```
|
||||
|
||||
The blind scan sweeps across frequencies and symbol rates looking for DVB carriers. This takes several minutes per satellite. The firmware tries each combination and reports found carriers.
|
||||
|
||||
You can check or modify the search mode:
|
||||
|
||||
```
|
||||
DVB> srch_mode
|
||||
```
|
||||
|
||||
5. **Generate the transponder table.** After the blind scan completes, build the table of found carriers.
|
||||
|
||||
```
|
||||
DVB> table
|
||||
```
|
||||
|
||||
This produces a list of transponders with their frequencies and basic parameters. For extended information:
|
||||
|
||||
```
|
||||
DVB> tablex
|
||||
```
|
||||
|
||||
The extended table includes additional modulation and coding details.
|
||||
|
||||
6. **Examine individual transponders.** Select a transponder by index and read its parameters.
|
||||
|
||||
```
|
||||
DVB> t 1
|
||||
DVB> dis
|
||||
```
|
||||
|
||||
The `dis` output shows the selected transponder's frequency, symbol rate, and LNB polarity. Cycle through all found transponders (`t 1`, `t 2`, `t 3`, ...) and record each one's parameters.
|
||||
|
||||
7. **Measure signal quality per transponder.** For each transponder of interest:
|
||||
|
||||
```
|
||||
DVB> rssi 20
|
||||
Reads:20 RSSI[avg: 945 cur: 940]
|
||||
```
|
||||
|
||||
For streaming AGC, SNR, and NID:
|
||||
|
||||
```
|
||||
DVB> agc
|
||||
```
|
||||
|
||||
The `agc` command streams continuous RF AGC, IF AGC, SNR, and NID readings. The NID (Network ID) is a 16-bit identifier assigned by the broadcast operator — `FFFF` means no signal or no transport stream. Interrupt with `q` or any other command.
|
||||
|
||||
8. **Check lock statistics.**
|
||||
|
||||
```
|
||||
DVB> ls
|
||||
```
|
||||
|
||||
This reports total reads, no-signal count, glitch count, and an NID table. A high glitch count relative to total reads indicates a marginal signal — possibly edge-of-beam or a weak transponder.
|
||||
|
||||
9. **Repeat for V-pol.** The initial scan uses the current LNB voltage. Switch polarization and rescan to find transponders on the other polarization.
|
||||
|
||||
```
|
||||
DVB> lnbdc odu
|
||||
DVB> srch
|
||||
DVB> table
|
||||
```
|
||||
|
||||
Many satellites split their capacity across H-pol and V-pol. A complete inventory requires scanning both.
|
||||
|
||||
</Steps>
|
||||
|
||||
## Interpreting results
|
||||
|
||||
### Transponder parameters
|
||||
|
||||
Each transponder is characterized by a set of physical-layer parameters:
|
||||
|
||||
| Parameter | Typical values | What it tells you |
|
||||
|-----------|---------------|-------------------|
|
||||
| Frequency | 11.7-12.7 GHz (Ku-band) | Carrier center frequency after LNB downconversion |
|
||||
| Symbol rate | 18000-30000 ksps | Channel bandwidth — higher rates carry more data |
|
||||
| Modulation | QPSK, 8PSK | DVB-S uses QPSK; DVB-S2 adds 8PSK for higher throughput |
|
||||
| FEC | 1/2, 2/3, 3/4, 5/6, 7/8 | Error correction overhead — lower ratios are more robust |
|
||||
| Rolloff | 0.20, 0.25, 0.35 | Spectral shaping factor — affects occupied bandwidth |
|
||||
| NID | 16-bit hex | Network identity — identifies the broadcast operator |
|
||||
|
||||
### Identifying the satellite
|
||||
|
||||
Cross-reference your transponder list against online databases:
|
||||
|
||||
- **[LyngSat](https://www.lyngsat.com/)** — comprehensive transponder plans for nearly every satellite, organized by orbital position
|
||||
- **[SatBeams](https://www.satbeams.com/)** — searchable satellite database with footprint maps and transponder lists
|
||||
- **[King of Sat](https://en.kingofsat.net/)** — European-focused but covers global Ku-band
|
||||
|
||||
Match the frequencies, symbol rates, and NIDs you measured against the published data for satellites at the orbital slot you're pointing at. A good match confirms satellite identity. Discrepancies — transponders you found that aren't listed, or listed ones you couldn't detect — are worth documenting.
|
||||
|
||||
### Signal quality assessment
|
||||
|
||||
| Metric | Good | Marginal | Poor |
|
||||
|--------|------|----------|------|
|
||||
| RSSI | > 900 | 600-900 | < 600 |
|
||||
| SNR | > 10 dB | 5-10 dB | < 5 dB |
|
||||
| Lock | Stable (Lock=1 persistent) | Intermittent | No lock |
|
||||
| Glitch count | < 1% of total reads | 1-5% | > 5% |
|
||||
|
||||
<Aside type="tip" title="Dual-polarization RSSI shortcut">
|
||||
The PEAK submenu's `rssits` command measures both polarizations in a single reading without switching LNB voltage manually. From the root menu: `peak` then `rssits`. It reports `Even_sig` (H-pol/18V) and `Odd_sig` (V-pol/13V) simultaneously. Useful for a quick check before committing to a full dual-pol scan.
|
||||
</Aside>
|
||||
|
||||
## Going further
|
||||
|
||||
- **Track changes over time** — satellite operators regularly add, remove, and reconfigure transponders. Monthly scans of the same satellite build a history of its transponder plan evolution.
|
||||
- **Identify unlisted carriers** — transponders that appear in your scan but not in LyngSat or SatBeams may be occasional-use capacity (news gathering, event coverage), military/government transponders, or recently activated carriers not yet cataloged.
|
||||
- **Compare satellites at adjacent slots** — GEO satellites are spaced 2-3 degrees apart at Ku-band. Point at neighboring slots and compare transponder plans. Some operators (e.g., SES, Intelsat) cluster related satellites at adjacent positions.
|
||||
- **Automated monitoring** — script the `birdcage` CLI to cycle through known satellite positions, run blind scans at each one, and diff the results against previous scans. Alert on new or missing transponders.
|
||||
|
||||
<LinkCard title="Geostationary Arc Census" href="/experiments/dvb/geostationary-census/" description="Finding satellites to characterize — the natural first step before DVB signal intelligence." />
|
||||
<LinkCard title="Console Command Reference" href="/reference/console-commands/" description="Full DVB submenu command inventory including blind scan, transponder table, and DiSEqC commands." />
|
||||
182
src/content/docs/experiments/dvb/geostationary-census.mdx
Normal file
182
src/content/docs/experiments/dvb/geostationary-census.mdx
Normal file
@ -0,0 +1,182 @@
|
||||
---
|
||||
title: "Geostationary Arc Census"
|
||||
description: Mapping every detectable satellite across the full azimuth arc using automated DVB sweeps
|
||||
sidebar:
|
||||
order: 3
|
||||
---
|
||||
|
||||
import { Steps, Aside, LinkCard } from '@astrojs/starlight/components';
|
||||
|
||||
The geostationary arc is a ring of satellites parked at 35,786 km altitude, orbiting at the same rate the Earth rotates. From any fixed location on the ground, these satellites appear motionless — arranged in a band across the southern sky (in the Northern Hemisphere) at a specific elevation that depends on your latitude. The Carryout G2 can sweep the full azimuth range, measure RSSI and DVB lock at each position, and produce a complete census of every Ku-band satellite visible from your site.
|
||||
|
||||
## What you'll measure
|
||||
|
||||
A full-arc census produces three data products:
|
||||
|
||||
- **RSSI profile** — a signal strength curve across 360 degrees of azimuth, showing peaks at each satellite's orbital slot
|
||||
- **Lock detections** — positions where the BCM4515 achieves DVB carrier lock, confirming active DVB-S/S2 transmission
|
||||
- **SNR readings** — signal quality at each locked position, useful for distinguishing strong regional satellites from weak ones at the edge of your coverage
|
||||
|
||||
From the Americas, expect to detect 10-30 satellites depending on your longitude, local horizon obstructions, and atmospheric conditions. The DISH Network fleet (110W, 119W, 129W), DirecTV (99W, 101W, 103W), and Bell TV (82W, 91W) satellites produce the strongest signals in North America.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Motors homed and calibrated (see [Calibration & Homing](/guides/calibration/))
|
||||
- TV search disabled (see [Disabling TV Search](/guides/disabling-search/))
|
||||
- LNA enabled (`dvb` > `lnbdc odu`)
|
||||
- Serial output logged to a file for post-processing (e.g., `picocom --logfile census.log`)
|
||||
|
||||
You also need the GEO arc elevation for your latitude. The arc passes through a range of elevations depending on the satellite's longitude relative to yours, but the midpoint elevation (due south) is a good starting position:
|
||||
|
||||
| Latitude | GEO arc elevation (due south) |
|
||||
|----------|-------------------------------|
|
||||
| 25 N | ~55 deg |
|
||||
| 30 N | ~50 deg |
|
||||
| 35 N | ~46 deg |
|
||||
| 40 N | ~41 deg |
|
||||
| 45 N | ~36 deg |
|
||||
| 50 N | ~31 deg |
|
||||
|
||||
The actual arc traces a shallow curve across the sky — highest due south, lower toward the east and west horizons. For a first census, a single EL value near the midpoint captures most satellites. A multi-elevation sweep (described below) catches the ones at extreme orbital slots.
|
||||
|
||||
<Aside type="caution" title="Elevation limits">
|
||||
The Carryout G2's firmware enforces an elevation range of 18-65 degrees. If the GEO arc at your latitude exceeds 65 degrees due south (below ~22 N latitude), you won't be able to reach the highest part of the arc. This experiment works best between 25 N and 55 N latitude.
|
||||
</Aside>
|
||||
|
||||
## Procedure
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Home the motors and set elevation.**
|
||||
|
||||
```
|
||||
TRK> mot
|
||||
MOT> h 0
|
||||
MOT> h 1
|
||||
MOT> a 1 41
|
||||
```
|
||||
|
||||
Replace `41` with the GEO arc elevation for your latitude from the table above.
|
||||
|
||||
2. **Enable the LNA.**
|
||||
|
||||
```
|
||||
MOT> q
|
||||
TRK> dvb
|
||||
DVB> lnbdc odu
|
||||
DVB> q
|
||||
TRK> mot
|
||||
```
|
||||
|
||||
3. **Verify RSSI baseline.** Point away from any known satellite and check the noise floor.
|
||||
|
||||
```
|
||||
MOT> q
|
||||
TRK> dvb
|
||||
DVB> rssi 10
|
||||
Reads:10 RSSI[avg: 498 cur: 502]
|
||||
DVB> q
|
||||
TRK> mot
|
||||
```
|
||||
|
||||
Readings near 489-502 with LNA active confirm the receiver is working. If you see ~233-238, the LNA is not powered.
|
||||
|
||||
4. **Run the H-pol sweep.** The boot default is 18V (H-pol). Sweep the full azimuth range at 1-degree resolution, cycling 32 transponders at each position.
|
||||
|
||||
```
|
||||
MOT> azscanwxp 0 360 100 32
|
||||
```
|
||||
|
||||
This takes approximately 20-40 minutes depending on dwell time per transponder. Each measurement outputs:
|
||||
|
||||
```
|
||||
Motor:0 Angle:<cdeg> RSSI:<adc> Lock:<0/1> SNR:<dB> Scan Delta:<step>
|
||||
```
|
||||
|
||||
Let it run to completion. Do not send any serial input during the sweep.
|
||||
|
||||
5. **Run the V-pol sweep.** Switch to 13V (V-pol) and repeat.
|
||||
|
||||
```
|
||||
MOT> q
|
||||
TRK> dvb
|
||||
DVB> lnbdc odu
|
||||
DVB> q
|
||||
TRK> mot
|
||||
MOT> azscanwxp 0 360 100 32
|
||||
```
|
||||
|
||||
Many satellites transmit on both polarizations using different transponders. Running both sweeps doubles your detection rate.
|
||||
|
||||
6. **Optional: multi-elevation sweep.** The GEO arc curves downward at the east and west edges. Run additional sweeps at elevations 3-5 degrees above and below your midpoint to catch satellites at extreme orbital slots.
|
||||
|
||||
```
|
||||
MOT> a 1 38
|
||||
MOT> azscanwxp 0 360 100 32
|
||||
MOT> a 1 44
|
||||
MOT> azscanwxp 0 360 100 32
|
||||
```
|
||||
|
||||
</Steps>
|
||||
|
||||
## Interpreting results
|
||||
|
||||
Parse the serial log to extract the `Angle`, `RSSI`, `Lock`, and `SNR` fields. Plot RSSI versus azimuth angle — satellites appear as distinct peaks rising above the ~500 noise floor.
|
||||
|
||||
**What the peaks mean:**
|
||||
|
||||
| Signal characteristic | Interpretation |
|
||||
|-----------------------|----------------|
|
||||
| RSSI > 1000, Lock=1, SNR > 5 dB | Strong satellite with active DVB carriers |
|
||||
| RSSI 600-1000, Lock=0 | Weak satellite or non-DVB carrier (C-band spillover, beacon-only) |
|
||||
| RSSI > 1000, Lock=1, multiple adjacent angles | Wide beam — dish is resolving the satellite's angular extent (rare for GEO at Ku-band) |
|
||||
| Narrow RSSI peak, no lock | Possible non-DVB Ku-band emitter or adjacent satellite sidelobe |
|
||||
|
||||
### Identifying satellites by position
|
||||
|
||||
To identify satellites, convert each peak's azimuth to a true bearing (accounting for your dish's North alignment) and compare against the known GEO orbital slot for that bearing from your location. Online tools like [SatBeams](https://www.satbeams.com/) or the [UCS Satellite Database](https://www.ucsusa.org/resources/satellite-database) provide orbital longitudes for all registered GEO satellites.
|
||||
|
||||
<Aside type="tip" title="Azimuth to orbital longitude">
|
||||
The relationship between azimuth bearing and GEO orbital longitude depends on your ground station's latitude and longitude. For a quick check: due south corresponds to the orbital longitude equal to your own longitude. East of south maps to satellites east of your longitude, and west of south maps to satellites west. The exact mapping is non-linear — use a satellite look-angle calculator for precise conversion.
|
||||
</Aside>
|
||||
|
||||
### Post-processing the scan data
|
||||
|
||||
The `azscanwxp` output is line-oriented and straightforward to parse. Each line contains fixed-format fields separated by spaces. A minimal Python script to extract the data:
|
||||
|
||||
```python
|
||||
import re
|
||||
|
||||
pattern = re.compile(
|
||||
r"Motor:(\d+)\s+Angle:(-?\d+)\s+RSSI:(\d+)\s+"
|
||||
r"Lock:(\d)\s+SNR:(-?\d+)\s+Scan Delta:(\d+)"
|
||||
)
|
||||
|
||||
with open("census.log") as f:
|
||||
for line in f:
|
||||
m = pattern.search(line)
|
||||
if m:
|
||||
az_cdeg = int(m.group(2))
|
||||
rssi = int(m.group(3))
|
||||
lock = int(m.group(4))
|
||||
snr = int(m.group(5))
|
||||
print(f"{az_cdeg/100:.1f},{rssi},{lock},{snr}")
|
||||
```
|
||||
|
||||
Plot the resulting CSV as RSSI versus azimuth. Peaks above the noise floor are satellite detections. Lock=1 markers on the plot confirm DVB carrier presence. Satellites with high RSSI but no lock are transmitting non-DVB signals (telemetry beacons, C-band spillover into the Ku-band feed, or non-standard modulation).
|
||||
|
||||
### Dual-polarization comparison
|
||||
|
||||
Overlay the H-pol and V-pol sweeps on the same plot. Satellites that appear in both are transmitting on both polarizations (most do). Satellites that appear in only one polarization are either single-pol or too weak on the other polarization to detect. The RSSI difference between H-pol and V-pol at the same azimuth reflects the satellite's polarization plan and the dish's cross-polarization isolation.
|
||||
|
||||
## Going further
|
||||
|
||||
- **Repeated surveys over weeks** detect new satellite launches, orbital relocations, and end-of-life drift. A satellite that wasn't there last month is either newly launched or repositioned from another orbital slot.
|
||||
- **Seasonal variation** — atmospheric attenuation changes with weather. Run the census on clear days for the most consistent baseline, then compare against rainy-day runs to see which satellites drop below the detection threshold first (the weakest ones).
|
||||
- **Compare with published catalogs** — the [UCS Satellite Database](https://www.ucsusa.org/resources/satellite-database) lists all known GEO objects. Your census will find a subset (Ku-band DVB transmitters only), but any detection not in the database is worth investigating.
|
||||
- **Beam calibration** — once you've identified a strong satellite, use it as a reference source for the [antenna pattern measurement](/experiments/dvb/antenna-pattern/) experiment.
|
||||
- **Feed the census into DVB SIGINT** — satellites you detect here become targets for the [DVB Signal Intelligence](/experiments/dvb/dvb-sigint/) experiment, where you characterize each satellite's transponder plan in detail.
|
||||
- **Resolution refinement** — if two satellites are close together (2-3 degrees), decrease the scan resolution from 100 centidegrees (1 degree) to 25 or 50 centidegrees to resolve them. The Carryout G2's beam width is approximately 3-4 degrees at Ku-band, so satellites closer than that will merge into a single peak.
|
||||
|
||||
<LinkCard title="Radio Telescope Mode" href="/guides/radio-telescope/" description="Detailed guide to the azscanwxp command, output format, and sky mapping workflow." />
|
||||
<LinkCard title="Console Command Reference" href="/reference/console-commands/" description="Full firmware command inventory for the DVB, MOT, and PEAK submenus." />
|
||||
181
src/content/docs/experiments/dvb/rain-fade.mdx
Normal file
181
src/content/docs/experiments/dvb/rain-fade.mdx
Normal file
@ -0,0 +1,181 @@
|
||||
---
|
||||
title: "Rain Fade Radiometry"
|
||||
description: Measuring atmospheric attenuation at Ku-band by tracking RSSI on a geostationary satellite through weather events
|
||||
sidebar:
|
||||
order: 2
|
||||
---
|
||||
|
||||
import { Steps, Aside, LinkCard } from '@astrojs/starlight/components';
|
||||
|
||||
Rain fade is the attenuation of microwave signals by precipitation -- the same effect that kills satellite TV reception during thunderstorms. At Ku-band (10--12 GHz), raindrops are a significant fraction of a wavelength and scatter incoming RF energy. The heavier the rain, the more signal you lose.
|
||||
|
||||
By locking the dish onto a geostationary satellite (a constant, known signal source) and logging RSSI over hours or days, you turn the Carryout G2 into a calibrated atmospheric radiometer. Your measurements can be directly compared against the ITU rain attenuation models used by satellite link engineers worldwide.
|
||||
|
||||
## What you'll measure
|
||||
|
||||
Signal attenuation in dB caused by precipitation along the dish's line of sight. Typical values at Ku-band:
|
||||
|
||||
| Rain rate | Expected attenuation |
|
||||
|-----------|---------------------|
|
||||
| Light rain (2 mm/hr) | 1--3 dB |
|
||||
| Moderate rain (10 mm/hr) | 5--10 dB |
|
||||
| Heavy rain (25 mm/hr) | 10--20 dB |
|
||||
| Downpour (50+ mm/hr) | 20--40 dB |
|
||||
|
||||
These numbers are path-integrated -- they depend on your elevation angle (longer slant path through rain at low EL) and the vertical extent of the rain cell. A satellite at 40 degrees elevation has a slant path through a 3 km rain cell of about 4.7 km. At 20 degrees elevation, the same rain cell produces a slant path of about 8.8 km -- nearly double the attenuation for the same rain rate on the ground.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Motors homed and calibrated (see [Calibration & Homing](/guides/calibration/))
|
||||
- TV search disabled (see [Disabling TV Search](/guides/disabling-search/))
|
||||
- LNA enabled (`dvb` then `lnbdc odu`)
|
||||
- Known geostationary satellite position for your location -- DISH Network 110W, 119W, or 129W are strong targets in the continental US
|
||||
- A local weather data source: personal weather station, Weather Underground, or NOAA ASOS station for rainfall rate
|
||||
- Serial logging to a file with timestamps
|
||||
- Patience -- you need actual rain, which is not on-demand
|
||||
|
||||
<Aside type="note" title="Geostationary look angles">
|
||||
A geostationary satellite sits at a fixed AZ/EL from your location. Use a satellite look angle calculator (e.g., [dishpointer.com](https://www.dishpointer.com) or Stellarium with satellites plugin) to find the AZ/EL for your specific latitude/longitude. For a station at 40N latitude, DISH 119W is roughly AZ 220, EL 40 -- but calculate your own.
|
||||
</Aside>
|
||||
|
||||
## Locking onto the beacon
|
||||
|
||||
Before you can measure rain fade, you need a stable reference signal. A locked geostationary transponder gives you a steady RSSI baseline.
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Position the dish at the satellite's computed AZ/EL.**
|
||||
|
||||
```
|
||||
TRK> mot
|
||||
MOT> a 0 220.5
|
||||
MOT> a 1 40.2
|
||||
```
|
||||
|
||||
2. **Enable the LNA and check for signal.**
|
||||
|
||||
```
|
||||
MOT> q
|
||||
TRK> dvb
|
||||
DVB> lnbdc odu
|
||||
DVB> rssi 50
|
||||
Reads:50 RSSI[avg: 1247 cur: 1251]
|
||||
```
|
||||
|
||||
An RSSI well above 1000 indicates a strong signal. If you are near the noise floor (~500), the dish is not pointed at the satellite -- adjust AZ/EL in 0.5 degree increments.
|
||||
|
||||
3. **Verify carrier lock.**
|
||||
|
||||
```
|
||||
DVB> qls
|
||||
```
|
||||
|
||||
The quick lock status should show Lock = 1 with a positive SNR value. If Lock = 0, you are either off-target or the transponder configuration does not match. Try selecting different transponders with `t <n>` and checking each.
|
||||
|
||||
4. **Fine-tune pointing for maximum RSSI.** Nudge AZ by +/- 0.5 degrees while watching RSSI. Then do the same for EL. Park at the peak.
|
||||
|
||||
```
|
||||
DVB> q
|
||||
TRK> mot
|
||||
MOT> a 0 220.3
|
||||
MOT> q
|
||||
TRK> dvb
|
||||
DVB> rssi 50
|
||||
Reads:50 RSSI[avg: 1285 cur: 1290]
|
||||
```
|
||||
|
||||
5. **Record your clear-sky baseline RSSI and the exact AZ/EL.** This is your 0 dB reference point. All attenuation measurements are relative to this value.
|
||||
|
||||
</Steps>
|
||||
|
||||
## Logging RSSI through a weather event
|
||||
|
||||
The dish stays locked at the satellite's position. The atmosphere changes; the dish does not move.
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Start periodic RSSI logging.** Use a script or manual samples at regular intervals (every 1--5 minutes). For each sample:
|
||||
|
||||
```
|
||||
DVB> rssi 100
|
||||
Reads:100 RSSI[avg: 1283 cur: 1279]
|
||||
```
|
||||
|
||||
The 100-sample average smooths out short-term fluctuations. Record the timestamp and the `avg` value.
|
||||
|
||||
Alternatively, use `adc m` for continuous streaming if you want sub-second resolution during a fast-moving storm cell.
|
||||
|
||||
2. **Log weather data simultaneously.** Record rainfall rate (mm/hr) from your weather station at the same timestamps. Temperature and humidity are useful secondary data.
|
||||
|
||||
3. **Continue through the weather event.** A passing thunderstorm might last 30--90 minutes. A frontal system can produce measurable attenuation for hours. Let the logger run.
|
||||
|
||||
4. **Record the clear-sky recovery.** After the rain stops, RSSI should return to within a few counts of your original baseline. If it does not, check for water on the dish surface (which also attenuates) or a temperature drift in the receiver.
|
||||
|
||||
</Steps>
|
||||
|
||||
<Aside type="tip" title="Automating the data collection">
|
||||
For unattended logging, write a script that opens the serial port, sends `dvb rssi 100` at a fixed interval, and parses the response. Birdcage's rotctld server exposes RSSI over TCP (`R 10` command on port 4533), which may be easier to script against than raw serial. See the [Radio Telescope Guide](/guides/radio-telescope/) for the rotctld RSSI extensions.
|
||||
</Aside>
|
||||
|
||||
## Converting RSSI to attenuation
|
||||
|
||||
RSSI values from the BCM4515 are raw ADC counts, not calibrated power in dBm. To get attenuation in dB, you work in relative terms:
|
||||
|
||||
```
|
||||
attenuation_dB = 10 * log10(RSSI_clear / RSSI_rain)
|
||||
```
|
||||
|
||||
Where `RSSI_clear` is your baseline and `RSSI_rain` is the value during precipitation. This assumes the ADC response is roughly linear in power over the range you are measuring, which is a reasonable approximation for the moderate dynamic range involved.
|
||||
|
||||
| RSSI_clear | RSSI_rain | Attenuation |
|
||||
|------------|-----------|-------------|
|
||||
| 1280 | 1200 | 0.28 dB |
|
||||
| 1280 | 800 | 2.04 dB |
|
||||
| 1280 | 400 | 5.05 dB |
|
||||
| 1280 | 100 | 11.07 dB |
|
||||
| 1280 | 50 | 14.08 dB |
|
||||
|
||||
If RSSI drops to the noise floor (~500 with LNA), you have lost lock and the attenuation exceeds your measurement range. Record it as "> X dB" where X is computed from `RSSI_clear / noise_floor`.
|
||||
|
||||
## Interpreting results
|
||||
|
||||
Plot your RSSI time series against rainfall rate. You should see:
|
||||
|
||||
- **Clear inverse correlation.** RSSI drops when rain rate increases, with heavier rain producing deeper fades. The correlation is strongest with instantaneous rainfall rate, not accumulated total -- a brief downpour at 50 mm/hr produces a deeper (but shorter) fade than steady drizzle at 2 mm/hr that deposits more total water.
|
||||
- **Path length dependence.** Lower elevation angles (longer slant path through the atmosphere) produce more attenuation for the same rain rate. If you can lock onto satellites at different elevations simultaneously (with a second dish or by switching targets), the ratio of attenuations reveals the rain cell's vertical extent.
|
||||
- **Scintillation.** Even on clear days, you may notice small RSSI fluctuations of 0.5--1 dB on timescales of seconds to minutes. This is tropospheric scintillation from turbulent mixing of air masses at different temperatures and humidity. It sets the noise floor for your attenuation measurements and is itself an interesting atmospheric parameter.
|
||||
- **Hysteresis during freezing precipitation.** Wet snow and melting-layer effects can produce more attenuation than the equivalent liquid rain rate would suggest. The "bright band" at the melting layer (~2 km altitude in winter) is a known phenomenon in radar meteorology, and you may see it as excess fade that does not match surface rainfall.
|
||||
- **Dish wetting effect.** Water films on the dish surface add attenuation even after rain stops. A wet dish surface can add 1--3 dB at Ku-band. You will see this as a slow recovery after the rain ends, with RSSI gradually returning to baseline as the dish dries.
|
||||
|
||||
## Polarization effects
|
||||
|
||||
Raindrops are not spherical. Large drops are oblate (flattened by aerodynamic drag), which means horizontally polarized signals experience more attenuation than vertically polarized ones. The effect increases with rain rate.
|
||||
|
||||
Use `peak rssits` to measure both polarizations simultaneously:
|
||||
|
||||
```
|
||||
PEAK> rssits
|
||||
Even_sig = 823, Odd_sig = 891
|
||||
```
|
||||
|
||||
`Even_sig` is H-pol (18V), `Odd_sig` is V-pol (13V). During rain, you should see H-pol fade more than V-pol. The ratio between them is called the **differential attenuation** and is directly related to raindrop size distribution.
|
||||
|
||||
<Aside type="note" title="ITU-R reference models">
|
||||
ITU-R Recommendation P.838 defines the specific attenuation coefficient (dB/km) as a function of rain rate and frequency. P.618 extends this to slant-path attenuation for earth-space links. Your measurements test these models directly. At 12 GHz with horizontal polarization, P.838 predicts roughly 0.5 dB/km at 10 mm/hr and 2.5 dB/km at 50 mm/hr.
|
||||
</Aside>
|
||||
|
||||
## Going further
|
||||
|
||||
**Long-term dataset.** Run the logger through an entire rain season. Accumulate hundreds of rain events and plot attenuation vs. rainfall rate on a log-log scale. Fit the ITU-R P.838 power-law model `A = k * R^alpha` to your data and compare your fitted coefficients against the published values for your frequency and polarization.
|
||||
|
||||
**Dual-polarization differential attenuation.** Systematically compare H-pol and V-pol fade during each event. The differential attenuation is a proxy for median raindrop diameter -- larger drops are more oblate and produce more differential fade. This is the same principle used by dual-pol weather radars (ZDR measurement).
|
||||
|
||||
**Cloud attenuation.** On overcast but rain-free days, you may detect a small attenuation (0.1--0.5 dB) from liquid water content in clouds. This requires a very stable baseline and careful temperature-drift correction, but it is within the measurement range.
|
||||
|
||||
**Multi-satellite comparison.** Lock onto two or more geostationary satellites at different elevation angles and log RSSI simultaneously (or alternate between them every few minutes). Different slant paths through the same rain cell let you triangulate the rain cell height and horizontal extent.
|
||||
|
||||
**Snow and ice detection.** Dry snow produces very little attenuation at Ku-band (ice crystals are weak scatterers). But the melting layer -- the altitude where snow transitions to rain -- produces pronounced attenuation (the "bright band" effect). By logging RSSI during winter precipitation events where the surface temperature is near freezing, you can detect the onset and cessation of the melting layer as temperature changes. This has direct applications in weather radar calibration and hydrometeorological research.
|
||||
|
||||
<LinkCard title="Antenna Pattern Measurement" href="/experiments/dvb/antenna-pattern/" description="Characterize your dish's beam pattern so you can distinguish rain fade from pointing error." />
|
||||
<LinkCard title="Radio Telescope Guide" href="/guides/radio-telescope/" description="RSSI interpretation, LNA setup, and the azscanwxp workflow that underlies the DVB experiments." />
|
||||
<LinkCard title="Console Command Reference" href="/reference/console-commands/" description="Full details on dvb rssi, adc m, peak rssits, and qls commands." />
|
||||
180
src/content/docs/experiments/dvb/rfi-mapping.mdx
Normal file
180
src/content/docs/experiments/dvb/rfi-mapping.mdx
Normal file
@ -0,0 +1,180 @@
|
||||
---
|
||||
title: "RFI Mapping"
|
||||
description: Surveying terrestrial radio frequency interference at Ku-band using low-elevation azimuth sweeps
|
||||
sidebar:
|
||||
order: 4
|
||||
---
|
||||
|
||||
import { Steps, Aside, LinkCard } from '@astrojs/starlight/components';
|
||||
|
||||
At low elevation angles, the dish points toward the horizon — straight into the terrestrial radio environment. Microwave backhaul links, weather radar, spurious emissions from industrial equipment, and even LED lighting can produce Ku-band interference that shows up as elevated RSSI readings. By sweeping the full azimuth range near the firmware's elevation floor, you build a 360-degree interference map of your site.
|
||||
|
||||
This is useful for three reasons. First, it documents which azimuths are contaminated by terrestrial emitters, so you can avoid those directions during sky observations. Second, it establishes a baseline that makes it possible to detect new interference sources when they appear. Third, it's just interesting to see what's transmitting at 10-12 GHz in your neighborhood.
|
||||
|
||||
## What you'll measure
|
||||
|
||||
- **RSSI versus azimuth** at one or more low elevation angles, producing a polar interference map
|
||||
- **Elevation falloff** — how quickly interference diminishes as you tilt away from the horizon
|
||||
- **Time-of-day variation** — intermittent emitters (automotive radar, industrial processes) that only appear at certain hours
|
||||
|
||||
Terrestrial interference typically produces sharp, narrow RSSI peaks at specific azimuths — much narrower than the broad rises seen from satellites, because the sources are relatively close and the dish beam is tight. A cell tower's microwave backhaul link, for example, appears as a spike 1-3 degrees wide at the tower's bearing.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Motors homed and calibrated (see [Calibration & Homing](/guides/calibration/))
|
||||
- TV search disabled (see [Disabling TV Search](/guides/disabling-search/))
|
||||
- LNA enabled (`dvb` > `lnbdc odu`)
|
||||
- Serial output logged to a file
|
||||
- Clear sightlines — no obstructions within 32.5 inches of the dish base that could shadow the beam at low elevation
|
||||
|
||||
<Aside type="note" title="Elevation floor">
|
||||
The Carryout G2 firmware enforces a minimum elevation of 18 degrees (NVS index 101). You cannot point below this angle with standard motor commands. At 18 degrees, you're looking at objects roughly 3x the dish's ground-level height above the horizon at a distance of 100 meters. This is low enough to pick up most terrestrial emitters within line of sight.
|
||||
</Aside>
|
||||
|
||||
## Procedure
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Home the motors and set minimum elevation.**
|
||||
|
||||
```
|
||||
TRK> mot
|
||||
MOT> h 0
|
||||
MOT> h 1
|
||||
MOT> a 1 18
|
||||
```
|
||||
|
||||
Start at the firmware floor (18 degrees) for maximum terrestrial sensitivity.
|
||||
|
||||
2. **Enable the LNA.**
|
||||
|
||||
```
|
||||
MOT> q
|
||||
TRK> dvb
|
||||
DVB> lnbdc odu
|
||||
DVB> q
|
||||
TRK> mot
|
||||
```
|
||||
|
||||
3. **Run the first sweep.** Use `azscan` for a quick RSSI-only survey, or `azscanwxp` for transponder-cycling data.
|
||||
|
||||
For a fast survey:
|
||||
```
|
||||
MOT> azscan 360 0 100
|
||||
```
|
||||
|
||||
For detailed data with lock detection:
|
||||
```
|
||||
MOT> azscanwxp 0 360 100 8
|
||||
```
|
||||
|
||||
Using fewer transponders (8 instead of 32) speeds up the sweep. For RFI mapping, RSSI matters more than lock status — terrestrial emitters rarely produce valid DVB carriers.
|
||||
|
||||
4. **Repeat at higher elevations.** Increase elevation in 2-degree steps to measure how interference falls off with angle.
|
||||
|
||||
```
|
||||
MOT> a 1 20
|
||||
MOT> azscan 360 0 100
|
||||
MOT> a 1 22
|
||||
MOT> azscan 360 0 100
|
||||
MOT> a 1 25
|
||||
MOT> azscan 360 0 100
|
||||
```
|
||||
|
||||
Most terrestrial interference drops sharply between 18 and 25 degrees. The rate of falloff tells you whether the source is nearby (steep falloff) or distant (gradual falloff).
|
||||
|
||||
5. **Check dual polarization.** Some terrestrial emitters are polarized. Run the 18-degree sweep in both H-pol (18V, boot default) and V-pol (13V via `lnbdc odu`).
|
||||
|
||||
```
|
||||
MOT> a 1 18
|
||||
MOT> azscanwxp 0 360 100 8
|
||||
```
|
||||
|
||||
Compare H-pol and V-pol RSSI at each azimuth. A source that appears in only one polarization is a linearly polarized emitter — consistent with microwave backhaul antennas, which are typically single-polarization.
|
||||
|
||||
6. **Time-of-day comparison.** For a thorough site survey, run the 18-degree sweep at different times:
|
||||
|
||||
- Early morning (05:00-06:00) — minimal human activity, automotive radar quiet
|
||||
- Midday (12:00-13:00) — peak industrial and commercial activity
|
||||
- Evening (20:00-21:00) — residential electronics, LED lighting harmonics
|
||||
- Late night (02:00-03:00) — quietest baseline
|
||||
|
||||
</Steps>
|
||||
|
||||
## Interpreting results
|
||||
|
||||
Plot RSSI versus azimuth for each elevation angle. Terrestrial interference shows these characteristics:
|
||||
|
||||
| Pattern | Likely source |
|
||||
|---------|---------------|
|
||||
| Sharp peak (1-3 deg wide), constant across time | Fixed microwave backhaul link or point-to-point relay |
|
||||
| Sharp peak, appears only during certain hours | Intermittent emitter (automotive radar, industrial process) |
|
||||
| Broad rise (10-20 deg wide) at low EL, absent at 25 deg | Urban RF clutter — aggregate of many weak sources at the horizon |
|
||||
| Peak that shifts azimuth between sweeps | Moving source (vehicle radar) or multipath reflection |
|
||||
| Peak present in H-pol only, absent in V-pol | Linearly polarized fixed emitter (backhaul antenna) |
|
||||
| Peak present in both polarizations | Unpolarized or circularly polarized source |
|
||||
|
||||
**RSSI scale for terrestrial sources:**
|
||||
|
||||
| RSSI range | Interpretation |
|
||||
|------------|----------------|
|
||||
| 489-520 | Normal noise floor with LNA, no detectable interference |
|
||||
| 520-600 | Marginal — may or may not affect sky observations at this azimuth |
|
||||
| 600-800 | Moderate interference — will degrade weak-signal DVB measurements |
|
||||
| 800+ | Strong interference — avoid this azimuth for sky work |
|
||||
|
||||
<Aside type="tip" title="FCC license lookup">
|
||||
If you identify a strong, persistent interference source at a specific bearing, you can correlate it with FCC license data. The [FCC Universal Licensing System](https://wireless2.fcc.gov/UlsApp/UlsSearch/searchLicense.jsp) lists licensed microwave links with their coordinates and frequencies. Convert your azimuth to a geographic bearing, draw a line on a map, and see what's there. Many 10-12 GHz emitters are licensed fixed-service microwave links between cell towers.
|
||||
</Aside>
|
||||
|
||||
## Common Ku-band terrestrial emitters
|
||||
|
||||
Understanding what generates Ku-band interference helps you classify what you find:
|
||||
|
||||
| Source type | Frequency range | Characteristics |
|
||||
|-------------|----------------|-----------------|
|
||||
| Fixed-service microwave links | 10.7-11.7 GHz | Narrow beam, fixed bearing, 24/7, single polarization |
|
||||
| Weather radar (X-band spillover) | 9.3-9.5 GHz harmonics | Pulsed, rotating (bearing shifts each sweep), broadband |
|
||||
| Automotive radar (77 GHz subharmonics) | Sporadic | Appears as brief spikes at road-facing azimuths, inconsistent timing |
|
||||
| Industrial ISM equipment | 10.525 GHz | Motion sensors, door openers — weak, very short range |
|
||||
| Satellite uplink earth stations | 14.0-14.5 GHz | Strong, fixed bearing, directional — may appear as ground reflection off nearby structures |
|
||||
| LED driver harmonics | Broadband | Very weak, correlates with lights-on hours, from switching power supplies |
|
||||
|
||||
Most persistent interference at Ku-band comes from licensed fixed-service microwave links. These are point-to-point connections between cell towers, data centers, and broadcast facilities, typically transmitting at 10-100 mW into high-gain dishes. They produce the sharpest, most consistent RSSI peaks in your survey.
|
||||
|
||||
## Building an RFI database
|
||||
|
||||
For ongoing site monitoring, save each sweep with metadata:
|
||||
|
||||
```
|
||||
# Filename convention
|
||||
rfi_<date>_<time>_EL<deg>_<pol>.log
|
||||
|
||||
# Example
|
||||
rfi_2026-02-16_0600_EL18_Hpol.log
|
||||
rfi_2026-02-16_0600_EL18_Vpol.log
|
||||
rfi_2026-02-16_1200_EL18_Hpol.log
|
||||
```
|
||||
|
||||
Over weeks and months, this database reveals seasonal patterns (foliage blocking/unblocking microwave paths), new emitter deployments, and the overall interference trend at your site. If you're planning extended sky observation campaigns, this data tells you which azimuths are safe and which hours are quietest.
|
||||
|
||||
## Elevation falloff analysis
|
||||
|
||||
The multi-elevation sweep data reveals source distances. Plot RSSI versus elevation for each interference peak. The rate at which a source fades as you tilt upward depends on how far away it is and how directional it is:
|
||||
|
||||
- **Nearby source (< 1 km):** RSSI drops rapidly between 18 and 22 degrees as the dish beam lifts above the source
|
||||
- **Distant source (5-20 km):** RSSI decreases gradually, still detectable at 25 degrees or higher — the source is far enough away that even at higher elevation the dish beam still clips it
|
||||
- **Reflected/scattered source:** Broad, low-level rise that doesn't fall off cleanly with elevation — the signal is arriving from multiple directions via reflections off buildings or terrain
|
||||
|
||||
If a source persists above 30 degrees elevation, it may actually be a geostationary satellite rather than a terrestrial emitter. Cross-reference with the [Geostationary Census](/experiments/dvb/geostationary-census/) to confirm.
|
||||
|
||||
## Going further
|
||||
|
||||
- **Correlate with weather** — atmospheric ducting during temperature inversions can bend distant microwave links into your beam. An interference source that appears only on certain weather conditions is likely a ducted signal from beyond the normal horizon.
|
||||
- **Frequency discrimination** — run sweeps with different transponder selections to see if interference is broadband (present across all transponders) or narrowband (affects only specific frequencies). This helps classify the emitter type.
|
||||
- **Combine with the [Geostationary Census](/experiments/dvb/geostationary-census/)** — overlay your RFI map on the satellite detection map to identify which satellite slots are contaminated by terrestrial interference. Satellites at azimuths with high RFI readings may show artificially elevated RSSI or degraded SNR.
|
||||
- **Site selection** — if you're choosing between multiple locations for a permanent dish installation, run the RFI survey at each candidate site and compare. A site with fewer and weaker interference sources will produce better science data.
|
||||
- **Regulatory reporting** — if you identify unlicensed interference that's degrading satellite reception, the FCC's [Interference Complaint process](https://www.fcc.gov/consumers/guides/interference-radio-tv-and-telephone-signals) allows you to file a report. Your RSSI data, bearing, and time logs constitute solid evidence.
|
||||
|
||||
<LinkCard title="Radio Telescope Mode" href="/guides/radio-telescope/" description="Full guide to the azscanwxp and azscan commands used in these sweeps." />
|
||||
<LinkCard title="Console Command Reference" href="/reference/console-commands/" description="DVB, MOT, ADC, and PEAK submenu command details." />
|
||||
176
src/content/docs/experiments/dvb/solar-radio.mdx
Normal file
176
src/content/docs/experiments/dvb/solar-radio.mdx
Normal file
@ -0,0 +1,176 @@
|
||||
---
|
||||
title: "Solar Radio Monitoring"
|
||||
description: Detecting the Sun as a broadband Ku-band noise source using the on-board DVB tuner
|
||||
sidebar:
|
||||
order: 1
|
||||
---
|
||||
|
||||
import { Steps, Aside, LinkCard } from '@astrojs/starlight/components';
|
||||
|
||||
The Sun is one of the strongest natural radio sources in the sky. At Ku-band frequencies (10--12 GHz), the quiet Sun produces a noise temperature of roughly 10,000 K, rising to 50,000 K or more during solar flares and coronal mass ejections. That is well above the ~300 K thermal noise of the atmosphere, and the Carryout G2's BCM4515 tuner can detect it without any hardware modifications.
|
||||
|
||||
This is one of the oldest experiments in radio astronomy -- Karl Jansky and Grote Reber both detected solar radio emission in the 1930s and 1940s. You are repeating their work with better equipment and a motorized mount.
|
||||
|
||||
## What you'll measure
|
||||
|
||||
An RSSI increase of approximately 50--200 ADC counts above the clear-sky noise floor when the dish beam passes through the Sun. The exact magnitude depends on solar activity, atmospheric conditions, and how well centered the Sun is in the beam.
|
||||
|
||||
The dish's beam width at 12 GHz is roughly 2--3 degrees. The Sun's angular diameter is about 0.5 degrees, so it fits comfortably within a single beam and acts as a point-like source for this experiment.
|
||||
|
||||
### Why Ku-band solar detection works
|
||||
|
||||
The Sun's radio emission at microwave frequencies comes from the chromosphere and corona, not the photosphere. The brightness temperature at 12 GHz is much higher than the ~5,800 K optical surface temperature because the corona is a hot, optically thin plasma. During active solar periods (large sunspot groups, flares), gyro-synchrotron emission from energetic electrons in coronal magnetic loops can raise the effective temperature by an order of magnitude at Ku-band.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Motors homed and calibrated (see [Calibration & Homing](/guides/calibration/))
|
||||
- TV search disabled (see [Disabling TV Search](/guides/disabling-search/))
|
||||
- LNA enabled (`dvb` then `lnbdc odu`)
|
||||
- Solar AZ/EL for your location and time -- use [Stellarium](https://stellarium.org/), [NOAA Solar Calculator](https://gml.noaa.gov/grad/solcalc/), or any solar position calculator
|
||||
- Serial logging to a file (e.g., `tee` or a terminal recorder)
|
||||
- Clear sky preferred for first attempt (clouds attenuate Ku-band and may mask the solar signal)
|
||||
|
||||
<Aside type="caution" title="Do not stare at the Sun through the dish">
|
||||
This experiment measures radio-frequency energy, not visible light. There is no optical hazard from the dish itself. However, if you are outdoors adjusting the feed or checking alignment, standard solar safety applies -- the dish reflector can concentrate sunlight at the focal point. Do not place your hand, face, or any optic at the feed position while the dish is pointed near the Sun.
|
||||
</Aside>
|
||||
|
||||
## Method 1: Direct pointing
|
||||
|
||||
Point the dish at the Sun's computed position and record RSSI. This is the simplest approach and gives you an immediate measurement.
|
||||
|
||||
<Aside type="note" title="Elevation constraint">
|
||||
The Carryout G2's EL range is 18--65 degrees. The Sun is only detectable when its elevation falls within this range, which depends on your latitude and the time of year. At mid-latitudes (35--45N), the Sun exceeds 18 degrees EL for most of the day between March and October. In winter, the window is shorter. Check your solar calculator for the specific times when the Sun is between 18 and 65 degrees elevation.
|
||||
</Aside>
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Get the Sun's current AZ/EL.** Use your solar calculator. Example: AZ = 185.3, EL = 42.7.
|
||||
|
||||
2. **Enter the motor submenu and position the dish.**
|
||||
|
||||
```
|
||||
TRK> mot
|
||||
MOT> a 0 185.3
|
||||
MOT> a 1 42.7
|
||||
```
|
||||
|
||||
Wait for both moves to complete, then verify with `a`:
|
||||
|
||||
```
|
||||
MOT> a
|
||||
Angle[0] = 185.30
|
||||
Angle[1] = 42.70
|
||||
```
|
||||
|
||||
3. **Return to the DVB submenu and take an RSSI reading.**
|
||||
|
||||
```
|
||||
MOT> q
|
||||
TRK> dvb
|
||||
DVB> rssi 50
|
||||
Reads:50 RSSI[avg: 612 cur: 608]
|
||||
```
|
||||
|
||||
Compare this to a clear-sky reading at the same elevation but offset 10--15 degrees in azimuth (away from the Sun). The difference is the solar contribution.
|
||||
|
||||
4. **Record the off-Sun baseline.**
|
||||
|
||||
```
|
||||
DVB> q
|
||||
TRK> mot
|
||||
MOT> a 0 200.0
|
||||
MOT> q
|
||||
TRK> dvb
|
||||
DVB> rssi 50
|
||||
Reads:50 RSSI[avg: 498 cur: 501]
|
||||
```
|
||||
|
||||
In this example, the Sun adds approximately 114 counts above the baseline.
|
||||
|
||||
</Steps>
|
||||
|
||||
## Method 2: Drift scan
|
||||
|
||||
Hold the dish at a fixed elevation matching the Sun's declination-projected altitude and let Earth's rotation sweep the Sun through the beam. This produces a clean time-series with minimal mechanical variables.
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Calculate the Sun's peak elevation for the day.** The Sun crosses your local meridian at solar noon. At that moment, its elevation is `90 - |latitude - declination|`. The elevation changes slowly near transit -- within about +/- 1 degree over 20 minutes.
|
||||
|
||||
2. **Point the dish south (or north, in the southern hemisphere) at the solar noon elevation.**
|
||||
|
||||
```
|
||||
TRK> mot
|
||||
MOT> a 0 180.0
|
||||
MOT> a 1 48.5
|
||||
```
|
||||
|
||||
3. **Start the streaming RSSI monitor about 30 minutes before solar noon.**
|
||||
|
||||
```
|
||||
MOT> q
|
||||
TRK> adc
|
||||
ADC> m
|
||||
```
|
||||
|
||||
The `adc m` command streams RSSI values continuously, one per line with carriage-return overwrite. Log the serial output to a file. You will see a gradual RSSI rise as the Sun enters the beam, a peak near solar noon, and a symmetric decline as it exits.
|
||||
|
||||
4. **Let it run for at least one hour** centered on solar noon. The Sun moves at 15 degrees per hour in azimuth, so the full beam transit (2--3 degree beam width) takes roughly 8--12 minutes depending on elevation.
|
||||
|
||||
5. **Stop the monitor** by sending `q` or pressing any key.
|
||||
|
||||
6. **Record an off-Sun baseline at the same elevation.** After the Sun has passed through the beam, leave the dish pointing south and take another set of RSSI readings. The clear-sky values before and after transit should be nearly identical -- any difference indicates atmospheric changes or receiver drift.
|
||||
|
||||
</Steps>
|
||||
|
||||
<Aside type="tip" title="Drift scan bonus: beam width measurement">
|
||||
A drift scan across the Sun gives you a free measurement of the dish's azimuth beam width at the Sun's elevation. The RSSI curve's full-width at half-maximum (FWHM), converted from time to degrees using the 15 deg/hour solar rate (adjusted for elevation: actual rate = 15 * cos(elevation) degrees/hour in the AZ plane), is the beam width projected onto the sky. See the [Antenna Pattern Measurement](/experiments/dvb/antenna-pattern/) experiment for a more rigorous approach.
|
||||
</Aside>
|
||||
|
||||
## Interpreting results
|
||||
|
||||
| Observation | Meaning |
|
||||
|-------------|---------|
|
||||
| RSSI on-Sun 50--200 counts above off-Sun baseline | Normal quiet-Sun detection |
|
||||
| RSSI on-Sun > 300 counts above baseline | Elevated solar activity (large sunspot group or flare) |
|
||||
| No detectable difference | Check LNA is enabled, verify solar position calculation, try again near solar noon when EL is highest |
|
||||
| Asymmetric drift scan peak | Dish EL slightly off from Sun's EL -- re-center and repeat |
|
||||
| Gradual baseline drift over hours | Receiver temperature drift -- take off-Sun reference readings periodically |
|
||||
|
||||
The absolute RSSI value depends on the transponder frequency, LNA gain, and atmospheric conditions. The relative difference (on-Sun minus off-Sun) is what matters. Consistent measurements across days track solar activity trends.
|
||||
|
||||
### Sanity checks
|
||||
|
||||
If you see no solar signal at all, work through this checklist:
|
||||
|
||||
1. Verify LNA is enabled: `dvb rssi 10` should read ~490--510 with LNA active, ~233--238 without it
|
||||
2. Confirm your solar position calculation against a second source (Stellarium vs. web calculator)
|
||||
3. Try the measurement at solar noon, when the Sun is at maximum elevation and atmospheric path length is shortest
|
||||
4. Scan +/- 3 degrees in both AZ and EL around the computed position -- your alignment or solar position may be off by a degree or two
|
||||
|
||||
## Correlation with external data
|
||||
|
||||
The Dominion Radio Astrophysical Observatory (DRAO) publishes daily 10.7 cm (2.8 GHz) solar flux measurements -- the standard index of solar radio activity. While your Ku-band measurements are at a different frequency, the two correlate during active solar periods.
|
||||
|
||||
- [DRAO Solar Radio Flux (NRCan)](https://www.spaceweather.gc.ca/forecast-prevision/solar-terrestrial/solar-flux/sx-5-en.php)
|
||||
- [NOAA Space Weather Prediction Center](https://www.swpc.noaa.gov/)
|
||||
|
||||
Compare your daily peak RSSI deltas with the published 10.7 cm flux. Days with high solar flux (> 150 SFU) should produce visibly stronger Ku-band detections.
|
||||
|
||||
The 10.7 cm flux and Ku-band flux are not directly proportional -- they originate from different layers of the solar atmosphere and respond differently to various types of solar activity. Gradual Rise and Fall (GRF) events from large sunspot groups show up at both frequencies. Impulsive flare bursts are often stronger at Ku-band, where gyro-synchrotron emission peaks, than at 10.7 cm.
|
||||
|
||||
## Going further
|
||||
|
||||
**Solar flare monitoring.** Set up the drift scan as a continuous monitor running unattended. A solar flare produces a sudden RSSI spike -- sometimes hundreds of counts in seconds -- correlated with NOAA/GOES X-ray alerts. Log timestamped RSSI data and overlay it with GOES X-ray flux plots for a direct comparison. The GOES satellite X-ray data is freely available from NOAA SWPC in near-real-time. An M-class or X-class flare should produce a clear, time-correlated spike in your Ku-band RSSI. The radio burst typically precedes the X-ray peak by a few minutes (the Neupert effect).
|
||||
|
||||
**Multi-polarization solar measurement.** Use `peak rssits` instead of `dvb rssi` to measure both H-pol and V-pol simultaneously. Solar radio emission at Ku-band can be partially polarized during flares, particularly during the impulsive phase when non-thermal electrons spiral in coronal magnetic fields. Comparing `Even_sig` (H-pol, 18V) and `Odd_sig` (V-pol, 13V) during active periods may reveal polarization structure not visible in total-intensity measurements.
|
||||
|
||||
**Elevation scanning across the solar disk.** Move in fine EL steps (0.1 degree) across the Sun while recording RSSI at each position. Combined with AZ stepping, this produces a 2D brightness map of the Sun -- a radio image showing active regions if the dish has sufficient angular resolution. At 2--3 degrees beam width versus the Sun's 0.5 degree diameter, you will not resolve individual sunspots, but you can detect asymmetry in the brightness distribution during high-activity periods.
|
||||
|
||||
**Seasonal baseline tracking.** Record the on-Sun RSSI delta at the same time each day over weeks or months. The quiet-Sun Ku-band flux varies with the 11-year solar cycle. During solar maximum (next expected ~2025--2026), daily detections should be consistently stronger than during solar minimum.
|
||||
|
||||
**Active region tracking.** Large sunspot groups rotate with the Sun (period ~27 days). If a large active region produces a measurably higher RSSI, you may detect its return ~27 days later as it rotates back to face Earth. This requires consistent daily measurements over at least one solar rotation.
|
||||
|
||||
<LinkCard title="Antenna Pattern Measurement" href="/experiments/dvb/antenna-pattern/" description="The beam width you measure in a solar drift scan can be validated against a full antenna pattern characterization." />
|
||||
<LinkCard title="Radio Telescope Guide" href="/guides/radio-telescope/" description="The azscanwxp foundation for automated sky sweeps -- the same workflow extends to solar scanning at specific elevations." />
|
||||
<LinkCard title="Console Command Reference" href="/reference/console-commands/" description="Full details on dvb rssi, adc m, peak rssits, and all other firmware commands used in this experiment." />
|
||||
115
src/content/docs/experiments/index.mdx
Normal file
115
src/content/docs/experiments/index.mdx
Normal file
@ -0,0 +1,115 @@
|
||||
---
|
||||
title: "Experiments"
|
||||
description: RF science experiments using the Birdcage positioner — from on-board DVB radiometry to external SDR astronomy
|
||||
sidebar:
|
||||
order: 0
|
||||
---
|
||||
|
||||
import { Card, CardGrid, Aside, LinkCard } from '@astrojs/starlight/components';
|
||||
|
||||
The dish doesn't care about wavelength.
|
||||
|
||||
Birdcage gives you a motorized AZ/EL positioner with sub-degree pointing accuracy, automated sweeps, and a built-in Ku-band radiometer (the BCM4515 DVB tuner). That's enough hardware to do real RF science — no modifications required for the DVB experiments, and a feed swap plus SDR for everything else.
|
||||
|
||||
This section documents 14 experiments across two categories: things you can do today with the on-board DVB tuner, and things that become possible when you attach an external SDR with a different feed.
|
||||
|
||||
## On-board DVB experiments
|
||||
|
||||
These use the Carryout G2's built-in BCM4515 tuner and Ku-band LNB. No hardware modifications — just firmware commands you already have access to.
|
||||
|
||||
<CardGrid>
|
||||
<Card title="Solar Radio Monitoring" icon="sun">
|
||||
Detect the Sun as a broadband Ku-band noise source using drift scans and RSSI measurements.
|
||||
[Read more →](/experiments/dvb/solar-radio/)
|
||||
</Card>
|
||||
<Card title="Rain Fade Radiometry" icon="bars">
|
||||
Measure atmospheric attenuation by tracking RSSI on a geostationary beacon through weather events.
|
||||
[Read more →](/experiments/dvb/rain-fade/)
|
||||
</Card>
|
||||
<Card title="Geostationary Arc Census" icon="star">
|
||||
Map every detectable satellite across the full 360-degree azimuth arc using `azscanwxp`.
|
||||
[Read more →](/experiments/dvb/geostationary-census/)
|
||||
</Card>
|
||||
<Card title="RFI Mapping" icon="warning">
|
||||
Survey terrestrial interference sources at low elevation angles.
|
||||
[Read more →](/experiments/dvb/rfi-mapping/)
|
||||
</Card>
|
||||
<Card title="Antenna Pattern Measurement" icon="setting">
|
||||
Characterize the dish's beam width and sidelobe structure using a known satellite as a point source.
|
||||
[Read more →](/experiments/dvb/antenna-pattern/)
|
||||
</Card>
|
||||
<Card title="DVB Signal Intelligence" icon="magnifier">
|
||||
Identify active transponders, modulation schemes, and carrier parameters through blind scanning.
|
||||
[Read more →](/experiments/dvb/dvb-sigint/)
|
||||
</Card>
|
||||
<Card title="Differential Radiometry" icon="list-format">
|
||||
Correlate RSSI measurements between two dishes to separate sky signals from receiver noise.
|
||||
[Read more →](/experiments/dvb/differential-radiometry/)
|
||||
</Card>
|
||||
</CardGrid>
|
||||
|
||||
## External SDR experiments
|
||||
|
||||
These require replacing the Ku-band LNB with an appropriate feed and connecting an external SDR (BladeRF, RTL-SDR, etc.). The positioner handles pointing; the SDR handles the signal.
|
||||
|
||||
<Aside type="caution" title="Planned — not yet validated">
|
||||
The SDR experiments describe established amateur radio techniques adapted for the Birdcage positioner. The hardware chain and procedures are proposed but not yet tested on this specific platform. Expect iteration.
|
||||
</Aside>
|
||||
|
||||
<CardGrid>
|
||||
<Card title="Hydrogen Line (1420 MHz)" icon="star">
|
||||
Map galactic hydrogen emission at 21 cm — the most accessible radio astronomy target.
|
||||
[Read more →](/experiments/sdr/hydrogen-line/)
|
||||
</Card>
|
||||
<Card title="NOAA HRPT (1.7 GHz)" icon="seti:image">
|
||||
Receive high-resolution weather satellite imagery during LEO passes.
|
||||
[Read more →](/experiments/sdr/noaa-hrpt/)
|
||||
</Card>
|
||||
<Card title="EME Monitoring (1296 MHz)" icon="moon">
|
||||
Listen for moonbounce signals on the 23 cm amateur band.
|
||||
[Read more →](/experiments/sdr/eme-monitoring/)
|
||||
</Card>
|
||||
<Card title="GPS/GNSS (1575 MHz)" icon="rocket">
|
||||
Capture GPS L1 signals for timing, positioning experiments, or constellation surveys.
|
||||
[Read more →](/experiments/sdr/gps-gnss/)
|
||||
</Card>
|
||||
<Card title="Iridium (1626 MHz)" icon="seti:satellite">
|
||||
Capture Iridium downlink bursts during LEO passes.
|
||||
[Read more →](/experiments/sdr/iridium/)
|
||||
</Card>
|
||||
<Card title="Directional ADS-B (1090 MHz)" icon="seti:pipeline">
|
||||
Use dish gain to extend ADS-B reception range in a specific direction.
|
||||
[Read more →](/experiments/sdr/adsb-directional/)
|
||||
</Card>
|
||||
<Card title="Inmarsat L-Band (~1.5 GHz)" icon="bars">
|
||||
Receive Inmarsat geostationary L-band signals for AERO, SafetyNET, and EGC decoding.
|
||||
[Read more →](/experiments/sdr/inmarsat-lband/)
|
||||
</Card>
|
||||
</CardGrid>
|
||||
|
||||
## Status
|
||||
|
||||
| # | Experiment | Band | Hardware | Status |
|
||||
|---|-----------|------|----------|--------|
|
||||
| 1 | [Solar Radio](/experiments/dvb/solar-radio/) | Ku (10-12 GHz) | On-board DVB | Ready to test |
|
||||
| 2 | [Rain Fade](/experiments/dvb/rain-fade/) | Ku (10-12 GHz) | On-board DVB | Ready to test |
|
||||
| 3 | [Geostationary Census](/experiments/dvb/geostationary-census/) | Ku (10-12 GHz) | On-board DVB | Ready to test |
|
||||
| 4 | [RFI Mapping](/experiments/dvb/rfi-mapping/) | Ku (10-12 GHz) | On-board DVB | Ready to test |
|
||||
| 5 | [Antenna Pattern](/experiments/dvb/antenna-pattern/) | Ku (10-12 GHz) | On-board DVB | Ready to test |
|
||||
| 6 | [DVB SIGINT](/experiments/dvb/dvb-sigint/) | Ku (10-12 GHz) | On-board DVB | Ready to test |
|
||||
| 7 | [Differential Radiometry](/experiments/dvb/differential-radiometry/) | Ku (10-12 GHz) | On-board DVB × 2 | Ready to test |
|
||||
| 8 | [Hydrogen Line](/experiments/sdr/hydrogen-line/) | L (1420 MHz) | External SDR | Planned |
|
||||
| 9 | [NOAA HRPT](/experiments/sdr/noaa-hrpt/) | L (1.7 GHz) | External SDR | Planned |
|
||||
| 10 | [EME Monitoring](/experiments/sdr/eme-monitoring/) | L (1296 MHz) | External SDR | Planned |
|
||||
| 11 | [GPS/GNSS](/experiments/sdr/gps-gnss/) | L (1575 MHz) | External SDR | Planned |
|
||||
| 12 | [Iridium](/experiments/sdr/iridium/) | L (1626 MHz) | External SDR | Planned |
|
||||
| 13 | [ADS-B Directional](/experiments/sdr/adsb-directional/) | L (1090 MHz) | External SDR | Planned |
|
||||
| 14 | [Inmarsat L-Band](/experiments/sdr/inmarsat-lband/) | L (~1.5 GHz) | External SDR | Planned |
|
||||
|
||||
## Shared resources
|
||||
|
||||
<CardGrid>
|
||||
<LinkCard title="SDR Hardware Setup" href="/experiments/sdr-hardware/" description="Feed options, LNA selection, bias tee bypass, BladeRF configuration, and software stack for all external SDR experiments." />
|
||||
<LinkCard title="Radio Telescope Guide" href="/guides/radio-telescope/" description="The existing azscanwxp guide — the foundation that several DVB experiments build on." />
|
||||
<LinkCard title="Console Command Reference" href="/reference/console-commands/" description="Full firmware command inventory across all 12 submenus." />
|
||||
</CardGrid>
|
||||
188
src/content/docs/experiments/sdr-hardware.mdx
Normal file
188
src/content/docs/experiments/sdr-hardware.mdx
Normal file
@ -0,0 +1,188 @@
|
||||
---
|
||||
title: "SDR Hardware Setup"
|
||||
description: Feed options, LNA selection, bias tee safety, and SDR configuration for external receiver experiments
|
||||
sidebar:
|
||||
order: 50
|
||||
---
|
||||
|
||||
import { Steps, Aside, LinkCard, Card, CardGrid } from '@astrojs/starlight/components';
|
||||
|
||||
Every external SDR experiment in this section shares the same basic signal chain: a feed antenna mounted on the dish, a filtered low-noise amplifier, coax to the SDR, and USB to the computer. This page covers the hardware choices and safety considerations that apply across all of them.
|
||||
|
||||
## Signal chain
|
||||
|
||||
```
|
||||
Feed (on dish) → Filtered LNA → Coax → SDR (BladeRF / RTL-SDR) → USB → Computer
|
||||
↑ ↑
|
||||
Birdcage AZ/EL GNU Radio / SDR++ / SatDump
|
||||
```
|
||||
|
||||
The Birdcage positioner handles pointing. The SDR handles the signal. They connect through separate paths — serial for motor control, USB for RF data.
|
||||
|
||||
## Critical safety: bypass the LNB bias tee
|
||||
|
||||
<Aside type="danger" title="12-18 VDC on the coax will destroy SDR equipment">
|
||||
The Winegard's coax path includes a bias tee that injects 12-18 VDC to power the original Ku-band LNB. This voltage is present on the center conductor of the coax going to the dish.
|
||||
|
||||
**If you connect an SDR or external LNA directly to this coax, the DC voltage will damage or destroy the input stage.**
|
||||
|
||||
You must either:
|
||||
1. **Use a DC block** (inline capacitor) between the coax and your SDR/LNA
|
||||
2. **Disconnect the bias tee** at the IDU/power injector (unplug the coax from the Winegard receiver box)
|
||||
3. **Cut the bias tee trace** on the PCB (permanent modification)
|
||||
|
||||
Option 2 is simplest and reversible. Unplug the coax from the Winegard's receiver/IDU box and connect it directly to your DC block + LNA chain.
|
||||
</Aside>
|
||||
|
||||
## Feed options by frequency
|
||||
|
||||
The dish reflector works at any frequency where the surface accuracy is sufficient (roughly wavelengths shorter than the surface error — typically good down to ~500 MHz for a mesh dish, lower for solid). The feed determines what frequency you actually receive.
|
||||
|
||||
| Frequency | Wavelength | Feed type | Dish gain (est.) | Notes |
|
||||
|-----------|-----------|-----------|------------------|-------|
|
||||
| 1090 MHz | 27.5 cm | Dipole or patch | ~10 dBi | ADS-B — dish gain is modest at this wavelength |
|
||||
| 1296 MHz | 23.1 cm | Helical (5-7 turn) or Yagi | ~15 dBi | EME / amateur 23 cm band |
|
||||
| 1420 MHz | 21.1 cm | Helical (5-7 turn) or patch | ~15 dBi | Hydrogen line |
|
||||
| 1525-1559 MHz | ~19.5 cm | Helical or patch | ~15 dBi | Inmarsat L-band |
|
||||
| 1575 MHz | 19.0 cm | Patch (RHCP) | ~12 dBi | GPS L1 |
|
||||
| 1616-1626 MHz | ~18.5 cm | Helical | ~12 dBi | Iridium downlink |
|
||||
| 1698-1707 MHz | ~17.6 cm | Helical (RHCP) | ~18 dBi | NOAA HRPT |
|
||||
|
||||
**Gain estimates** assume a 33" × 23" (84 cm × 58 cm) elliptical reflector with ~50% aperture efficiency. Actual gain depends on feed placement, illumination pattern, and surface accuracy. These numbers are starting points — measure your actual pattern with the [antenna pattern experiment](/experiments/dvb/antenna-pattern/) technique adapted to your feed frequency.
|
||||
|
||||
### Feed mounting
|
||||
|
||||
The Carryout G2's LNB is mounted on a feed arm that holds the LNB at the reflector's focal point. For SDR experiments:
|
||||
|
||||
1. **Remove the stock LNB** (it unscrews or unclips from the feed arm bracket)
|
||||
2. **Mount your feed at the same focal point** — the position matters more than the exact bracket
|
||||
3. **Secure the coax** so it doesn't snag during AZ/EL moves — route it along the arm and leave a service loop
|
||||
|
||||
The focal length of the Carryout G2 reflector hasn't been precisely measured. Start with the feed at the same distance as the stock LNB and adjust for peak signal on a known source.
|
||||
|
||||
## LNA selection
|
||||
|
||||
A low-noise amplifier at the feed is essential — the SDR's internal noise figure is typically 3-6 dB, which wastes most of the dish's advantage. An LNA at the feed drops the system noise temperature dramatically.
|
||||
|
||||
| Parameter | Recommended | Why |
|
||||
|-----------|-------------|-----|
|
||||
| Noise figure | < 1.0 dB | Lower is better — directly sets system sensitivity |
|
||||
| Gain | 20-30 dB | Enough to overcome coax loss without saturating SDR |
|
||||
| Frequency range | Match your experiment | Narrowband filtered LNAs reject out-of-band interference |
|
||||
| Filtering | SAW or cavity pre-filter | Critical near cell towers (1700-2100 MHz) |
|
||||
| Powering | Bias tee from SDR or separate | Many LNAs accept 3-5 V via coax bias tee |
|
||||
|
||||
**Recommended LNAs by experiment:**
|
||||
|
||||
| Experiment | LNA option | Notes |
|
||||
|-----------|-----------|-------|
|
||||
| Hydrogen line | Nooelec SAWbird H1 | 1420 MHz filtered, 0.7 dB NF |
|
||||
| NOAA HRPT | Nooelec SAWbird NOAA | 1698 MHz filtered |
|
||||
| GPS/GNSS | Nooelec SAWbird GNSS | 1575 MHz filtered |
|
||||
| Iridium | Nooelec SAWbird Iridium | 1626 MHz filtered |
|
||||
| EME / ADS-B / Inmarsat | Wideband LNA + bandpass filter | No single-frequency SAWbird available |
|
||||
|
||||
### Powering the LNA
|
||||
|
||||
Most SAWbird-style LNAs draw 30-60 mA at 3.3-5V through the coax center conductor (bias tee). Options:
|
||||
|
||||
- **SDR bias tee** — BladeRF and some RTL-SDR dongles have a software-controlled bias tee output
|
||||
- **External bias tee injector** — separate powered bias tee between coax and SDR
|
||||
- **Direct power** — some LNAs have a separate DC input jack
|
||||
|
||||
<Aside type="caution" title="Don't confuse LNA bias tee with LNB bias tee">
|
||||
The LNA bias tee is 3-5 VDC at milliamps. The Winegard's LNB bias tee is 12-18 VDC at hundreds of milliamps. They are completely different circuits. The LNB bias tee must be disconnected (see above). The LNA bias tee is what powers your external amplifier.
|
||||
</Aside>
|
||||
|
||||
## SDR hardware
|
||||
|
||||
### BladeRF
|
||||
|
||||
The BladeRF 2.0 micro (xA4 or xA9) is a good fit for these experiments:
|
||||
|
||||
| Spec | BladeRF 2.0 micro xA4 |
|
||||
|------|----------------------|
|
||||
| Frequency range | 47 MHz - 6 GHz |
|
||||
| Bandwidth | Up to 56 MHz |
|
||||
| ADC/DAC | 12-bit |
|
||||
| Interface | USB 3.0 |
|
||||
| FPGA | Altera Cyclone V |
|
||||
| Bias tee | Software-controlled, 4.5 V |
|
||||
| Price | ~$480 |
|
||||
|
||||
The xA9 variant adds a larger FPGA for more simultaneous channels but isn't necessary for single-feed experiments.
|
||||
|
||||
### RTL-SDR
|
||||
|
||||
For receive-only experiments (all of these), an RTL-SDR Blog V4 works and costs ~$30:
|
||||
|
||||
| Spec | RTL-SDR Blog V4 |
|
||||
|------|----------------|
|
||||
| Frequency range | 24 MHz - 1.766 GHz |
|
||||
| Bandwidth | Up to 3.2 MHz (2.56 MHz stable) |
|
||||
| ADC | 8-bit |
|
||||
| Interface | USB 2.0 |
|
||||
| Bias tee | Software-controlled, 4.5 V |
|
||||
| Price | ~$30 |
|
||||
|
||||
The 8-bit ADC limits dynamic range compared to the BladeRF, but for narrowband signals (hydrogen line, HRPT, GPS) it's perfectly adequate. The 1.766 GHz upper limit covers all L-band experiments listed here.
|
||||
|
||||
<Aside type="note" title="RTL-SDR frequency limit">
|
||||
The RTL-SDR V4 maxes out at 1.766 GHz. This covers NOAA HRPT (1698-1707 MHz), Iridium (1616-1626 MHz), GPS L1 (1575 MHz), and all lower frequencies. For Ku-band experiments, you need the BladeRF or a dedicated downconverter.
|
||||
</Aside>
|
||||
|
||||
## Software stack
|
||||
|
||||
| Software | Purpose | Experiments |
|
||||
|----------|---------|-------------|
|
||||
| [GNU Radio](https://www.gnuradio.org/) | Signal processing flowgraphs | All (general purpose) |
|
||||
| [SDR++](https://www.sdrpp.org/) | Spectrum visualization and recording | All (quick-look) |
|
||||
| [SatDump](https://www.satdump.org/) | Weather satellite decoding | NOAA HRPT |
|
||||
| [gnss-sdr](https://gnss-sdr.org/) | GPS/GNSS signal processing | GPS/GNSS |
|
||||
| [gr-iridium](https://github.com/muccc/gr-iridium) | Iridium burst detection | Iridium |
|
||||
| [dump1090](https://github.com/flightaware/dump1090) | ADS-B decoding | ADS-B |
|
||||
| [Jaero](https://github.com/jontio/JAERO) | Inmarsat AERO decoding | Inmarsat |
|
||||
|
||||
### Installation (Arch Linux)
|
||||
|
||||
```bash
|
||||
# Core SDR tools
|
||||
sudo pacman -S gnuradio soapysdr soapy-sdr-module-bladerf
|
||||
|
||||
# SDR++ (AUR)
|
||||
yay -S sdrpp-git
|
||||
|
||||
# SatDump
|
||||
yay -S satdump-git
|
||||
|
||||
# GNU Radio companion (GUI)
|
||||
sudo pacman -S gnuradio-companion
|
||||
```
|
||||
|
||||
## Tracking modes
|
||||
|
||||
Different experiments need different tracking strategies. The Birdcage positioner supports all of these through its rotctld interface or direct motor commands.
|
||||
|
||||
| Tracking mode | Description | Experiments |
|
||||
|---------------|-------------|-------------|
|
||||
| **Fixed pointing** | Point at a known AZ/EL and hold | Inmarsat, geostationary targets |
|
||||
| **Step-and-integrate** | Move to position, dwell for N seconds, move to next | Hydrogen line, ADS-B survey |
|
||||
| **Continuous LEO pass** | Track moving satellite in real-time via Gpredict/rotctld | NOAA HRPT, Iridium |
|
||||
| **Lunar rate** | Track the Moon's ~0.5°/min drift | EME monitoring |
|
||||
| **Drift scan** | Hold EL fixed, let sky drift through beam | Solar monitoring (alternative) |
|
||||
|
||||
For LEO tracking, Gpredict drives the positioner through the rotctld TCP interface at `127.0.0.1:4533`. For step-and-integrate, script the motor commands directly through the Birdcage CLI or use the TUI's preset system to define a grid of positions.
|
||||
|
||||
<Aside type="tip" title="Recording while tracking">
|
||||
For LEO pass experiments (HRPT, Iridium), start the SDR recording before the pass begins and stop after it ends. The tracking doesn't need to be synchronized with the recording — the SDR captures continuously while the positioner follows the satellite. Decode the recording offline.
|
||||
</Aside>
|
||||
|
||||
## Next steps
|
||||
|
||||
Pick an experiment and follow its dedicated guide. Each page lists the specific feed, LNA, SDR settings, and software configuration needed.
|
||||
|
||||
<CardGrid>
|
||||
<LinkCard title="Hydrogen Line" href="/experiments/sdr/hydrogen-line/" description="The most accessible radio astronomy experiment — detect galactic hydrogen at 1420 MHz." />
|
||||
<LinkCard title="NOAA HRPT" href="/experiments/sdr/noaa-hrpt/" description="Weather satellite imagery from LEO passes at 1.7 GHz." />
|
||||
<LinkCard title="EME Monitoring" href="/experiments/sdr/eme-monitoring/" description="Listen for moonbounce signals on the 23 cm amateur band." />
|
||||
</CardGrid>
|
||||
179
src/content/docs/experiments/sdr/adsb-directional.mdx
Normal file
179
src/content/docs/experiments/sdr/adsb-directional.mdx
Normal file
@ -0,0 +1,179 @@
|
||||
---
|
||||
title: "Directional ADS-B (1090 MHz)"
|
||||
description: Using dish gain to extend ADS-B reception range in a specific direction
|
||||
sidebar:
|
||||
order: 6
|
||||
badge:
|
||||
text: Planned
|
||||
variant: caution
|
||||
---
|
||||
|
||||
import { Steps, Aside, LinkCard } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="note" title="Not yet tested">
|
||||
This experiment describes an established amateur radio technique adapted for the Birdcage positioner. The hardware chain and procedures are proposed but not yet validated on this specific platform.
|
||||
</Aside>
|
||||
|
||||
## The signal
|
||||
|
||||
ADS-B (Automatic Dependent Surveillance-Broadcast) operates at 1090 MHz. Aircraft continuously broadcast their GPS-derived position, altitude, velocity, and identification in short 112-microsecond bursts called Extended Squitters. These are unencrypted, omnidirectional, and received by anyone with a compatible receiver.
|
||||
|
||||
Standard ADS-B ground stations use omnidirectional or vertically polarized collinear antennas and achieve typical reception ranges of 150-200 nautical miles, limited by line of sight and receiver sensitivity. A directional antenna pointed at a specific sector of sky trades coverage breadth for range -- the dish gain extends detection in the pointing direction while rejecting signals from elsewhere.
|
||||
|
||||
This experiment uses the dish not to track individual aircraft (dump1090 handles that fine with a simple antenna) but as a measurement tool: mapping how reception range varies with direction, using aircraft at known positions as calibration sources for the positioner's pointing accuracy, and detecting aircraft that are invisible to omnidirectional setups.
|
||||
|
||||
### Why aircraft make good calibration targets
|
||||
|
||||
An aircraft broadcasting ADS-B provides three things simultaneously: a known position (from its GPS-derived latitude, longitude, and altitude), a known frequency (1090 MHz), and a relatively constant transmit power. This combination makes aircraft function as cooperative calibration sources scattered across the sky. Unlike satellites (which require TLE propagation and have uncertain transmit patterns), an ADS-B-equipped aircraft tells you exactly where it is at the moment you receive its signal.
|
||||
|
||||
## Link budget
|
||||
|
||||
| Parameter | Value | Notes |
|
||||
|-----------|-------|-------|
|
||||
| Aircraft EIRP | ~21 dBW (125 W) | Typical ADS-B transponder into omni antenna |
|
||||
| Range (standard) | ~200 NM / 370 km | Omnidirectional ground station |
|
||||
| Range (target) | ~400 NM / 740 km | With dish gain, line-of-sight permitting |
|
||||
| Free-space path loss (370 km) | ~144 dB | At 1090 MHz |
|
||||
| Free-space path loss (740 km) | ~150 dB | At 1090 MHz, doubled range |
|
||||
| Dish gain (est.) | ~10 dBi | The dish is only ~3 wavelengths across at 1090 MHz |
|
||||
| LNA noise figure | 1.0 dB | Filtered 1090 MHz LNA |
|
||||
| **Gain advantage over omni** | **~8 dB** | Directional vs. 2 dBi omni whip |
|
||||
|
||||
At 1090 MHz, the 84 cm dish aperture is about 3 wavelengths across. The gain is modest -- roughly 10 dBi compared to the 2 dBi of a typical quarter-wave whip. That 8 dB advantage translates to roughly 2.5x range extension (all else equal), pushing theoretical detection from 200 NM to about 500 NM. In practice, Earth curvature limits line of sight to about 250-300 NM for aircraft at typical cruising altitudes (35,000-40,000 ft), so the dish gain helps most for detecting aircraft at lower altitudes or greater distances along the horizon.
|
||||
|
||||
## Hardware requirements
|
||||
|
||||
See [SDR Hardware Setup](/experiments/sdr-hardware/) for the full signal chain, feed mounting, and bias tee safety details.
|
||||
|
||||
| Component | Recommendation | Notes |
|
||||
|-----------|---------------|-------|
|
||||
| Feed | Half-wave dipole or patch antenna | Simple to build. Vertically polarized to match aircraft antennas |
|
||||
| LNA | 1090 MHz filtered LNA | Many ADS-B-specific options. Cavity or SAW filter strongly recommended |
|
||||
| SDR | RTL-SDR V4 | Standard ADS-B receiver. 1090 MHz well within range |
|
||||
| Tracking mode | Step-and-dwell | Not satellite tracking -- fixed pointings with timed dwells |
|
||||
|
||||
A dipole feed for 1090 MHz is about 13.8 cm (5.4 inches) tip to tip -- small enough to mount easily at the focal point. A patch antenna is another option and offers cleaner illumination of the reflector. Either way, the feed construction is straightforward.
|
||||
|
||||
### Feed illumination considerations
|
||||
|
||||
At 1090 MHz, the dish is electrically small -- only about 3 wavelengths across. This means the beam is broad and the feed's illumination pattern matters less than at higher frequencies. A simple dipole will under-illuminate the dish edges (reducing efficiency) but won't create severe sidelobe problems. A patch antenna with a ground plane can better control the illumination taper, but the improvement over a dipole may be marginal given the dish's small electrical size at this wavelength. Start with a dipole for simplicity and upgrade to a patch if the measured antenna pattern reveals room for improvement.
|
||||
|
||||
<Aside type="tip" title="Filtering matters more than gain">
|
||||
At 1090 MHz, you're close to cell tower bands (LTE at 700-900 MHz, AWS at 1700+ MHz). Without a bandpass filter, strong cellular signals can desensitize or saturate the SDR's front end. A filtered LNA (cavity or SAW at 1090 MHz) is more important than a few extra tenths of dB noise figure.
|
||||
</Aside>
|
||||
|
||||
## Proposed procedure
|
||||
|
||||
### Directional coverage survey
|
||||
|
||||
The primary experiment: map ADS-B detection range as a function of dish pointing direction.
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Prepare the hardware chain.** Mount the dipole or patch feed, connect through the filtered 1090 MHz LNA, run coax to the RTL-SDR. Ensure the LNB bias tee is disconnected or blocked (see [SDR Hardware Setup](/experiments/sdr-hardware/)).
|
||||
|
||||
2. **Start dump1090 in network mode.**
|
||||
|
||||
```bash
|
||||
dump1090 --device-index 0 --net --net-sbs-port 30003 --quiet
|
||||
```
|
||||
|
||||
This decodes ADS-B messages and outputs position reports on TCP port 30003 in SBS (BaseStation) format.
|
||||
|
||||
3. **Start the Birdcage rotctld server.**
|
||||
|
||||
```bash
|
||||
birdcage serve --port /dev/ttyUSB2 --baud 115200
|
||||
```
|
||||
|
||||
4. **Define a survey grid.** Choose an azimuth sweep range (e.g., 0 to 355 degrees in 5-degree steps) and one or two elevation angles (5 degrees above the EL floor of 18 degrees, and perhaps 30 degrees for comparison).
|
||||
|
||||
5. **Point the dish at the first position and dwell.**
|
||||
|
||||
```bash
|
||||
# Via rotctld
|
||||
echo "P 0 20" | nc 127.0.0.1 4533
|
||||
```
|
||||
|
||||
Dwell for 2-5 minutes at each position. Log all ADS-B messages received during the dwell with timestamps.
|
||||
|
||||
6. **Step to the next azimuth and repeat.** A full 360-degree survey at 5-degree steps with 3-minute dwells takes about 3.6 hours. Running at night (when air traffic patterns are more stable) may produce cleaner data.
|
||||
|
||||
7. **Collate the results.** For each dwell position, calculate: number of unique aircraft detected, maximum range of any detection, average signal level. Plot these as polar maps (AZ angle vs. range or count).
|
||||
|
||||
</Steps>
|
||||
|
||||
### Pointing calibration using aircraft
|
||||
|
||||
Aircraft at known positions (from decoded ADS-B) provide a way to verify and calibrate the dish's pointing accuracy.
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Pick a distant aircraft at a known position.** From the dump1090 output, select an aircraft with a stable track at a large range (100+ NM). Its decoded ADS-B position gives you the true AZ/EL from your ground station.
|
||||
|
||||
2. **Calculate expected AZ/EL.** From the aircraft's reported lat/lon/altitude and your ground station coordinates, compute the expected azimuth and elevation.
|
||||
|
||||
3. **Point the dish at the calculated AZ/EL.** Record the signal strength (dump1090 reports RSSI per message).
|
||||
|
||||
4. **Scan around the calculated position.** Offset the dish by +/- a few degrees in AZ and EL, recording signal strength at each offset. The peak should correspond to the true direction of the aircraft.
|
||||
|
||||
5. **Compare peak position to calculated position.** Any systematic offset reveals pointing error in the Birdcage positioner at 1090 MHz.
|
||||
|
||||
</Steps>
|
||||
|
||||
## Software pipeline
|
||||
|
||||
| Tool | Purpose | Project |
|
||||
|------|---------|---------|
|
||||
| [dump1090](https://github.com/flightaware/dump1090) | ADS-B message decoding | FlightAware |
|
||||
| [readsb](https://github.com/wiedehopf/readsb) | Enhanced ADS-B decoder (dump1090 fork) | wiedehopf |
|
||||
| [tar1090](https://github.com/wiedehopf/tar1090) | Web-based ADS-B map visualization | wiedehopf |
|
||||
| [Virtual Radar Server](https://www.virtualradarserver.co.uk/) | ADS-B logging and range plotting | VRS |
|
||||
|
||||
dump1090 (or readsb) handles the decoding. tar1090 provides a live map in a browser. Virtual Radar Server can generate polar range plots from logged data -- exactly what this experiment needs for the coverage survey.
|
||||
|
||||
For the calibration use case, a simple Python script that reads SBS-format messages, computes expected AZ/EL from aircraft position, and correlates with dish pointing is all that's needed. The SBS format is CSV with fields for ICAO hex code, callsign, altitude, ground speed, track, latitude, longitude, and vertical rate -- everything needed to compute the aircraft's bearing and elevation from a known ground station.
|
||||
|
||||
### Data logging approach
|
||||
|
||||
For the step-and-dwell survey, each dwell period needs to be tagged with the dish's current AZ/EL. One approach:
|
||||
|
||||
1. Query the dish position via rotctld (`echo "p" | nc 127.0.0.1 4533`) at the start of each dwell
|
||||
2. Log the position and timestamp to a CSV file
|
||||
3. Correlate with the SBS output from dump1090 by timestamp
|
||||
|
||||
A wrapper script that steps the dish, waits for settling, queries position, and records the dwell boundaries automates the entire survey. The Birdcage CLI's `pos` subcommand also works for position readback.
|
||||
|
||||
## Expected results
|
||||
|
||||
- **Directional range map.** A polar plot showing maximum ADS-B detection range as a function of azimuth. Expect to see clear directional gain -- aircraft detectable at 300+ NM in the dish's pointing direction, fading to near-zero off-axis. Terrain obstructions will show as range shadows.
|
||||
|
||||
- **Range extension.** With the ~8 dB gain advantage over an omnidirectional antenna, detection of high-altitude aircraft at 300-400 NM should be achievable where line of sight permits. Low-altitude aircraft or those near the horizon benefit most from the gain improvement.
|
||||
|
||||
- **Pointing accuracy measurement.** The calibration procedure should reveal any systematic AZ/EL offset in the positioner. Sub-degree accuracy should be verifiable using distant aircraft as point sources.
|
||||
|
||||
- **Multipath signatures.** At low elevation angles, ground reflections create multipath interference. The directional antenna may show elevation-dependent signal level variations that trace out the dish's vertical beam pattern convolved with the ground reflection geometry.
|
||||
|
||||
- **Terrain mapping.** The directional range map effectively encodes the local terrain profile. Directions with nearby hills or buildings will show reduced range (RF shadow), while directions with clear line of sight to the horizon will show maximum range. Overlaying the range map on a topographic map should show strong correlation.
|
||||
|
||||
- **Time-of-day variation.** Running the survey at different times reveals how air traffic patterns shape the detection statistics. Overnight surveys may detect fewer aircraft but with less variability per direction, while daytime surveys near major airports show dense traffic in specific corridors.
|
||||
|
||||
## Open questions
|
||||
|
||||
- **Optimal dwell time.** ADS-B squitters repeat roughly once per second, but aircraft density varies by time and direction. Is 2 minutes enough for a statistically meaningful sample at each azimuth, or does 5 minutes produce significantly better range statistics?
|
||||
|
||||
- **Elevation angle selection.** The dish's minimum EL is 18 degrees. Most distant aircraft are near the horizon (low EL). How much does the 18-degree floor limit the effective range extension compared to a ground-level omnidirectional antenna that can see down to 0 degrees?
|
||||
|
||||
- **Gain at 1090 MHz.** The estimated 10 dBi gain assumes reasonable aperture efficiency with a simple dipole feed. The actual gain depends on the feed's illumination pattern -- an improperly positioned dipole may under-illuminate the dish or cause excessive spillover. Only measurement will tell.
|
||||
|
||||
- **Beam width.** At 1090 MHz, the 3 dB beam width is roughly 25-30 degrees. The 5-degree survey step size is finer than the beam, which is good for mapping but means adjacent positions are not independent samples. How should the analysis account for this overlap?
|
||||
|
||||
- **Simultaneous reference antenna.** Running a standard omnidirectional ADS-B receiver alongside the dish provides a control dataset. Aircraft detected by both antennas give direct A/B comparisons of signal level. Aircraft detected only by the dish (at extreme range) confirm the directional gain advantage. Is a second RTL-SDR feeding a separate dump1090 instance the cleanest way to implement this?
|
||||
|
||||
## Related experiments
|
||||
|
||||
<LinkCard title="Antenna Pattern Measurement" href="/experiments/dvb/antenna-pattern/" description="The same calibration-by-known-source technique at Ku-band. The methodology transfers directly to 1090 MHz." />
|
||||
|
||||
<LinkCard title="RFI Mapping" href="/experiments/dvb/rfi-mapping/" description="Similar step-and-dwell survey approach, measuring interference sources instead of aircraft signals." />
|
||||
|
||||
<LinkCard title="SDR Hardware Setup" href="/experiments/sdr-hardware/" description="Feed mounting, LNA selection, bias tee safety, and SDR configuration shared across all external experiments." />
|
||||
183
src/content/docs/experiments/sdr/eme-monitoring.mdx
Normal file
183
src/content/docs/experiments/sdr/eme-monitoring.mdx
Normal file
@ -0,0 +1,183 @@
|
||||
---
|
||||
title: "EME Monitoring (1296 MHz)"
|
||||
description: Listening for moonbounce signals on the 23 cm amateur band
|
||||
sidebar:
|
||||
order: 3
|
||||
badge:
|
||||
text: Planned
|
||||
variant: caution
|
||||
---
|
||||
|
||||
import { Steps, Aside, LinkCard } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="note" title="Not yet tested">
|
||||
This experiment describes an established amateur radio technique adapted for the Birdcage positioner. The hardware chain and procedures are proposed but not yet validated on this specific platform.
|
||||
</Aside>
|
||||
|
||||
Earth-Moon-Earth (EME) communication works by bouncing signals off the lunar surface. Amateurs transmit on 1296 MHz (the 23 cm band), the signal travels ~384,000 km to the Moon, reflects off the regolith, and returns another 384,000 km to Earth. The round-trip path loss is enormous -- roughly 271 dB -- so the signals that arrive back are extraordinarily weak. Digital modes like Q65 (part of WSJT-X) are designed to decode signals buried well below the noise floor, making receive-only EME monitoring feasible with smaller antennas than you would need for a two-way contact.
|
||||
|
||||
This is a listen-only experiment. We are not transmitting -- just pointing the dish at the Moon and listening for other stations' reflected signals.
|
||||
|
||||
## The signal
|
||||
|
||||
EME activity on 1296 MHz concentrates during scheduled contests and activity weekends. Stations typically run 200-1500 watts into 2-6 meter dishes or large Yagi arrays, producing EIRP values of 60-75 dBm. The Moon reflects roughly 7% of incident power (geometric albedo at microwave frequencies), distributed across its entire disk.
|
||||
|
||||
After the round-trip, the signal arriving at Earth is staggeringly faint. A typical 1 kW EME station with a 3-meter dish produces a flux density at our antenna that is 15-25 dB below the thermal noise floor in any reasonable bandwidth. This is where digital signal processing earns its keep: Q65 and JT65 use long integration times (60-second or 120-second periods) and forward error correction to pull signals out of noise.
|
||||
|
||||
EME signals exhibit several distinctive characteristics:
|
||||
- **Libration fading** -- the Moon's slight rocking causes multipath between different reflecting regions, producing deep fades every few seconds
|
||||
- **Doppler spread** -- the Moon's rotation smears the reflected signal by ~30 Hz at 1296 MHz
|
||||
- **Polarization rotation** -- Faraday rotation in the ionosphere rotates the polarization plane unpredictably
|
||||
|
||||
## Link budget
|
||||
|
||||
| Parameter | Value | Notes |
|
||||
|-----------|-------|-------|
|
||||
| Frequency | 1296 MHz | 23 cm amateur band |
|
||||
| Wavelength | 23.1 cm | |
|
||||
| Moon distance | ~384,400 km | Average |
|
||||
| Path loss (round-trip) | ~271 dB | Free-space, 2x Earth-Moon distance |
|
||||
| Moon reflection loss | ~12 dB | Geometric albedo ~7% at microwave |
|
||||
| Typical TX station EIRP | +65 dBm | 1 kW into 25 dBi antenna |
|
||||
| Signal at Earth | ~ -218 dBm | Spread across ~30 Hz Doppler |
|
||||
| Our dish gain (est.) | ~15 dBi | 84 cm dish at 1296 MHz, 50% efficiency |
|
||||
| LNA noise figure | 0.5-0.8 dB | Wideband LNA + bandpass filter |
|
||||
| System noise temp | ~60-100 K | Depends on sky temp, ground spillover |
|
||||
| Noise power (30 Hz BW) | ~ -199 dBm | kTB at 100 K |
|
||||
| Expected SNR | ~ -34 dB | In 30 Hz — well below noise |
|
||||
| Q65 decode threshold | ~ -27 dB | In 2500 Hz reference bandwidth |
|
||||
|
||||
The numbers are marginal. With 15 dBi receive gain, we are roughly 7-10 dB below the typical Q65 decode threshold for a single 60-second period. This means:
|
||||
|
||||
- **During contests**, when many stations run high power and large antennas, the strongest signals may be decodable
|
||||
- **On quiet days**, detection is unlikely
|
||||
- **Stacking multiple periods** (averaging across several transmit cycles) can recover a few dB, bringing marginal signals over the threshold
|
||||
|
||||
<Aside type="caution" title="Honest assessment: this is at the edge">
|
||||
Most successful EME receive stations use 25-35 dBi of antenna gain. Our 15 dBi puts us 10-20 dB below typical. This experiment will work during EME contests with the strongest stations, but don't expect casual all-day monitoring to produce decodes. It's a challenge experiment -- success depends on timing, pointing accuracy, and luck.
|
||||
</Aside>
|
||||
|
||||
## Hardware requirements
|
||||
|
||||
<LinkCard title="SDR Hardware Setup" href="/experiments/sdr-hardware/" description="Feed options, LNA selection, bias tee safety, and SDR configuration shared across all external SDR experiments." />
|
||||
|
||||
| Component | Recommended | Alternatives |
|
||||
|-----------|-------------|-------------|
|
||||
| Feed | 5-7 turn RHCP helical for 1296 MHz | Short Yagi as feed, patch |
|
||||
| LNA | Wideband LNA (0.5 dB NF) + 1296 MHz cavity bandpass filter | Any low-NF LNA with adequate filtering |
|
||||
| SDR | BladeRF 2.0 micro (12-bit dynamic range helps) | RTL-SDR V4 (8-bit, marginal for signals this weak) |
|
||||
| Bandwidth needed | ~5 kHz (Q65 occupies ~65 Hz) | Record wider for monitoring multiple stations |
|
||||
|
||||
There is no off-the-shelf SAWbird for 1296 MHz specifically. The recommended approach is a wideband LNA (Mini-Circuits, Qorvo, or similar) followed by a separate 1296 MHz bandpass filter. The filter is critical -- cell tower transmissions in the 1700-2100 MHz range can desensitize or saturate the LNA if unfiltered.
|
||||
|
||||
The BladeRF's 12-bit ADC provides roughly 24 dB more dynamic range than the RTL-SDR's 8-bit ADC. For signals buried in noise, this extra dynamic range helps the digital correlator in WSJT-X distinguish signal from quantization artifacts.
|
||||
|
||||
### Why 1296 MHz and not 144 MHz or 432 MHz
|
||||
|
||||
EME is active on several bands. The choice of 1296 MHz for this experiment is driven by the dish geometry:
|
||||
|
||||
| Band | Frequency | Dish gain (est.) | Beamwidth | EME activity |
|
||||
|------|-----------|-----------------|-----------|-------------|
|
||||
| 2 m | 144 MHz | ~0 dBi | > 90 degrees | Highest (most stations) |
|
||||
| 70 cm | 432 MHz | ~5 dBi | ~50 degrees | Moderate |
|
||||
| 23 cm | 1296 MHz | ~15 dBi | ~15 degrees | Lower (but growing) |
|
||||
|
||||
At 144 MHz, the dish is less than half a wavelength across and provides no useful gain -- a Yagi would outperform it. At 432 MHz, the gain is marginal. At 1296 MHz, the dish finally provides meaningful gain, and the narrower beam better rejects ground noise when pointed at the Moon. The tradeoff is fewer active EME stations on 23 cm compared to 2 meters, which is why contest weekends matter.
|
||||
|
||||
## Proposed procedure
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Mount the 1296 MHz feed.** A 5-7 turn RHCP helical antenna mounted at the dish focal point. RHCP is standard for 1296 MHz EME, though Faraday rotation randomizes the arriving polarization -- a circularly polarized feed loses less on average than a linear one.
|
||||
|
||||
2. **Connect the signal chain.** Feed to wideband LNA, through 1296 MHz bandpass filter, via coax to BladeRF. Power the LNA via bias tee or separate supply. **DC block required** if using the dish's internal coax.
|
||||
|
||||
3. **Check the EME contest calendar.** The best times to attempt this experiment are during major EME contests:
|
||||
- ARRL EME Contest (typically October and November weekends)
|
||||
- Dubus EME Contest (spring)
|
||||
- ARI EME Trophy (various dates)
|
||||
- Regular activity time windows listed on the [N0UK EME page](https://www.n0uk.net/)
|
||||
|
||||
4. **Calculate the Moon's position.** Gpredict can track the Moon as a celestial target. Configure the rotator interface and verify the dish tracks the Moon's ~0.5 degree/minute drift rate smoothly.
|
||||
|
||||
5. **Tune the SDR to 1296.000-1296.100 MHz.** Most EME activity concentrates in the first 100 kHz of the band. Record IQ at a sample rate that covers this window (~200 kHz is sufficient).
|
||||
|
||||
6. **Run WSJT-X in Q65-60C mode.** Configure WSJT-X with the SDR as its audio source (via virtual audio cable or direct SDR integration). Set the mode to Q65-60C (60-second periods, C submodes for deeper decoding). Let it run continuously during the contest period.
|
||||
|
||||
7. **Monitor for decodes.** WSJT-X will display decoded callsigns, signal reports, and grid squares. Even partial decodes (callsign fragments) count as successful detection.
|
||||
|
||||
</Steps>
|
||||
|
||||
## Software pipeline
|
||||
|
||||
| Software | Role |
|
||||
|----------|------|
|
||||
| [Gpredict](http://gpredict.oz9aec.net/) | Moon tracking, rotator control |
|
||||
| [SDR++](https://www.sdrpp.org/) | Spectrum monitoring, IQ recording |
|
||||
| [WSJT-X](https://wsjt.sourceforge.io/) | Q65 / JT65 decoding (purpose-built for EME) |
|
||||
| [MAP65](https://wsjt.sourceforge.io/) | Wideband panoramic EME decoder (monitors entire band segment) |
|
||||
|
||||
WSJT-X is the standard tool for EME digital modes. MAP65 is its companion for wideband monitoring -- it decodes all Q65 signals in a ~90 kHz passband simultaneously, which is ideal for contest monitoring where many stations are active across the band.
|
||||
|
||||
### Audio routing
|
||||
|
||||
WSJT-X expects an audio input, not raw IQ. The SDR must be demodulated to baseband audio before feeding WSJT-X. Two approaches:
|
||||
|
||||
1. **SDR++ as demodulator.** Run SDR++ with the BladeRF, tune to 1296.050 MHz (center of EME activity), select USB mode with 2.5 kHz filter bandwidth, and route the demodulated audio to WSJT-X via a virtual audio cable (PulseAudio, JACK, or PipeWire loopback).
|
||||
|
||||
2. **GNU Radio flowgraph.** Build a minimal flowgraph: BladeRF source at 1296.050 MHz, 200 kHz sample rate, complex-to-real conversion, decimation to 48 kHz audio, output to audio sink. This gives you more control over filtering and can feed MAP65 for wideband panoramic decoding.
|
||||
|
||||
For MAP65 specifically, the input must be wideband I/Q audio (not USB-demodulated) -- MAP65 does its own channelization internally. The GNU Radio approach is more flexible for this.
|
||||
|
||||
## Tracking: lunar rate
|
||||
|
||||
The Moon moves across the sky at approximately 0.5 degrees per minute (combining sidereal motion and the Moon's own orbital velocity). This is far slower than LEO satellite tracking but much faster than sidereal rate for stars.
|
||||
|
||||
Gpredict handles lunar tracking natively. The positioner receives AZ/EL updates every ~1 second. At 0.5 degrees/minute, the Moon moves less than 0.01 degrees between updates -- well within the dish beamwidth. Smooth tracking should not be a problem.
|
||||
|
||||
One consideration: the Moon is above the horizon for roughly 12 hours per day, but EME signals are strongest when the Moon is high in the sky (shorter atmospheric path, lower ground noise in the beam). Sessions when the Moon is above 30 degrees elevation are preferred.
|
||||
|
||||
### Elevation constraint
|
||||
|
||||
The firmware enforces an 18-degree minimum elevation. The Moon spends a significant fraction of its above-horizon time below 18 degrees, especially at higher latitudes. This clips the usable monitoring window -- you lose the first and last ~30 minutes of each moonrise/moonset period. During high lunar declination months, the Moon can reach 60+ degrees elevation from mid-latitudes, giving several hours of usable tracking time.
|
||||
|
||||
The 65-degree maximum elevation is less of a concern since the Moon only exceeds this angle for brief periods from most locations, and those high-elevation windows are the ones with the best SNR anyway.
|
||||
|
||||
## Expected results
|
||||
|
||||
During a major EME contest weekend, with the dish pointed at the Moon and WSJT-X running in Q65 mode:
|
||||
|
||||
- **Optimistic:** 2-5 decoded callsigns per hour from the strongest stations (1 kW+ into 3+ meter dishes). These will appear in WSJT-X's decode pane with signal reports around -25 to -30 dB.
|
||||
- **Realistic:** 0-2 decodes per hour, with many partial decodes that don't meet the error-correction threshold. Stations running very high power from favorable locations will be the most likely detections.
|
||||
- **Minimum success criterion:** detecting any EME-reflected signal at all -- even a consistent spectral trace at the expected Doppler offset without a full decode -- would validate the hardware chain.
|
||||
|
||||
Each successful decode gives you the distant station's callsign, grid square, and signal report, confirming that the round-trip Moon reflection was captured by your dish.
|
||||
|
||||
### Passive radar bonus
|
||||
|
||||
Even without decoding callsigns, the dish can detect the Moon as a radar target. Point the dish at the Moon and compare the noise power in the 1296 MHz band with the noise power when pointed at blank sky at the same elevation. The Moon is a ~230 K thermal emitter at microwave frequencies. With a 15-degree beam and the Moon subtending ~0.5 degrees, the Moon's thermal emission fills about 0.1% of the beam area, contributing roughly 0.2 K to the antenna temperature. This is probably too small to measure with our system noise temperature of 60-100 K.
|
||||
|
||||
However, the Sun is a much stronger thermal source (tens of thousands of K at 1296 MHz) and is easily detectable. A quick ON/OFF measurement of the Sun at 1296 MHz would validate the signal chain and LNA performance before attempting the more challenging EME monitoring.
|
||||
|
||||
## Open questions
|
||||
|
||||
- **Is 15 dBi enough to decode anything?** The link budget says we are 7-10 dB below typical. During contests, the strongest stations run 70+ dBm EIRP -- those extra dB may close the gap. A test during the ARRL EME Contest would answer this definitively.
|
||||
- **Feed reuse with hydrogen line.** A 1296 MHz helical feed is close enough to 1420 MHz that it might provide usable (if reduced) gain for hydrogen line observations. Worth measuring the feed's return loss at both frequencies.
|
||||
- **Polarization strategy.** Faraday rotation randomizes arriving polarization. A dual-polarization feed (two orthogonal helicals or a septum feed) with coherent combining could recover up to 3 dB, but adds complexity. Start with single RHCP.
|
||||
- **Ground noise contribution.** At low elevation angles, the dish's sidelobes pick up warm ground (290 K), raising system noise temperature. Pointing the dish at the Moon when it's low on the horizon may produce worse SNR than the link budget predicts.
|
||||
- **Stacking multiple periods.** WSJT-X can average across multiple Q65 periods in some configurations. If single-period decoding fails, multi-period stacking might push marginal signals over the threshold.
|
||||
- **CW and SSB EME.** Before digital modes, EME was done in CW (Morse code) and SSB (voice). CW EME requires about 15 dB less SNR than SSB but more than Q65. Some operators still use CW during contests. With 15 dBi of gain, even CW EME reception would be marginal, but not impossible from the strongest stations.
|
||||
- **432 MHz EME.** The 70 cm band (432 MHz) is the other major EME frequency. At 432 MHz, the dish would have only ~5 dBi gain (less than 2 wavelengths across) -- too low for practical EME monitoring. The 1296 MHz choice is driven by the dish size.
|
||||
|
||||
## What makes this experiment worth attempting
|
||||
|
||||
The link budget is unfavorable. The dish is undersized. The signals are below the noise floor. So why try?
|
||||
|
||||
Because EME reception with a sub-1-meter dish is a genuine challenge that would be a notable result in the amateur EME community. Most 1296 MHz EME receive stations use 2-6 meter dishes or large Yagi arrays. A confirmed decode from an 84 cm dish -- even if it only happens during the ARRL EME Contest with the strongest stations -- demonstrates what digital signal processing can do at the edge of feasibility. The attempt itself exercises the entire Birdcage signal chain at its limits: precise lunar tracking, low system noise temperature, clean audio routing to WSJT-X, and patience.
|
||||
|
||||
And if it doesn't work on 1296 MHz, the same hardware chain with a 1420 MHz feed immediately pivots to the hydrogen line experiment, where success is virtually guaranteed.
|
||||
|
||||
## Related experiments
|
||||
|
||||
<LinkCard title="Hydrogen Line (1420 MHz)" href="/experiments/sdr/hydrogen-line/" description="Similar frequency, similar feed -- a 1296 MHz helical may cover 1420 MHz with reduced gain, enabling both experiments with one feed." />
|
||||
<LinkCard title="Antenna Pattern Measurement" href="/experiments/dvb/antenna-pattern/" description="Characterize the dish beam pattern to understand sidelobe levels and actual gain at your operating frequency." />
|
||||
194
src/content/docs/experiments/sdr/gps-gnss.mdx
Normal file
194
src/content/docs/experiments/sdr/gps-gnss.mdx
Normal file
@ -0,0 +1,194 @@
|
||||
---
|
||||
title: "GPS/GNSS (1575 MHz)"
|
||||
description: Capturing GPS L1 signals for timing, positioning experiments, and constellation surveys
|
||||
sidebar:
|
||||
order: 4
|
||||
badge:
|
||||
text: Planned
|
||||
variant: caution
|
||||
---
|
||||
|
||||
import { Steps, Aside, LinkCard } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="note" title="Not yet tested">
|
||||
This experiment describes an established amateur radio technique adapted for the Birdcage positioner. The hardware chain and procedures are proposed but not yet validated on this specific platform.
|
||||
</Aside>
|
||||
|
||||
Every GPS receiver on Earth uses an omnidirectional antenna that sees the whole visible sky at once. That is the right design for navigation -- you want as many satellites as possible. But it also means every satellite's signal competes with every other satellite's signal, plus noise from the entire sky hemisphere.
|
||||
|
||||
Pointing a directional dish at a single GPS satellite changes the equation entirely. You gain 12+ dB on the target signal while rejecting interference from other satellites and ground-based noise sources. This turns a routine navigation signal into a tool for studying individual satellite transmissions, measuring atmospheric propagation effects, and surveying constellation coverage at a level of detail that omnidirectional receivers cannot provide.
|
||||
|
||||
This is not a practical navigation receiver. It is a GNSS research instrument.
|
||||
|
||||
## The signal
|
||||
|
||||
GPS L1 transmits at 1575.42 MHz using direct-sequence spread spectrum (DSSS). The civilian C/A code is a 1.023 Mchip/s pseudo-random noise (PRN) sequence that spreads the signal across approximately 2 MHz of bandwidth. Each satellite uses a unique PRN code, allowing the receiver to separate satellites via code correlation even when they share the same frequency.
|
||||
|
||||
The signal power at Earth's surface from a single GPS satellite is approximately -130 dBm -- about 20 dB below the thermal noise floor in a 2 MHz bandwidth. Standard GPS receivers recover the signal through correlation gain (the 1023-chip C/A code provides ~30 dB of processing gain when correctly aligned). With a directional dish adding another 12 dBi of antenna gain on top of this, the post-correlation SNR improves significantly.
|
||||
|
||||
Other GNSS constellations share the L1 neighborhood:
|
||||
|
||||
| System | Frequency | Signal | Notes |
|
||||
|--------|-----------|--------|-------|
|
||||
| GPS L1 | 1575.42 MHz | C/A (BPSK), L1C (BOC) | 31 active satellites |
|
||||
| Galileo E1 | 1575.42 MHz | OS (CBOC) | Overlaps GPS L1 exactly |
|
||||
| BeiDou B1C | 1575.42 MHz | Pilot + data (BOC) | Same center frequency |
|
||||
| GLONASS L1 | 1598.0625-1605.375 MHz | FDMA (0.5625 MHz spacing) | Offset from GPS by ~25 MHz |
|
||||
| SBAS (WAAS) | 1575.42 MHz | Same as GPS L1 | Geostationary augmentation |
|
||||
|
||||
The GPS/Galileo/BeiDou overlap at 1575.42 MHz means a single dish pointing can capture signals from all three constellations simultaneously.
|
||||
|
||||
## Link budget
|
||||
|
||||
| Parameter | Value | Notes |
|
||||
|-----------|-------|-------|
|
||||
| Frequency | 1575.42 MHz | GPS L1 |
|
||||
| Wavelength | 19.0 cm | |
|
||||
| Dish diameter | 84 cm (major axis) | ~4.4 wavelengths across |
|
||||
| Estimated dish gain | ~12 dBi | Small dish relative to wavelength |
|
||||
| Beamwidth (est.) | ~18 degrees | Broad enough to contain satellite motion during dwell |
|
||||
| GPS satellite EIRP | ~26 dBW (+56 dBm) | Varies by satellite block and position in beam |
|
||||
| Orbital altitude | 20,200 km | MEO orbit |
|
||||
| Path loss | ~182 dB | Free-space at 20,200 km |
|
||||
| Signal at antenna | ~-130 dBm | Before antenna gain |
|
||||
| Signal after dish gain | ~-118 dBm | 12 dBi improvement over isotropic |
|
||||
| LNA noise figure | 0.6 dB | Nooelec SAWbird GNSS |
|
||||
| Noise floor (2 MHz BW) | ~-111 dBm | kTB at ~100 K, 2 MHz |
|
||||
| Pre-correlation SNR | ~-7 dB | Signal below noise, as expected |
|
||||
| C/A correlation gain | ~30 dB | 1023-chip code, 1 ms integration |
|
||||
| Post-correlation SNR | ~+23 dB | Easily detected after despreading |
|
||||
|
||||
The dish gain doesn't help with the despreading (that is a code-domain operation), but it does improve the pre-correlation SNR by 12 dB compared to an omnidirectional antenna. This matters for several reasons: better carrier phase tracking, faster acquisition, and the ability to detect weaker signals that a standard antenna would miss entirely (such as reflected multipath components or signals from satellites at extreme off-boresight angles).
|
||||
|
||||
## Hardware requirements
|
||||
|
||||
<LinkCard title="SDR Hardware Setup" href="/experiments/sdr-hardware/" description="Feed options, LNA selection, bias tee safety, and SDR configuration shared across all external SDR experiments." />
|
||||
|
||||
| Component | Recommended | Alternatives |
|
||||
|-----------|-------------|-------------|
|
||||
| Feed | RHCP patch antenna for 1575 MHz | RHCP helical (wider bandwidth, covers GLONASS too) |
|
||||
| LNA | Nooelec SAWbird GNSS (1575 MHz filtered, 0.6 dB NF) | Any filtered GNSS LNA |
|
||||
| SDR | RTL-SDR V4 (2.56 MHz stable BW covers C/A code) | BladeRF (wider BW captures GLONASS simultaneously) |
|
||||
| Bandwidth needed | 2.048 MHz minimum (C/A code) | 4+ MHz to include GLONASS L1 |
|
||||
|
||||
<Aside type="caution" title="GPS signals are spread-spectrum">
|
||||
Unlike the hydrogen line or HRPT, GPS signals are spread below the noise floor. You will not see a GPS satellite as a spectral peak in SDR++ -- the signal is hidden in the noise until correlation processing extracts it. Don't be alarmed by a flat-looking spectrum. The signal is there; gnss-sdr will find it.
|
||||
</Aside>
|
||||
|
||||
## Proposed procedure
|
||||
|
||||
### Single-satellite acquisition
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Mount the 1575 MHz feed.** An RHCP patch antenna designed for GPS L1, mounted at the dish focal point. GPS is RHCP; using the correct polarization avoids 3 dB mismatch loss.
|
||||
|
||||
2. **Connect the signal chain.** Feed to SAWbird GNSS LNA, LNA via coax to RTL-SDR. Power the LNA via bias tee. **Apply a DC block** if routing through the dish's internal coax.
|
||||
|
||||
3. **Identify a target satellite.** Use Gpredict or any GNSS prediction tool to find a GPS satellite currently above 30 degrees elevation at your location. Note its PRN number and AZ/EL position.
|
||||
|
||||
4. **Point the dish at the satellite.** Use the Birdcage TUI or CLI to slew to the target AZ/EL. GPS satellites in MEO orbit move slowly -- roughly 0.01 degrees/second as seen from the ground -- so the dish can hold a fixed position for several minutes without losing the satellite from the beam.
|
||||
|
||||
5. **Record IQ samples.** Capture 30-60 seconds of raw IQ data at 2.048 Msps or higher, centered on 1575.42 MHz.
|
||||
|
||||
6. **Process with gnss-sdr.** Configure gnss-sdr to search for the specific PRN of the satellite you pointed at. It should acquire and track the signal with higher C/N0 than a standard antenna would produce.
|
||||
|
||||
</Steps>
|
||||
|
||||
### Constellation survey (step-and-dwell)
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Define a sky grid.** Divide the visible sky into grid cells matching the dish beamwidth (~18 degrees). For a hemisphere survey: approximately 10 elevation steps from 18 degrees (firmware minimum) to 90 degrees, with AZ steps that decrease as elevation increases (fewer cells near zenith).
|
||||
|
||||
2. **At each grid position, record 60 seconds of IQ.** The gnss-sdr post-processing will search for all PRN codes in each recording.
|
||||
|
||||
3. **Build a detection map.** For each grid position, record which PRNs were detected and at what C/N0. Compare with the predicted satellite positions from the GNSS almanac.
|
||||
|
||||
4. **Analyze spatial selectivity.** The dish should detect satellites within the beam and reject those outside it. Plotting detected C/N0 vs. angular distance from beam center characterizes the dish's spatial filtering at L-band.
|
||||
|
||||
</Steps>
|
||||
|
||||
## Software pipeline
|
||||
|
||||
| Software | Role |
|
||||
|----------|------|
|
||||
| [gnss-sdr](https://gnss-sdr.org/) | GPS/Galileo/GLONASS signal acquisition, tracking, and PVT |
|
||||
| [SDR++](https://www.sdrpp.org/) | Spectrum monitoring and IQ recording |
|
||||
| [GNU Radio](https://www.gnuradio.org/) | Custom acquisition flowgraphs |
|
||||
| [RTKLIB](https://www.rtklib.com/) | Post-processing of RINEX observables from gnss-sdr |
|
||||
|
||||
gnss-sdr is the core tool. It implements a complete GNSS receiver in software: acquisition (finding the satellite signal), tracking (maintaining code and carrier lock), and navigation (computing position/time from the tracked signals). It reads IQ samples from a file or live SDR source and outputs standard RINEX observation files that RTKLIB and other geodetic tools can process.
|
||||
|
||||
For the single-satellite experiment, configure gnss-sdr to search only the target PRN -- this speeds up acquisition and avoids false locks on satellites outside the beam that leak in through sidelobes.
|
||||
|
||||
### gnss-sdr configuration
|
||||
|
||||
gnss-sdr uses a configuration file to define the signal source, acquisition parameters, tracking loops, and telemetry processing. A minimal configuration for single-satellite capture with an RTL-SDR:
|
||||
|
||||
```ini
|
||||
[GNSS-SDR]
|
||||
GNSS-SDR.internal_fs_sps=2048000
|
||||
|
||||
;--- Signal Source ---
|
||||
SignalSource.implementation=Osmosdr_Signal_Source
|
||||
SignalSource.item_type=gr_complex
|
||||
SignalSource.sampling_frequency=2048000
|
||||
SignalSource.freq=1575420000
|
||||
SignalSource.gain=40
|
||||
SignalSource.rf_gain=40
|
||||
SignalSource.if_gain=40
|
||||
|
||||
;--- Acquisition ---
|
||||
Acquisition_1C.implementation=GPS_L1_CA_PCPS_Acquisition
|
||||
Acquisition_1C.doppler_max=5000
|
||||
Acquisition_1C.doppler_step=250
|
||||
Acquisition_1C.threshold=2.0
|
||||
|
||||
;--- Tracking ---
|
||||
Tracking_1C.implementation=GPS_L1_CA_DLL_PLL_Tracking
|
||||
Tracking_1C.pll_bw_hz=30.0
|
||||
Tracking_1C.dll_bw_hz=2.0
|
||||
|
||||
;--- Telemetry ---
|
||||
TelemetryDecoder_1C.implementation=GPS_L1_CA_Telemetry_Decoder
|
||||
```
|
||||
|
||||
For file-based processing (recorded IQ), replace the `SignalSource` block with a `File_Signal_Source` pointing to the raw capture file.
|
||||
|
||||
## Expected results
|
||||
|
||||
### Single-satellite pointing
|
||||
- **C/N0 improvement** of 10-12 dB compared to an omnidirectional patch antenna on the same satellite. A typical GPS patch reports 40-45 dB-Hz for an overhead satellite; the dish should produce 50-57 dB-Hz.
|
||||
- **Sidelobe rejection.** Satellites more than ~20 degrees off-boresight should show significantly reduced C/N0 or fail to acquire entirely. This confirms the dish is providing spatial selectivity.
|
||||
|
||||
### Constellation survey
|
||||
- A **sky map of C/N0 vs. position** showing each detected satellite as a blob whose brightness corresponds to received signal strength. Satellites near beam center appear strong; those at the edges of the beam are weaker.
|
||||
- **Atmospheric delay vs. elevation.** By pointing at the same satellite at different elevation angles over time (as it traverses the sky), you can measure how C/N0 degrades at low elevations due to tropospheric and ionospheric path effects. This replicates a technique used in professional GNSS atmospheric monitoring.
|
||||
|
||||
### Timing
|
||||
gnss-sdr can output pulse-per-second (PPS) and time-of-week data. With the dish pointed at a single satellite and providing 50+ dB-Hz C/N0, the timing solution should be more stable than a standard antenna -- fewer satellites but higher SNR on each yields cleaner pseudorange measurements.
|
||||
|
||||
### Atmospheric propagation measurement
|
||||
|
||||
This may be the most scientifically interesting application of the directional GPS setup. By tracking a single satellite as it traverses different elevation angles over several hours, you can measure the elevation-dependent C/N0 degradation curve. This curve encodes:
|
||||
|
||||
- **Tropospheric delay** -- the wet and dry components of atmospheric refraction, which increase at low elevation angles (approximately as 1/sin(elevation))
|
||||
- **Ionospheric delay** -- frequency-dependent group delay from free electrons, also elevation-dependent
|
||||
- **Ground multipath** -- reflections from the surface near the antenna that cause constructive/destructive interference patterns
|
||||
|
||||
Professional GNSS monitoring stations measure these effects routinely using omnidirectional antennas and multiple satellites. The directional dish approach isolates a single satellite, removing the multi-satellite geometry complications and providing a cleaner measurement of the propagation channel along one specific line of sight.
|
||||
|
||||
## Open questions
|
||||
|
||||
- **gnss-sdr with narrow beam.** gnss-sdr normally expects to see 4+ satellites simultaneously for a position fix. With the dish pointed at one satellite, it may produce tracking output but fail to compute a navigation solution (not enough geometry). This is fine for our purposes -- we want the raw observables, not a position fix -- but it may require configuration changes to disable PVT requirements.
|
||||
- **Feed bandwidth.** A narrowband 1575 MHz patch won't cover GLONASS L1 (1598-1606 MHz). A wideband RHCP helical feed could cover both but with lower gain at each frequency. The choice depends on whether GLONASS observation is a priority.
|
||||
- **Multipath experiments.** With a directional dish, you could deliberately point slightly off the direct satellite line-of-sight to study multipath reflections from buildings, terrain, or the ground. This is an advanced experiment but could produce interesting data on multipath geometry.
|
||||
- **SBAS detection.** WAAS satellites (geostationary, 1575.42 MHz, RHCP) are fixed in the sky and always transmitting. They make excellent first targets -- point the dish at a known WAAS satellite position and verify detection before attempting the moving GPS constellation.
|
||||
- **Interference from off-beam satellites.** With 8-12 GPS satellites visible at any time and an 18-degree beamwidth, 1-3 satellites may fall within the main beam simultaneously. The code-domain separation (each satellite uses a unique PRN) means they don't interfere in the conventional sense, but the total received power from unwanted PRNs raises the noise floor slightly. This is the "near-far problem" in CDMA systems -- the dish mitigates it by spatially filtering, but doesn't eliminate it.
|
||||
- **L2/L5 bands.** GPS also transmits on L2 (1227.60 MHz) and L5 (1176.45 MHz). These frequencies are lower, meaning higher dish gain (larger effective aperture relative to wavelength). A future experiment could use a wideband feed to capture L1 + L5 simultaneously with the BladeRF's wide bandwidth.
|
||||
|
||||
## Related experiments
|
||||
|
||||
<LinkCard title="NOAA HRPT (1.7 GHz)" href="/experiments/sdr/noaa-hrpt/" description="A wideband L-band helical feed can cover both GPS (1575 MHz) and NOAA HRPT (1698 MHz) with moderate gain at each." />
|
||||
<LinkCard title="Iridium (1626 MHz)" href="/experiments/sdr/iridium/" description="Adjacent L-band frequency with similar feed requirements -- an opportunity for shared hardware." />
|
||||
177
src/content/docs/experiments/sdr/hydrogen-line.mdx
Normal file
177
src/content/docs/experiments/sdr/hydrogen-line.mdx
Normal file
@ -0,0 +1,177 @@
|
||||
---
|
||||
title: "Hydrogen Line (1420 MHz)"
|
||||
description: Mapping galactic hydrogen emission at 21 cm — the most accessible radio astronomy target
|
||||
sidebar:
|
||||
order: 1
|
||||
badge:
|
||||
text: Planned
|
||||
variant: caution
|
||||
---
|
||||
|
||||
import { Steps, Aside, LinkCard } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="note" title="Not yet tested">
|
||||
This experiment describes an established amateur radio technique adapted for the Birdcage positioner. The hardware chain and procedures are proposed but not yet validated on this specific platform.
|
||||
</Aside>
|
||||
|
||||
The hydrogen line at 1420.405 MHz is the most accessible target in radio astronomy. Neutral hydrogen atoms throughout the Milky Way emit radiation at this precise frequency when their electron spin flips. The emission is always present, covers the entire galactic plane, and the Doppler shift of the line encodes the radial velocity of the gas -- making it possible to map the rotation curve of the galaxy with amateur equipment.
|
||||
|
||||
This is the experiment with the deepest community support. Dozens of amateur radio astronomers have detected the hydrogen line with dishes smaller than ours, and the processing pipeline is well-documented.
|
||||
|
||||
## The signal
|
||||
|
||||
Galactic hydrogen emission produces a spectral line centered at 1420.405 MHz (21.106 cm wavelength). The line is not infinitely narrow -- thermal motion of the gas and bulk galactic rotation broaden it. Pointing toward the galactic plane, you see multiple velocity components from different spiral arms, spread across roughly 1420.405 MHz +/- 1.4 MHz (corresponding to radial velocities of +/- 300 km/s).
|
||||
|
||||
The signal strength varies dramatically with pointing direction. The galactic plane (especially toward the galactic center in Sagittarius) produces the strongest emission, with antenna temperatures of 50-200 K above the background. At high galactic latitudes, the line is still present but much weaker (5-20 K). This contrast is what makes the experiment satisfying -- you see the galaxy's structure in your data.
|
||||
|
||||
## Link budget
|
||||
|
||||
| Parameter | Value | Notes |
|
||||
|-----------|-------|-------|
|
||||
| Frequency | 1420.405 MHz | 21 cm hydrogen line |
|
||||
| Wavelength | 21.1 cm | |
|
||||
| Dish diameter | 84 cm (major axis) | 33" x 23" elliptical |
|
||||
| Estimated dish gain | ~15 dBi | Assuming 50% aperture efficiency |
|
||||
| Beamwidth (est.) | ~15 degrees | Coarse resolution, but sufficient for large-scale structure |
|
||||
| Source antenna temp | 50-200 K | Galactic plane; 5-20 K off-plane |
|
||||
| LNA noise figure | 0.7 dB | Nooelec SAWbird H1 |
|
||||
| System noise temp | ~80-120 K | LNA + spillover + sky background |
|
||||
| Integration time | 30-60 seconds | Per pointing, FFT accumulation |
|
||||
|
||||
The key ratio is the source temperature vs. the system noise temperature. With T_source / T_sys of roughly 1-2 on the galactic plane, the line should be clearly visible after 30-60 seconds of spectral integration per pointing. Off the plane, longer integration (2-5 minutes) may be needed.
|
||||
|
||||
## Hardware requirements
|
||||
|
||||
<LinkCard title="SDR Hardware Setup" href="/experiments/sdr-hardware/" description="Feed options, LNA selection, bias tee safety, and SDR configuration shared across all external SDR experiments." />
|
||||
|
||||
| Component | Recommended | Alternatives |
|
||||
|-----------|-------------|-------------|
|
||||
| Feed | 5-7 turn RHCP helical at 1420 MHz | Patch antenna, can antenna (lower gain) |
|
||||
| LNA | Nooelec SAWbird H1 (1420 MHz filtered, 0.7 dB NF) | Any filtered 1420 MHz LNA |
|
||||
| SDR | RTL-SDR V4 | BladeRF (12-bit helps but isn't necessary) |
|
||||
| Bandwidth needed | ~3 MHz centered on 1420.405 MHz | Captures full Doppler range |
|
||||
|
||||
Even an 8-bit RTL-SDR works well for hydrogen line work. The signal is a spectral line, not a wideband signal -- the FFT bins average out quantization noise effectively, and 3 MHz of bandwidth is well within the RTL-SDR's stable range.
|
||||
|
||||
### Feed design considerations
|
||||
|
||||
The helical antenna is the most common feed choice for amateur hydrogen line work. A 5-turn RHCP helix designed for 1420 MHz has the following approximate dimensions:
|
||||
|
||||
| Parameter | Value |
|
||||
|-----------|-------|
|
||||
| Turn spacing | 0.25 lambda = 5.3 cm |
|
||||
| Circumference | 1.0 lambda = 21.1 cm |
|
||||
| Diameter | ~6.7 cm |
|
||||
| Total length | ~26.5 cm (5 turns) |
|
||||
| Ground plane | ~0.75 lambda = 15.8 cm diameter |
|
||||
| Gain | ~12-14 dBi (as standalone antenna) |
|
||||
| Beamwidth | ~40-50 degrees |
|
||||
|
||||
The helical feed should illuminate the dish reflector evenly. If the feed beamwidth is too narrow, the dish edges are under-illuminated and effective aperture decreases. If too wide, energy spills past the dish edges and picks up ground noise. The optimal feed beamwidth depends on the dish f/D ratio, which hasn't been measured on this reflector. Start with 5 turns and adjust -- 7 turns narrows the beam (better for deep dishes with short focal length), fewer turns widens it.
|
||||
|
||||
Hydrogen is unpolarized, so the RHCP helical receives half the total power (the LHCP half is lost). A linearly polarized feed would also receive half. There is no polarization advantage either way -- use whichever feed is easier to build.
|
||||
|
||||
## Dish performance at 21 cm
|
||||
|
||||
The Carryout G2 reflector is roughly 4 wavelengths across at 1420 MHz. This is small by radio astronomy standards -- purpose-built hydrogen line dishes are typically 2-3 meters -- but it is enough to detect the line. The limiting factor is angular resolution, not sensitivity.
|
||||
|
||||
With a ~15 degree beamwidth, you cannot resolve individual molecular clouds or HII regions. What you can resolve is the large-scale structure of the galactic plane: the broad emission from the inner galaxy vs. the narrower emission at the anticenter, and the velocity structure that maps spiral arms. Professional surveys from the 1950s-1960s that first mapped the Milky Way's spiral structure used dishes with comparable angular resolution.
|
||||
|
||||
The elliptical aperture (84 cm x 58 cm) means the beam is not circular. The major axis of the dish produces a narrower beam (~15 degrees) and the minor axis a wider beam (~22 degrees). Orienting the dish so the major axis aligns with the galactic plane scan direction gives the best angular resolution along the scan.
|
||||
|
||||
## Proposed procedure
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Mount the 1420 MHz feed at the dish focal point.** Remove the stock Ku-band LNB and mount a 5-7 turn RHCP helical antenna in its place. The feed should be centered on the reflector's focal point -- start at the same position as the stock LNB and adjust.
|
||||
|
||||
2. **Connect the signal chain.** Feed output to SAWbird H1 LNA, LNA output via coax to SDR. Power the LNA via the SDR's bias tee (4.5V) or an external injector. **Do not use the Winegard's internal coax path without a DC block** -- the 12-18V LNB bias will damage the LNA and SDR.
|
||||
|
||||
3. **Verify the signal chain in SDR++.** Tune to 1420.405 MHz with ~3 MHz bandwidth. You should see a clean noise floor with the dish pointed away from the galactic plane. A noticeable bump at 1420.405 MHz when pointed toward the galactic plane confirms the chain is working.
|
||||
|
||||
4. **Configure step-and-integrate tracking.** Define a grid of AZ/EL pointings covering the galactic plane's path across your local sky. At each grid point, the positioner holds while the SDR records for 30-60 seconds.
|
||||
|
||||
5. **Record spectra.** At each pointing, capture an FFT-averaged spectrum (1024 or 2048 bins across 3 MHz). Save the spectrum along with the AZ/EL coordinates and timestamp.
|
||||
|
||||
6. **Step to the next grid position and repeat.** The 15-degree beamwidth means grid spacing of 10-15 degrees is appropriate -- finer spacing oversamples but won't hurt.
|
||||
|
||||
</Steps>
|
||||
|
||||
## Software pipeline
|
||||
|
||||
| Software | Role |
|
||||
|----------|------|
|
||||
| [SDR++](https://www.sdrpp.org/) | Quick-look spectrum visualization, initial chain verification |
|
||||
| [GNU Radio](https://www.gnuradio.org/) | FFT accumulation flowgraph, IQ recording |
|
||||
| [Virgo](https://github.com/0xCoto/Virgo) | Dedicated hydrogen line observation and analysis tool |
|
||||
| [PICTOR](https://github.com/0xCoto/PICTOR) | Web-based radio telescope interface (if automating) |
|
||||
|
||||
A minimal GNU Radio flowgraph: RTL-SDR source (1420.405 MHz, 3 MHz sample rate) into an FFT sink with 1024 bins and 30-second averaging. Export the averaged spectrum as CSV for each pointing.
|
||||
|
||||
Virgo is purpose-built for hydrogen line observations with RTL-SDR hardware. It handles spectrum calibration, RFI flagging, and velocity conversion out of the box.
|
||||
|
||||
### Calibration
|
||||
|
||||
The raw spectrum from the SDR contains the hydrogen emission on top of the receiver's bandpass shape (which is not flat). To extract the true emission profile, you need a reference spectrum taken with the dish pointed away from any emission (high galactic latitude). Dividing the on-source spectrum by this off-source reference removes the instrumental bandpass and leaves only the astronomical signal.
|
||||
|
||||
This ON/OFF calibration technique is standard in radio astronomy. The procedure:
|
||||
1. Point to a blank patch of sky at high galactic latitude. Record a reference spectrum (same integration time as your science observations).
|
||||
2. Point to the target position on the galactic plane. Record the science spectrum.
|
||||
3. Compute (ON - OFF) / OFF to get the fractional excess due to hydrogen emission.
|
||||
4. Convert the frequency axis to velocity using v = c * (f_0 - f) / f_0, where f_0 = 1420.405 MHz.
|
||||
|
||||
Repeat the reference measurement periodically (every 30-60 minutes) to account for gain drift in the LNA and SDR.
|
||||
|
||||
## Expected results
|
||||
|
||||
Pointing along the galactic plane should produce a clear emission line at 1420.405 MHz with broadening and multiple peaks corresponding to different spiral arm velocities. A full galactic plane survey (sweeping through accessible AZ/EL positions as the galactic plane transits) should show:
|
||||
|
||||
- **Strong, broad emission** toward the galactic center (Sagittarius, if visible from your latitude)
|
||||
- **Narrower emission** toward the galactic anticenter (Auriga/Taurus)
|
||||
- **Distinct velocity components** at different longitudes, corresponding to spiral arm crossings
|
||||
- **Weak or absent emission** at high galactic latitudes
|
||||
|
||||
The Doppler velocity of detected hydrogen (v = c * delta_f / f_0) directly maps to the radial velocity of the gas along each line of sight. Plotting velocity vs. galactic longitude reproduces the galaxy's rotation curve -- a result first obtained by professional radio astronomers in the 1950s and now routinely replicated by amateurs.
|
||||
|
||||
### What a single spectrum looks like
|
||||
|
||||
A single 60-second integration pointed at galactic longitude ~30 degrees (toward the inner galaxy) typically shows:
|
||||
- A strong peak near 0 km/s from local hydrogen in the solar neighborhood
|
||||
- A broader component shifted to positive velocities (receding gas from the inner galaxy, galactic rotation)
|
||||
- Possibly a second peak at higher positive velocities from a spiral arm crossing
|
||||
|
||||
The total line width spans roughly -100 to +150 km/s at this longitude. The peaks are 0.5-2 K above the baseline (before calibration, the raw power spectral density will show this as a bump of a few percent above the noise floor).
|
||||
|
||||
## Automation with Birdcage
|
||||
|
||||
The step-and-integrate workflow is a natural fit for scripting. The Birdcage CLI accepts AZ/EL positioning commands, and the SDR recording can be triggered via command-line tools (SDR++ has a remote control interface, or use `rx_sdr` for headless capture). A complete galactic plane survey could be automated as:
|
||||
|
||||
1. Read a list of target AZ/EL positions from a file (pre-computed based on galactic plane coordinates and current sidereal time)
|
||||
2. For each position: move the dish via `birdcage move`, wait for settle, start IQ recording, wait for integration period, stop recording, tag the file with coordinates
|
||||
3. After the survey: run the calibration pipeline, convert to velocity spectra, plot the galactic longitude-velocity diagram
|
||||
|
||||
The galactic plane transits the local sky over several hours. A full survey of accessible longitudes takes one night of automated operation.
|
||||
|
||||
## Open questions
|
||||
|
||||
- **Surface accuracy.** At 21 cm wavelength, surface irregularities up to ~2 cm are tolerable (lambda/10 rule). The Carryout G2's stamped metal reflector should be fine, but this is unconfirmed.
|
||||
- **Focal length.** The reflector's exact f/D ratio hasn't been measured. Feed placement will need empirical optimization using a known source (the Sun is a broadband calibrator, or use a strong geostationary satellite at Ku-band with the stock LNB to find the focal point first).
|
||||
- **RFI environment.** The 1420 MHz band is protected for radio astronomy, but illegal or spurious emissions near this frequency exist. The SAWbird H1's bandpass filter helps, but local RFI surveys may be needed.
|
||||
- **Integration time vs. pointing stability.** The motors hold position well once stopped, but any drift during a 60-second integration would smear the beam. Characterize pointing stability before committing to long integrations.
|
||||
- **Continuum vs. line emission.** The 1420 MHz band also contains continuum (broadband) emission from the galactic plane. With sufficient sensitivity, the dish could map continuum brightness temperature in addition to the spectral line. This requires more careful bandpass calibration but uses the same hardware.
|
||||
|
||||
## Community and references
|
||||
|
||||
The amateur hydrogen line community is one of the most active in radio astronomy. Several resources are worth reviewing before starting:
|
||||
|
||||
- **SARA (Society of Amateur Radio Astronomers)** publishes tutorials and maintains a mailing list where members share results from dishes similar to or smaller than ours
|
||||
- **Virgo documentation** includes detailed build guides for helical feeds and SAWbird integration
|
||||
- **Open Astronomy Catalog** projects collect amateur H-line observations for comparison
|
||||
- The landmark paper by van de Hulst (1945) predicted the 21 cm line; Ewen and Purcell detected it in 1951 with a horn antenna smaller than our dish
|
||||
|
||||
The most rewarding aspect of this experiment is that the result -- a galactic rotation curve derived from your own backyard measurements -- is the same measurement that demonstrated the existence of dark matter in galaxies. The rotation curve doesn't flatten at the expected rate based on visible matter alone. While our resolution is too coarse to make that argument rigorously, the basic shape of the curve is visible even in amateur data.
|
||||
|
||||
## Related experiments
|
||||
|
||||
<LinkCard title="EME Monitoring (1296 MHz)" href="/experiments/sdr/eme-monitoring/" description="Similar L-band feed and LNA chain -- a 1420 MHz helical can often cover 1296 MHz with reduced gain." />
|
||||
<LinkCard title="Antenna Pattern Measurement" href="/experiments/dvb/antenna-pattern/" description="Characterize the dish beam at Ku-band first, then adapt the technique to verify your 1420 MHz feed illumination." />
|
||||
198
src/content/docs/experiments/sdr/inmarsat-lband.mdx
Normal file
198
src/content/docs/experiments/sdr/inmarsat-lband.mdx
Normal file
@ -0,0 +1,198 @@
|
||||
---
|
||||
title: "Inmarsat L-Band (~1.5 GHz)"
|
||||
description: Receiving Inmarsat geostationary L-band signals for AERO, SafetyNET, and EGC decoding
|
||||
sidebar:
|
||||
order: 7
|
||||
badge:
|
||||
text: Planned
|
||||
variant: caution
|
||||
---
|
||||
|
||||
import { Steps, Aside, LinkCard } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="note" title="Not yet tested">
|
||||
This experiment describes an established amateur radio technique adapted for the Birdcage positioner. The hardware chain and procedures are proposed but not yet validated on this specific platform.
|
||||
</Aside>
|
||||
|
||||
## The signal
|
||||
|
||||
Inmarsat operates a fleet of geostationary satellites providing maritime, aviation, and government communication services. The L-band downlinks (1525-1559 MHz) carry several signal types that are unencrypted and continuously transmitted:
|
||||
|
||||
- **AERO** -- ACARS-over-satellite, relaying aircraft position reports, weather data, and operational messages between cockpits and ground stations via satellite
|
||||
- **SafetyNET** -- maritime safety information broadcasts including weather warnings, navigational hazards, search and rescue coordination, and NAVTEX-equivalent messages
|
||||
- **EGC (Enhanced Group Call)** -- broadcast messages to defined geographic areas or fleet groups, including distress alerts and urgency messages
|
||||
|
||||
These signals are receivable with modest equipment. The amateur community has been decoding them for years using patch antennas and RTL-SDR dongles. A directional dish provides significantly better SNR than the typical setup, making it easier to decode weaker channels and resolve signals from more distant beams.
|
||||
|
||||
Because the source is geostationary, the dish points at a fixed position and holds it. No tracking is required -- this is the simplest possible pointing scenario for the Birdcage positioner.
|
||||
|
||||
### What's in the signals
|
||||
|
||||
The content on these channels is operational and current. SafetyNET broadcasts carry real maritime weather warnings issued by national meteorological services -- storm warnings, ice reports, volcanic ash advisories, and NAVTEX-equivalent navigational hazards. AERO messages carry the same ACARS data that aviation enthusiasts monitor on VHF, but routed through satellite for aircraft over oceans where no ground stations exist. EGC messages include distress relay broadcasts, coast guard notices, and search-and-rescue coordination.
|
||||
|
||||
None of this is encrypted. The International Maritime Organization mandates that safety information be freely receivable, and the AERO channel carries unencrypted ACARS by design. Receiving and decoding these signals is a well-established hobby with an active community.
|
||||
|
||||
## Target satellites
|
||||
|
||||
For stations in the Americas, two Inmarsat satellites provide coverage:
|
||||
|
||||
| Satellite | Position | Coverage | Primary use |
|
||||
|-----------|----------|----------|-------------|
|
||||
| Inmarsat-4 F3 (I-4 Americas) | 98.0 deg W | Americas, Atlantic, Pacific | Current primary. BGAN, SwiftBroadband, AERO |
|
||||
| Inmarsat-3 F4 | 54.0 deg W | Atlantic, Western Europe, East Americas | Older generation. EGC, SafetyNET, Fleet |
|
||||
| Inmarsat-6 F2 | ~60.9 deg W | Americas (migrating) | Latest generation, entering service |
|
||||
|
||||
Inmarsat-4 F3 at 98 degrees West is the strongest target from most of North America. It carries both global beam (wide coverage, lower EIRP) and spot beam (narrower coverage, higher EIRP) services.
|
||||
|
||||
<Aside type="tip" title="Finding exact satellite positions">
|
||||
Geostationary satellite positions drift slightly over time. Use a current TLE source (Celestrak or Space-Track) or the [Geostationary Arc Census](/experiments/dvb/geostationary-census/) experiment to confirm the exact AZ/EL for your ground station before committing to a long recording session.
|
||||
</Aside>
|
||||
|
||||
## Link budget
|
||||
|
||||
| Parameter | Value | Notes |
|
||||
|-----------|-------|-------|
|
||||
| Satellite EIRP (global beam) | ~15 dBW | Wide coverage, modest power per unit area |
|
||||
| Satellite EIRP (spot beam) | ~40 dBW | Narrow regional coverage |
|
||||
| Altitude | 35,786 km | Geostationary orbit |
|
||||
| Slant range | ~37,000 km | Typical from mid-latitudes |
|
||||
| Free-space path loss | ~188 dB | At 1540 MHz, 37,000 km |
|
||||
| Dish gain (est.) | ~15 dBi | 84 cm x 58 cm elliptical at 1540 MHz |
|
||||
| LNA noise figure | 0.8 dB | Wideband L-band LNA |
|
||||
| System noise temp | ~80 K | LNA-dominated |
|
||||
| Required C/N | ~6 dB | For BPSK demodulation (SafetyNET) |
|
||||
| **Link margin (global beam)** | **~8 dB** | Receivable with margin |
|
||||
| **Link margin (spot beam)** | **~33 dB** | Very strong |
|
||||
|
||||
The global beam is the more challenging target. With an omnidirectional patch antenna (~3 dBi), the global beam is marginal -- sometimes decodable, often dropping frames. The dish's 15 dBi gain provides 12 dB more than a patch, which puts the global beam solidly in the receivable range and makes spot beam signals trivially strong.
|
||||
|
||||
## Hardware requirements
|
||||
|
||||
See [SDR Hardware Setup](/experiments/sdr-hardware/) for the full signal chain, feed mounting, and bias tee safety details.
|
||||
|
||||
| Component | Recommendation | Notes |
|
||||
|-----------|---------------|-------|
|
||||
| Feed | Helical (3-5 turns, RHCP) or patch antenna | Tuned for ~1540 MHz center. RHCP matches Inmarsat downlink |
|
||||
| LNA | Wideband L-band LNA + 1525-1560 MHz bandpass filter | No SAWbird exists for this band; use a wideband LNA with external filter |
|
||||
| SDR | RTL-SDR V4 | 1540 MHz well within range. 2.56 MHz BW covers multiple channels |
|
||||
| SDR (wideband) | BladeRF 2.0 micro | Captures more of the L-band allocation simultaneously |
|
||||
| Tracking mode | Fixed pointing | Geostationary -- calculate AZ/EL once and hold |
|
||||
|
||||
Inmarsat L-band signals are RHCP (right-hand circular polarization). A linearly polarized feed loses 3 dB vs. circular. For maximum signal, use a helical feed wound for RHCP. A patch antenna with circular polarization is also effective and mechanically simpler to mount.
|
||||
|
||||
<Aside type="caution" title="Nearby cellular interference">
|
||||
The 1525-1559 MHz Inmarsat band sits between GPS L1 (1575 MHz) and cellular/AWS bands below 1500 MHz. Depending on your location, cellular base stations may produce strong enough signals to desensitize the SDR even outside its tuned bandwidth. A bandpass filter between the LNA and SDR is highly recommended.
|
||||
</Aside>
|
||||
|
||||
## Proposed procedure
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Prepare the hardware chain.** Mount the helical or patch feed at the dish focal point, connect through the LNA and bandpass filter to the SDR. Ensure the Winegard LNB bias tee is disconnected or blocked (see [SDR Hardware Setup](/experiments/sdr-hardware/)).
|
||||
|
||||
2. **Calculate the satellite's AZ/EL.** Using your ground station coordinates and the satellite's longitude (98.0 deg W for Inmarsat-4 F3), compute azimuth and elevation. Online calculators or Gpredict's geostationary satellite mode both work. Example for central US: AZ ~ 195 deg, EL ~ 45 deg.
|
||||
|
||||
3. **Point the dish.**
|
||||
|
||||
```bash
|
||||
birdcage move --az 195.0 --el 45.0 --port /dev/ttyUSB2 --baud 115200
|
||||
```
|
||||
|
||||
Or via rotctld:
|
||||
|
||||
```bash
|
||||
birdcage serve --port /dev/ttyUSB2 --baud 115200 &
|
||||
echo "P 195.0 45.0" | nc 127.0.0.1 4533
|
||||
```
|
||||
|
||||
4. **Verify signal presence in SDR++.** Tune to 1539.0 MHz (a common Inmarsat channel) with 1 MHz bandwidth. You should see multiple carriers in the waterfall -- narrow BPSK channels spaced across the band. If nothing is visible, slowly scan the dish +/- 2 degrees in AZ and EL to peak the signal.
|
||||
|
||||
5. **Fine-tune pointing for maximum signal.** Adjust AZ and EL in 0.5-degree increments while watching the SDR++ waterfall. The Inmarsat carriers should brighten visibly when the dish is centered. Lock in the peak position.
|
||||
|
||||
6. **Start Jaero for AERO decoding.** Configure Jaero to use the SDR's audio output or IQ stream. Select the 600 baud or 1200 baud AERO channel. Jaero will begin decoding ACARS messages from aircraft communicating via the satellite.
|
||||
|
||||
Jaero needs an audio feed from the SDR. The typical setup pipes audio from SDR++ (via virtual audio cable or UDP audio stream) into Jaero's input.
|
||||
|
||||
7. **Start Scytale-C for SafetyNET/EGC.** Scytale-C decodes the EGC and SafetyNET broadcast channels. These run at 1200 baud NCS (network coordination station) on known frequencies. Configure it similarly to Jaero -- audio input from the SDR application.
|
||||
|
||||
8. **Log and observe.** Let the system run for several hours. SafetyNET broadcasts are periodic (every few hours for routine weather, immediately for urgent safety). AERO traffic depends on how many aircraft are using the satellite link -- busier over oceans where no VHF ground stations exist.
|
||||
|
||||
</Steps>
|
||||
|
||||
## Software pipeline
|
||||
|
||||
| Tool | Purpose | Project |
|
||||
|------|---------|---------|
|
||||
| [SDR++](https://www.sdrpp.org/) | Spectrum display, frequency tuning, audio output | sdrpp.org |
|
||||
| [Jaero](https://github.com/jontio/JAERO) | AERO channel decoding (aircraft ACARS over satellite) | jontio/JAERO |
|
||||
| [Scytale-C](https://bitbucket.org/scytalec/scytalec/) | EGC/SafetyNET maritime safety broadcast decoder | Scytale-C project |
|
||||
| [SDR#](https://airspy.com/download/) | Alternative SDR frontend (Windows) | Airspy |
|
||||
|
||||
The decoding chain is: SDR captures RF, SDR++ (or SDR#) demodulates to audio, Jaero/Scytale-C decode the audio into readable messages.
|
||||
|
||||
Jaero supports multiple simultaneous channels -- you can decode AERO on one frequency and EGC on another if your SDR bandwidth covers both. With a BladeRF's wider bandwidth, capturing more of the Inmarsat allocation simultaneously becomes practical.
|
||||
|
||||
### Audio routing on Linux
|
||||
|
||||
The SDR-to-decoder audio path is the trickiest part of the setup on Linux. Windows users typically use Virtual Audio Cable (VAC) to pipe audio from SDR# to Jaero. On Linux, the equivalent uses PulseAudio or PipeWire:
|
||||
|
||||
```bash
|
||||
# Create a virtual audio sink
|
||||
pactl load-module module-null-sink sink_name=sdr_audio sink_properties=device.description=SDR_Audio
|
||||
|
||||
# In SDR++, set audio output to "SDR_Audio"
|
||||
# In Jaero, set audio input to "Monitor of SDR_Audio"
|
||||
```
|
||||
|
||||
Alternatively, SDR++ can output audio via UDP, and Jaero can accept UDP audio input -- this bypasses the audio subsystem entirely and is more reliable. Check the Jaero documentation for the UDP configuration format.
|
||||
|
||||
### Channel frequencies
|
||||
|
||||
Inmarsat channel assignments vary by satellite and are periodically updated. As a starting point for Inmarsat-4 F3:
|
||||
|
||||
| Service | Approximate frequency | Baud rate | Notes |
|
||||
|---------|----------------------|-----------|-------|
|
||||
| NCS (Network Coordination) | 1537.70 MHz | 1200 | Always active. EGC/SafetyNET here |
|
||||
| AERO 600 | varies | 600 | Lower data rate, easier to decode |
|
||||
| AERO 1200 | varies | 1200 | Higher data rate, more traffic |
|
||||
| AERO 10500 | varies | 10500 | High-speed data. Requires more bandwidth |
|
||||
|
||||
The NCS channel is the best starting target -- it's always active, carries the most immediately readable content (SafetyNET broadcasts), and runs at 1200 baud which Scytale-C handles well.
|
||||
|
||||
## Expected results
|
||||
|
||||
- **AERO messages.** Decoded ACARS messages from aircraft using the Inmarsat satellite link. Content includes position reports, weather observations, airline operational messages, and ATC communications. Traffic volume depends on the number of oceanic flights using the satellite -- trans-Atlantic and trans-Pacific routes generate the most traffic.
|
||||
|
||||
- **SafetyNET broadcasts.** Maritime safety information including NAVAREA warnings, weather forecasts, search and rescue coordination messages, and piracy alerts. These arrive periodically and contain real operational content -- actual weather warnings for actual mariners.
|
||||
|
||||
- **EGC messages.** Enhanced Group Call broadcasts targeted to geographic areas. These include distress relay messages, coast guard notices, and fleet broadcasts.
|
||||
|
||||
- **Channel characterization.** The SDR++ waterfall shows the full Inmarsat channel structure: narrow BPSK carriers at regular spacing, with varying signal levels indicating different beam types and traffic loads.
|
||||
|
||||
This is one of the most accessible SDR experiments because the signal is always present, the source doesn't move, and the content is immediately meaningful. There's no waiting for a satellite pass or aligning timing windows -- point the dish, tune the SDR, and start decoding.
|
||||
|
||||
### Long-duration monitoring
|
||||
|
||||
Because the signal is continuous and the dish doesn't need to track, this experiment lends itself to long-duration unattended monitoring. Leave the system running for days or weeks to build a comprehensive log of maritime safety traffic in your region. The data has practical value -- it provides a real-time view of weather warnings, navigational hazards, and search-and-rescue activity that augments publicly available marine weather sources.
|
||||
|
||||
The dish's stability over time is relevant here. If the positioner drifts due to thermal expansion, wind loading, or firmware behavior, signal quality will degrade gradually. Monitoring the decoded message rate over time provides an indirect measure of pointing stability -- a useful dataset for characterizing the Birdcage hardware independent of this experiment's primary goals.
|
||||
|
||||
## Open questions
|
||||
|
||||
- **Inmarsat satellite selection.** Which satellite provides the strongest signal from a given location depends on elevation angle and beam coverage. Is Inmarsat-4 F3 at 98 deg W always the best target from continental North America, or does Inmarsat-3 F4 at 54 deg W offer better coverage for East Coast stations?
|
||||
|
||||
- **RTL-SDR vs. BladeRF.** Jaero and Scytale-C were originally designed to work with RTL-SDR and SDR# on Windows. The Linux + BladeRF + SDR++ pipeline may require additional configuration to route audio correctly. Has anyone validated Jaero with BladeRF input on Linux?
|
||||
|
||||
- **Optimal center frequency.** The Inmarsat L-band allocation spans 1525-1559 MHz. With a 2.5 MHz RTL-SDR bandwidth, you can only see a fraction at a time. Which center frequency captures the most interesting channels? The AERO and EGC channels are at known frequencies that vary by satellite and region.
|
||||
|
||||
- **Feed polarization sensitivity.** How much does RHCP vs. linear polarization matter in practice? With 8 dB of link margin on the global beam, the 3 dB circular-to-linear mismatch loss may be acceptable. But if the goal is to decode the weakest channels, every dB counts.
|
||||
|
||||
- **Elevation floor impact.** The Carryout G2's minimum elevation is 18 degrees. From high-latitude stations, geostationary satellites may appear below this limit. What's the approximate latitude cutoff where Inmarsat-4 F3 drops below 18 degrees elevation?
|
||||
|
||||
## Related experiments
|
||||
|
||||
<LinkCard title="Geostationary Arc Census" href="/experiments/dvb/geostationary-census/" description="Survey the full geostationary arc to find Inmarsat and other L-band satellites using the DVB tuner before switching to an L-band feed." />
|
||||
|
||||
<LinkCard title="Rain Fade Radiometry" href="/experiments/dvb/rain-fade/" description="Same geostationary pointing technique. Rain fade affects L-band less than Ku-band, but the measurement methodology transfers." />
|
||||
|
||||
<LinkCard title="SDR Hardware Setup" href="/experiments/sdr-hardware/" description="Feed mounting, LNA selection, bias tee safety, and SDR configuration shared across all external experiments." />
|
||||
183
src/content/docs/experiments/sdr/iridium.mdx
Normal file
183
src/content/docs/experiments/sdr/iridium.mdx
Normal file
@ -0,0 +1,183 @@
|
||||
---
|
||||
title: "Iridium (1626 MHz)"
|
||||
description: Capturing Iridium satellite downlink bursts during LEO passes
|
||||
sidebar:
|
||||
order: 5
|
||||
badge:
|
||||
text: Planned
|
||||
variant: caution
|
||||
---
|
||||
|
||||
import { Steps, Aside, LinkCard } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="note" title="Not yet tested">
|
||||
This experiment describes an established amateur radio technique adapted for the Birdcage positioner. The hardware chain and procedures are proposed but not yet validated on this specific platform.
|
||||
</Aside>
|
||||
|
||||
## The signal
|
||||
|
||||
Iridium operates a 66-satellite LEO constellation at roughly 780 km altitude, orbiting in six planes. The satellites transmit downlinks in the 1616-1626.5 MHz band using TDMA (time-division multiple access) burst signaling -- short, structured transmissions that repeat on predictable timeslots.
|
||||
|
||||
Even without decoding message content, these bursts are interesting targets. Each one carries detectable structure: burst timing, center frequency, Doppler shift, and signal strength. A directional dish tracking a single satellite through its pass can capture bursts with significantly higher SNR than the omnidirectional antennas typically used for Iridium monitoring, making it easier to isolate individual satellite signals from the constellation background.
|
||||
|
||||
The original Iridium constellation (Block 1) produced the famous "Iridium flares" from their main mission antennas. Those satellites have been deorbited and replaced with Iridium NEXT, which doesn't flare -- but the RF characteristics of the new constellation are just as interesting to capture.
|
||||
|
||||
### What makes this different from omnidirectional monitoring
|
||||
|
||||
Most Iridium monitoring stations use a simple quarter-wave whip or turnstile antenna with hemispherical coverage. They catch bursts from every visible Iridium satellite simultaneously -- typically 2-4 satellites at any moment -- but with no ability to distinguish which satellite produced which burst without decoding the frame contents.
|
||||
|
||||
A tracked directional dish flips this approach. The beam is narrow enough (roughly 15-20 degrees at 1626 MHz) to isolate a single satellite for most of its pass. This means the Doppler curve from burst frequency offsets maps cleanly to one orbital track, without contamination from other satellites. The tradeoff is that you capture fewer total bursts per session, but each burst has unambiguous attribution.
|
||||
|
||||
## Link budget
|
||||
|
||||
| Parameter | Value | Notes |
|
||||
|-----------|-------|-------|
|
||||
| Satellite EIRP | ~22 dBW | Downlink, per beam |
|
||||
| Altitude | 780 km | LEO |
|
||||
| Slant range (20 deg EL) | ~1600 km | Worst case for a usable pass |
|
||||
| Free-space path loss | ~157 dB | At 1626 MHz, 1600 km |
|
||||
| Dish gain (est.) | ~12 dBi | 84 cm x 58 cm elliptical at 1620 MHz |
|
||||
| LNA noise figure | 0.7 dB | SAWbird Iridium (filtered) |
|
||||
| System noise temp | ~75 K | LNA-dominated with feed losses |
|
||||
| Receiver bandwidth | 10 MHz | Full Iridium downlink band |
|
||||
| Required Eb/No | ~10 dB | For burst detection (not demod) |
|
||||
| **Link margin** | **~15 dB** | Comfortable for burst detection |
|
||||
|
||||
The margin is generous because burst detection (finding that a transmission occurred and measuring its parameters) requires much less SNR than full demodulation. The dish gain helps isolate the tracked satellite from adjacent Iridium satellites that may be transmitting simultaneously.
|
||||
|
||||
## Hardware requirements
|
||||
|
||||
See [SDR Hardware Setup](/experiments/sdr-hardware/) for the full signal chain, feed mounting, and bias tee safety details.
|
||||
|
||||
| Component | Recommendation | Notes |
|
||||
|-----------|---------------|-------|
|
||||
| Feed | Helical antenna, 5-7 turns, RHCP | Tuned for 1620 MHz center. ~3 dBi gain on its own |
|
||||
| LNA | Nooelec SAWbird Iridium | 1626 MHz SAW-filtered, 0.7 dB NF, ~17 dB gain |
|
||||
| SDR | RTL-SDR V4 | 1626 MHz is within the 1.766 GHz limit. 2.56 MHz stable BW |
|
||||
| SDR (wideband) | BladeRF 2.0 micro | 10 MHz+ bandwidth for full-band capture |
|
||||
| Tracking | Gpredict via rotctld | Continuous LEO pass tracking at 127.0.0.1:4533 |
|
||||
|
||||
The choice between RTL-SDR and BladeRF depends on the capture approach. An RTL-SDR can see a ~2.5 MHz slice of the Iridium band per recording. A BladeRF captures the full 10 MHz downlink band, which gr-iridium expects for comprehensive burst detection.
|
||||
|
||||
### Helical feed construction notes
|
||||
|
||||
A 5-turn axial-mode helix for 1620 MHz uses the following dimensions (approximate):
|
||||
|
||||
| Parameter | Value |
|
||||
|-----------|-------|
|
||||
| Turn diameter | ~59 mm (0.31 wavelength) |
|
||||
| Turn spacing | ~46 mm (0.25 wavelength) |
|
||||
| Total length | ~230 mm (5 turns) |
|
||||
| Wire diameter | 2-3 mm copper or brass |
|
||||
| Ground plane | ~120 mm diameter minimum |
|
||||
| Impedance | ~140 ohms (needs matching to 50 ohm coax) |
|
||||
|
||||
A quarter-wave impedance transformer (a short section of ~84 ohm coax) or a simple tapered feed can match the helix to 50 ohm coax. Winding direction determines circular polarization sense -- wind clockwise (looking from the feed toward the dish) for RHCP.
|
||||
|
||||
## Proposed procedure
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Prepare the hardware chain.** Mount the helical feed at the dish focal point, connect through the SAWbird LNA, run coax to the SDR. Verify the LNB bias tee is disconnected or blocked (see [SDR Hardware Setup](/experiments/sdr-hardware/)).
|
||||
|
||||
2. **Configure Gpredict.** Add the Iridium constellation TLE set. Select a target satellite with a high-elevation pass (above 40 degrees peak) for the first attempt. Configure the rotor interface: 127.0.0.1:4533, AZ type 0-180-360, min EL 18, max EL 65.
|
||||
|
||||
3. **Start the Birdcage rotctld server.**
|
||||
|
||||
```bash
|
||||
birdcage serve --port /dev/ttyUSB2 --baud 115200
|
||||
```
|
||||
|
||||
4. **Tune the SDR.** Set center frequency to 1621.25 MHz (middle of the downlink band). With a BladeRF, set bandwidth to 10 MHz and sample rate to 12 Msps. With an RTL-SDR, use 2.56 Msps and accept a narrower slice.
|
||||
|
||||
5. **Begin recording before the pass starts.** Start IQ capture to a file at least 60 seconds before the satellite rises above 18 degrees elevation. Let the recording run continuously through the entire pass.
|
||||
|
||||
```bash
|
||||
# BladeRF example
|
||||
bladeRF-cli -e "set frequency rx 1621250000; set samplerate rx 12000000; set bandwidth rx 10000000; rx config file=iridium_pass.sc16 format=bin n=720000000; rx start; rx wait"
|
||||
```
|
||||
|
||||
6. **Track the satellite through the pass.** Engage Gpredict tracking. The pass will last 5-10 minutes depending on maximum elevation. The positioner follows via rotctld commands.
|
||||
|
||||
7. **Stop recording after the pass.** The IQ file will be large -- roughly 1.4 GB per minute at 12 Msps, 16-bit complex. A full 10-minute pass produces about 14 GB.
|
||||
|
||||
8. **Process with gr-iridium offline.**
|
||||
|
||||
```bash
|
||||
iridium-extractor -D 4 --multi-frame iridium_pass.sc16 | grep "^RAB" > bursts.txt
|
||||
```
|
||||
|
||||
</Steps>
|
||||
|
||||
## Software pipeline
|
||||
|
||||
| Tool | Purpose | Project |
|
||||
|------|---------|---------|
|
||||
| [gr-iridium](https://github.com/muccc/gr-iridium) | Burst detection and extraction from wideband IQ | muccc/gr-iridium |
|
||||
| [iridium-toolkit](https://github.com/muccc/iridium-toolkit) | Frame parsing, timing analysis, satellite ID | muccc/iridium-toolkit |
|
||||
| [SDR++](https://www.sdrpp.org/) | Live spectrum monitoring during capture | sdrpp.org |
|
||||
|
||||
gr-iridium works on recorded IQ files. It searches the full bandwidth for TDMA bursts, extracts them, and outputs per-burst metadata including timestamp, frequency offset, confidence, and frame contents. iridium-toolkit then parses these into higher-level structures.
|
||||
|
||||
The standard workflow in the Iridium monitoring community is to capture broadband (10 MHz), process offline, and analyze the burst statistics. Real-time decoding is possible but demands more CPU than offline batch processing.
|
||||
|
||||
### Post-processing workflow
|
||||
|
||||
```
|
||||
IQ recording (.sc16 / .raw)
|
||||
↓
|
||||
iridium-extractor (gr-iridium) → raw burst lines (timestamp, freq, confidence, bits)
|
||||
↓
|
||||
iridium-parser.py (iridium-toolkit) → decoded frames (IRA, IBC, MSG, etc.)
|
||||
↓
|
||||
reassembler.py (iridium-toolkit) → reassembled pages (pager messages, ring alerts)
|
||||
↓
|
||||
analysis scripts → Doppler plots, timing histograms, burst statistics
|
||||
```
|
||||
|
||||
The intermediate files are plain text, one line per burst or frame. This makes them easy to filter with standard Unix tools -- `grep`, `awk`, and `sort` handle most of the exploratory analysis before writing dedicated scripts.
|
||||
|
||||
## Expected results
|
||||
|
||||
A single high-elevation Iridium pass with a 10 MHz broadband capture should yield:
|
||||
|
||||
- **Hundreds of detected bursts** -- a typical pass produces 200-500 ring alert, broadcast, and messaging bursts depending on traffic load
|
||||
- **Timing analysis** -- TDMA slot boundaries are visible in the burst timestamps, revealing the frame structure
|
||||
- **Doppler curve** -- frequency offset vs. time traces out the classic S-curve that maps to satellite orbital geometry
|
||||
- **Satellite identification** -- iridium-toolkit can extract the satellite ID from certain frame types, confirming you tracked the correct object
|
||||
|
||||
Plotting burst frequency offset against time should produce a clean Doppler curve. The shape of this curve encodes the satellite's orbital parameters relative to the ground station -- the maximum Doppler rate occurs at closest approach, and the total Doppler shift at the edges of the pass reflects the satellite's velocity component along the line of sight.
|
||||
|
||||
Any jitter or discontinuities in that curve may indicate tracking lag from the positioner -- a useful diagnostic for evaluating Birdcage's LEO tracking performance. Comparing the measured Doppler curve against the predicted curve (from TLE orbital elements) provides an independent check of both the tracking accuracy and the SDR's frequency calibration.
|
||||
|
||||
### Burst classification
|
||||
|
||||
gr-iridium categorizes detected bursts into several types:
|
||||
|
||||
| Type | Abbreviation | Description |
|
||||
|------|-------------|-------------|
|
||||
| Ring Alert Broadcast | RAB | Paging bursts — most common, always present |
|
||||
| Iridium Burst Continuation | IBC | Data continuation frames |
|
||||
| Message | MSG | User data payload |
|
||||
| Ring Alert | IRA | Individual paging |
|
||||
| Broadcast | IBD | Satellite broadcast information |
|
||||
|
||||
RAB bursts dominate the output and are present even when no active calls are in progress. They form the backbone of the TDMA timing analysis.
|
||||
|
||||
## Open questions
|
||||
|
||||
- **Single-satellite yield vs. omnidirectional.** Omnidirectional Iridium monitors catch bursts from multiple satellites simultaneously. A directional dish isolates one satellite but misses the rest. Is the per-satellite burst count high enough to be interesting, or does the experiment need a different framing (e.g., Doppler characterization rather than bulk burst collection)?
|
||||
|
||||
- **RTL-SDR bandwidth tradeoff.** gr-iridium is designed for wideband captures. With only 2.5 MHz of the 10 MHz band visible, burst detection rates drop proportionally. Is the reduced capture still useful, or does this experiment really need a BladeRF?
|
||||
|
||||
- **Tracking rate.** Iridium LEO passes move at up to ~1 degree per second near zenith. The Carryout G2's maximum AZ slew rate is 65 degrees/sec (more than enough), but the rotctld update interval and motor settling time may introduce pointing lag at high angular rates. Testing needed to characterize the lag.
|
||||
|
||||
- **Feed polarization.** Iridium downlinks are RHCP. A linearly polarized feed loses 3 dB vs. circular. Whether the dish gain compensates for this loss depends on how much margin matters for burst detection.
|
||||
|
||||
## Related experiments
|
||||
|
||||
<LinkCard title="NOAA HRPT (1.7 GHz)" href="/experiments/sdr/noaa-hrpt/" description="Similar LEO tracking workflow at a nearby frequency, with a different feed and demodulation pipeline." />
|
||||
|
||||
<LinkCard title="GPS/GNSS (1575 MHz)" href="/experiments/sdr/gps-gnss/" description="Another L-band experiment with a similar feed and LNA, targeting spread-spectrum rather than TDMA bursts." />
|
||||
|
||||
<LinkCard title="SDR Hardware Setup" href="/experiments/sdr-hardware/" description="Feed mounting, LNA selection, bias tee safety, and SDR configuration shared across all external experiments." />
|
||||
185
src/content/docs/experiments/sdr/noaa-hrpt.mdx
Normal file
185
src/content/docs/experiments/sdr/noaa-hrpt.mdx
Normal file
@ -0,0 +1,185 @@
|
||||
---
|
||||
title: "NOAA HRPT (1.7 GHz)"
|
||||
description: Receiving high-resolution weather satellite imagery during LEO passes
|
||||
sidebar:
|
||||
order: 2
|
||||
badge:
|
||||
text: Planned
|
||||
variant: caution
|
||||
---
|
||||
|
||||
import { Steps, Aside, LinkCard } from '@astrojs/starlight/components';
|
||||
|
||||
<Aside type="note" title="Not yet tested">
|
||||
This experiment describes an established amateur radio technique adapted for the Birdcage positioner. The hardware chain and procedures are proposed but not yet validated on this specific platform.
|
||||
</Aside>
|
||||
|
||||
Most people receive NOAA weather satellite images using an omnidirectional antenna at 137 MHz (APT mode), producing ~4 km/pixel images. The same satellites also transmit High Resolution Picture Transmission (HRPT) at 1698-1707 MHz, delivering 1.1 km/pixel imagery across five spectral channels -- visible, near-IR, and three thermal IR bands. The catch is that HRPT requires a directional antenna that tracks the satellite throughout the pass. That is exactly what Birdcage provides.
|
||||
|
||||
## The signal
|
||||
|
||||
NOAA POES satellites (NOAA-15, NOAA-18, NOAA-19) orbit at approximately 850 km altitude in sun-synchronous polar orbits. Each satellite transmits HRPT continuously on a fixed frequency:
|
||||
|
||||
| Satellite | HRPT frequency | Orbit altitude | Status |
|
||||
|-----------|---------------|----------------|--------|
|
||||
| NOAA-15 | 1702.5 MHz | 807 km | Active (degraded AVHRR) |
|
||||
| NOAA-18 | 1707.0 MHz | 854 km | Active |
|
||||
| NOAA-19 | 1698.0 MHz | 870 km | Active |
|
||||
|
||||
MetOp satellites (MetOp-B, MetOp-C) also transmit HRPT in this band at similar frequencies, using AHRPT (Advanced HRPT) with QPSK modulation at a higher data rate.
|
||||
|
||||
HRPT uses BPSK modulation at 665.4 kbps with a 3 MHz occupied bandwidth. The signal carries all five AVHRR (Advanced Very High Resolution Radiometer) channels simultaneously, plus telemetry.
|
||||
|
||||
### HRPT vs. APT
|
||||
|
||||
Most amateur weather satellite enthusiasts start with APT (Automatic Picture Transmission) at 137 MHz, receivable with a V-dipole and an RTL-SDR. APT is analog FM, 2 channels only (one visible, one IR), and 4 km/pixel resolution. HRPT is the same satellite's high-resolution digital downlink: 5 channels, 1.1 km/pixel, and full 10-bit radiometric depth per channel. The tradeoff is that HRPT requires a tracking antenna and more complex demodulation.
|
||||
|
||||
The table below summarizes the differences:
|
||||
|
||||
| Property | APT (137 MHz) | HRPT (1.7 GHz) |
|
||||
|----------|--------------|----------------|
|
||||
| Antenna | Omnidirectional (V-dipole, turnstile) | Tracking dish or helical |
|
||||
| Polarization | RHCP (but linear works) | RHCP (polarization match matters) |
|
||||
| Resolution | ~4 km/pixel | ~1.1 km/pixel |
|
||||
| Channels | 2 (A + B) | 5 (all AVHRR) |
|
||||
| Modulation | AM/FM (2400 Hz subcarrier) | BPSK (665.4 kbps) |
|
||||
| Bandwidth | ~40 kHz | ~3 MHz |
|
||||
| Decoding | wxtoimg, noaa-apt | SatDump |
|
||||
|
||||
## Link budget
|
||||
|
||||
| Parameter | Value | Notes |
|
||||
|-----------|-------|-------|
|
||||
| Satellite EIRP | ~37 dBm (5 W into ~6 dBi antenna) | Typical NOAA POES |
|
||||
| Frequency | 1698-1707 MHz | L-band |
|
||||
| Estimated dish gain | ~18 dBi | Better than hydrogen line due to shorter wavelength |
|
||||
| Beamwidth (est.) | ~12 degrees | Sufficient to track LEO passes without losing signal |
|
||||
| Path loss (overhead) | ~163 dB | ~850 km range |
|
||||
| Path loss (10 deg EL) | ~171 dB | ~2400 km slant range |
|
||||
| LNA noise figure | 0.5-0.7 dB | Nooelec SAWbird NOAA |
|
||||
| System noise temp | ~80 K | With filtered LNA |
|
||||
| Required C/N | ~6 dB | BPSK at 665 kbps |
|
||||
| Link margin (overhead) | ~20 dB | Comfortable |
|
||||
| Link margin (10 deg EL) | ~12 dB | Still workable |
|
||||
|
||||
The 18 dBi dish gain provides substantial link margin. Most amateur HRPT stations use 60-90 cm dishes or helical antennas with 12-15 dBi gain and succeed. The extra margin means reception should be possible even at low elevation angles where the slant range is longest and atmospheric attenuation is greatest.
|
||||
|
||||
## Hardware requirements
|
||||
|
||||
<LinkCard title="SDR Hardware Setup" href="/experiments/sdr-hardware/" description="Feed options, LNA selection, bias tee safety, and SDR configuration shared across all external SDR experiments." />
|
||||
|
||||
| Component | Recommended | Alternatives |
|
||||
|-----------|-------------|-------------|
|
||||
| Feed | RHCP helical (5-7 turns) for 1.7 GHz | RHCP patch array |
|
||||
| LNA | Nooelec SAWbird NOAA (1698 MHz filtered) | Wideband LNA + 1700 MHz bandpass |
|
||||
| SDR | RTL-SDR V4 (2.56 MHz stable BW covers one satellite) | BladeRF (captures all three simultaneously) |
|
||||
| Bandwidth needed | ~3 MHz per satellite | RTL-SDR handles one at a time; BladeRF can do all three |
|
||||
|
||||
<Aside type="tip" title="Circular polarization matters">
|
||||
NOAA HRPT is transmitted with right-hand circular polarization (RHCP). A linearly polarized feed loses 3 dB from polarization mismatch. Use an RHCP helical feed to capture the full signal -- at low elevation angles where margin is tight, that 3 dB matters.
|
||||
</Aside>
|
||||
|
||||
## Proposed procedure
|
||||
|
||||
<Steps>
|
||||
|
||||
1. **Mount the 1.7 GHz RHCP feed at the dish focal point.** A 5-7 turn helical antenna designed for 1700 MHz, centered on the reflector focal point. Secure the coax routing so it doesn't bind during rapid AZ/EL moves.
|
||||
|
||||
2. **Connect the signal chain.** Feed to SAWbird NOAA LNA, LNA via coax to RTL-SDR. Power the LNA via bias tee. **Apply a DC block if using the dish's internal coax path** -- the 12-18V LNB bias is present on the center conductor.
|
||||
|
||||
3. **Predict a pass in Gpredict.** NOAA satellites have multiple passes per day. Look for a pass with maximum elevation above 30 degrees for best results. Note the start time, duration, and AOS/LOS azimuth.
|
||||
|
||||
4. **Configure Gpredict to drive Birdcage.** Set up a rotator in Gpredict pointing to `127.0.0.1:4533` (the Birdcage rotctld interface). Select the target satellite and enable tracking. Gpredict will push AZ/EL updates throughout the pass.
|
||||
|
||||
5. **Start the SDR recording before AOS.** Tune the SDR to the satellite's HRPT frequency with at least 2.5 MHz bandwidth. Begin recording raw IQ samples to disk. A 12-minute pass at 2.56 Msps (8-bit) produces roughly 3.7 GB of data.
|
||||
|
||||
6. **Let the pass run.** Gpredict drives the positioner, the SDR captures continuously. Monitor the waterfall display in SDR++ -- the HRPT signal should appear as a ~3 MHz wide carrier that strengthens as the satellite rises, peaks near overhead, and fades as it sets.
|
||||
|
||||
7. **Stop recording after LOS.** The full pass IQ file is ready for offline decoding.
|
||||
|
||||
</Steps>
|
||||
|
||||
## Software pipeline
|
||||
|
||||
| Software | Role |
|
||||
|----------|------|
|
||||
| [Gpredict](http://gpredict.oz9aec.net/) | Pass prediction, real-time rotator control via rotctld |
|
||||
| [SDR++](https://www.sdrpp.org/) | SDR tuning, waterfall monitoring, IQ recording |
|
||||
| [SatDump](https://www.satdump.org/) | HRPT demodulation + image decoding (recommended) |
|
||||
| [GNU Radio](https://www.gnuradio.org/) | Custom demodulation flowgraphs (if needed) |
|
||||
|
||||
SatDump is the recommended decoder. It handles NOAA HRPT natively -- feed it the IQ recording and it demodulates the BPSK signal, extracts all five AVHRR channels, applies calibration, and produces georeferenced imagery. It can also operate in real-time mode, demodulating as the SDR captures.
|
||||
|
||||
For live decoding, SatDump can connect directly to the SDR while Gpredict drives the positioner. The two programs run independently -- SatDump on the USB SDR, Gpredict on the serial positioner.
|
||||
|
||||
### SatDump pipeline
|
||||
|
||||
SatDump's NOAA HRPT pipeline processes the signal in several stages:
|
||||
|
||||
1. **Demodulation** -- BPSK carrier recovery, symbol timing, bit sync
|
||||
2. **Frame sync** -- locates HRPT minor frame boundaries (11090 words per frame)
|
||||
3. **AVHRR extraction** -- demultiplexes the five AVHRR channels from the data stream
|
||||
4. **Calibration** -- applies per-channel calibration coefficients from telemetry (converts raw counts to radiance or brightness temperature)
|
||||
5. **Georeferencing** -- maps each scanline to Earth coordinates using satellite ephemeris and scan geometry
|
||||
6. **Compositing** -- generates false-color and enhanced images from channel combinations
|
||||
|
||||
The entire pipeline runs in a few seconds on recorded data, or in real-time during a pass. SatDump outputs images in multiple projections (equirectangular, Mercator) and formats (PNG, GeoTIFF).
|
||||
|
||||
## Expected results
|
||||
|
||||
A successful HRPT reception produces five-channel imagery of the satellite's ground track:
|
||||
|
||||
| Channel | Band | Wavelength | Content |
|
||||
|---------|------|-----------|---------|
|
||||
| 1 | Visible | 0.58-0.68 um | Daytime cloud/surface imagery |
|
||||
| 2 | Near-IR | 0.725-1.0 um | Vegetation, land/water boundaries |
|
||||
| 3A/3B | Mid-IR / Thermal | 1.58-1.64 um / 3.55-3.93 um | Snow/ice (3A) or nighttime thermal (3B) |
|
||||
| 4 | Thermal IR | 10.3-11.3 um | Sea surface temperature, cloud tops |
|
||||
| 5 | Thermal IR | 11.5-12.5 um | Sea surface temperature, moisture |
|
||||
|
||||
A single overhead pass covers a ground swath approximately 2,800 km wide. At 1.1 km/pixel, coastlines, large rivers, mountain ranges, and cloud structures are clearly resolved. False-color composites (combining channels 1, 2, and 4) produce striking images showing vegetation in green, water in dark blue, and clouds in white.
|
||||
|
||||
Pass duration depends on maximum elevation: approximately 8 minutes for a 30-degree pass, up to 14 minutes for a near-overhead pass.
|
||||
|
||||
### Beyond NOAA: MetOp and Meteor
|
||||
|
||||
The same hardware chain receives other weather satellites in this band:
|
||||
|
||||
- **MetOp-B and MetOp-C** (EUMETSAT) transmit AHRPT (Advanced HRPT) at 1701.3 MHz using QPSK at 2.33 Mbps. SatDump handles AHRPT decoding. MetOp provides the same AVHRR channels as NOAA plus additional instruments (IASI infrared sounder, ASCAT scatterometer telemetry). AHRPT requires a wider bandwidth (~4 MHz) and higher SNR due to the faster data rate, but the dish gain should provide sufficient margin.
|
||||
|
||||
- **Meteor-M N2-3** (Roscosmos) transmits HRPT at 1700.0 MHz with similar parameters to NOAA HRPT. SatDump supports Meteor HRPT natively. The MSU-MR instrument provides 6 channels at 1 km resolution.
|
||||
|
||||
All of these are in sun-synchronous polar orbits with similar pass geometries. The same feed, LNA, and tracking configuration works for all of them -- just retune the SDR by a few MHz between satellites.
|
||||
|
||||
## Tracking considerations
|
||||
|
||||
LEO tracking is the most demanding use case for the Birdcage positioner. A few things to verify:
|
||||
|
||||
- **Angular velocity.** Near-overhead passes produce angular rates up to 2 degrees/second. The AZ motor maxes out at 65 degrees/second and EL at 45 degrees/second -- far more than enough. The concern is not top speed but command latency through the rotctld pipeline.
|
||||
- **Rotctld update rate.** Gpredict updates the rotator at roughly 1-second intervals. At 2 degrees/second, a 1-second update lag means the beam could be ~2 degrees off target. With a 12-degree beamwidth, this is still within the main lobe -- but just barely. Higher-elevation passes have higher angular rates.
|
||||
- **Meridian flip.** Passes that cross directly overhead may require a rapid AZ reversal (the satellite goes from, say, AZ 180 to AZ 0 instantaneously in the Gpredict model). The 0-to-180-to-360 rotator mode should handle this, but confirm the positioner doesn't stall or wrap.
|
||||
- **Minimum elevation.** The firmware enforces an 18-degree minimum elevation. Satellite passes below 18 degrees EL will be clipped. For HRPT, this is acceptable -- the link margin at 18 degrees is still ~14 dB.
|
||||
|
||||
## Open questions
|
||||
|
||||
- **Tracking latency end-to-end.** The full chain is Gpredict TLE prediction, TCP to rotctld, serial to firmware, motor response. Each step adds latency. Measuring the total lag (command to physical movement) is critical for determining whether smooth LEO tracking is achievable.
|
||||
- **IQ recording vs. live decode.** Recording the full-bandwidth IQ stream and decoding offline avoids real-time processing pressure but requires disk space. Live decode with SatDump avoids storage issues but adds CPU load during the pass.
|
||||
- **Feed cable management.** During a full LEO pass, the dish may sweep 180+ degrees in AZ and 18-65 degrees in EL. The feed cable must not bind, kink, or snag. A coiled service loop and cable clips along the arm are essential.
|
||||
- **Multiple satellites per day.** NOAA-15/18/19 are all active, producing 6-12 visible passes daily from most locations. Automating the track-record-decode cycle would allow routine daily imagery collection.
|
||||
- **Doppler compensation.** The satellite's radial velocity causes up to +/- 35 kHz Doppler shift at 1.7 GHz. BPSK demodulation in SatDump handles this natively (the PLL tracks the carrier), but if recording raw IQ, make sure the SDR center frequency is close enough to the nominal frequency that the Doppler-shifted signal stays within the passband.
|
||||
- **Ground station antenna temperature.** At low elevation angles, the dish sidelobes illuminate warm ground (290 K), increasing system noise temperature. Reception at 18 degrees elevation (the firmware minimum) will show measurably lower SNR than an overhead pass -- the link budget accounts for this via increased path loss, but ground noise adds another 1-2 dB of degradation not captured in free-space calculations.
|
||||
|
||||
## Why not just use APT?
|
||||
|
||||
A fair question. APT at 137 MHz needs no tracking dish, costs almost nothing, and produces recognizable weather images. Three reasons to pursue HRPT:
|
||||
|
||||
1. **Resolution.** 1.1 km/pixel vs. 4 km/pixel is the difference between seeing individual cities and seeing vague blobs. Coastlines are crisp, cloud streets are resolved, and tropical cyclone eye structure is visible.
|
||||
2. **Five channels.** APT carries only 2 of the 5 AVHRR channels per pass (and the pairing rotates). HRPT provides all 5 simultaneously, enabling quantitative sea surface temperature mapping, vegetation index computation, and snow/ice classification.
|
||||
3. **Tracking validation.** HRPT reception is a binary pass/fail test of the entire Birdcage LEO tracking pipeline. If you can decode a complete HRPT pass, the positioner is validated for all LEO satellite work -- Iridium, Meteor, MetOp, and future missions.
|
||||
|
||||
The dish and tracking capability are already there. HRPT reception extracts dramatically more value from each satellite pass.
|
||||
|
||||
## Related experiments
|
||||
|
||||
<LinkCard title="Iridium (1626 MHz)" href="/experiments/sdr/iridium/" description="Similar LEO tracking requirements and L-band feed -- test tracking latency with Iridium bursts before committing to a full HRPT decode." />
|
||||
<LinkCard title="GPS/GNSS (1575 MHz)" href="/experiments/sdr/gps-gnss/" description="An L-band feed for GPS can also cover NOAA HRPT with minor retuning, if a wideband helical is used." />
|
||||
@ -131,6 +131,10 @@ The Carryout G2 has the most complete documentation — over 100 firmware comman
|
||||
100+ firmware commands, NVS settings, GPIO pin maps, hardware specs, serial protocol.
|
||||
[See reference →](/reference/firmware-variants/)
|
||||
</Card>
|
||||
<Card title="Experiments" icon="star">
|
||||
Solar monitoring, rain fade radiometry, hydrogen line astronomy, weather satellite imagery, and more — on-board DVB and external SDR.
|
||||
[Browse experiments →](/experiments/)
|
||||
</Card>
|
||||
<Card title="Project Journal" icon="pencil">
|
||||
Discovery stories, debugging sessions, and the ongoing narrative of reverse-engineering these dishes.
|
||||
[Read the journal →](/journal/)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user