General purpose DSP radioModern computers have the processing power to outperform conventional radios in receiving signals with poor S/N. Particularly when the poor S/N is due to interference rather than to white (galactic) noise the computer can remove interference within the narrow bandwidth of the desired signal by use of the information about the interference source retrieved by use of larger bandwidths. The signal processing can be far more clever than what has been possible before. Each interference source can be treated as a signal and the DSP radio can receive AND SEPARATE a large number of signals simultaneously. The DSP radio package is under development with flexibility and generality as important aspects. This page contains links to pages that describe different aspects of digital radio processing in the order they are encountered in the ongoing development. The DSP-radio for LINUX is designed for all narrow band modulation methods for all frequency bands. To start with the following modes will be included:Weak signal CW (primarily EME) Normal CW High speed CW (meteor scatter) SSB FM |
Hardware combinationsFor SSB bandwidth, using a conventional SSB receiver and a single antenna a 486 computer and almost any conventional audio board will do. Of course the limited bandwidth will limit the performance; obviously the FM mode will not work at all. The interference rejection routines will have limited information about the interference sources and will have reduced capacity. If the SSB receiver has adequate noise blanking and the S/N of the desired signal is essentially determined by white noise the weak signal performance will be without degradation. Under the development phase I use a TS520 as the SSB radio together with a Pentium 66MHz (16MB RAM) and a Soundblaster 16 to check performance both on HF and VHF.For 40kHz bandwidth and a single antenna a Pentium MMX and a standard 16 bit stereo audio board will give a reasonable performance. By use of two frequency mixers in quadrature the RF signal is converted to a pair of audio signals which are sampled in stereo at 44.1kHz The dynamic range will be somewhat limited within the 40kHz passband. This is the ideal low cost solution for general usage on all frequency bands below 30MHz. For 2 x 20kHz bandwidth and two antennas (for example a VHF X-yagi) complex analog hardware is required if a standard 44.1kHz A/D converter is used. This is the configuration I have used extensively with the MS-DOS PC radio. With standard crystal filters the bandwidth is reduced to perhaps 2 x 15kHz and then the hardware for this configuration is pretty simple and easy to build. For further information check the hardware description for the MS-DOS PC radio. For 2 x 90kHz bandwidth and two antennas a 4 channel A/D converter running at 96kHz and a Pentium III is needed. Each antenna needs two mixers in quadrature. Under the development phase this configuration is tested on a 650MHz Pentium III(128MB) with a Digital River Delta44. The Delta44 is sold as a 24 bit audio board but when sampling at 96kHz only the first 16 bits contain valid information, the lower 8 bits contain random noise. Practical aspects of signal processingThe links below point to html pages that contain many images that show various interesting aspects of digital processing. These links are placed in chronological order and the most recent version of the entire software package is always at the bottom of the list.Anti alias filters External anti alias filters may improve the useful bandwidth. Here is an example for the Delta 44 board. Speed and accuracy of approximate real FFT The user can select from a menu of different fft implementations. Some are approximate and this page shows some graphs that illustrate the limitations of these routines. Selective fading. Here are some graphs showing selective fading on BC stations. The improvement obtainable by digital processing on AM signals is obvious although that will not be done in the immediate future. Comparision of wide and narrow spectrum at 7MHz Here are two graphs taken at the same time with two different systems. Both are processed with 20Hz bandwidth but the spectrum covering 90kHz is averaged before the number of points is decreased to 1024 so the effective resolution is 100Hz. To preserve S/N of weak narrowband signals far more complex processing is required but this graph shows what the current Linux DSP package (dsp04.tgz) already can be used for. Filter shape and pulse response Normal receivers have ugly pulse responses because the filters have steep skirts. These graphs show what the pulses look like before any digital processing is done to correct the frequency response of the analog filters. The frequency response is also shown as spectra with a dummy load connected to the antenna input functioning as a natural white noise generator. Channel balance for direct conversion receiver A direct conversion receiver uses two mixers with a 90 degree phase shift between them. A real world analog circuit may use 1% components so a typical direct conversion receiver will have an image that is suppressed by something like 40dB only. To avoid tweaking of the analog circuits the Linux DSP package has a digital correction scheme that cancels out this image. This section shows how it works. Spurious-free dynamic range Here is a graph that shows the spurious responses of the direct conversion receiver described on this page. Second order distortion dominates. The spur-free dynamic range is about 80dB if the balancing is well done and the signal level is about 15dB below saturation. Calibration for flat frequency response By addition of a digital filter the frequency response of the dsp radio is made very flat. The calibration procedure needs a pulse generator. The amplitude and phase response of the entire system can be set by the user and as a result the useful bandwidth is increased and the noise floor is made very flat with precisely known roll-off at the edges of the spectrum. The procedure is described with the 90kHz bandwidth direct conversion receiver as an example. Calibration at SSB bandwidth Here are some graphs produced with a TS520 and a Soundblaster 16 board. A pulse generator for calibration. Any pulse generator may be used for calibration of the Linux dsp radio. Here is a simple one. Note that selective amplifiers are also needed - otherwise the pulses become too weak. The pulses can NOT be amplified by a wideband amplifier - they are already 5 volts in amplitude and will saturate any wideband receiver front end using amplifiers. This link gives more info. The baseband graph When neither AFC nor second fft is enabled the raw data from the A/D converter within a selected frequency band is mixed to the baseband for further processing. Here is some more information about the first mixer and some interesting images showing 7MHz spectra in high and low resolution at the same time. Timing of the first FFT The first FFT is usually the most time critical routine. There are several different fft routines to choose from and the relative performance probably depends on the processor type, cache size and maybe other hardware parameters. This link gives the timing information currently available. The second time function In case second fft is enabled the transforms of the first fft are split in two parts and transformed backwards to twice the number of time functions. In this way strong (uninteresting) signals are separated from the weak (interesting) signals and all sorts of wideband noise. The removal of strong signals is very helpful to allow efficient reduction of impulse noise. This link gives an example at 7MHz where noise blanking is far more difficult than at VHF due to the much larger number of strong signals. Noise blanker with optimised hardware With optimised analog hardware the flat bandwidth is 90% of the digital bandwidth (or more). A noise pulse becomes very short which is beneficial for the operation of the noise blanker. Noise blanker with conventional hardware With a conventional radio the flat bandwidth is typically 75% (or less) of the digital bandwidth. Noise pulses have an oscillatory behaviour. Each pulse is an oscillation at the center frequency of the filter with a time constant that is inversly proportional to the bandwidth of the filter (or rather the skirt steepness) The oscillations are not harmful since the exact shape has been pre-recorded into the system - it is the inverse fft of the frequency response of the signal path (combined analog and digital) The high resolution waterfall graph When a large frequency range is processed there are not enough pixels on the screen to associate one fft frequency bin with each pixel. Typically bandwidths in the order of 1Hz have to be used to detect weak CW signals with optimum sensitivity. When a X-yagi (cross-yagi) is used and a signal arrives with 50% of its power in each polarization the summed power spectra from the two channels give lower visibility compared to when the signal is present in one channel only. To minimise this loss, average channel correlations are used to to calculate the data points for the waterfall graph. Setting up the first fft When the second fft is enabled, the purpose of the first fft is only to remove strong narrowband signals that would destroy the noise blanker performance if those were left in place. There is no reason to waste computer time doing the first fft too well unless there are very strong signals of very high quality within the passband. Some screen dumps are presented to illustrate this. Checking the A/D range For good dymamic range it is essential to use all the bits of the A/D converter. There are built in tools to verify that saturation does not occur in the analog circuitry preceding the A/D converter. Here are also some screen dumps showing inadequacies of the Delta44 board (nothing is perfect....) 2 minutes of 144MHz EME The page shows screen dumps and allows you to download a binary file containing the signals from which the screen dumps were obtained. Signals recorded Oct 03 1999 at about 0800 UT. Run it on your computer and listen to several different EME stations. Half a minute of 7MHz contest (single channel) The page shows screen dumps and allows you to download a binary file containing the signals from which the screen dumps were obtained. Run it on your computer and listen to the myriad of contesters. Half a minute of 7MHz contest (two channels) The page shows screen dumps and allows you to download a binary file containing the signals from which the screen dumps were obtained. If your computer was fast enough for a single channel with some margin, run this file on your computer and listen to the myriad of contesters. Installing SIMD support under RedHat 6.1 To use SIMD instructions you need kernel 2.4.xx or later - or you have to install a patch. If you are not an experienced Linux user, look here. Installing Linux dsp radio under RedHat 6.1 If you are not an experienced Linux user, look here. Backwards fft as combined mixer and resampler Using the backwards Fourier transform as a frequency mixer is trivial, one just shifts the frequency bins before taking the backward transform. Obviously one can easily implement a filter at the same time by simply zeroing undesired points. By using a subset of the points corresponding to a smaller transform - thus actually using the data for a smaller transform - the number of points is reduced by some power of two. The back transform spans the same time with some power of two fewer points. Although conceptually simple this method needs some care to avoid spurs. Some screen dumps here show ugly spurious sidebands caused by parameters selected for processing speed only. Performance is quite good already with a modest computing effort. Spurs and dynamic range Using a Pentium III and a Delta44 with the hardware described on other pages of this site, two frequency mixers in quadrature, and anti-alias filters with a 7MHz preamplifier a pretty good receiver is obtained. Some screen dumps show how well a weak signal can be seen on a 90kHz wide screen. A very strong signal at 7MHz is also present. Although there are several spurs of various origin it is no problem to detect a signal 130 db below the strong "undesired" signal. The fft underlying the waterfall graph uses 171072 points with a sine squared window. By expanding the frequency scale by 100 times the sensitivity can be improved by about 10dB. The time to search a wide frequency range then becomes impractical. Processing normal SSB bandwidth Here are some graphs showing some possibilities using the linux dsp package on a Pentium 60MHz processing the audio output from a TS520. The Pentium 60MHz is fast enough for processing a single channel sampled at 8kHz. Settings for "normal filtering" 25 to 250Hz bandwidth with a small signal delay as well as for very high sensitivity/resolution are demonstrated. Very low cost radio Just using two cheap standard mixers and a X-tal oscillator one can get a surprisingly good radio receiver. No anti alias filters are needed, the ones built into the sound board are sufficient if dynamic range requirements are modest. Without any amplifier in the chain the noise figure is far from acceptable, so signal amplification in the order of 60dB has to be added. Part of the gain is preferably added as a low noise audio amplifier. Using ossmix for A/D board setup The sound boards have usually a lot of software controlled switches. There is not really any reason to set them from inside the dsp package. Setting signal levels in the time domain A/D format and speed, fft sizes and window functions can be changed within wide ranges which leads to large possible variations in digital signal levels on different systems. In principle it could be automated but until that is done, manual adjustment of signal levels is required in case the seconf fft is enabled. This is because the second fft uses 16 bit data to gain speed through the use of MMX instructions. Too low signal levels cause quantization noise and too high signal levels may cause saturation leading to spurious responses and seriously degraded dynamic range. The dsp program has tools to set the levels right. Setting signal levels in the frequency domain In case the MMX version is selected for the second fft it is necessary to set a signal level parameter to avoid saturation or quantization noise. Linearity of A/D boards When converting a radio signal to wideband audio the linearity of the mixer and any subsequent audio amplifier is essential. An undesired signal that comes at a low audio frequency will produce overtones that are within the passband. The linearity of the A/D board itself sets the limit for the highest possible spurious free dynamic range. The Delta 44 board is about 1 bit (6dB) better than a standard 16 bit board. The big advantage with the Delta 44 is that it samples faster, thereby allowing more receiver bandwidth and that it has four audio channels allowing two receiver channels in I/Q mode. Optimized direct conversion receiver for 144MHz Although it is extremely easy to make a reasonably good radio with just two standard Schottky mixers it is not easy to make a direct conversion receiver that preserves the dynamic range of a Delta44 audio board. The problem is that the local oscillator has sideband noise, and in case very good linearity is desired one needs more LO power for a higher level mixer. Increasing both the LO carrier and the LO sidebands means that the audio noise from mixing the LO with its own sidebands grows quadratically. As it turns out, best performance is likely to be obtained with the cheapest low level mixers such as SBL-1 or TUF-1. AFC, locking to and following a signal To lock to a weak and unstable signal is not easy. One has to use several transforms to find out how the frequency changes with time. To get good enough signal-to-noise ratio (S/N) the transforms have to be averaged which means that the frequency is found with an appreciable time delay. The AFC module can present the delayed signal to the loudspeaker, using the optimum value for the frequency but it can also extrapolate the change with time and present the signal filtered through a filter that is centered to the less accurate extrapolated frequency. AFC is now in a very early stage, in linrad00-19 it is present in single channel mode only - and only if the second fft is enabled. The link shows how the file UNKN422 from AF9Y is received with some different choices of averaging times and fft sizes. The EME path modulation. Two screen dumps showing the signal of IK3MAC received via the moon. The AFC follows the frequency drift of about 0.5Hz over a 1 minute transmission. The carrier of the signal has a bandwidth of 0.2Hz or less. These graphs clearly show that coherent CW is useful on 144MHz for EME communication. The phase of the carrier can be extracted from a filter with a bandwidth that is about 100 times narrower than the bandwidth required for morse code modulation. This means that the carrier phase will be accurately known below the threshold where a signal can be copied by ear the normal way; thus coherent CW will give a 3dB S/N improvement. A high doppler meteor. Here is a screen dump showing a meteor (or maybe a satellite) with very high doppler shift that changes by as much as 1kHz per minute!! The AFC will lock well also to very unstable signals as long as the signal frequency changes continuously and does not make sudden jumps. Might be interesting for the microwave bands. Normal AFC parameters. Details of AFC when locked to the UNKN422.WAV file. An extremely weak EME signal. Coherent averaging of CW signals This link shows a more than one hour long transmission from a very stable transmitter. This signal is much weaker than what can be copied by any CW operator. This recording shows that averaging over several repetitions of repeated morse code will allow EME at much lower levels than previously possible for CW. Since the carrier can be extracted by use of a bandwidth of about 0.2Hz it will be possible to average coherently which implicates a reasonably short time to transfer a message. Some graphs that illustrate how the AFC operates. Look here to get some idea how the control parameters work. Blanker demo Normal blanker operation as well as incorrect use of the blankers is shown here. Linrad is currently available in weak cw mode but it is possible to set parameters to fit other modes like ssb and high speed cw. When the weak cw mode is "misused" in this way several things may go wrong. This link shows what may go wrong with the selective limiter causing poor blanker operation. With a good understanding of the processing (or enough happy experimenting) it is possible to get good performance also when "misusing" weak cw mode for SSB at about 2kHz bandwidth. Running linrad in an EME contest. Here is a screen dump showing the screen at 11.30 UTC Nov 10 2001. A large number of EME signals can be received with my single 14.5dBd yagi (the 2SA13X prototype). The new mouse controls are explained. Modifications to the Delta44 A/D board. The noise floor of the Delta44 A/D converter can be lowered by 3dB through some simple modifications. The pick up of low frequency interference generated by improper grounding is also eliminated. Dynamic range of modified Delta44. An iron free band pass filter at 10kHz with 3 LC resonators is used to investigate the dynamic range of the A/D converter. Spur cancellation. Spurious radiation from computers and other modern electronic equipment causes "spurs". If the spurs are phase stable, i.e. occupy a very small bandwidth, they can be removed. This link shows how spur cancellation is implemented in Linrad by use of digital PLL's. EME signals in coherent mode. Some screen dumps from strong EME signals showing typical behaviour of the phase of EME signals. One can see that retaining the phase information will improve computerized morse decoding even on signals that suffer from severe chirp. It is also quite clear from these graphs that close to 3dB is gained by coherent processing of weak signals from stable transmitters. The phase of EME signals is stable during QSB peaks while it can twist very rapidly at times when the signal goes through minima. Moon position and transmit polarization is now presented in the eme window. Linrad reads the popular eme databases and uses the geographical locations to calculate the optimum transmit polarization from moon data and the observed receive polarization. state of the art VHF crystal oscillators The hardware I am developing for Linrad has used local oscillators with a single transistor running in class C. I have changed the LO of RX10700 and RX70 by addition of an amplitude limiter that makes the common base transistor that loads the crystal run in class AB. As a result the short term frequency stability is about 5 times better. This link shows what one should expect from a good 70 MHz oscillator based on the Leeson model and comparisons of commercial 100 MHz oscillators. Real oscillators are about 20dB better than predicted by the Leeson equation. An explanation is given and the RX70 and RX10700 oscillators are designed accordingly. A network is added in order to allow a second operator to share the same radio hardware. The RX144 + RX70 + RX10700 + RX2500 hardware will cost a substantial amount of money. For a second operator in a multi-operator station in a contest it is typically not a significant limitation to be limited to the same 95kHz segment as is used by the first operator. For some more information, look at LINRAD NETWORK. The AFC averaging window The AFC graph has a box by which a window function can be selected or deselected. This page shows the effect of this window. This information is part of the new information about the Linrad AFC linked to from the Linrad home page. QRSS signals on 137kHz at different bandwidths At low frequencies amateur signals are very weak. Amateurs use ordinary morse code to communicate at very poor S/N ratios. The morse code bit may be up to 120 seconds and the keying is decoded visually on a waterfall diagram. This link shows Linrad waterfall diagrams with fft sizes from 1024 up to 4194304 (N=10 to 22). There are several different sources of interference, the file used for these images is the test input data for development of the qrss mode to become implemented in the next Linrad version. Interference on 137 kHz As was demonstrated on the previous linked page, the Linrad wideband blanker is not very efficient to improve S/N in processing the qrss test file. This link shows details about the interference. The dominating problem is intermodulation because the test file was made with inadequate analog hardware. This link: the baseband waterfall graph shows the new linrad screen when the qrss test file (see above) is processed. A waterfall graph with 0.01 Hz per frequency bin and a bin bandwidth of 0.02Hz is no longer a significant load for the cpu despite a total bandwidth of 96kHz in the digital input signal. The txtest mode is a new feature in linrad-01.05. It allows a quick test of transmitters. The extended txtest mode makes it easier to see splatter that occurs infrequently. Amateur transmitters typically generate severe interference when the ALC makes large gain changes. The splatter then comes in short bursts and to see how they behave one does no longer have to reset the peak hold spectrum, the new averaged spectrum with a 1 second time constant resets automatically at a suitable speed. Linrad01-11 has an AM demodulator. This is a trivial addition to the output routines that makes Linrad run as a conventional AM receiver. Some improvement in AM reception is possible by use of the coherent processing routines that were primarily designed for weak CW. Look here for details: Receiving AM modulation with Linrad. Linrad01-11 also has a FM detector, but there is no squelch yet. Waterfall graphs with extreme resolution can be produced in the baseband waterfall window. This link shows what can be done with a Pentium 166 MHz having 24 megabytes of RAM memory. Sampling is at 22050Hz and the resolution is about 5 mHz (millihertz). The main receive loop in wcw.c is simplified. Linrad01-21 can be run with 2 * 96 kHz bandwidth on a 266 MHz Pentium MMX without errors although dynamic range is compromized. The current frequency is now shown in the baseband window, it is the center of the bandpass filter except in ssb mode where it is the frequency of the suppressed carrier. The frequency readout as well as some listings of parameter valuse included in Linrad-01.21 are according to suggestions by Pierre ON5GN. Linrad-01.21 has a time domain oscilloscope that shows the envelope of the RF signal(s) as a function of time. This is a good tool for investigating keying clicks and other problems that transmitters may suffer from. To get to this function, press F4 on the main screen. The envelope is computed from the back transformed first fft and this function will work only when the second fft is enabled and several other parameters are set in a particular way as you will see from the error messages in case you try something that is not compatible with the time domain oscilloscope. Here is an example on how the time domain oscilloscope can be used to understand why the IC706MKIIG produces very strong keying clicks when run at reduced power on 7 MHz. The F4 time domain oscilloscope also contains a display of frequency vs time. Keying clicks can be produced by frequency/phase modulation and not only by an unsuitable shape of the RF envelope, the AM modulation. For several examples, look here: Keying clicks in the time domain. AM and FM Linrad-01.25 contains a setup for transmit mode and simulation routine by which Phonetics of random characters can be sent through filters, limiters and AGC/ALC circuits and then through a rx filter into which random noise is also sent. This simulation routine allows a comparison of RF and audio clippers and an optimisation of processing parameters for your own voice. Look here: The Linrad Voice Lab for more info. The Linrad noise blanker was originally developed for Pentium MMX 200 MHz. It was necessary to use 16 bit MMX instructions because of the limited CPU speed of the time. Today (2004) the fast computers allow the use of 32 bit floating point arithmetics. Starting with Linrad-01.26 the user can avoid the limitations with the 16 bit arithmetics by selecting fft version=0 for both the backwards fft1 and for the forward fft2. Using 32 bit floating point does not improve the reception of weak signals, but it makes the setup less critical and it makes the reception of strong signals better. Look here for details A comparison between 16 bit integer and 32 bit floating point arithmetics for the Linrad noise blanker A new entry is added in Makefile to make svgalib installation easier. lir01-37.tbz (375850 bytes) tar archive packed with bzip2. Latest version April 12 2005. Under Debian Etch with the ASLA sound system it is possible to open a cheap 48 kHz soundcard as if it were a Delta44 with 96kHz sampling frequency. When this is done, the device only reads zeroes and therefore a loop in sellim.c fails since the computed noise floor becomes exactly zero (escape with ctrlC becomes necessary). Linrad-01.37 is immune to this problem, it just shows a zero spectrum. The user should then understand that something is wrong with the input device driver. The S-meter graph can be used for many purposes. Some examples: Depolarisation on 10GHz EME. The Linrad S-meter allows true RMS measurements within a narrow bandwith because of the AFC. 144 MHz EME. Signal variation with time on 144 MHz EME can be studied in different time scales. Peak to average power on SSB. Different stations use speech processing differently. Combining the S-meter information with the simultaneous sound quality from the loudspeaker will allow precise reports about how well speech processors work. lir02-34.tbz (472578 bytes) Tar archive packed with bzip2 May 09 2007. The same files are contained here lir02-34.zip (617685 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr2-34.zip (288422 bytes) in case you do not want to compile from source code. The SDR-IQ is suported now and some bugs in the calibration routines are corrected. There is also an upgraded version of users_tr.c. lir02-35.tbz (486700 bytes) Tar archive packed with bzip2 July 12 2007. The same files are contained here lir02-35.zip (637894 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr2-35.zip (296604 bytes) in case you do not want to compile from source code. A wheel mouse can now be used for frequency tuning. The time information in network packages is changed for recorded files. It is now the time when the file was recorded. lir02-39.tbz (479528 bytes) Tar archive packed with bzip2 Sept 30 2007. The same files are contained here lir02-39.zip (626184 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr2-39.zip (305368 bytes) in case you do not want to compile from source code. Besides changes on the transmit side, Linrad-02.39 also has several changes on the receive side. Calibration can now be made from files, and there is a routine for finding spurs automatically and to remove them. lir02-40.tbz (481422 bytes) Tar archive packed with bzip2 Nov 5 2007. The same files are contained here lir02-40.zip (631462 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr2-40.zip (306708 bytes) in case you do not want to compile from source code. Linrad now works under Windows Vista, but only when 16 bit sound is selected. Selecting 16 bit under other (better) Windows versions does not allow four audio inputs from a single device. It is necessary to open two 16 bit devices. With 32 bit formats, four channels is still possible. This version also contains a couple of bug corrections. lir02-41.tbz (489680 bytes) Tar archive packed with bzip2 Nov 5 2007. The same files are contained here lir02-41.zip (639377 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr2-41.zip (310093 bytes) in case you do not want to compile from source code. The automatic spur removal is significantly improved. The mode coh2 for the AM mode now has AGC derived from the audio signals. The two audio signals I and Q correspond to AM and FM modulation respectively and the new mode is designed to enhance the weaker of two AM stations that occupy the same frequency. There are also numerous bug corrections in Linrad-02.41. lir02-43.tbz (489770 bytes) Tar archive packed with bzip2 Jan 25 2008. The same files are contained here lir02-43.zip (639041 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr2-43.zip (310382 bytes) in case you do not want to compile from source code. lir02-44.tbz (493693 bytes) Tar archive packed with bzip2 Mar 27 2008. The same files are contained here lir02-44.zip (645070 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr2-44.zip (312249 bytes) in case you do not want to compile from source code. Linrad-02.44 is restructured in order to take care of a bug that has been present in all earlier 02.xx versions but that has not manifested itself because of the inefficient output routine. This version has a fast resampler that allows efficient usage of high output sampling rates and that change made it evident that previous versions worked just because they could not produce output fast enough. (Extremely fast computers can actually crasch older versionsdue to this bug because they can also produce an output fast enough.) The craches were caused by a memory rearrangement while the output thread was not safely waiting on its semaphore. With Linrad-02.44 the output thread is forced into an idle state before memory is rearranged. There are several changes however so there could be new bugs..... Linrad-02.44 has many minor changes and it has a new parameter that can limit the dma rate which could go too high for slow computers if the user asks for fast processing. There is also a new parameter that allows the user to give the Linrad process high priority under Windows. The actual signal processing is not changed since linrad-02.41 but besides things that might affect the program stability there are also some cosmetic improvements. lir02-45b.tbz (508463 bytes) Tar archive packed with bzip2 April 17 2008. The same files are contained here lir02-45.zip (664878 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. (02-45b contains a couple of bug corrections for Linux that are not present in 02-45) linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr2-45.zip (316392 bytes) in case you do not want to compile from source code. Linrad-02.45 has two significant upgrades. One is that Linrad now can use the Perseus VHF sampling HF receiver. The perseus uses proprietary code from Microtelecom s.r.l. and can only be used under Microsoft Windows. The other major upgrade is that native ALSA now can be used under Linux as an alternative to OSS and legacy sound. The native ALSA interface is written by ON5GN, Pierre. lir02-46a.tbz (508999 bytes) Tar archive packed with bzip2 May 6 2008. The same files are contained here lir02-46.zip (661951 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. (The configure script in the Linux package is updated to allow compilation under yet another combination of files belonging to different Linux sound systems.) linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr2-46.zip (315528 bytes) in case you do not want to compile from source code. The wheel mouse can now be used to fine tune a selected station in fractions of the fft1 or fft2 bin width. The smallest wheel step is now 32 times smaller than before. Press the wheel and turn it for step size 5 units larger than before to get the same step size as in older Linrad versions. The routines that use native ALSA under Linux will work only with ALSA 1.0.12 or later. Some tests are added in the configure script to allow Linrad to compile under older distributions without errors caused by undefined ALSA functions. lir02-47.tbz (509347 bytes) Tar archive packed with bzip2 May 26 2008. The same files are contained here lir02-47.zip (662718 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr2-47.zip (315784 bytes) in case you do not want to compile from source code. Linrad-02.47 allows large bandwidth ratios in coherent processing which may be useful for mediumwave DX-ing. Medium wave AM with Linrad. lir02-53.tbz (524137 bytes) Tar archive packed with bzip2 Nov 05 2008. The same files are contained here lir02-53.zip (676261 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr2-53.zip (324059 bytes) in case you do not want to compile from source code. Versions 02-48 to 02-52 contain changes that are important for the transmit side. Linrad-02.53 has some changes for the receive side. The network setup is changed to allow a local address for MAP65. The transfer of calibration functions over the network for multi-operator stations is corrected and some bugs related to having the second FFT in its own thread are corrected. The latest Ubuntu distribution, 8.10, has a C compiler with more strict requirements on the code. Under Ubuntu 8.10 read and write operations have to be checked for return values to satisfy the compiler. This package lir02-53u.tbz (533740 bytes) compiles under Ubuntu 8.10 without errors. The return values are not used in any way so the executable should behave excactly as the original linrad-02.53 under other Linux distributions (e.g. Debian which has the same gcc version but without the need for checking the return code of reads and writes.) lir02-54.tbz (536498 bytes) Tar archive packed with bzip2 Dec 13 2008. The same files are contained here lir02-54.zip (681950 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr2-54.zip (332154 bytes) in case you do not want to compile from source code. The file size has been limited to 2 gigabytes under Linux in previous versions of Linrad. I was unaware of the appropriate compiler option. Linrad-02.54 allows big files also under Linux. Not only under Windows as previous versions. The network setup now allows arbitrary addresses both for transmit and receive. Linrad-02.54 is a bit more verbose than previous versions. Many more non-fatal errors are now displayed on the normal processing screen. Things like buffer overruns and underruns on soundcards and buffer full on the network. lir02-55.tbz (538299 bytes) Tar archive packed with bzip2 Dec 16 2008. The same files are contained here lir02-55.zip (683485 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr2-55.zip (332215 bytes) in case you do not want to compile from source code. Linrad-02.55 corrects a bug that was present in the two previous versions and that caused the calibration routine to freeze. Linrad-02.55 introduces a test facility that was used to produce this page Bits and Dynamic Range that shows the effects of truncation on the noise floor. The test facility, the internal signal generator is intended to be a tool for evaluating the effects of various compromises between the delay from antenna to loudspeaker and filter performance. lir02-56.tbz ( 540919 bytes) Tar archive packed with bzip2 Dec 22 2008. The same files are contained here lir02-56.zip ( 687323 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr2-56.zip ( 326302 bytes) in case you do not want to compile from source code. Running multiple instances of Linrad on a stand alone computer may require the installation of a loopback device. It may also be necessary to disable the loudspeaker output. Read more here multiple instances of Linrad on a single computer. In Linrad-02.56 sending fft1 transforms over the network is again possible. A couple of previous versions did not work for the fft1 format. In Linrad-02.56 the first mixer window is changed. The window function that selects a part of the spectrum to get a reduced sampling rate afrer an inverse FFT is changed from parabolic fall-off to use the gaussian error function erfc The subtle differences are discussed here windows for decimation in the frequency domain. lir02-57.tbz ( 544501 bytes) Tar archive packed with bzip2 Dec 27 2008. The same files are contained here lir02-57.zip ( 694720 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr2-57.zip ( 326945 bytes) in case you do not want to compile from source code. Error checking has been added to recent Linrad versions and Linrad-02.57 is continuing this trend. Non fatal errors that have always occured silently have produced on-screen messages in a couple of previous versions. Linrad-02.57 has various fixes that should make non-fatal errors occur less frequently. lir02-58.tbz ( 542484 bytes) Tar archive packed with bzip2 Dec 30 2008. The same files are contained here lir02-58.zip ( 689812 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr2-58.zip ( 329184 bytes) in case you do not want to compile from source code. The F1 help was is broken in 02-57 but is fixed in Linrad-02.58. Linrad-02.58 can transmit the resampled (loudspeaker) output over the network in the same format as used by Linrad for 16 bit raw data. It is for example possible to receive data from a Perseus at e.g. 1 MHz bandwidth and send data to a second instance of Linrad at 96 kHz. The second instance can then send data at 96 kHz to MAP65. The current performance of Linrad used as a resampler is modest however. The dynamic range is about 40 dB only, the resampler was not designed for high speed output. The bandwidth is also limited, the output is undersampled with a bit less than 50% of the possible bandwidth. lir03-00a.tbz ( 562164 bytes) Tar archive packed with bzip2 Jan 18 2009. The same files are contained here lir03-00a.zip ( 710509 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr3-00a.zip ( 331198 bytes) in case you do not want to compile from source code. Linrad-03.00 has an improved resampler that allows lower timf3 sampling rates without degrading the dynamic range as compared to previous Linrad versions. The general conclusions here windows for decimation in the frequency domain. still hold, but the requirement for a high timf3 sampling rate (CPU load) or small fft1 bandwidth (long time delay) for a high dynamic range is lifted. Have a look at First mixer dynamic range with an fft1 delay of 8.2 milliseconds It is obvious that the window using the Gaussian error function erf(x) is allowing a lower timf3 rate than sin2 or sin3 windows. The baseband filter is implemented in the frequency domain in earlier Linrad versions. This works well if the selected filter is wider than the frequency response of an individual frequency bin. Previous Linrad versions all used a sine squared window with minimum 5 points on the selected baseband filter but in Linrad-03.00 the user may select other windows with wider frequency responses and steeper skirts. Such windows would require wider baseband filters to work well with filtering in the frequency domain and therefore Linrad-03.00 has an option to select a FIR filter that allows a single bin to be selected for the baseband filter. Have a look here: Frequency domain vs time domain filtering In Linrad-03.00 and later, the filter curve shown in the baseband window takes the contribution of the frequency response of each individual bin into account. The difference is important when a small size is chosen for fft3, particularly when a narrow window with correaspondingly wide bin response is selected. The windows are sinN for N=0 to N=7. A Gaussian is generated when N=8 and a flat window falling off with the Gaussian error function erf(x) is generated when when N=9. This link the bin response in fft3 has screen dumps that show how the selected window affects the frequency response of an individual frequency bin in fft3. With the correct baseband filter function now displayed in Linrad it is easier to see the compromise between filter shape and processing delay in Linrad. This link Baseband filter delay vs filter shape shows the performance. Filter shape vs time delay. Linrad-03.00 new default parameters for the different receive modes. They will be changed on feedback from users and the idea is to make the default parameters fit newcomers. Linrad-03.00, the very first in the 03.xx series might have various bugs. The changes from 02.58 are done without access to any hardware so testing has been rather limited. lir03-01a.tbz ( 560557 bytes) Tar archive packed with bzip2 Jan 26 2009 (replacing linrad-03.01.) The same files are contained here lir03-01a.zip ( 707691 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr3-01a.zip ( 331462 bytes) in case you do not want to compile from source code. There is a new parameter under Windows in Linrad-03.01 to select whether to use the WAVEFORMATEX type format or the WAVEFORMATEXTENSIBLE type of format for the Windows device driver. The simple format will only allow 1 or two audio channels and only 16 bit input. It can be used with a 4-channel soundcard by opening a second device with two more audio channels. (Then there would however be an undefined time shift between the two RF channels so polarisation readout might become incorrect.) The WAVEFORMATEXTENSIBLE format allows 4 audio channels and 24 or 16 bit data. Windows may generously offer 4 audio channels with 24 bit data at 192 kHz on a computer that does not have the corresponding hardware. It does on my Compaq 6510b which actually is limited to 2 channels at 48 kHz with 16 bits. The non-existing channels contain zeroes and there is no information outside the frequency range seen by 48 kHz sampling. The upsampling process is only a waste of cpu resources. The extended format may allow 192 kHz on a soundcard that actually has that capability, but yet it may deliver only a fraction of the bandwidth. Whether Windows actually reads data at a lower rate and then does upsampling in software or whether it applies a filter is unknown to me. What is important to know is that the extended format sometimes is useless for software defined radios. That means that one will have to limit the number of bits to 16 on some hardwares that actually have 24 bit capacity when using Microsoft Windows as a consequence of the need to not select the WAVEFORMATEXTENSIBLE formats. lir03-02.tbz ( 563499 bytes) Tar archive packed with bzip2 Jan 26 2009 (replacing linrad-03.01.) The same files are contained here lir03-02.zip ( 711522 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr3-02.zip ( 333254 bytes) in case you do not want to compile from source code. Linrad-03.02 is a little more verbose than earlier versions. The changes are intended to make it a little easier for newcomers to get started. lir03-03.tbz (543243 bytes) Tar archive packed with bzip2 Mars 10 2009. The same files are contained here lir03-03.zip (700580 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr3-03.zip (334142 bytes) in case you do not want to compile from source code. linrad-03.03 has several changes to adapt it better to MAP65-IQ. There are also several bug fixes. lir03-04.tbz (543198 bytes) Tar archive packed with bzip2 Mars 26 2009. The same files are contained here lir03-04.zip (700860 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr3-04.zip (334240 bytes) in case you do not want to compile from source code. Linrad-03.04 can run the Perseus HF receiver at a sampling rate of 95238.1 Hz which is the data rate expected by MAP65-IQ. The necessary .sbs files are available here lir03-05b.tbz (543800 bytes) Tar archive packed with bzip2 April 5 2009. The same files are contained here lir03-05b.zip (701388 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr3-05b.zip (334918 bytes) in case you do not want to compile from source code. The only difference from Linrad-03.04 is that a new parameter is added in the setup for SDR-14, SDR-IQ and Perseus. This new parameter can be used to compensate for deviations from the nominal sampling frequency in these units. lir03-06.tbz (548084 bytes) Tar archive packed with bzip2 May 22 2009. The same files are contained here lir03-06.zip (705385 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr3-06.zip (337850 bytes) in case you do not want to compile from source code. When Linrad-03.06 is started for the first time, the user is asked to press S for setup routines as usual, but there is now also a choice, press N for newcomer mode. Newcomer mode silently sets many parameters to default values and provides a stripped version of Linrad that is intended to make it easier for newcomers to become familiar to Linrad. In newcomer mode there is no noise blanker, no AFC, no calibration, nothing of the special features of Linrad. Newcomer mode should make it much easier for someone who does not have the patience to read a lot of text to get started with Linrad. It provides a main spectrum and the associated waterfall graph where the user can select a signal by clicking the mouse. The baseband window is not stripped however. The purpose of newcomer mode is to make new users familiar to the controls provided in the main and baseband windows and how the few parameters that can be changed affect processing. There are several other changes related to setup procedures. Things motivated by feedback on the Linrad mailing list. When Linrad is used on a dual core computer it is possible to set parameters that make one thread run 100% of the time. The CPU load does not have to be much above 50% because the other threads may cause a very small load. Still the computer may be overloaded. To allow detection of such problems the T command now displays CPU load individually per thread under Windows where running Perseus at 2 MHz could cause thread overload. lir03-07.tbz (554970 bytes) Tar archive packed with bzip2 Aug 25 2009. The same files are contained here lir03-07.zip (716474 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr3-07.zip (338996 bytes) in case you do not want to compile from source code. Thanks to Pierre, ON5GN, this version of Linrad can use MIT-SHM, (shared memory) with X11 under Linux. As a result, graphics is much faster on some systems. Previous versions of Linrad have had problems under Microsoft Windows as well as under Linux X11 when windows belonging to other programs that execute simultaneously have been moved. The reason was that other programs signal to Linrad that Linrad has to update its screen at a very high rate (maybe 1000 times per second.) Linrad 03-07 will not update more than a couple of times per second in response to signalling from other programs so moving other windows around is no longer a problem. This change is also due to ON5GN Pierre. Today, in year 2009, there are several changes in computing that may create compatibility problems: 1) Going from 32 bit to 64 bit operating systems. 2) Mouse/keyboard are now USB 3) PCI is replaced by PCI express 4) Windows XP is replaced by Vista or Windows 7. 5) Going from one CPU to many CPUs is the same computer. Linrad uses 32 bit code and runs under 64 bit as well as 32 bit operating systems. Linrad-03.07 has a couple of text files zz_DISTRIBUTION_NAME.txt that give instructions for installation under 64 bit Linux distributions. Operating systems improve over time and become better at using multi-processor architectures. Execution speed on a 8 core computer compares Windows and Linux systems of different generations onder high CPU load. Drive routines may not behave correctly in some computers under some versions of Windows. This link: testing soundcard compatibility with modern computers shows how to verify soundcard compatibility with the combination of hardware and software in use on a particular computer. There are many problems with modern systems.... lir03-08.tbz (559203 bytes) Tar archive packed with bzip2 Oct 02 2009. The same files are contained here lir03-08.zip (723836 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, the executable for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr3-08.zip (338993 bytes) in case you do not want to compile from source code. Linrad-03.08 has alternative ways of setting the frequency range for the main spectrum and waterfall. By clicking the frequency scale with the left mouse button one would enter a mode where a lower and upper frequency limit can be set. It is also possible to right click the frequency scale to place the frequency that was clicked at the center of the sceeen. The latter function will obviously only be meaningful when the main spectrum is zoomed to not show the full frequency range. On multi-processor systems Linrad-03.08 will place the fft1 back transform in a separate thread. There is also a new experimental parameter on multi-processor systems: Max blocked CPUs. This parameter would prevent some threads from being interrupted by other threads. The idea is that cache usage might improve. Reports about wheter this parameter has any significant influence on the CPU load of individual threads are welcome. Linrad-03.08 will compile under PC-BSD with the commands ./configure followed by gmake xlinrad. lir03-09.tbz (604167 bytes) Tar archive packed with bzip2 Oct 02 2009. The same files are contained here lir03-09.zip (761448 bytes) This package will generate executables with the commands configure and make under Linux as well as under Windows. linrad.exe, linradvc.exe and linradpa.exe, the executables for Microsoft Windows and the message files help.lir and errors.lir are contained in wlr3-09.zip (1175252 bytes) in case you do not want to compile from source code. Linrad has been using WMME drivers for soundcards under Windows and OSS/Legacy/ALSA under Linux. The WMME drivers of Windows Vista are usually not acceptable for an SDR due to delay and cpu load so other types of sound drivers have to be useed. Linrad-03.09 can access soundcards via Portaudio. This gives access to all the different types of drive routines under Windows. Under Linux Portaudio gives access to Jack which allows the Linrad loudspeaker output to become input for other softwares. Linrad-03.09 and later will compile as usual with the commands configure and make. Under Linux, when compiling for Linux, the configure script will automatically create a Makefile that compiles with Portaudio and Jack if they are installed. When compiling for Windows, the file linrad.exe that runs without portaudio is always generated. The configure command looks for the files pa-lir.lib and pla-vclir.lib. In case they are found in the Linrad directory the make command will also produce linradpa.exe and linradvc.exe respectively. The file portaudio.dll must be available to linradpa.exe. To execute linradvc.exe the runtime library of Microsoft Visual C must be installed and the file PA19.dll must be available. The dll files as well as the libraries needed to compile Linrad from source code are available here: linrad-pa.zip (433983 bytes) as well as here: linrad-pa.tbz (392032 bytes) This link How to install Portaudio for use with Linrad describes how to install Portaudio under Linux and how to create the portaudio files needed for Linrad. Linrad-03.09 will print warning messages when various buffers cause too much delay or overflow due to CPU overload. The FM detector is now supplied with an anti-alias filter so it is possible to receive good quality wideband FM without setting the loudspeaker sampling rate to 192 kHz. There ia also an enhanced FM detector. Linrad-03.09 has a playback control function that allows the user to specify start and stop times for playback. Linrad can record very large files under Linux and with this new tool one can use an overnight recording of a wide spectrum and set it to play a particular moment over and over again. This way a DX-er can listen for IDs from all stations Linrad plays a selected top of the hour over and over again. Portaudio is claimed to allow very good latency, but that does not seem to be true at all. On my HP6510b under Windows XP it is necessary to set a low value for MAX DMA rate with Portaudio. For some reason the callback function can not be called at a high rate, with MME drivers through Portaudio it may be necessary to limit MAX DMA rate to 10 Hz. Under Win XP portaudio works better with the Direct Sound drivers. ASIO might be even better. There are now many combinations: Windows: Linrad MME Linrad MME WAVEFORMATEXTENSIBLE Portaudio MME Portaudio Direct Sound Portaudio ASIO Portaudio WASAPI Portaudio WDM-KS Linux: Linrad 4Front OSS Linrad alsa-oss Linrad native ALSA Portaudio 4Front OSS Portaudio alsa-oss Portaudio native ALSA For receiving where a small delay from antenna to loudspeaker is not important, all alternatives should be OK provided that the MAX DMA rate parameter is set low enough and that the Output delay margin is set large enough. For use in QSK CW mode where timing is very important the different alternatives may differ significantly and what to choose may depend on the hardware as well as the version of the operating system. To SM 5 BSZ Main Page |