Now that I finished my Omnia SDR for the 60, 40, 30 and 20 meter bands, I started looking into how I could use it on Linux. I remembered reading some emails on the project mailing list about using Quisk, which is a mature SDR transceiver application written by James Ahlstrom, N2ADR. I decided to give it a try.
Quisk is not quite a plug-and-play type application. In most cases it requires creating a configuration file before it can work in any given setup. Fortunately, it comes with a default configuration and we only have to specify the differences that are applicable to the Omnia SDR.
In the following sections I will describe the steps necessary to configure Quisk. In case you are wondering whether it is worth it, my answer is HELL YEAH! The setup I ended up with works very well with low CPU load even on older computers. I don’t think there is any better option for Linux at the moment.
Take a look at this teaser video where I am listening to a contact between F6DMQ and YB3VO on 40 meters:
Install Quisk
Quisk is already available as binary package in many Linux distributions, although this version may be a bit outdated compared to the latest version. For example, Ubuntu has version 3.5-3.7 whereas the latest version available is 4.1. I recommend using the latest version from the authors website.
Download the package containing the source code, e.g. quisk-4.1.1.tar.gz. This package will also contain a binary executable that should work on 64 bit linux; however, it might be a good idea to simply rebuild it on the computer you are going to run it on.
Quisk is written in Python and C and has few runtime and build dependencies. These are listed in the Quisk documentation available on the web or in the downloaded package. On Debian and Ubuntu systems simply install them using the following command:
$ sudo apt-get install python2.7-dev fftw3-dev libasound2-dev libpulse-dev portaudio19-dev
Now type “make” in the top level Quisk directory in order to rebuild quisk:
~/quisk-4.1.1$ make
It should build without any errors. If not, check the error messages for clues about missing packages that need to be installed.
Create the udev rules
Quisk uses libusb to control the Omnia SDR (set frequency, etc.) and we need to create udev rules to allow regular users to access it. create a file called 53-omnia.rules containing the following line:
SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="05dc", MODE=660", GROUP="plugdev"
This tells the system that members of the group plugdev should be allowed full access to the device. Check the users and groups manager and make sure that you are member of this group.
Now copy the rule to a directory where udev can find it and activate it:
$ sudo cp 53-omnia.rules /etc/udev/rules.d/ $ sudo udevadm control --reload-rules
The USB vendor and product IDs can be seen in the syslog when you connect the device to the computer:
$ dmesg ... [ 9326.340673] usb 3-3: new full-speed USB device number 2 using ohci-pci [ 9326.517706] usb 3-3: New USB device found, idVendor=16c0, idProduct=05dc [ 9326.517715] usb 3-3: New USB device strings: Mfr=7, Product=2, SerialNumber=128 [ 9326.517721] usb 3-3: Product: Peaberry SDR [ 9326.517725] usb 3-3: Manufacturer: www.obdev.at [ 9326.517728] usb 3-3: SerialNumber: 0B27034D03294400 [ 9326.592285] usbcore: registered new interface driver snd-usb-audio
These numbers will also be needed for the configuration file we create in the next section.
Create a configuration file
Basically, we need to tell Quisk that we are going to use a Softrock type transceiver with an Si570 oscillator through a “standard USB controller” interface. Not sure what the official name for this controller is. We also need to tell Quisk which audio interfaces to use for I/Q input/output and which one to use for audio input/output, as well as the sample rates to use with the audio devices. There is a restriction here in that the IQ sample rate must be an integer multiple of the audio rate. The Omnia has a fixed sample rate of 96 kHz, so it is best to set the audio rates to 48 kHz.
Create a configuration file called quisk_conf_omnia.py in the same directory as the other quisk_conf files and add the configuration listed below. Note that this configuration uses the ALSA audio backend and the “default” interface for speaker and microphone. Here you could use a specific sound card by replacing “default” with the name of the card, see /proc/asound/cards for a list of available sound devices on your system.
from softrock import hardware_usb_new as quisk_hardware from softrock import widgets_tx as quisk_widgets si570_direct_control = False usb_vendor_id = 0x16c0 usb_product_id = 0x05dc key_poll_msec = 5 # RX IQ input name_of_sound_capt = "alsa:Peaberry SDR" sample_rate = 96000 channel_i = 1 channel_q = 0 # RX audio output name_of_sound_play = "alsa:default" playback_rate = 48000 # Microphone input: microphone_name = "alsa:default" mic_sample_rate = 48000 mic_channel_I = 0 mic_channel_Q = 0 # TX IQ output name_of_mic_play = "alsa:Peaberry SDR" mic_playback_rate = 96000 mic_play_chan_I = 0 mic_play_chan_Q = 1 mic_out_volume = 0.7
Once you have the configuration file you can run quisk using this configuration:
$ ./quisk -c quisk_conf_omnia.py
You can customize this configuration further, including the window layout, colors, and much more. The default configuration file quisk_conf_defaults.py contains documentation of the configuration parameters.
Final remarks
I have been having lots of fun using the Omnia SDR with Quisk. It is actually a very good receiver considering the small size and simplicity of the setup. Here are a few screenshots showing Quisk in action on 20 and 40 meters:
As I mentioned above, Quisk runs very well even on older hardware. I have two laptops more than 10 years old. It’s a Dell and an HP with quite good audio interfaces and quisk runs quite well on both of them with CPU load below 50%:
On last thing, Quisk has built in FreeDV modem, so once you have it up and running with your Omnia SDR transceiver you can start experimenting with FreeDV!
See you on the air soon in a 2-way Omnia QSO, yes?
Thank you Alexandru for this article. It helps me to recognise the Omnia SDR (I’ve got the Proficio some days ago) and to manage the sophisticated alsa config. Now the Proficio runs without problems on my Raspberry Pi 2 combining your instructions and that one (http://www.n6qw.com/Pi3.html). 73, Jens / DH1AKY
Thanks for the feedback Jens. I’m glad the info was useful.
I also plan to get a Proficio soon and also working on new SDR software that will be easier to setup and use.