Transmitting Data from Lime to Lime on VHF/UHF

Hello SDR heads, greetings!

Im looking for some example code, preferably in C++, that will allow me to send and receive data (ascii, hex, or binary, etc.) over UHF or VHF from lime to lime.

I bought two lime SDRs and got Soapy running in Ubuntu for both. they are hooked up to separate computers.

Got GNU radio running, and the lime drivers. its all working, but i want to get them to talk to eachother

I would like to use PSK or some variant of PSK

anything helps im also looking for some example code for FM voice transmission.

Please point me in the right direction!

Much thanks to you all!

Jaime

What sort of licensing do you have available to you? Are you a HAM? based in the US? Elsewhere?

If you have a general class license or better then I can recommend Phil Karn’s packet radio code as a good place to start. It is well debugged, very portable, and supported in GnuRadio and other SDR packages.

I’m not personally licensed, but i got an old timer buddy with all the licenses you can imagine, and a ham shack brimming with exotic gear! He’s aways game to run a few tests when i come over. Hams of my fathers, and my grandfathers generation are usually very helpful to me. They are interested in this new SDR stuff and how it relates to what they know. Im actually kind of a nostalgic person myself, and I do love that ham radio brings folks together from all ages, and really fosters an appreciation for the technology of times past.

I am interested in getting licensed, but its not super high on my priority list now, i’ll probably get it done soon. Im sure i could pass the tests.

thank you for your suggestion. i’m looking at his download page now:

http://www.ka9q.net/code/ka9qnos/

it looks like the code was originally conceived for windows, but was ported for linux too.

ill give this a shot in Ubuntu and let you know how it goes!

Thank you!

I really encourage you to get your ticket, its only $15 and you don’t need to know morse code, just the rules of the road and basic electronics information. A great place to study is https://hamstudy.org/ These are the exact questions on the test so if you can pass the test on the web site you can pass in person. Then use this link http://www.arrl.org/find-an-amateur-radio-license-exam-session to find a place giving the test nearby.

https://www.tapr.org/pr_intro.html provides a good history of packet radio and https://opensource.com/article/17/9/packet-radio is a good reference as well. If nothing else you can tune your SDR to the APRS frequencies and listen for beacons that are transmitting their location. There are a couple of balloons up that are flying around the world, they can be heard thousands of miles away.

–Chuck

Ham radio is Super Nerdy Cool !!!
Been at it for decades & with new tech, never get bored. Always something to build, blow up or repair…

Ed

Iv’e talking with Marty Wittrock on this forum and he has showed me these resources:

SDR Angel is an awesome GUI program thats open source! For windows and Linux.

Marty got a voice transmission going over 20m with SDRAngel, very cool!

theres also some very interesting example C++ code in the LimeSuite github. This is a really minimalistic RX example that just takes IQ samples from a buffer and writes it to file.

I trying at the moment now to implement this code into a simple send receive routine between my limes, ill let you all know how it goes!

Does anyone know of any other example code for simple RX TX tests between limes?
I have two LimeSDR’s and i’d like to send data or voice between them, but so far i havent had a whole lot lot of luck getting them to talk nicely together, although im sure my hardware is working.

I’m trying to find out whats out there in order to know where to start for my own project. SDR is such an emerging science, and i think i could contribute to the community by building a simple set of utility programs for SDR.

Thank you!

What kind of data do you want to send? For ASCII text, I have some code that can send arbitrary length text messages using BPSK, QPSK and FSK (see this image:

.

For other types of data, you can use TCP/IP over radio.

Assuming you are comfortable with GNU radio, take a look at https://github.com/kantooon/qradiolink
for digital voice, FM, SSB and AM transmission and a full duplex data modem.

You will need to use the gr-osmosdr package, and it should be built with SoapySDR support. Some default packages supplied by various distros do not include the Soapy support, so instead of using those packages, you will need to install Soapy and then build gr-osmosdr with support for it.
Feel free to ask any questions here.

Adim! WOW!

I wanted to send PSK or a derivative so this is just great!

This is quite amazing. The GUI is nice! i cant wait to give this a try…and it shouldnt be that hard. I already have Soapy and GNU installed. I think all i need to do at this point is to build the gr-osmosdr block for GNU with Soapy support.

Cool! I will let you know if i run into any snags.

Thank you again!

Jaime

Adim,
Hope you are well today!
I’m finally ready! Sorry for the delay. I have all my hardware unpacked after a move, and plugged in. I would very much like to install qradiolink for Ubuntu 16.04, but im not sure where to start.
How would I check if my gr-osmosdr package has been built with Soapy support?
I have soapy installed, i also have gr-osmosdr installed, but perhaps not the right way. Perhaps i need to rebuild and reinstall it.

I also have GNU Radio companion installed.

how do i satisfy all the dependencies?

Do you have any installation tutorials for qradiolink in Ubuntu?

Looking forward to using this amazing software suite!

Thank you!
Jaime

Hi Jaime,
When running cmake on gr-osmosdr, it will report which backends have been enabled (if you have SoapySDR you should see a message about soapy being enabled).

Apart from that, Ubuntu build should be similar to Debian. There are some instructions in the readme file for Ubuntu 17.10, and I think the name of the packages should be similar. There is a list of all libraries used by the program, so if Ubuntu has named a package differently, you can still search for the library name. To build the program, you need to have development packages for all libraries (headers essentially). You can identify these packages by the -dev suffix. You will need either Qt4 or Qt5, depending on which version is used by GNU radio. With an older version of Ubuntu/Debian, a safe bet is generally Qt4.

Regarding GNU radio: you need all base libraries and the development packages, not just GNU radio companion. Should you find that the build is not successfull, it is a good idea to look at the output and identify which library is missing.
To be noted this would become much easier if someone would take it upon themselves to create packages for Ubuntu. I can’t do that since I don’t use it and some things are different to Debian.
Right now I have little spare time on my hands to step up the build/packaging game so I’m afraid it won’t improve soon. But, since you asked for some C++ code, I think you won’t have a problem with the build.
I should add that calling qradiolink an “amazing software suite” is a bit too much and tends to raise the expectations above a reasonable level. QRadioLink is simply an open source platform to learn and experiment, and the current version number (0.3.X) should hint at how stable and advanced it is :slight_smile:

I’d like to use this space to thank Martin Hauke again, thanks to his efforts, Opensuse is the only distro packaging qradiolink.

Regards,
Adrian

1 Like

Alright! Success!

We got qradiolink installed and working! Here’s how we did it.

I have to thank my teammate bijoutrouvaille for his tireless effort on this endeavor. He is truly elite. Building qradiolink for Ubuntu was no easy feat, but since we managed it we’d like to blaze a wide trail.

AS A RULE we leave concise, scientific, rigorous, documentation in our wake as we churn thru the murky waters of SDR. stay tuned for more!

Why Ubuntu? well, because it was the only OS we could get to work. We tried Debian, OpenSUSE, and various other Linux distro’s to no avail.

Even OpenSUSE didnt seem to have a “out of the box” solution for qradiolink, as promised. There were tons of missing components. it was worse then Ubuntu. (maybe you could clarify how it is “packaged”?)

At any rate we are very happy for this milestone. we were able to successfully SEND AND RECIEVE ascii data over various types of PSK with your program, from LIME TO LIME.

And so far that a first for us. This is huge, and we are very grateful to Adrian for his groundbreaking work in this regard.

Thank you

Here it is:

How to Compile QRadioLink for use with LimeSDR on Ubuntu

Note:

A supplement to our tutorial is the tutorial by Xavier Ruppen. Much thanks to Xavier as well. We use his tutorial as one of the steps.

He’s got some java on his page that is incompatible with older OS’s so i had to disable javascript to properly see his page…you might have to.

Also qradiolink is a work in progress, we understand that, this being said, you may experience a few bugs.

1 Like

I noticed that you recommend to run QRadioLink as root during the setup. This is not needed if you have installed the udev rules and I recommend against it. Something to keep in mind is that vulnerabilities in the software (and there are a few, I won’t mention them here) can enable someone to perform remote code execution on your machine by sending a specially crafted signal. For this reason, never run the receiver as root.

Also, FYI the RRC filters used for QPSK pulse shaping had wrong size for some symbol rates, so I’ve pushed a fix to the next branch.

If you like adventure, you can try the IP modem. This will allow you to communicate more than ASCII over radio. Anything TCP or UDP based should work. Just make sure to use a large enough frequency offset, for example set the split (the number is in kHz) on one box to -3 MHz and on the other box tune to the split frequency and set the split to the same value but positive. Just remember to press enter to actually configure it.
The data modem uses DQPSK at a gross bit rate of 250 kbit/s but the encapsulation is very basic (no HDLC or similar) and the transmission is continuous. Check the docs/CONFIGURE file for instructions on how to enable the IP protocol transmission.

Regards,
Adrian

Hello SDR heads, this thread is still going!

Since i last checked in I have gotten some good basic functional tests under my belt. I was able to get qradiolink and SDRAngel working. Compiled them from source! I co-wrote a tutorial on how i accomplished this. (see earlier post)

However, what I’m trying to do is understand radio science, and while these programs are great, they dont help me figure out whats going on under the hood. These programs are built on GNU radio and a million other dependencies. so theres a lot to understand. I want to start with something simple that just uses the Lime driver (like the Basic RX example code earlier in my post) or Soapy SDR.

So, like the U2 song: I still haven’t found what I’m looking for…

Im still looking for a basic example in C++, that will allow me to send and receive, modulate and demodulate in PSK, a small data packet over ISM frequencies (13.56, 40.68, 433.05Mhz etc.) from lime to lime.

We tried writing some code but it doesn’t work :frowning:

If anybody has an ideas on where to start, please let me know.

Jaime

I would suggest the 2018 ARRL handbook (http://www.arrl.org/arrl-handbook-2018), it has a good section on SDR and good material covering all of the aspects of radio that you are trying to learn.

–Chuck

thanks Chuck i’ll give it a look, but this isn’t exactly what im looking for…

I’d like to find some basic C++ example code, that will allow me to modulate and demodulate in PSK, thank you!

Also if anyone wants to take a gander at my code i’d love to know what i did wrong!