Soft66ADD SDR receiver – now with Linux support
The Soft66ADD is a small software defined radio (SDR) receiver, designed and built by Kazunori Miura JA7TDO. It is a fairly simple, USB controlled SDR receiver, capable of receiving the entire HF band of frequencies at 2500khz up to 35/70MHz. It is the latest version in the Soft66 family of SDR receivers.
This, as well as many similar SDR receivers, works by a process called direct conversion, where a local oscillator (LO) tuned to the frequency you wish to receive is added to the RF signal using a fast mixer IC. By this process the signal is transformed from its original frequency to a baseband signal (ie. starting at 0Hz), which can be digitized by a normal sound card.
In the mixer, the signal is sampled at two points of the LO frequency, differing in phase by 90 degrees, or a quarter, the two signal levels thus obtained are held until the next oscillation of the LO and are fed to the left and right channels of the PC’s sound card. This is called I/Q, or quadrature sampling, and requires a fair bit of math to understand in detail, but the result is that your PC basically receives a whole chunk of unprocessed, raw HF spectrum that you can then further process in software, for demodulation, filtering, analysis etc. in ways that a traditional receiver can only dream about.
I have looked at many SDR designs based on these principles. Many radio amateurs make design and kits available, (with the most popular one seemingly being the SoftRock, which is only available as kit and is currently out of stock). Most of these are receivers only, but some transceiver designs are also starting to appear.
There are also commercial or semi-commercial vendors, such as Perseus SDR, and then there is what seems to be considered the “gold standard” for SDR, the venerable USRP/USRP2 from Ettus Designwhich is the primary supported device of the GNU Radio project and is extremely popular especially with highly experimenting radio amateurs. Make no mistake, if you have $1,000 or so to spend I don’t think you can go wrong buying an USRP with it’s supporting HF modules, but the devices I am talking about here are a very low cost entry into the world of SDR, and cannot be compared to the USRP (although they are very good in their own right, and can possibly be compared favourably to some of the more expensive, commercial SDR receivers available!)
What really brought on my fascination with this class of receiver were Tasić Siniša-Tasa YU1LM’s designs. His designs are born out of a philosophy of “keep it as simple as possible while achieving excellent results”, and the articles that accompany his designs provide a lot of insights and taught me much about radio design.
I wanted to build one of these, but the main problem was that most of the designs didn’t come with a local oscillator, let alone one controllable from the PC via a USB port, and building that bit seemed a bit daunting for me. Then I stumbled across the Soft66AD, and I was sold immediately. Here was a simple, low cost, and fully integrated SDR receiver, with all the functionality I wanted from YU1LM’s designs but also a built-in signal generator with USB control. Needless to say, I ordered one straight away ![]()
I wanted to use this under Linux as that’s the only operating system I use on a regular basis. So I started hacking a driver up straight away. My main purpose was to be able to tune the Soft66 from Linrad, a rich featured SDR receiver program, but I also want to be able to use it with GNU Radio and other software, so I needed a generic solution.
The result is libsoft66, a library that also comes with a simple tool to tune/configure/query the radio. It is currently tested with the Soft66ADD only, but it should be relatively easy to add support for the other members of the family.
I also wrote a quick and dirty patch for Linrad to enable it to use the library to tune the Soft66 directly. I plan to add support for this to more packages, including GNU Radio, and also to write a simple GUI application for tuning the receiver.
Please be aware that the Linrad patch should not in any way be considered final, but it will get the tuner control to work so you can enter a frequency and/or use the +/- buttons to change the frequency in 50kHz steps. I plan to improve this shortly.
You can get the library and patch from this URL: http://www.infowares.com/soft66/
It’s very simple to compile and install, just follow the instructions in the included README.
If you want to modify the code I would appreciate any patches in email. Please use the git version in that case, which you can get from here:
$ git clone git://home.horsten.com/soft66.git
You can also browse the source code here. Any and all comments and feedback will be much appreciated. I plan to do further work on both the library and the tools in the near future. If you want to be notified, leave a comment here or send me an email. If there is enough interest, I’ll set up a (general purpose) English-speaking mailing list for these receivers, please also let me know if you would be interested in this.
Edit January 2012: All comments were lost after my blog was accidentally deleted and I had to recreate it from Google’s cache!


Thomas
Nice work with the Linux utility for the Soft66 receivers. Seems I have the soft66 receiver under control by linux.
However, I have another problem. I have a miniVNA which also uses the FTDI chip but then i serial mode. There seems to be a conflict between the soft66 and the minivna.
Firstly I can no longer control the minivna – no usbport seems to pop up as I have blacklisted the ftdi_sio module as pr your suggestions.
Is it possible somehow to avoid this problem, ie use on ftdi chip in serial mode and another in bitbang mode simultaneously.
73 de Olaf – LA3RK