Dreamcatcher Chat Application


In case anyone cares. all my radio testing is in my underground facility and compliant with 47 CFR 15.211


Additionally, Dreamcatcher in LoRa PHY mode is commercial test equipment, as described under 47 CFR 15.103. This is a low power digital device meant to develop communications links and networks for industrial, commercial, and medical applications.


@ac8dg @Syed

I will be transmitting on 1288.000-1294.000 MHz (Broadband Experimental, Simplex ATV) tonight under 47 CFR 97.301, 47 CFR 97.305 data and SS

I will use a HackRF One to observe the signal. … in a coax environment because Chirp Spread Spectrum in not yet allowed under part 97.

Once the transmitter works, I will see if the receiver works… It’s too bad that you two are not in the same city.

–Konrad, WA4OSH


@ac8dg I could very well be wrong, as I have spent zero time with the SX1276, but my guess is that it doesn’t support a 400 kHz channel. I don’t see any compatibility between the SX1276 and SX1280/81.


You are right, my sx1276 won’t be very useful, here are the BW options

The SX1276 and SX1279 offer bandwidth options ranging from 7.8 kHz to 500 kHz with spreading factors ranging from 6 to 12.

Compare with the sx1272
The SX1272 offers three bandwidth options of 125 kHz, 250 kHz, and 500 kHz with spreading factors ranging from 6 to 12.

Finally back to the sx1280

LORA_BW_1600 0x0A 1625.0
LORA_BW_800 0x18 812.5
LORA_BW_400 0x26 406.25
LORA_BW_200 0x34 203.125

So… my other option is looking more promising, I have a pair of sx1280dvk1zhp boards
designed for 2.4GHz testing. I’ll have to see what variables I can control on them.


Is there a way to stop the spread spectrum transmission in order to send a CW ID? Or to measure steady-state power output?

–Konrad, WA4OSH


That’s not a feature that is currently available, though with the code being open source, you should be able to recompile with FSK instead of LoRa. Of course, there are still some issues with compiling…


@Konrad_Roeder FYI I dialed in 1294 and get a signal on my rf-explorer around -90dBm, good to about 6 feet using a 6" broadband antenna, If I narrow the analyzer too tight the signal has a hard time displaying.

Fired up the second DC, Now “what I type on one is screen printed on the second unit”

a carrot preceds the received text ex “test” then as as received “>test”

Cool first step

I have them both connected to wifi, but using putty and usb cable to talk to them
They save the wpa connection and reconnect automatically but I don’t have the “chat” app as a autostart and it does not save the frequency setting.

Edit/update–plugging in a keyboard into the usb port allows complete keyboard to keyboard chat using the tft lcd screen.


OK … I

git clone https://github.com/Outernet-Project/Dreamcatcher-Packet-Tester

My directory: ~chat has 7 files:

What do I have to do to execute that chat program now?

–Konrad, WA4OSH

sudo ./chat


Let us know what happens after ./chat
Did you just install Armbian by itself on a DC and then add the Chat software?


Yup. I installed Armbian and added the chat software from Github.

After you enter sudo ./chat the chat application comes up with Dreamcatcher Chat (v.0.0 alpha) and asks to select your operating frequency:

Then, it responds with the selected mixer frequency:

From there, it takes one line of text at a time and transmits it.

I have not put the firmware on a second DC yet, so I have not seen the full chat yet.

–Konrad, WA4OSH



Screenshot at 2018-05-23 21-07-27

The operating frequency appears to be the frequency the mixer is operating, not the frequency that’s being transmitted.

The IF is 2400 MHz. The LO is 1110 MHz. The resulting transmit frequency is 1290 MHz.

This appears to be the LoRa signal on my Hack RF One and laptop running Gqrx.

If I change the LO to 1108 MHz, the resulting transmit frequency is 1292 MHz.
Screenshot at 2018-05-23 21-27-30

–Konrad, WA4OSH


You are observant. I now read the screen and it says “selected mixer frequency”.
I was seeing the incidental LO emission on my RF Explorer (very narrow signal).

So for 2402 MHz output I have to enter 4802 (for the 2400 + 2402 = 4802 mix) and
for 915 MHz output I am entering 1485 (for the 2400 - 915 = 1485 mix)

of note the allowed inputs are 40 MHz to 6 GHz

~/chat$ sudo ./chat

 Dreamcatcher Chat (v.0.0 alpha)

Select operating frequency (MHz):2
Invalid choice. Range is 40 MHz to 6 GHz
Select operating frequency (MHz):


Bug – Entering 39.9 MHz causes an infinite loop

Screenshot at 2018-05-24 04-36-35

Bug – Operating frequencies are limited to integer MHz values due to rounding function.
(j) No station may transmit with a transmitter output exceeding 10 W PEP when the station is transmitting a SS emission type.

Screenshot at 2018-05-24 04-44-39

Bug – LO (mixer frequency) should be calculated from operating frequency, not copy it.

–Konrad, WA4OSH


“it takes one line of text at a time and transmits it”

What is mode, CW or something else?


The mode is a form of Chirp Spread Spectrum (CSS) called LoRa. Outernet uses the PHY layer and has its own file transfer protocols.

–Konrad, WA4OSH


I’ve been reviewing the Chat app. It is not really a proprietary code. It has some nice things going on. In essence it toggles between “master” and “slave” whenever the input buffer is filled with entered text until the transmission is complete. Then waits for received data or new text entered. It appears parameters like rssi and snr are available but not being displayed. Standard stuff is all in the code, first look is that it is good starting point.

Your comment on integer values need a little more investigating, as to how the variable is defined, but I didn’t see any intentional rounding. The basic frequency is defined as 2400000000UL (I’m not sure what the UL means). reference the main.cpp file.

And yes the modulation format (currently PACKET_TYPE_LORA) could be changed to fsk as supported by the sx1280

Edit/update>> I should note that I can’t yet compile the program as listed in the git clone… it fails… so the chat executable that I am using is not quite a match to the code.


I have not reviewed the code yet. It sounds like it might need a visit.

That’s an interesting state machine. I wonder if Chat can be modified to handle a three-way conversation. Slave while receiving and Master while transmitting. A Carrier-Sense Multiple Access (listen for dead air before transmit with a backoff) method of sharing the frequency might be interesting.

–Konrad, WA4OSH


@ac8dg @Konrad_Roeder The satellite stuff is propriety. The terrestrial stuff is open source, per GPL.