LAB-009 · build guide
First Light: Detecting the Hydrogen Line with an RTL-SDR V3 and a Horn
Dee Okafor ·
The first detection is the hard part, and not because the hardware is difficult. It’s hard because you don’t yet know what the line looks like on your own screen, so you can’t tell the difference between “not there yet” and “there and I’m looking at it wrong.” This paper is the session we’d walk someone through if they drove out to Sixmile with a horn in the back seat.
It assumes the receiver from LAB-008: RTL-SDR Blog V3, SAWbird+ H1 on the horn, bias tee on, all four sanity checks passed. If you’re using a dish, everything here still applies; it just goes faster.
Pick the target: the inner Galactic plane
Neutral hydrogen is everywhere along the Milky Way, but it’s brightest and easiest to see looking toward the inner Galaxy, roughly Galactic longitudes l = 20° to 60°. The line there is strong, and it’s spread over a wide range of velocities, which makes it look distinctly different from anything instrumental.
From mid-northern latitudes the Galactic centre itself (l = 0°) never gets high: Bench 1 shows it peaking at about 21° above the horizon from 40° N, which puts a wide horn beam half into the trees and the ground. Longitude 30° peaks at about 47°, and 60° at about 74°. Aim for l = 30° to 60° for a first try. From the southern hemisphere you have it easier; the centre goes nearly overhead.
Pick the time
Open the Galactic-plane transit planner with your own latitude and longitude. It tells you when each longitude crosses your meridian over the next day. Pick the transit of l = 30° to 60° and plan to be set up half an hour before it. The l = 30° and l = 50° target pages list transit times month by month and the velocity range to expect; if the inner plane is down, Cygnus is the easiest substitute.
The section of the plane you want moves around the clock through the year. In early October, from 75° W, l = 30° transits around 22:30 UTC, early evening locally. In spring it transits in the middle of the night or the morning. The sky doesn’t care whether it’s dark; the hydrogen line is just as visible at noon. What matters is that the Sun isn’t in or near your beam, because the Sun at 1420 MHz is far brighter than anything else you’ll point at.
Point the horn
Set the horn facing due south (north if you’re in the southern hemisphere), tilted up to the altitude the planner gave for your target longitude. A phone inclinometer app laid along the horn’s top edge is good enough; a 17 dBi horn’s beam is around 20 to 25 degrees wide, so being off by a couple of degrees doesn’t matter.
Then leave it. With a fixed horn, the sky drifts through the beam. That’s called a drift scan and it’s how most small radio telescopes work. You’ll start seeing the line strengthen as the plane approaches transit and weaken after.
Set up the software
You want an integrated power spectrum, not a waterfall. Waterfalls show you each short snapshot; the hydrogen line is buried in noise in any one snapshot and only appears when hundreds or thousands are averaged together.
Three routes, in increasing order of effort:
rtl_power, from the standard rtl-sdr tools. It sweeps a frequency range, averages FFTs for a set interval and writes power per bin to a CSV. Something likertl_power -f 1419.4M:1421.4M:5k -i 60 -g 40 -e 30m -T out.csvcovers the line in 5 kHz bins, averages for 60 seconds per row, runs for 30 minutes, and turns the bias tee on with-T. Plot the rows. Checkrtl_power -hon your build; option names have shifted between versions.- GNU Radio, with a flowgraph of source, FFT, magnitude squared, and an integrate or moving-average block. More setup, but you’ll want it eventually; it’s what LAB-007 builds on.
- Purpose-built amateur radio-astronomy packages that wrap the same idea for hydrogen-line work. They’re worth looking at once you know what you expect to see.
Settings that matter:
- Centre frequency. Bench 2 shows the Doppler calculator for l = 30° at transit on 9 October from 40° N 75° W. Zero velocity relative to the local standard of rest lands at about 1420.352 MHz, not 1420.406, because of Earth’s motion along that line of sight. Centring near there puts the whole profile in view. Re-run it for your own date; the shift changes by tens of km/s across the year.
- Sample rate. 2.4 MS/s is the highest the V3 runs reliably and covers about ±250 km/s around centre, more than enough.
- Gain. Not maximum. Somewhere in the 30s of dB on the V3 is a reasonable start with an LNA in front. Too much gain compresses the dongle, and compression looks like a flat-topped, lifeless spectrum.
- Channel width. 5 to 10 kHz. At 1420 MHz, 10 kHz is 2.1 km/s of velocity, which is plenty of resolution for Galactic hydrogen.
Take two spectra, not one
Here’s what catches nearly everyone. Your first integrated spectrum won’t look like a peak on a flat floor. It’ll look like a broad, lumpy hill: the shape of the SAWbird’s filter passband multiplied by the dongle’s own response. The hydrogen line is a smaller bump riding on top of that hill, and with a horn it can be a small one.
To see it, you need a reference spectrum with no line in it, and you divide one by the other. Two ways to get the reference:
- Off-source. Tilt the horn up well away from the plane, toward high Galactic latitude, and integrate for the same length of time. The bandpass stays, the line mostly goes.
- Frequency switching. Keep pointing at the plane and retune the centre frequency by one or two MHz. The bandpass shape stays put in the receiver’s frame and the line moves or drops out of view. Divide the two.
Divide on-source by reference, subtract one, and what’s left is the line. LAB-012 goes into what each feature of the result means.
How long
Bench 3 puts the horn chain through the noise calculator: system temperature about 100 K, and with a conservative 5 K of line at the antenna, the radiometer equation says about 4 seconds of integration for a signal-to-noise ratio of 10 in a 10 kHz channel.
Don’t believe the 4 seconds. That figure assumes perfectly random noise, and the real limit is the bandpass ripple, gain drift as the LNA warms up, and how well your reference matches. In practice plan on one to five minutes per spectrum, and repeat. What the calculator does tell you honestly is the relative cost of things: if a change to your chain doubles the predicted time, it’ll roughly double the real one too.
How you’ll know
The line from the inner plane has a recognisable shape: it’s broad, a few hundred kHz wide, usually asymmetric, often with more than one peak, and sitting on the positive-velocity side (lower frequency) of zero for longitudes between 0° and 90°. It gets stronger toward transit and fades after. It moves, slightly, from night to night as Earth’s orbital velocity changes, and the Doppler calculator predicts by how much.
Things that are not the line: a single narrow spike (interference or a receiver artifact), a feature that stays exactly the same when you point at the zenith (instrumental), or a broad tilt across the whole band (bandpass).
When you see a broad hump in the divided spectrum, in the right place, that grows and shrinks with the plane’s transit, you’ve detected neutral hydrogen tens of thousands of light-years away with about $150 of parts. We still remember ours.
If you see nothing
In order of likelihood: the LNA isn’t powered (check the light); the reference spectrum was taken too long before or after the on-source one, so the bandpass drifted; the gain is so high the dongle is compressing; the horn was pointed at a part of the plane that was below 20° altitude; or you centred the spectrum on 1420.406 MHz and the line is partly off the edge because you didn’t correct for Earth’s motion. The Doppler calculator fixes the last one.
The next step, once you’ve seen it, is reading it: LAB-012.
Equipment links on this page are affiliate links. If this project is worth anything to you and you were going to buy the parts anyway, it’s a quiet way to help us keep the dish on its pier.
On the bench
The numbers in this paper, worked with the same code as our calculators. Open any of them to change the inputs to your own parts.
| Input | Value |
|---|---|
| Latitude (°) | 40 |
| Longitude (°E) | -75 |
- l = 0° at transit
- 21 ° alt
- l = 30° at transit
- 47 ° alt
- l = 60° at transit
- 74 ° alt
- l = 90° at transit
- 82 ° alt
- l = 120° at transit
- 67 ° alt
- l = 180° at transit
- 79 ° alt
| Input | Value |
|---|---|
| Observed frequency (MHz) | 1420 |
| Date (UTC) | 2026-10-09 |
| Time (UTC) | 22:30 |
| Latitude (°) | 40 |
| Longitude (°E) | -75 |
| Galactic l (°) | 30 |
| Galactic b (°) | 0 |
- v LSR
- +74.4 km/s
- Tune for 0 km/s LSR
- 1420.3523 MHz
- Topocentric velocity
- +85.6 km/s
- LSR correction
- −11.3 km/s
| Input | Value |
|---|---|
| Cable, feed to LNA (m) | 0 |
| Adapters before LNA (dB) | 0.2 |
| Main coax (m) | 3 |
| Antenna temp. (K) | 40 |
| Line at antenna (K) | 5 |
- System temperature
- 100 K
- Integration time
- 4.0 s
- Receiver temperature
- 59.7 K
- Channel as velocity
- 2.11 km/s
- Same parts, LNA after coax
- 101 K
- Its integration time
- 7.9 s