Welcome to QUISK (February 2014)
This is Quisk, a Software Defined Radio (SDR). You supply an antenna,
a complex (I/Q) mixer to convert radio spectrum to a low IF, and send
that IF to the left and right inputs of the sound card in your
computer.
The Quisk software will read the sound card data, tune it, filter it,
demodulate it, and send the audio to headphones or speakers.
Quisk has a microphone input and a key input so it can operate as a
complete transceiver. Quisk works with this hardware:
- SoftRock connected to the sound card
- Many other SDR's connected to the sound card
- SDR-IQ connected by USB
- N2ADR hardware connected by Ethernet and IP
- HiQSDR hardware connected by Ethernet and IP
- Quisk can be used as a pan adapter, and can control some radios
Quisk is small and simple, and has been designed so that it is easy to
change Quisk to suit your own hardware. Quisk rhymes with
"brisk", and is QSK plus a few letters to make it
easier to pronounce. QSK is a Q signal meaning full breakin CW
operation,
and Quisk has been designed for low latency. Quisk includes an input
keying signal that can mute the audio and substitute a sidetone.
Please read the file
CHANGELOG.txt
for changes.
When running Quisk for the first time, please press the "Help"
button on the lower right.
Credits
Quisk was originally written by James Ahlstrom, N2ADR.
Thanks to Leigh L. Klotz, Jr. WA5ZNU for configuration improvements,
factoring
out my eccentric hardware control, and adding panadapter and other
hardware
support.
Thanks to Franco Spinelli for a fix for the H101 hardware.
Thanks to Andrew Nilsson VK6JBL for adding support for SoftRock Rx and
Tx.
Thanks to Terry Fox, WB4JFI, for code to support the Charleston
hardware.
Thanks to Maitland Bottoms, AA4HS, for the sub-module linkage patches.
Thanks to Philip G. Lee for adding native support for PulseAudio.
Many others contributed to Quisk, and are mentioned in comments in the source code.
Installation
Quisk is registered on
http://pypi.python.org;
just search for "quisk" to see the latest version and the download URL. The download page is
http://james.ahlstrom.name/quisk/index.html.
There will be a
source
distribution (a tar.gz file) and a binary Windows version (msi
installer). The Linux version is for 32-bit Linux. If you
get the message "wrong ELF class", you have 64-bit Linux, and you must
recompile (use "make"). You
do not need to compile the Windows binary, but you need Python to
run it.
You must have Python installed on your computer, preferably version
2.7. Linux almost certainly has Python installed. For
Windows, visit
http://www.python.org
and download the Windows installer for Python 2.7 to install it.
You must also install the latest wxPython package for your version of
Python from
http://www.wxpython.org.
Linux
I recommend that you just uncompress and un-tar the tar.gz file
somewhere
under your home directory:
gunzip quisk-3.4.4.tar.gz
tar xf quisk-3.4.4.tar
# Check directory quisk-3.4.4 before removing the tar file
rm quisk-3.4.4.tar
# Perhaps change to a shorter name unless you want multiple versions
mv quisk-3.4.4 quisk
That way all the source for Quisk is available so you can change or add
to
Quisk. If you need to recompile the source, use the "make" command in the quisk
directory.
If there are compile errors or missing *.h files, you must install some
"dev"
packages. See below for needed "dev" packages.
Run Quisk using a terminal with the command "python quisk.py". If there
is
any error output, it will appear on the terminal. After testing, you
can
create a panel launcher with the same command but a full path, for
example
"python /home/jim/quisk-3.4.4/quisk.py" or "python
/home/jim/quisk/quisk.py"
if you used the shorter name . Then just click the button to run Quisk.
Another way to install Quisk is to change to the superuser (root)
and run "easy_install quisk" or "python setup.py install". If you don't
have easy_install, install
the python-setuptools package (for Debian/Ubuntu). This method installs
Quisk as a package. But you need to be root, and the source is not in a
convenient place; it is in /usr/lib/python2.7/site-packages. And there
is no uninstall feature.
Quisk needs a few additional packages to run. All should be available
as
packages or RPM's so you don't have to compile the source. Generally
you would get the most recent versions rather than the versions I show
below. Needed packages are:
- python2.7, the Python programming language. See http://www.python.org.
This
almost certainly is already installed on your Linux. Use the version
you have, or get the most recent version.
- python-wxgtk2.8, the wxPython package used for the GUI. Get the
most
recent version available for your Python version.
- fftw3, the Fastest Fourier Transform in the West. See fftw.org.
This is
a great FFT package and is also used by GNU radio.
- python2.7-dev, fftw3-dev, libasound2-dev, libpulse-dev, portaudio19-dev These
are
development packages that you need so you can change and recompile the
Quisk C-language files. Get the version that corresponds to the
software you have. If you get compiler errors, check for missing "-dev"
packages.
If you want to attach a key status line to your computer, you need to
change is_key_down.c and run "make". I currently use Ethernet to
send key up/down status. I previously sent a 5 volt CMOS signal
to my
parallel port, but new computers often lack a parallel port, and
Ethernet is much easier.
If you decide to use the parallel port, you need the ppdev Linux
driver.
To load it on boot, add it to /etc/modules (on Debian). The permissions
on the port (on Debian) are 660, group "lp". So add yourself to the
"lp"
group. Otherwise you will have to run "modprobe ppdev", and run
"chmod 666 /dev/parport0" as root to access the parallel port.
Quisk does not use the serial port, but some of the special hardware
files
do. If you need Python serial port support, install pyserial from
package python-serial. Note that many programs use USB, but are based
on a USB to serial converter, and pyserial works with these too.
Windows Installer
To install Quisk, first install Python and wxPython (see
above). Next download the quisk.msi installer, right click it,
and
select "install". This is best for those who plan to run Quisk,
but not work with the source code. To uninstall Quisk, use the
Control Panel item
Add/Remove Programs. Quisk is installed in the site-packages
folder under the Python 2.7 libraries. This enables Quisk to
be imported as a package by other software.
Windows Source
If you want to see and change the source code, or recompile the
Windows version from source, download the source tarball (the tar.gz
file), uncompress it and extract it into a directory somewhere.
This is the same as the Linux install proceedure. I use the
directory C:/pub/quisk because I synchronize this directory using
SpiderOak on multiple computers. You should probably choose a
directory under C:/Users/my_name with Windows 7, or perhaps a
directory under the Documents folder. You can then run Quisk with
the command "C:\python27\pythonw.exe quisk.py" from the Quisk
directory, the directory where quisk.py is located. You can
create a shortcut on the desktop with this command. There is no
need to recompile unless you change the C language source, as the
needed DLLs are included. You can change any of the Python *.py
files, and there is no need to recompile.
To recompile the DLL, install the MinGw compiler and the same
dependencies as the Linux version, and enter "make win". If you
get errors, look for missing *.h files from missing dependencies.
Quisk Files
These are the Quisk files in the distribution:
- quisk.py is the main program and is written in the Python
language.
Python is a powerful but easy to learn language, and I hope you have
fun changing Quisk to make it do what you want. Python is also useful
for general electronics calculations such as complex arithmetic. See
www.python.org. Quisk.py uses the wxPython Python package to make the
screen interface.
- help.html is the help file for quisk. Press the "Help" button.
- _quisk.so is the _quisk extension module for Linux, and _quisk.pyd is the extension module DLL used by Windows.
- sdriq.so is the extension module needed for the SDR-IQ. It needs
_quisk.so to be available when it starts.
- makefile is the makefile, and you must run "make" to create a new
_quisk.so unless you use a Python installer that creates _quisk.so
itself.
- setup.py is used by makefile and the Python installers.
- quisk_conf_defaults.py is the basic configuration file imported
into
all other configuration files. Read it (but don't change it) to see
what you can change in your own quisk_conf.py.
- quisk_conf_*.py are various Quisk configuration files. Copy one
of them
to your own .quisk_conf.py and edit that file. I may publish new model
files in the future, and you don't want your changes to be overwritten.
- quisk_hardware_*.py are various quisk hardware control programs.
If you
have custom hardware, import one of these files into your
quisk_conf.py. Or copy one of them to your own quisk_hardware.py, edit
that file, and import it in .quisk_conf.py.
- quisk.c, quisk.h are the files for the _quisk extension module
used by
quisk.py. The other C-language files are linked with these to make
_quisk.so and _quisk.pyd.
- sound.c is the general purpose sound code for all sources.
- sound_portaudio.c is the sound card access code for PortAudio.
- sound_pulseaudio.c is the sound card access code for PulseAudio.
- sound_alsa.c is the sound card access code for the ALSA drivers.
- sound_directx.c is the sound card access code for DirectX.
- is_key_down.c is the hardware key checker for the PC. I use
Ethernet to
send the key status, but there is code for the parallel port and dummy
code too.
- sdriq.c, sdriq.h are the files that make sdriq.so and support the
SDR-IQ.
- microphone.c reads the microphone audio and sends it to your
hardware
using Ethernet. Change it for other sound access.
- docs.html is Quisk documentation. Look for other *.html and *.txt too.
- portaudio.py is a utility program. Run it to list your PortAudio
devices. It is not used by the Quisk program.
Configuration
Quisk does not have a menu to control its operating parameters.
Instead, you must create and edit your own configuration file.
For Linux, the default configuration file name is ".quisk_conf.py" in
your home
directory; that is, "~/.quisk_conf.py". For Windows, the default
configuration file name is quisk_conf.py in your My Documents folder.
- Linux config
file:
~/.quisk_conf.py
- Windows config file: My Documents/quisk_conf.py
To help you get started,
there
are several configuration files included, such as
quisk_conf_model.py
for
sound card, quisk_conf_sdriq.py for SDR-IQ, and quisk_conf_fixed.py for
fixed
VFO such as SoftRock. Do not change any of the quisk_conf_*.py
files. Instead copy one of
these
files (but NOT quisk_conf_defaults.py) to your own config file.
Newer versions of Quisk will not overwrite your personal config file.
The file quisk_conf_defaults.py contains all Quisk's parameters.
It is read in first; then your config file is read in and overwrites
some parameters. Do not copy quisk_conf_defaults.py to your
config file. It is too long and is subject
to change with each new version. Instead,
read it
to see what you can change, and then just put the lines that need
changing into
your config file.
If you are controlling custom hardware, you will nee