The Dreamcatcher v3.0 is Outernet's latest revision of their satellite receiver hardware. The freely available Outernet ku-band satellite service aims to keep us up to date with the latest news, provide books, videos, a daily selection of Wikipedia articles and satellite radio. Compared to the internet, Outernet is download only, and is received via their Dreamcatcher 3 hardware with an an antenna pointed to a satellite. At the moment their Ku-band service is in beta testing and so is only available in the continental United States, but they hope to eventually expand to cover more areas of the world.
Starting from today Outernet are holding a 33% off sale. This means that their Dreamcatcher 3 is only US$99 each. To get the discount use the coupon "33%OFFJULY4SALE" on their store. The sale lasts until Midnight Central Time on Wednesday 4 July. The code is valid site wide, so applies to the moRFeus product as well.
Previous Dreamcatcher implementations utilized an RTL-SDR to receive their L-Band network, however that network has now been discontinued. Dreamcatcher 3 utilizes a hardware based LoRa radio to receive their new ku-band satellite LoRa data stream. However, Dreamcatcher 3 has alternative applications, and doesn't need to be used only for the Outernet data service. Dreamcatcher 3.0 is a full LoRa radio that can transmit and receive, and in this post we'll focus on testing that out.
LoRa is a popular wireless protocol that has been designed for Internet of Things (IoT) devices. It is robust against interference and can be used in low power devices.
Dreamcatcher 3 LoRa Chat
Outernet have provided a LoRa two way open source text chat application that runs on the Dreamcatcher 3. To use it you'll need two Dreamcatcher 3 boards. With the application you'll be able to chat with short text messages in real time between the boards. Amateur radio enthusiasts may be interested in the boards as an easy way to set up LoRa experiments.
We note that Outernet are not advertising the transmit features specifically as the board is not FCC approved as an intentional radiator, so it cannot legally be used as an ISM band LoRa device for transmitting and listening to LoRa IoT sensors. But as a ham you are able to transmit with it if you can ensure that the output is clean and legal and on the ham bands.
A brief demo of the chat running below is shown. In the video we're using the default 'spreading factor' setting which results in robust communications, but results in a latency of about 2 seconds. Later we'll show how to change the spreading factor to reduce latency.
The Dreamcatcher v3.0
Outernet kindly provided us with two Dreamcatcher 3 boards to test the chat application with.
Like the previous versions, the Dreamcatcher is a full computing board with radio built into it. Except this time instead of an RTL-SDR, the radio is a hardware LoRa module. Another difference is that now there is a built in LCD screen.
On the board there are two SMA ports, one labelled "Direct" and the other labelled "LNB". The direct port is what we'll need to use for the chat application as this is the port that can transmit. There are also two SD Card slots, one for the OS and one for storage, a microphone and headphone jack, a USB-A slot with a supplied WiFi adapter, and two USB micro slots, one for USB OTG and one for power.
The package also comes with an LNB that is designed to be used with the Outernet satellite service. The LNB is receive only, so cannot be used with the chat application, so you'll need to use your own antenna if experimenting with the LoRa transmitter.
Chat Setup and Usage
First we burnt the latest version of Dreamcatcher Armbian OS to two SD cards and inserted one into each board. Since Dreamcatcher 3 has a built in LCD screen, you can login and access the terminal through the screen. But as there is only one USB port available, you'll need a USB hub to be able to plug in a mouse and keyboard, and the included USB WiFi adapter. Alternatively, if you connect the USB OTG port to a PC, you can connect to it via a USB serial connection. Instructions for connecting via serial, and for setting up a WiFi connection are the same as in our previous Dreamcatcher 2.0 tutorial.
The chat software is available on GitHub at https://github.com/Outernet-Project/Dreamcatcher-Packet-Tester. To install it simply run the following commands at the Dreamcatcher's terminal:
sudo apt update sudo apt install libsoc-dev libsoc2 git clone https://github.com/Outernet-Project/Dreamcatcher-Packet-Tester make
Then you can run the chat program with:
Upon running the program you'll be asked to enter a MIXER frequency. This frequency doesn't really seem to matter and we're not sure why we're asked for it. But you can enter any frequency such as 300000000 Hz (300 MHz).
Once you've opened the chat program on both Dreamcatchers you should be able to type in text on the console, and have it show up on the other Dreamcatcher after pressing enter. Remember to plug an antenna in to the DIRECT port of both Dreamcatchers, or run of attenuated coax between them. The provided LNB cannot be used for the chat application.
Playing with LoRa Settings
The actual RF output frequency is by default hard coded in at 2.4 GHz. If you want to change it you can edit the main.cpp file with a terminal based text editor like nano, and look for the #define RF_FREQUENCY entry. Then you will need to recompile by running 'make' again. However note that at the time of this post, according to Outernet the software only works properly at around 2.4 GHz. Apparently this is simply a software limitation and once this is fixed you should be able to transmit at any frequency between 85 MHz to 5400 MHz.
Also by default, the LoRa 'Spreading Factor' is set to the maximum of 12. This means that there is roughly a latency of about 1 second between sending a message, and receiving it on the other unit.
The spreading factor can also be adjusted in the code by editing the "modulationParams.Params.LoRa.SpreadingFactor" variable. This determines how spread out in time the packet it. Larger spreading factors result in more robust error free communications, whereas smaller factors result in lower latency. Below are some valid spreading factor entries for the code.
Note that if you reduce the spreading factor you'll also want to reduce the RX_TIMEOUT_VALUE and TX_TIMEOUT_VALUE #defines (you'll need to search for these lines in the code. Hint: In Nano CTRL+W is search.). For a spreading factor of 7 a timeout of 100 ms works well.
LORA_SF5 LORA_SF6 LORA_SF7 LORA_SF8 LORA_SF9 LORA_SF10 LORA_SF11 LORA_SF12
It is also possible to adjust the bandwidth from 200 kHz up to 1600 kHz using the following code on the "modulationParams.Params.LoRa.Bandwidth" variable.
LORA_BW_0200 LORA_BW_0400 LORA_BW_0800 LORA_BW_1600
The LoRa 'coding rate' can also be changed via the "modulationParams.Params.LoRa.CodingRate" variable.
LORA_CR_4_5 LORA_CR_4_6 LORA_CR_4_7 LORA_CR_4_8 LORA_CR_LI_4_5 LORA_CR_LI_4_6 LORA_CR_LI_4_7
You can also adjust the TX output power by adjusting the value specified by #define TX_OUTPUT_POWER. By default it is set to the maximum output power of 13 dBm. The lowest value available is -18 dBm.
Remember that after making a change in the main.cpp file, you'll have to recompile the chat program by running 'make'.
Below we visualized the different LoRa spreading factors with a HackRF. It's interesting to see how the spreading factor changes the packet transmit time.
Overall the Dreamcatcher 3 LoRa chat software works, but is still very much in early development. Regardless it is an interesting tool for experimenting with LoRa. The hardware is ready, and software now just needs to be developed to make use of the LoRa protocol. We also note that the Dreamcatcher is not a plug and play device, and that it's mostly suited to people who enjoy tinkering with new beta products.
We'd also just like to remind that in order to legally transmit you'll need a ham licence. The board is not FCC approved for regular ISM band LoRa use. While the output power of the Dreamcatcher isn't too strong at a maximum of 13 dBm, we still recommend that you make sure to reduce the output TX power, or run a direct attenuated coax connection when testing. There are also weak signal images present at some harmonics, so any ham using this with an amplifier would be of course expected to provide sufficient filtering.