Skip to content

Instantly share code, notes, and snippets.

@mattotodd
Forked from lxe/goes16-rtlsdr.md
Created June 8, 2023 01:28
Show Gist options
  • Save mattotodd/04d1a9fa7c402538748638bbef037ecb to your computer and use it in GitHub Desktop.
Save mattotodd/04d1a9fa7c402538748638bbef037ecb to your computer and use it in GitHub Desktop.

Revisions

  1. @lxe lxe revised this gist Apr 1, 2020. 1 changed file with 10 additions and 3 deletions.
    13 changes: 10 additions & 3 deletions goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -161,13 +161,18 @@ If you're using RTL-SDR.com dongle, set `bias_tee = true` to power the SAWBird b

    #### 7. Roughly point your antenna at the satellite

    Find where the GOES-16 or GOES-17 satellites are in the sky at your location using [agsattrack.com](http://www.agsattrack.com/).
    Find where the GOES-16 or GOES-17 satellites are in the sky at your location using [agsattrack.com](http://www.agsattrack.com/).

    Note the **azimuth** and **elevation**.

    Use an **actual real compass** to point your dish at the azimuth. I've been using the iPhone phone compass, which has a 20-30 degree error, rendering it practically useless.

    Adjust your dish angle according to the elevation.
    You can also use https://www.dishpointer.com/ which will draw a line on the aerial map where to point your dish -- I found that to be more helpful than the compass.

    Adjust your dish angle according to the elevation. Use your smartphone level app, or just eyeball it.

    ## IMPORTANT: Polarization Skew
    You should also adjust the skew of your dish roughly according to what https://www.dishpointer.com/ says under "LNB Skew". For GOES-17 I had to point the antenna's *left* long edge (if facing the same direction as the dish) up at 45 degree angle.

    #### 8. Run goesrecv and perform fine antenna adjustments

    @@ -190,7 +195,9 @@ This should help you point the antenna correctly. Slightly rotate the dish right

    Once you're at the local error minimum, perform the same process to find the minimum error rate while slightly adjusting the vertical angle.

    When the `vit` errors are at their lowest, you've pointed the antenna. Double check the antenna position again with a compass to make sure you're pointed at the intended satellite; GOES-17 and GOES-16 are only about 15 degrees from each other in the sky.
    When the `vit` errors are at their lowest, you've pointed the antenna. Double check the antenna position again with a compass to make sure you're pointed at the intended satellite.

    If you can't pinpoint the signal even after precicely adjusting the antenna, flip the dish 90 degrees and try again.

    #### 9. Restart `goesrecv` and play around with the config parameters.

  2. @lxe lxe revised this gist Mar 22, 2020. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -86,7 +86,7 @@ sudo ldconfig
    echo 'blacklist dvb_usb_rtl28xxu' | sudo tee --append /etc/modprobe.d/blacklist-dvb_usb_rtl28xxu.conf

    # reboot the device
    sudo reoboot
    sudo reboot
    ```

    #### 4. Test your the RTL-SDR dongle
  3. @lxe lxe revised this gist Sep 18, 2018. No changes.
  4. @lxe lxe revised this gist Sep 16, 2018. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -111,6 +111,8 @@ If there are errors, or if the device is not recognized:
    - Ensure the dongle is secured in the USB port
    - Remove all USB hubs and plug in into the Pi directly
    - Make sure you power your Raspberry Pi with at least a 2.5A power supply
    - Check the device using `lsusb` command. You should see `ID 0bda:2838 Realtek Semiconductor Corp. RTL2838` or something of the like listed there. If not, try the previous steps.
    - Run `dmesg` and check for errors such as `error -71` related to the USB device. This may mean that your RTL-SDR receiver might be broken. This happened to me, so I ordered another one, which ran fine.

    #### 5. Install [`goestools`](https://github.com/pietern/goestools.git)

  5. @lxe lxe revised this gist Sep 16, 2018. 1 changed file with 4 additions and 2 deletions.
    6 changes: 4 additions & 2 deletions goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -184,9 +184,11 @@ The `vit(avg)` stat shows the average [viterbi error rate](https://en.wikipedia.

    If there's no signal, the `vit` value should be over 2000. When signal is stronger it should decrease.

    This should help you point the antenna correctly. Slightly rotate the dish right or left and note whether the `vit` errors are increasing or decreasing. Once you're at the local error minimum, adjust the vertical angle, and do the same.
    This should help you point the antenna correctly. Slightly rotate the dish right or left and note whether the `vit` errors are increasing or decreasing.

    Once the `vit` errors are at their lowest, you've pointed the antenna! Double check the antenna position again. GOES-17 and GOES-16 are only about 15 degrees from each other in the sky.
    Once you're at the local error minimum, perform the same process to find the minimum error rate while slightly adjusting the vertical angle.

    When the `vit` errors are at their lowest, you've pointed the antenna. Double check the antenna position again with a compass to make sure you're pointed at the intended satellite; GOES-17 and GOES-16 are only about 15 degrees from each other in the sky.

    #### 9. Restart `goesrecv` and play around with the config parameters.

  6. @lxe lxe revised this gist Sep 16, 2018. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -204,6 +204,8 @@ Once you decreased the error rates, but your `vit` is still over 400, try making

    #### 10. Process packets into images

    While goesrecv is running, in a separate session, run:

    ```bash
    goesproc -c /usr/share/goestools/goesproc-goesr.conf -m packet --subscribe tcp://127.0.0.1:5004
    ```
  7. @lxe lxe revised this gist Sep 16, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -198,7 +198,7 @@ If the average errors are at around 1500-1800, try the following:

    - Cool the Raspberry Pi and the RTL-SDR dongle. I've noticed that temperature might significantly affect reception quality.

    - Play around with `goesproc.conf` parameters. Try adjusting the `gain` and `sample_rate`. For the NooElec XTR or other E4000 tuners, you might need to set your gain to `10` or below.
    - Play around with `goesrecv.conf` parameters. Try adjusting the `gain` and `sample_rate`. For the NooElec XTR or other E4000 tuners, you might need to set your gain to `10` or below.

    Once you decreased the error rates, but your `vit` is still over 400, try making very slight adjustments to the antenna again.

  8. @lxe lxe revised this gist Sep 16, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -107,7 +107,7 @@ If it hangs, just press `crtl-c` to exit. It doesn't have to finish.

    If there are errors, or if the device is not recognized:

    - Reinstall the driver from Step 3 driver
    - Reinstall the driver from Step 3
    - Ensure the dongle is secured in the USB port
    - Remove all USB hubs and plug in into the Pi directly
    - Make sure you power your Raspberry Pi with at least a 2.5A power supply
  9. @lxe lxe revised this gist Sep 16, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -200,7 +200,7 @@ If the average errors are at around 1500-1800, try the following:

    - Play around with `goesproc.conf` parameters. Try adjusting the `gain` and `sample_rate`. For the NooElec XTR or other E4000 tuners, you might need to set your gain to `10` or below.

    Once you decreased the error rates, but your `vit` is still over 400, try making cery slight adjustments to the antenna again.
    Once you decreased the error rates, but your `vit` is still over 400, try making very slight adjustments to the antenna again.

    #### 10. Process packets into images

  10. @lxe lxe revised this gist Sep 15, 2018. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -219,6 +219,7 @@ Writing: ./goes16/m1/ch07/2018-09-15/GOES16_M1_CH07_20180915T231820Z.jpg
    ...
    ```


    ![](https://goesdata.lxe.co/goes16/fd/fc/2018-09-15/GOES16_FD_FC_20180915T213030Z.jpg)

    #### 11. TODO: Automatically restart goesrecv, store images on S3, send metrics to statsd and Grafana, and make videos!
  11. @lxe lxe revised this gist Sep 15, 2018. 1 changed file with 11 additions and 1 deletion.
    12 changes: 11 additions & 1 deletion goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -210,7 +210,17 @@ goesproc -c /usr/share/goestools/goesproc-goesr.conf -m packet --subscribe tcp:

    Once `goesproc` receives enough packets, it will start writing images and text to the locations described in `/usr/share/goestools/goesproc-goesr.conf`.

    ```
    Writing: ./goes16/m2/ch13/2018-09-15/GOES16_M2_CH13_20180915T231750Z.jpg
    Writing: ./goes16/m2/ch13_enhanced/2018-09-15/GOES16_M2_CH13_enhanced_20180915T231750Z.jpg
    Writing: ./goes16/m2/ch02/2018-09-15/GOES16_M2_CH02_20180915T231750Z.jpg
    Writing: ./goes16/m2/fc/2018-09-15/GOES16_M2_FC_20180915T231750Z.jpg
    Writing: ./goes16/m1/ch07/2018-09-15/GOES16_M1_CH07_20180915T231820Z.jpg
    ...
    ```

    ![](https://goesdata.lxe.co/goes16/fd/fc/2018-09-15/GOES16_FD_FC_20180915T213030Z.jpg)

    #### 11. TODO: Automatically restart goesrecv, store images on S3, and send metrics to statsd and Grafana
    #### 11. TODO: Automatically restart goesrecv, store images on S3, send metrics to statsd and Grafana, and make videos!

    Stay tuned!
  12. @lxe lxe revised this gist Sep 15, 2018. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -211,4 +211,6 @@ goesproc -c /usr/share/goestools/goesproc-goesr.conf -m packet --subscribe tcp:
    Once `goesproc` receives enough packets, it will start writing images and text to the locations described in `/usr/share/goestools/goesproc-goesr.conf`.


    #### 11. TODO: Automatically restart goesrecv, store images on S3, and send metrics to statsd and Grafana

    Stay tuned!
  13. @lxe lxe revised this gist Sep 15, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -157,7 +157,7 @@ If you're using a NooElec SmarTee dongle with an always-on bias tee, or if you'r

    If you're using RTL-SDR.com dongle, set `bias_tee = true` to power the SAWBird board.

    #### 7. Roughly point your antenna at the satellite.
    #### 7. Roughly point your antenna at the satellite

    Find where the GOES-16 or GOES-17 satellites are in the sky at your location using [agsattrack.com](http://www.agsattrack.com/).

  14. @lxe lxe revised this gist Sep 15, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -30,7 +30,7 @@ Assembly:
    [Antenna] --- [Adapter] --- [(input) SAWBird+ (output)] --- RTL-SDR (with Bias Tee)] --- [Raspberry Pi]
    ```


    ![](https://i.imgur.com/G8BfPP6.jpg)


    ## Software
  15. @lxe lxe revised this gist Sep 15, 2018. No changes.
  16. @lxe lxe revised this gist Sep 15, 2018. 1 changed file with 0 additions and 0 deletions.
    Binary file removed connections.jpg
    Binary file not shown.
  17. @lxe lxe revised this gist Sep 15, 2018. 1 changed file with 0 additions and 0 deletions.
    Binary file added connections.jpg
    Loading
    Sorry, something went wrong. Reload?
    Sorry, we cannot display this file.
    Sorry, this file is invalid so it cannot be displayed.
  18. @lxe lxe revised this gist Sep 15, 2018. 1 changed file with 4 additions and 1 deletion.
    5 changes: 4 additions & 1 deletion goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -27,9 +27,12 @@ Total: **~$185**
    Assembly:

    ```
    [Antenna] --- [Adapter] --- [(input) SAWBird+ (output)] --- cable --- [RTL-SDR] --- usb --- [Raspberry Pi]
    [Antenna] --- [Adapter] --- [(input) SAWBird+ (output)] --- RTL-SDR (with Bias Tee)] --- [Raspberry Pi]
    ```




    ## Software

    Prep your Raspberry Pi and install necessary drivers and software.
  19. @lxe lxe revised this gist Sep 15, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    # A guide on how to receive GOES-16 and GOES-17 images using an RTL-SDR dongle.
    # Receive GOES-16 and GOES-17 Images with a Raspberry Pi and RTL-SDR dongle

    Also see the [original Pieter Noordhuis's guide](https://pietern.github.io/goestools/guides/minimal_receiver.html#minimal-receiver)

  20. @lxe lxe revised this gist Sep 15, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -127,7 +127,7 @@ sudo make -j2 install
    #### 6. Create `goesrecv.conf` config

    ```bash
    cat <<EOF > ~/.goesrecv.conf
    cat <<EOF > ~/goesrecv.conf
    [demodulator]
    mode = "hrit"
    source = "rtlsdr"
  21. @lxe lxe revised this gist Sep 15, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -160,7 +160,7 @@ Find where the GOES-16 or GOES-17 satellites are in the sky at your location usi

    Note the **azimuth** and **elevation**.

    Use an **actual real compass** to point your dish at the azimuth. I've been using the iPhone phone compass, which has a 20-30 degree error, which renders it practically useless.
    Use an **actual real compass** to point your dish at the azimuth. I've been using the iPhone phone compass, which has a 20-30 degree error, rendering it practically useless.

    Adjust your dish angle according to the elevation.

  22. @lxe lxe revised this gist Sep 15, 2018. 1 changed file with 17 additions and 0 deletions.
    17 changes: 17 additions & 0 deletions goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -92,6 +92,23 @@ sudo reoboot
    rtl_test
    ```

    You should see something like this:

    ```
    Found 1 device(s):
    0: Realtek, RTL2838UHIDIR, SN: 00000001
    ...
    ```

    If it hangs, just press `crtl-c` to exit. It doesn't have to finish.

    If there are errors, or if the device is not recognized:

    - Reinstall the driver from Step 3 driver
    - Ensure the dongle is secured in the USB port
    - Remove all USB hubs and plug in into the Pi directly
    - Make sure you power your Raspberry Pi with at least a 2.5A power supply

    #### 5. Install [`goestools`](https://github.com/pietern/goestools.git)

    ```bash
  23. @lxe lxe revised this gist Sep 15, 2018. 1 changed file with 13 additions and 0 deletions.
    13 changes: 13 additions & 0 deletions goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -34,8 +34,21 @@ Assembly:

    Prep your Raspberry Pi and install necessary drivers and software.

    #### 0. Get your Raspberry Pi ready

    - Download [Raspbian Lite Image](https://www.raspberrypi.org/downloads/raspbian/) and [Etcher](https://etcher.io/)
    - Use Etcher to write the image to the SD card.
    - Mount the SD card as a volume on your machine.
    - Follow [this procedure](https://www.raspberrypi.org/forums/viewtopic.php?t=191252) to configure WiFi and SSH.
    - Plug the card into your Raspberry Pi and turn it on.
    - Find the IP address of the Raspberry Pi using your gateway/router administrative interface.

    Now you can SSH into your Raspberry PI as `pi` with a default password `raspberry`.

    #### 1. Get everything up to date

    From now on all commands should be run on the Raspberry Pi.

    ```bash
    sudo apt update
    sudo apt dist-upgrade
  24. @lxe lxe revised this gist Sep 15, 2018. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -1,5 +1,7 @@
    # A guide on how to receive GOES-16 and GOES-17 images using an RTL-SDR dongle.

    Also see the [original Pieter Noordhuis's guide](https://pietern.github.io/goestools/guides/minimal_receiver.html#minimal-receiver)

    ## Hardware

    You need:
  25. @lxe lxe revised this gist Sep 15, 2018. 1 changed file with 9 additions and 0 deletions.
    9 changes: 9 additions & 0 deletions goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -167,4 +167,13 @@ If the average errors are at around 1500-1800, try the following:

    Once you decreased the error rates, but your `vit` is still over 400, try making cery slight adjustments to the antenna again.

    #### 10. Process packets into images

    ```bash
    goesproc -c /usr/share/goestools/goesproc-goesr.conf -m packet --subscribe tcp://127.0.0.1:5004
    ```

    Once `goesproc` receives enough packets, it will start writing images and text to the locations described in `/usr/share/goestools/goesproc-goesr.conf`.



  26. @lxe lxe revised this gist Sep 15, 2018. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@

    You need:

    1. [Rasbperry Pi Model B (or B+)](https://www.google.com/search?q=raspberry+pi&tbm=shop) with a MicroSD Card **$35-40**
    1. [Raspberry Pi Model B (or B+)](https://www.google.com/search?q=raspberry+pi&tbm=shop) with a MicroSD Card **$35-40**
    2. An [RTL-SDR](https://www.rtl-sdr.com/about-rtl-sdr/) dongle:
    - [RTL-SDR.COM V3](https://www.amazon.com/dp/B0129EBDS2/) **~$25** or
    - [NooElec NESDR SmarTee](https://www.amazon.com/NooElec-NESDR-SMArt-Enclosure-R820T2-Based/dp/B01HA642SW) **~$25** or
    @@ -71,7 +71,7 @@ echo 'blacklist dvb_usb_rtl28xxu' | sudo tee --append /etc/modprobe.d/blacklist-
    sudo reoboot
    ```

    #### 4. Test youe the RTL-SDR dongle
    #### 4. Test your the RTL-SDR dongle

    ```bash
    rtl_test
    @@ -165,6 +165,6 @@ If the average errors are at around 1500-1800, try the following:

    - Play around with `goesproc.conf` parameters. Try adjusting the `gain` and `sample_rate`. For the NooElec XTR or other E4000 tuners, you might need to set your gain to `10` or below.

    Once you decresed the error rates, but your `vit` is still over 400, try making cery slight adjustments to the antenna again.
    Once you decreased the error rates, but your `vit` is still over 400, try making cery slight adjustments to the antenna again.


  27. @lxe lxe revised this gist Sep 15, 2018. 1 changed file with 10 additions and 10 deletions.
    20 changes: 10 additions & 10 deletions goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -30,9 +30,9 @@ Assembly:

    ## Software

    Prep your Raspberry Pi:
    Prep your Raspberry Pi and install necessary drivers and software.

    1. Get everything up to date
    #### 1. Get everything up to date

    ```bash
    sudo apt update
    @@ -42,14 +42,14 @@ sudo apt dist-upgrade
    sudo reboot
    ```

    2. Install dependencies
    #### 2. Install dependencies

    ```bash
    # get the packages necessary to build and run goestools
    sudo apt install git build-essential cmake libusb-1.0 libopencv-dev libproj-dev
    ```

    3. Install `librtlsdr`
    #### 3. Install `librtlsdr`

    Grab the latest [librtlsdr](https://github.com/steve-m/librtlsdr.git) source, compile it, and install the shared libraries/includes.

    @@ -71,13 +71,13 @@ echo 'blacklist dvb_usb_rtl28xxu' | sudo tee --append /etc/modprobe.d/blacklist-
    sudo reoboot
    ```

    4. Test youe the RTL-SDR dongle
    #### 4. Test youe the RTL-SDR dongle

    ```bash
    rtl_test
    ```

    5. Install [`goestools`](https://github.com/pietern/goestools.git)
    #### 5. Install [`goestools`](https://github.com/pietern/goestools.git)

    ```bash
    git clone https://github.com/pietern/goestools.git
    @@ -92,7 +92,7 @@ cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
    sudo make -j2 install
    ```

    6. Create `goesrecv.conf` config
    #### 6. Create `goesrecv.conf` config

    ```bash
    cat <<EOF > ~/.goesrecv.conf
    @@ -122,7 +122,7 @@ If you're using a NooElec SmarTee dongle with an always-on bias tee, or if you'r

    If you're using RTL-SDR.com dongle, set `bias_tee = true` to power the SAWBird board.

    7. Roughly point your antenna at the satellite.
    #### 7. Roughly point your antenna at the satellite.

    Find where the GOES-16 or GOES-17 satellites are in the sky at your location using [agsattrack.com](http://www.agsattrack.com/).

    @@ -132,7 +132,7 @@ Use an **actual real compass** to point your dish at the azimuth. I've been usin

    Adjust your dish angle according to the elevation.

    8. Run goesrecv and perform fine antenna adjustments
    #### 8. Run goesrecv and perform fine antenna adjustments

    ```bash
    goesrecv -v -i 1 -c ~/goesrecv.conf
    @@ -153,7 +153,7 @@ This should help you point the antenna correctly. Slightly rotate the dish right

    Once the `vit` errors are at their lowest, you've pointed the antenna! Double check the antenna position again. GOES-17 and GOES-16 are only about 15 degrees from each other in the sky.

    9. Restart `goesrecv` and play around with the config parameters.
    #### 9. Restart `goesrecv` and play around with the config parameters.

    If your `vit` errors are under 400, and you're observing no packet drops, you're all set!

  28. @lxe lxe created this gist Sep 15, 2018.
    170 changes: 170 additions & 0 deletions goes16-rtlsdr.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,170 @@
    # A guide on how to receive GOES-16 and GOES-17 images using an RTL-SDR dongle.

    ## Hardware

    You need:

    1. [Rasbperry Pi Model B (or B+)](https://www.google.com/search?q=raspberry+pi&tbm=shop) with a MicroSD Card **$35-40**
    2. An [RTL-SDR](https://www.rtl-sdr.com/about-rtl-sdr/) dongle:
    - [RTL-SDR.COM V3](https://www.amazon.com/dp/B0129EBDS2/) **~$25** or
    - [NooElec NESDR SmarTee](https://www.amazon.com/NooElec-NESDR-SMArt-Enclosure-R820T2-Based/dp/B01HA642SW) **~$25** or
    - *[NooElec NESDR SmarTee XTR](https://www.amazon.com/NooElec-NESDR-SMArTee-XTR-SDR/dp/B06Y1D7P48)* **~$40**
    3. [LNA](https://en.wikipedia.org/wiki/Low-noise_amplifier) and [SAW filter](https://en.wikipedia.org/wiki/Surface_acoustic_wave#Application_in_electronic_components) for around 1.69GHz
    - [NooElec SAWBird+ GOES](http://www.nooelec.com/store/sawbird-plus-goes.html) **~$35**
    4. A 1.6 - 1.9 GHz parabolic grid antenna
    - *[ZDAGP1900-20-15----1850-1990MHz 20dBi](https://www.excel-wireless.com/1900-mhz-grid-parabolic-antenna/1850-1990-mhz-grid-parabolic-antenna-20-dbi)* **~$100** or
    - [More dBi Options](http://www.zdacomm.com/1900-mhz-grid-paraboilc-dish-antenna-series.html)
    - Or use a [Modified 2.4 GHz WiFi grid antenna](https://www.reddit.com/r/RTLSDR/comments/9ahdzc/modification_of_wifi_grid_antenna_to_make_it_work/) **~$60**
    5. Adapter (depending on the antenna terminal):
    - [N-Male to SMA Male](https://www.amazon.com/gp/product/B01MFHRW4N/) **$5-10**
    6. Cable(s)
    - [SMA Male to Male](https://www.amazon.com/s/ref=nb_sb_ss_c_1_4?url=search-alias%3Delectronics&field-keywords=sma+male+to+sma+male) **$5-10**

    Total: **~$185**

    Assembly:

    ```
    [Antenna] --- [Adapter] --- [(input) SAWBird+ (output)] --- cable --- [RTL-SDR] --- usb --- [Raspberry Pi]
    ```

    ## Software

    Prep your Raspberry Pi:

    1. Get everything up to date

    ```bash
    sudo apt update
    sudo apt dist-upgrade

    # reboot the device
    sudo reboot
    ```

    2. Install dependencies

    ```bash
    # get the packages necessary to build and run goestools
    sudo apt install git build-essential cmake libusb-1.0 libopencv-dev libproj-dev
    ```

    3. Install `librtlsdr`

    Grab the latest [librtlsdr](https://github.com/steve-m/librtlsdr.git) source, compile it, and install the shared libraries/includes.

    ```bash
    # download, compile, and install librtlsdr
    git clone https://github.com/steve-m/librtlsdr.git
    cd librtlsdr
    mkdir build
    cd build
    cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DINSTALL_UDEV_RULES=ON ..
    sudo make -j2 install

    # load udev rules and blacklist the DVB driver shipped with the OS
    sudo cp ../rtl-sdr.rules /etc/udev/rules.d/
    sudo ldconfig
    echo 'blacklist dvb_usb_rtl28xxu' | sudo tee --append /etc/modprobe.d/blacklist-dvb_usb_rtl28xxu.conf

    # reboot the device
    sudo reoboot
    ```

    4. Test youe the RTL-SDR dongle

    ```bash
    rtl_test
    ```

    5. Install [`goestools`](https://github.com/pietern/goestools.git)

    ```bash
    git clone https://github.com/pietern/goestools.git
    cd goestools
    git submodule init
    git submodule update --recursive
    mkdir build
    cd build
    cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..

    # this will take a while on a raspberry pi
    sudo make -j2 install
    ```

    6. Create `goesrecv.conf` config

    ```bash
    cat <<EOF > ~/.goesrecv.conf
    [demodulator]
    mode = "hrit"
    source = "rtlsdr"
    [rtlsdr]
    frequency = 1694100000
    sample_rate = 2400000
    gain = 5
    bias_tee = false
    [costas]
    max_deviation = 200e3
    [decoder.packet_publisher]
    bind = "tcp://0.0.0.0:5004"
    send_buffer = 1048576
    [monitor]
    statsd_address = "udp4://localhost:8125"
    EOF
    ```

    If you're using a NooElec SmarTee dongle with an always-on bias tee, or if you're powering your SAWBird through the micro USB port, set `bias_tee = false` under `[rtlsdr]`.

    If you're using RTL-SDR.com dongle, set `bias_tee = true` to power the SAWBird board.

    7. Roughly point your antenna at the satellite.

    Find where the GOES-16 or GOES-17 satellites are in the sky at your location using [agsattrack.com](http://www.agsattrack.com/).

    Note the **azimuth** and **elevation**.

    Use an **actual real compass** to point your dish at the azimuth. I've been using the iPhone phone compass, which has a 20-30 degree error, which renders it practically useless.

    Adjust your dish angle according to the elevation.

    8. Run goesrecv and perform fine antenna adjustments

    ```bash
    goesrecv -v -i 1 -c ~/goesrecv.conf
    ```

    This will show output every second that looks something like this:

    ```
    ...
    2018-09-15T21:52:03Z [monitor] gain: 8.44, freq: -2121.4, omega: 2.589, vit(avg): 2400, rs(sum): 0, packets: 0, drops: 55
    ```

    The `vit(avg)` stat shows the average [viterbi error rate](https://en.wikipedia.org/wiki/Viterbi_error_rate) over 1 second interval (if running with `-i 1`).

    If there's no signal, the `vit` value should be over 2000. When signal is stronger it should decrease.

    This should help you point the antenna correctly. Slightly rotate the dish right or left and note whether the `vit` errors are increasing or decreasing. Once you're at the local error minimum, adjust the vertical angle, and do the same.

    Once the `vit` errors are at their lowest, you've pointed the antenna! Double check the antenna position again. GOES-17 and GOES-16 are only about 15 degrees from each other in the sky.

    9. Restart `goesrecv` and play around with the config parameters.

    If your `vit` errors are under 400, and you're observing no packet drops, you're all set!

    If the average errors are at around 1500-1800, try the following:

    - Terminate and restart `goesrecv`. This should allow it to readjust the gain and frequency offset to get a better read on the signal.

    - Cool the Raspberry Pi and the RTL-SDR dongle. I've noticed that temperature might significantly affect reception quality.

    - Play around with `goesproc.conf` parameters. Try adjusting the `gain` and `sample_rate`. For the NooElec XTR or other E4000 tuners, you might need to set your gain to `10` or below.

    Once you decresed the error rates, but your `vit` is still over 400, try making cery slight adjustments to the antenna again.