Since 2019-02-14, licensed amateur radio operators can videoconference via QO-100, the first amateur transponder in geostationary orbit. In this article I explain how to receive some downlink signals with affordable off-the-shelf equipment and open-source software. I also discuss the current limitations of this approach relative to existing solutions.

1. Introduction At the time of writing QO-100 is a hot topic in the amateur radio community. Introductory articles should be available shortly from numerous journals and web sites. In summary, QO-100 provides a 8 MHz wide amateur transponder in geostationary orbit, with coverage from Brazil to Thailand. This allows Digital Amateur TV (DATV) activities to expand from line-of-sight paths and local repeaters to a global scale. This article is intended for readers who would like to get a glimpse of this branch of amateur radio but have no prior experience with DATV and no equipment for space communications. Essentially, the goal is to receive and decode digital video signals which are similar to mainstream satellite TV broadcasts, except that they are produced by amateurs with satellite uplink stations in their backyard. This is somewhat related to Digital Satellite News Gathering (DSNG) where TV reporters provide live coverage and conduct on-site interviews via truck-mounted satellite links. Ideally reception would be performed with off-the-shelf satellite TV kits (dish, LNB, set-top-box). Unfortunately the frequency bands and data rates are not fully compatible. The amateur radio community has successfully developed several solutions based on modified or dedicated hardware. In this project I explore a different approach in the spirit of software-defined radio (SDR). For further background information, see: Es'Hail-2 (P4-A) project (AMSAT-DL) Receiving guide (BATC) Viva DATV - Home of popular DATV hardware and software Operating guidelines and bandplan (BATC) Band monitor (BATC) DVB-S2

2. Motivations Common sense, amateur radio regulations and band policies imply that operators will always use the most efficient combination of power, bandwidth and modulation required to establish communications between two stations. This is easily done with DVB-S2, as this standard allows fine-grained adjustment of modulation and coding parameters. Unfortunately, unless you are in touch with one of the few stations with transmit capabilities, you have no control over these parameters. There are occasional transmissions with power spectral density above the recommended limit, or with unnecessarily slow code rates, but in general, you should assume that signals will always be "barely decodable" by design. So, if you want to listen in on test transmissions, your equipment must be as good as that of the experts. There are only two easy ways around this rule: Get closer to the peak of coverage of the satellite, which is in the middle of Africa. But this will only give you a couple more dBs of signal-to-noise ratio (SNR); by contrast, in terrestrial communications, you can get a 6 dB advantage by merely sitting halfway between two stations.

Use a bigger antenna. While there is no theoretical limit to how wide you can make a parabolic reflector, amateurs already use the largest TV dishes available at reasonable cost, and oversized models intended for niche applications are expensive and cumbersome to install. In view of the above, for technically-minded hobbyists, QO-100 DATV reception is a highly challenging and rewarding activity.

4. Software The crucial component for this project is leandvb. I wrote the initial version in early 2016 to receive DVB-S transmissions from the International Space Station ([SOFTDATV]) and I added DVB-S2 support in 2018 in anticipation of Es'Hail 2 / QO-100. You will need to compile leandvb and a third-party LDPC decoder, ldpc_tool. See [LEANDVB] for installation instructions, documentation, and full credits. You will also need software to control your SDR device. The only requirement is that it must be able to save I/Q samples in uint8, int16 or float32 format. Instructions below refer to the rtl_sdr command-line utility and to the gqrx graphical application.

5. Operation Assemble the dish and point it toward QO-100 at 26°E. There are plenty of tutorials on how to point satellite TV antennas. The main difficulty is that manufacturers rarely specify offset angles, and swivel mounts are not labeled accurately. So, the best approach is to pan the dish toward the proper azimuth, but not worry too much about elevation yet. Figure 1. QO-100 pointing chart

Warning . When using a bias tee, the powered side (usually labelled "ANT" or "HF+DC") goes toward the LNB. Do not ever connect it to a SDR receiver; this could destroy the analog front-end and possibly damage the host computer as well. Figure 2. SDR setup

To align the dish, we will detect the narrowband transponder, which happens to be very strong and to fit within the bandwidth of a rtl-sdr dongle. Install the LNB for vertical polarization: point the cable down, then apply the skew angle. A skew value of -20° is illustrated in the picture below. Tune the SDR receiver to 739.675 MHz; this is the center of the narrowband downlink in the IF. Now tilt and wiggle the dish until you see a signal. Since there are currently no other geostationary transmitters at that frequency, this is actually easier than pointing a TV antenna toward the right satellite. You may want to move the LNB around its designated position, in case the geometry of your dish is inaccurate. Eventually you should see this: In this spectrum plot we note that: The noise floor of the transponder is 12 dB above the noise floor of the receiver. This is excellent, but not surprising considering that this dish is oversized for receiving the QO-100 narrowband downlink.

The signal is about 225 kHz higher than it should be. This results from the combined inaccuracies of local oscillators in the LNB and in the SDR device. An exact value can be determined by looking at the end-of-band beacon which is always on and has a nominal frequency near 739.7975 MHz. The same frequency correction should be applied for all further tuning operations. Now switch the LNB to horizontal polarization, i.e. turn it 90° either way. Adjust the angle until the signal is as weak as possible in the spectrum display. This will yield optimal isolation between the two polarizations. Next we will look at the video beacon of the wideband downlink, which is centered at 742.5 MHz in the IF. Since the beacon is more than 2 MHz wide, we can't really recognize its shape with a rtl-sdr dongle. So, instead, we tune to its upper edge at 743.5 MHz (plus or minus the correction determined earlier). In this spectrum plot we can measure the gap between the beacon and the noise floor. This is the (C+N)/N (carrier-plus-noise to noise) ratio. If you get 7 dB or more, there is hope of demodulating the signal, Table 1. (C+N)/N to C/N conversion table (C+N)/N (dB) C/N (dB) 1 -5.87 2 -2.33 3 -0.02 4 1.80 5 3.35 6 4.74 7 6.03 8 7.25 9 8.42 10 9.54

Now, tune to 742.5 MHz (plus or minus correction) and record about 30 s worth of I/Q data at 2.4 Msamples/s. In gqrx this is done with Tools -> I/Q recorder or Ctrl+I. Note that rtl-sdr dongles will silently drop samples if the host computer cannot keep up with the data rate. This will cause demodulation to fail for no apparent reason. Hence, it is recommended to save to a ramdisk ( /tmp , /var/tmp or /mnt/tmp depending on OS variants), to shut down any unnecessary application, and to slow down spectrum waterfall animations while the I/Q capture is in progress. To demodulate I/Q data recorded by gqrx, adapt the following command: $ leandvb --f32 -f 2400e3 --sr 2000e3 --sampler rrc --rrc-rej 30 --standard DVB-S2 --ldpc-helper ldpc_tool --modcods 0x0040 --framesizes 0x01 -v -d --gui < /tmp/gqrx_YYYYmmdd_HHMMSS_742ffffff_2400000_fc.raw > /tmp/video.ts Then, decode the MPEG TS data with a video player. You should see footage of the launch of the satellite and other promotional material. $ mplayer /tmp/video.ts $ vlc /tmp/video.ts To do the same with a rtl-sdr dongle from the command line, adapt these commands: $ rtl_sdr -f 742.5e6 -s 2400000 /tmp/video.iq $ leandvb --u8 -f 2400e3 --sr 2000e3 --sampler rrc --rrc-rej 30 --standard DVB-S2 --ldpc-helper ldpc_tool --modcods 0x0040 --framesizes 0x01 -v -d --gui < /tmp/video.iq > /tmp/video.ts $ mplayer /tmp/video.ts $ vlc /tmp/video.ts Next you can try live demodulation. Add --inpipe as shown below to prevent buffers from overflowing. Add --nhelpers to run several LDPC decoders in parallel; use 6 decoders if your CPU has 8 cores, or 3 decoders if it has 4 cores. # echo 32000000 > /proc/sys/fs/pipe-max-size $ rtl_sdr -f 742.5e6 -s 2400000 - | leandvb --inpipe 32000000 --u8 -f 2400e3 --sr 2000e3 --sampler rrc --rrc-rej 30 --standard DVB-S2 --ldpc-helper ldpc_tool --nhelpers 6 --modcods 0x0040 --framesizes 0x01 -v -d --gui | vlc - Once you have successfully received the video beacon, you can search for actual DATV signals elsewere in the wideband downlink. Optimal SDR settings for decoding these signals have not been validated yet. Note: Options --modcods 0x0040 --framesizes 0x01 are a workaround for a known bug; omit them when demodulating other streams. With some UNIX scripting skills and a fast computer, it should be possible to set up leandvb to scan through the QO-100 bandplan and possibly decode multiple video streams simultaneously. This is left as an exercise for the reader. Note that due to how LDPC decoding works, CPU usage increases dramatically as SNR approaches the limit for decodability. If you follow discussions among QO-100 users, you will notice that their hardware DVB-S2 receivers can demodulate signals at lower SNR than your SDR setup. leandvb currently needs a few dBs of margin. This is a trade-off between sophistication and realtime throughput in the signal processing and error decoding algorithms. Hopefully the gap will shrink over the next few months.