This is an old revision of the document!
Table of Contents
CC1020 SDR
By sampling the 8 bit I and Q filter test registers on the chipcon CC1020 ISM band transceiver IC it is possible to reconstruct the baseband. This file contains avr code for an atmega168, and c code for *nix (tested on ubuntu 10.04) for converting the serial data to a 8Ksps WAV stream. This can then be used by fldigi using file-audio-playback (or -stream on the custom build). This has been tested with the cc1020em(x)k-434 evaluation board from mouser, running at 3.3v with the Lock pin connected to INT0 on the avr, and the “programming” spi interface on the cc1020 connected to the avr spi. The avr has to be clocked at an appropriate rate for 460800baud or faster serial to work - this has been tested with a 7.3728MHz crystal.
Test results
This technique has not been tested over long range, but bench tests with a very heavily attenuated signal suggest the front end noise figure for the 1020 is around 6.5dB. This mfsk64 data was recorded from a nxt2 transmitter with filtered pwm used to generate the small frequency shifts. The bandwidth is 9.6khz (mfsk64 spans approx 1.1khz). The PLL on the cc1020 allows steps of 225Hz to be made, here the local oscillator frequency was reduced by 225hz around point 800 on the horizontal axis. The horizontal line just below the ntx2 frequency is from an LCD monitor. The ntx2 signal is actually much stronger than the frontend noise and RFI, as can be seen by the disappearing background noise as the AGC adjusts. In fact the ADC on the chipcon is starting to saturate, causing the faint line at 0Hz during the transmissions.
A histogram of data from the I register (Q has the same shape) shows that the AGC is working perfectly to keep the samples in the +-127 range (signed 8 bit integer output). The probability density function is a Guassian as would be expected from a random noise source.
Usage instructions
Libsamplerate is required to resample the data to 8Ksps. A custom build of dl-fldigi in hab mode is required (./dl-fldigi –hab to use in hab mode). Hopefully this can be merged with the main dl-fldigi, but for now it can be sound at https://github.com/Laurenceb/dl-fldigi.
Using without AFC
With dump.c compiled and the hardware connected to the machine, fire up dump (./dump /dev/tty<port> e.g. ./dump /dev/ttyUSB0 ) and it should say “waiting for the stream to be opened”. Then in fldigi/dl-fldigi go to file-audio-stream and locate stream.wav in the same directory as dump. Entering positive or negative numbers between -126 and +127 into dump retunes the cc1020 in steps of 225Hz. Always shut down by first stopping playback in fldigi before closing dump, or fldigi may hang. On bootup the cc1020 will be tuned to 434.075MHz.
Using with AFC
Compile dump.c as before. You will also need python installed. Run autotune.py /dev/tty<port> then open fldigi/dl-fidigi as in the instructions above, but also setting rig control to use xmlrpc. You can now set the SDR frequency (has to be in the 434MHz band) using the rig control entry box in fldigi. AFC will control the PLL on the SDR to keep the audio frequency around the region of 2.5KHz. Presently the cc1020 can only be retuned in single steps, so this is only useful for tracking a 434.075mhz - future versions will allow any frequency in the 70cm band to be entered directly.