Building Your Own Bitcoin Satellite Node: Part 3 — Dish Alignment
At this point you should have your dish assembled and the required software installed. You can, and should, copy over an already-synced Bitcoin blockchain to your Sat Node. Blockstream Satellites rebroadcast the last 24 hours of blocks, so don’t worry about having to hurry. Time to align your dish!
- An assembled dish and correctly connected cabling as per Part 1
- Requisite software installed as per Part 2
- Clear line-of-sight to the satellite
- Your LNB’s LO frequency (mine was printed on the box the LNB arrived in)
- (Optional) Smartphone dish alignment app
For reference, here are the previous parts of this guide:
Determining the proper satellite to align to
Note: For this guide we will use Galaxy 18.
Blockstream currently has four satellites broadcasting Bitcoin blocks to North and South America, Africa, and Europe. To determine which satellite provides the best coverage for your area, refer to the Network Status page here:
There is also a Dish Alignment Tool you can use to input your address and receive what elevation, azimuth, and polarity you need to receive data from the satellite.
To get a rough visualization of my line-of-sight to Galaxy 18, I used the SatellitePointer iOS app.
Make sure you have no buildings, trees, or structures within 30 degrees of your line-of-sight. An example of a good line-of-sight:
The better and less-obstructed line-of-sight you have, the better your signal will be:
Setting your dish’s azimuth and elevation
Once you have determined an area with good line-of-sight, you can begin setting the azimuth (side-to-side movement) and elevation (up and down angle) of your dish. The dish used in this guide is known as an “offset” dish. What that means to us is to use the dish’s own angle measurement to set the elevation versus relying on a protractor or smartphone app.
The quality of signal you will receive is very sensitive to the angle of elevation, so make sure you are setting it as accurately as possible.
Once you believe you have accurately set the dish’s elevation, move on to setting the LNB polarity.
Setting the LNB’s polarity
Setting the polarity of the LNB is a little tricky. I used the SatellitePointer iOS app to help with this. I fit the top of my smartphone under the flat part of the LNB (painted red) and then tried to get an accurate reading from the app:
There are also degree markings on the top of the LNB, but I found using the smartphone app was easier.
Using the Blockstream Satellite Receiver to fine-tune alignment
A prerequisite of launching the Receiver is to determine what frequency to pass to
rx_gui.py . You should have figured out the frequency of the satellite you want to receive from previously in this guide. Galaxy 18’s frequency is 12022.85 MHz.
To calculate the frequency to pass to
rx_gui.py , you subtract your LNB’s LO frequency from the satellite frequency. The LNB used in this guide has an LO frequency of 10750 MHz. Thus, the result is 1272.85 MHz.
rx_gui.py accepts frequency in Hz (instead of MHz), so the result is 1272850000 Hz.
Now, you can pass the frequency and gain (40 is fine) to
rx_gui.py and run it:
python rx_gui.py --freq 1272850000 --gain 40
rx_gui.py is located in the
satellite/grc directory we cloned from the Blockstream Satellite repository in Part 2 of this guide. Mine is located at:
Working with the Receiver GUI
When you start
rx_gui.py a window will pop up with numerous tabs. What we want to do is use the
This graph is very noisey and updates quickly. To help with this you can set the graph to average its updates to get a clearer visualization of the quality of your signal:
Sweeping and setting the dish’s azimuth
At this point your graph will be more or less flat. Now we can focus on setting the azimuth correctly. Slowly sweep left to right and back while watching the
FFL Intab. I used the previously mentioned iOS app to help with setting the azimuth:
If you are successful, you will see a lump in the graph similar to this but not necessarily as clear:
Nice! Now you can adjust the azimuth (side to side), elevation (up/down), and polarity of your LNB to get a bigger “lump”, and therefore a better signal.
The objective is to have a clear lump similar to this:
To confirm your signal is good, you can click on the
Abs PMF Out tab and see a single large peak:
You can also click over to the
Costas Sym Out tab and see four groupings of dots:
Finally, the terminal where you are running
rx_gui.py will print out:
#### Frame synchronization acquired ####
Congrats! You’ve successfully aligned your dish to the Blockstream Satellite!
Starting FIBRE (
Now that we are successfully aligned to the satellite, we can start
bitcoind and receive blocks from the Blockstream Satellite!
$ bitcoind -fecreaddevice=/tmp/async_rx
You can now follow the
debug.log to see if you’re receiving blocks successfully. If you see something similar to:
2017–09–17 20:41:39 UDP: Got full header and shorttxids from [::]:2 2017–09–17 20:41:42 UDP: Initialized block 0000000000000000008961eb7ce04e56c0d6dec5b6e92a3e4298b7614d762f83 with 0/867 mempool-provided chunks (or more)
…then you are all set! Congratulations!
Now, you can turn off (or keep turned off) networking to your device and only receive blocks from the satellite or you can stay networked. It’s up to you!
This concludes Part 3 of the Building Your Own Bitcoin Satellite Node guide. A special thanks to Chris Cook at Blockstream for walking me through setting my sat node up, and also to Greg Maxwell for informing me of such a cool and exciting application of technology.
For a more in-depth guide visit: https://github.com/Blockstream/satellite
If you found this guide helpful you can spend tips to
Thanks for reading!