Friday, November 7, 2008

sdr-core and datagrams

Frank has released a new version of sdr-core that uses datagrams as the transport for receiving commands.

I have updated a version of my RMI based code to test this out and it is working with no problems. Note the output from the shell window at the top right with the "--verbose" output from the RX sdr-core.

Friday, October 31, 2008


Finally found some time to do some more work on the RMI GUI.

I have now added a digital and analog S meter.

Thursday, September 4, 2008

DttSP rev 233

I am now running with the latest rev 233 of DttSP (sdr-core). Once I had resolved the distorted audio problem as being overloading the output from DttSP it seems to be working well.

On my dual core system running at 3.4GHz with 2MB of memory I see each sdr-core taking about 1% of cpu when there are no requests for spectrum sample.

The cpu goes up to about 2% for sdr-core when samples are being requested at 15 per second and of course the java cpu time increases because of the graphic display of the panadapter and waterfall.

Thursday, August 21, 2008


Made quite a few changes to the UI to include band selection, locking of the UI once the components are positioned and selection of the the Look And Feel.

These changes are now committed to the svn store.

The new Nimbus Look And Feel in Java 6 update 10 (currently beta) looks good.

click on image to see larger image

Sunday, July 20, 2008


I have implemented some early code to support Phil Covington's Quicksilver receiver. Thanks to Ken K9VV for access to his receiver over the internet. Still needs a lot of work, but does prove the basic concept.

Thursday, July 17, 2008

Windows XP

Yes, I finally succumbed, I have run Windows XP to test the Java GUI running on it. And it worked!!!

Actually the screen grab shows the Java GUI running on Windows XP remotely controlling the server which was running on a Mac with a Softrock connected to it using the built in sound card.

I see no reason why this should not run on Vista as well as this part is 100% Java.

Wednesday, July 16, 2008

State saved

svn version 129 and greater now saves state and restores the layout when restarted.

No more having to start all the objects each time ;-)

SDR1000 working

The latest code is now working with the SDR1000 (in receive).

Also added debug windows for DttSP and SDR1000 to monitor the commands being sent to the fifos.

Getting the SDR1000 working with this code just required writing an Object that communicated with a fifo to send commands to the hardware which is connected via USB or parallel port. The SDR1000 sends a message to set the oscillator offset to 9000 Hz, which the DttSP object receives and sends to the fifo to control sdr-core. Any messages to se the frequency are received by the SDR1000 object and translated into a SetFreq command to the hardware. No other objects had to change.

Monday, July 14, 2008

GUI Changed

I have changed the user interface to create a JFrame and then add the different components as JInternalFrame objects rather than add them to the desktop.

This means the relevant components for a specific radio can be kept together and will make it easier to have different configurations.

The initial state is an empty window. The File menu lets you start the different components within the window. You need one instance running the RMI server and Message Switcher as the main server. You will also need a DttSP object and a Softrock Object with the DttSP object running on the machine with the soundcard you are using. You can then start other instances and add the different UI objects as required.

The image below shows 4 instances all running on the same machine, one of which is running the RMI server and is also running the DttSP object. The other instances locate the RMI server to register their components to receive the required messages and show how they can be configured. Each of these could have been running on a different machine.

This version is not in the svn archive yet!

Saturday, July 12, 2008

RMI code now in svn

The version in the svn repository is now quite useful and at this time the version number is 106.

The RMI based code can be checked out using the command (without the quotes):

"svn checkout --username guest"

This will create a directory called Radio which contains the source code as a NetBeans (6.1) project.

Java 6 is required to run the software.

You do not have to install NetBeans to simply run the software. It is only required if you want to modify the source code.

To run the software there are 3 main scripts in the Radio directory:

  1. start_base will create the fifos (if not already created), start jackd, start sdr-core and then make the jack connections. Depending on your soundcard this will need changing. Note that there is also a start_base_64 which runs the sdr-core compiled for 64 bit Linux. The 32 bit version is starting jackd for an FA-66. The 64 bit version is starting jackd for a Delta 44. Currently only UNSUPPORTED (i.e. motherboard sound card), Edirol FA-66 and M-Audio Delta 44 cards are supported. This does not mean that other cards will not work, it just means the calibration will not be correct.
  2. start_radio will start up all the java code that implements the radio. You will need the host name of the server machine to be resolvable to it's IP address on the network if you want to run the remote GUI. The simplest way to do this is to add an entry to the /etc/hosts file. If you do not then the IP address that gets resolved for the RMI will be the localhost which will not be the correct address for the remote clients to use.
  3. start_remote will start the java GUI code running on a remote system. It requires you to be running the java code on the server machine. The script will need changing to specify the IP address for the RMI registry.
This software includes compiled versions of sdr-core for 32 bit linux and 64 bit linux (in Radio/bin/linux). It assumes you have installed jack on your machine.

The Java GUI code should run on any platform supporting Java 6. I have tried it running on a Mac and Linux. I have not tried it on any Microsoft OS as I don't have a system wth their software installed.

Running on Ubuntu 64 bit system

I have finally built a 64 bit 8.04 Ubunto system running the 2.6.24-19-rt kernel.

I tested the new RMI code using the Delta-44 card. I had to recompile sdr-core for the 64 bit system, but not the Java code ;-)

Wednesday, July 9, 2008

Resizing windows

The Panadapter and Waterfall windows are now resizable.

Tuesday, July 8, 2008

Improved Panadapter and Waterfall display


Having talked to Frank Brickle at Dayton I decided it would be an interesting experiment to put together an SDR radio where the components are all independent and communicate using Java RMI (Remote Method Invocation).

The first experiment is a simple interface to control a Softrock.

A quick view of all the components running on a Linux box (Ubuntu 8.04):

Click on image for full size image

In addition to the UI components there is a central 'Radio' component running that handles the registrations and message distribution, a DttSP component that handles communication with DttSP and a Softrock component that handles the Softrock hardware. Actually there is nothing to do for the hardware, but it does translate the frequency changes to messages to set the oscillator frequency which is handled by the DttSP component. The Softrock component can be replaced with an SDR1000 or a Flex5000 component that actually controls the hardware.

Note the network activity. This was because concurrently I was running the display components on a MacBook Pro:

Click on image for full size image

I started 2 copies of the Panadapter display on the Mac. Each spectrum snapshot is 4096 float samples. which translates into 16384 bytes for each snapshot. At 15 per second this is ... well you can work the math!

All controls stay in sync, regardless of the host thay are running on. When a VFO frequency is changed all the other VFO's and Panadapter displays will change frequency. When a Panadapter display is dragged the VFO's and other Panadapter displays stay in sync.

Thursday, May 22, 2008

Good progress with the Atlas bus and Ozy/Janus cards. I built the Atlas bus and it is all working when tested under Windows with the PowerSDR version that supports Ozy/Janus.

Last night I worked on getting udev (Ubuntu) to recognize Ozy and initialize it when it is plugged in, powered on or at boot time. Now to look at the code to control the SDR-1000 using Ozy.

Monday, May 19, 2008

Dayton 2008

Have just spent 3 days at Dayton (my first time).  If you have never been to this show then I would really recommend it.  It was tiring - didn't help that I missed my connecting flight in Chicago because of a delay in London and had to wait 5 hours for the next flight to Cincinnati where I rented a car and drove to Dayton.  I finally arrived at about 1 am!

It was really good to meet up with old friends from AMSAT and TAPR and especially to meet for the first time in person Frank Brickle , Phil Harman, Gerald Youngblood, Eric Wachsmann and the rest of the  Flex Radio people.

I now have the Ozy/Janus boards (and a Penelope board), thanks to Frank Brickle,  and  I also saw the new Mercury receiver board actually running.  Phil really did a great job on this board, especially getting it built and working in time for the show.

The biggest problem I see going forward is how to keep up with all the new hardware and get the java-sdr working with it!  I need to retire to get  more time to work on all this great hardware!  If anyone else wants to dig in and help develop the software for these feel free to have a go.

Friday, February 22, 2008

Vacation time ...

I am really close with the transmit. I am getting some interaction from the code that gets the ADC data for the forward and reflected power. Once this is resolved I will make a release that includes transmit.

I will be on vacation for a week now - skiing in Morzine, France.

Monday, February 11, 2008

More tansmit ...

Making some enhancements to the TX side.

Added the code to monitor the ADC for forward and reverse power and calculate SWR. Output power is controlled with the output gain control for the TX DttSP process.

Need to add the setup for the PA gain values for the correct power calculations.

I should be able to commit the changes in the next day or two.

Friday, February 8, 2008


Finally managed to get 100 watts output using a test tone. Found a problem with the SDR-1000 hardware code where the PA_BIAS control bit was inverted in the Linux code. This should now be corrected in the svn repository for DttSP.

Hopefully, I can now make a working transmit version available soon for others to test. I expect the CW transmit code will require a lot of work to get running well.

Monday, January 28, 2008

New versions of sdr-core

I have updated the version of sdr-core for both mac and linux to reflect the latest changes from Frank to improve the latency problem.

Also fixed a problem where the DIGU and DIGL filters were the same.

I have also deleted the build and dist directories from the repository. This seemed to be causing some problems with updates. You should manually delete these directories (and all sub directories and files) and then an update should work without any problems. A subsequent build will recreate these directories but they are now not in the repository so should not cause any problems on future updates. This is for both command line svn updates and Netbeans svn updates.

Wednesday, January 23, 2008

Project Wonderland (Sun MPK-20)

I have been giving a demo of the Java GUI in Sun's virtual office (MPK-20). This is using the open source version of Project Wonderland.

Click on image for large image.

sdr-core rev 162

I am working with Frank on adding gain controls for the input and output of DttSP. The control of the output gain of DttSP will resolve the problem of no audio output that I am seeing with the latest revision of DttSP.

This should also resolve the problem of controlling the transmit drive as I will now be able to adjust the gain on the I/Q output to the transmitter. More to come later ...

The latest rev 72 contains the updated source code for the gain controls and also the updated binaries for sdr-core (both linux and mac).

Saturday, January 19, 2008

HAARP - LWA Moon Bounce Experiment

I had a short 8 minute window at 06:30 this morning while the moon was above the horizon so I decided to try to hear the echo from the HAARP moon bounce experiment on 6.7925 MHz.

You can see the 2 second carrier on the waterfall just below the red cursor in the center of the display. Click on the image to get the full size image.

Thursday, January 17, 2008

Rogue import

Just noticed that a rogue import got into which I have now removed and updated on

Softrock support

I have updated the code to include the start of softrock support. Currently it is receive only and a single center frequency.

As usual an 'svn update' will get the source code changes and then recompile in NetBeans.

Wednesday, January 16, 2008

New Quicktime video

I made a new Quicktime video of the GUI running including audio.

The video was made using iShowU on the Mac. I had to drop the frame rate down fairly low as it does have problems running at 30 fps along with the GUI, sdr-core, Jack and NetBeans. There is some jitter in the video which is caused by the all this running together.

You can download the actual Quicktime video from Be aware that it is a large file 34MB.

Tuesday, January 15, 2008

Updated source code and OZY/JANUS info.

Added an AGC panel and code to be able to control RX AGC - currently just supports OFF,LONG,SLOW,MEDIUM and FAST.  I will add an additional mode for CUSTOM.

Frank has offered a loan of an OZY/JANUS board set, which I have accepted,  so that I can look at adding support for it.  With the work that Bob (VK4XV) has been doing we should be able to get something working fairly quickly.

This all goes goes to prove what a great group of people we have working on all this.

Monday, January 14, 2008

Fixed several problems including

I have update the source on to fix a few problems found by José F5JD, Roland f8chk, Dana Rawding and Frank Brickle for giving some good advise, especially when I am not around.

An 'svn update' will get the latest source and then compiling and running from NetBeans will get the latest version.

One change was set the IF to 9000 rather than 11025.  This value is stored in the radio.xml file, so you will either have to remove it or edit and change the 11025 value to 9000.

Sunday, January 6, 2008 announcement

Have put the announcement on dtts-linux and flexradio of the subversion repository and some documentation on

Had a email from Frank to say he had already found the repository and had checked it out and was running. I knew someone would find it before I made the announcement ;-)

Friday, January 4, 2008

Nearly there ...

I have built clean Fedora 8 and Ubuntu 7.10 systems and written documentation on how to install the required components and how to checkout the Subversion repository.

I need to build a clean Mac OS X system and write the documentation for that.

This first release is a receive only version. The transmit side still needs some work for which I am getting a lot of help from Frank and Eric. There is code in this version that will transmit, but be aware that it is possible to damage the PA in the SDR-1000 if it is overdriven. The power output is determined by the audio drive from the sound card.

Wednesday, January 2, 2008

svn repository

The svn repository has now been setup on and I will publish the details on the relevant lists in a couple of days as soon as I have completed checking it out on both the Mac and Linux.

The tree contains everything that is required to compile and run the application under NetBeans apart from jack (see later). It was developed with NetBeans 5.5.1 and JDK 1.5 because Apple had not released 1.6. 1.6 is now available as a Beta release from the Apple developer site. I have not had any time to check this out yet. I have tried NetBeans 6.0 and JDK 1.6 on Linux and all is OK. However if any GUI forms are developed with this version they are not backward compatible with the previous versions.

The tree also contains a bin directory with 2 sub-directories for linux and mac, which contain the required compiled versions of sdr-core and sdr1000. sdr100 is the hardware code from repos-sdr-linux with a C wrapper around it to use fifos for it's interface.

The Java code will detect which OS it is running on and exec the correct versions as sub-processes.

The only thing that the user needs to install on their machine other than NetBeans and the Java Development Kit is Jack. Most distributions include Jack. I run Fedora Core 8 and it was just a simple matter of running the Package Manager (Add/Remove Software) and searching for jack and then selecting both 'jack-audio-connection-kit' and 'jack-audio-selection-kit-example-clients'. On Mac OS X you can download and install the jack package from

Note that the startup of jack and the connections are all exec'd from the Java code. There is no requirement for the user to run these manually or use qjackctl (in Linux) to make the connections.

There is a script in the tree to make the fifos. This mus be done before running the application.

I have setup a account for the source code repository. Should have this completed in the next couple of days and will then publish how to access it.