Added README which has history and some usage instructions.

This commit is contained in:
mh 2018-01-13 08:30:03 -05:00
parent efde2f1a1f
commit b5097d309e

510
Source/README Normal file
View File

@ -0,0 +1,510 @@
SDR front end for HPSDR
http://openhpsdr.org/index.php
***********************************************************************
OS, needed software and recommended hardware:
- Windows Win7, Windows XP, 32 or 64 Bit.
- OpenGL capable graphic processor; must be at least OpenGL version 2.0.
It has been tested on Nvidia and Ati (now AMD) chips. Also, Intel
onboard graphic chips have been tested.
- At least a DualCore processor, better: QuadCore.
***********************************************************************
Current limitations / Known issues:
- This version is still Beta !
- Only Rx by now.
- Chirp-Decoder mode has been disabled currently.
- "External" DSP mode, i.e. server functionality, is disabled currently
(although implemented).
- This version does not yet contain Cuda or OpenCL kernels.
- Sampling rate 384 kHz requires quite a lot of computational resources
when using 4 receivers!
***********************************************************************
Some short explanations:
If you right click with the mouse in the Pan a little window for
controlling opens. You can 'fix' this window by clicking on the button on
the top-right; otherwise it closes again if you leave with the mouse.
These control popups can be opened for every receiver separately.
Let's go through the buttons (from top to down, left to right):
Pan Avg: turns averaging on/off.
Pan Grid: turns grid on/off.
Peak Hold: as it says.
Lock Pan: tuning the 'VFO' with the mouse wheel or the big frequency
display on the top of the app but keeping the center frequency
fixed.
Click VFO: left mouse click moves the 'VFO' to the location of the mouse.
Mid=VFO: moves the center frequency to the position of the VFO frequency
and centers the complete display again.
VFO=Mid: moves the VFO frequency to the center frequency.
Line, Filled Line, Solid: different ways of displaying the power spectrum.
Simple, Enhanced: different color schemes for the waterfall display.
All other buttons should be self-explanatory, and all these buttons are valid
for the receiver where you opened the popup.
A further remark: if 'Pan Lock' and 'Click VFO' are turned off, left clicking
and dragging moves the center frequency as normal. This is also true if you
left-click and drag with the mouse over the frequency scale. But, if 'Pan Lock'
is on, left-clicking and dragging in the Pan moves the VFO frequency, and
left-clicking and dragging with mouse over the frequency scale moves the center
frequency by keeping the VFO frequency fixed. This is very practical if you
want to stay on the station you are listeing to, but want to look what's on the
edges or outside the visible spectrum.
ESC to switch to/from full screen mode.
***********************************************************************
list of changes:
v0.3.2.13+ (N1GP changes):
- Took VK5ABN's cudaSDR version based off v0.3.2.13 but modified to use cuda cores for DSP.
Ripped the cuda DSP out and put back in the QtDSP, added local sound, added more rcvrs (20),
added ADC selection in the floating rx widget. Mostly use this to test HPSDR FPGA changes.
v0.3.2.13:
- Improved threading model (nothing to see on the GUI).
v0.3.2.12:
- Added 384 ksps sample rate. Currently this only works OK for maximal 4
receivers!
- Bug fix: averaging per receiver corrected.
v0.3.2.11:
- Rx 0 (the main receiver) increases spectrum resolution by zooming the
frequency scale now automatically up to 32768 bins FFT-size.
- For every receiver the Panadapter spectrum graphics can be selected
seperately now; as well as the avering rate.
- Windows size is saved in windowsSettings.ini
v0.3.2.10:
- additional control: up to now, the frequency scale could be moved up
and down by clicking left-mouse on this scale. Now, to move this scale
you have to hold the shift key AND left-click the mouse button.
If you don't hit the shift key and use the left-mouse button on the
frequency scale the center frequency is moved accordingly (by keeping
any difference to the VFO frequency constant).
v0.3.2.9:
- several bug fixes:
NCO frequency adjusted when changing sample rate
NCO frequency changing when tuning other receiver than the current one
Thread stopping caused a crash when using more than one receiver
v0.3.2.8:
- Bug fixes
v0.3.2.7:
- The Radio control Popup window opens now by clicking the right mouse
button. These Popups can be opened for each receiver seperately, and
can be made sticky. On the Popups you now find the controls for
averaging, grid display, Peak-Hold function, 'VFO=Mid', and 'Mid=VFO',
each of which is controlled seperately for each receiver window.
- The 'Locked Pan' feature has been extended by another mode called
'Click VFO'. If only the 'Locked Pan' mode has been choosen, the VFO
frequency is controlled by the mouse wheel or by dragging the mouse
in the Pan/Waterfall. If in addition 'Click VFO' is choosen, the VFO
frequency is controlled by clicking with the left mouse button, or by
clicking and dragging.
- The status of 'Locked Pan', 'Click VFO' and all center and VFO
frequencies are stored in the settings.ini, and are retrieved after a
restart of the application.
v0.3.2.6:
- added possibility to fix the Panadapter/Waterfall spectra to the
center frequency, and tune the VFO independently from this center
frequency. So now we have differentiate between the 'center frequency'
and the 'VFO frequency', which is the frequency at which audio is
demodulated.
You can turn on this feature by clicking on the small button 'Lock Pan'
in the Panadapter window top left. Then you can drag the VFO with the
mouse (left click), or by dragging the mouse wheel (tuning in fixed
mouse wheel steps). If you click in the Panadapter with right mouse
button the hair cross shows up (as before), but then left clicking
moves only the VFO frequency while the Panadapter is locked.
Two additional buttons gives the possibility to set either the VFO
frequency to the center frequency ('vfo = mid'), or the center
frequency to the current VFO frequency ('mid = vfo').
A note on the implementation: this is a feature which was already present
in Cathy Moss' SDRMAX3 (but not the DSP related function), where the
idea of the control of this feature is taken from. Another wonderful
feature of Cathy's work which I very much appreciate.
The DSP implementation is adapted from cuteSDR by Moe Wheatley, AE4JY.
It is actually an implementation for translating a frequency band using
a quadrature oscillator, as described in Richard Lyons book 'Understanding
Digital Signal Processing'. In fact, the implementation is fairly easy,
and it was especially easy for me because of the very nice example code
from Moe Wheatley's cuteSDR. I very much appreciate also his work on
cuteSDR!
I am still experimenting with the features to control this behavior, and
I welcome any clever ideas for doing this!
v0.3.2.5:
- added possibility to switch off firmware checks.
v0.3.2.4:
- added Metis FW V2.2
v0.3.2.3:
- Bug-fix: inital settings of demod mode corrected
- Bug-fix: sample-rate changing did not care about the filter settings.
v0.3.2.2:
- Bug-fix: wide band scope zooming now works correctly.
- Bug-fix: AGC mode 'User' caused an application crash.
- for Linux/MacOs only: improved font scaling on the control panel.
v0.3.1.2:
- Bug-fix: a font missing caused an application crash if ADC overloads.
- Thanks to Berndt Wulf, VK5ABN, a socket option was adjusted.
- During HPSDR network device detection (Metis/Hermes) a message is shown
on the status bar.
v0.3.1.1:
- Bug-fix on the Metis/Hermes network connections.
- S-Meter font mismatch corrected.
v0.3.1.0:
- Important: please use the new settings.ini with this release !
- The tool chain has been replaced by GCC (MinGW, MinGW-w64) and Eclipse
CDT. The sources have been revised for the use of GCC.
Good-bye Visual Studio! If you want to follow me on that way, just let
me know. You might also ask me why I did that ;-)
- The HPSDR protocol is now fully implemented (Rx & Tx), but for Tx it is
still a way to go.
- A major revision of the internal data structure has been completed.
- Alex interface has been finished. The Alex states are stored per band.
- Penny OC pins (Rx & Tx) interface ready. The values are stored per band.
- A CPU usage indicator has been added on the status bar. It shows the
mean CPU usage percentage of cuSDR.
- DoubleClick in the Panadapter opens a little window for changing Band,
Demod, Filtersize, AGC mode. If you move the mouse out of this window
it closes after a short time. This is a feature which was available in
similar form in SDRMAX III from Cathy Moss. Just another appreciation
of her work!
- Growing the receiver windows (Pan + Waterfall) causes to increase the
font sizes of the scales as well as the font size of the cross-hair
information.
- The Mercury attenuator ('Preamp') values are now stored per band.
- The dBm scale resolutions on the Panadapter are now stored now per band.
Note please: If you change the band by a band button in the Rx Ctrl
widget, the stored value is restored. If you change band by altering the
frequency (by the mouse wheel, or by dragging in the Panadapter, or by
altering the big frequency display) the stored values are NOT restored.
- The mode of operation (DSP mode) is stored now per band.
- Added a new high resolution timer based on QueryPerformanceFrequency of
Windows OS. A better control of the FPS value (frames per second) based
on the high resolution timer has been implemented. The FPS values are
stored per receiver in the settings.ini. Each receiver runs its own
high-res timer.
- Added a time scale to the waterfall spectra, which varies with the FPS
value.
- A first version of QtDSP has been implemented. DttSP is discarded.
There is no noise reduction/noise blanker/notch filter present
currently. Please note: this is by no means a judgement over DttSP!
- Warren Pratt's, NR0V, AGC is now implemented in QtDSP. Added graphical
control for AGC gain threshold and hang threshold. Click on the orange
colored button to turn AGC threshold/hang threshold lines on and off.
- Added volume mute functionality.
- Added local date & time display on the status bar.
- Some re-organization of the widget content.
- Added firmware version control for Mercury, Penelope/Pennylane, Metis
and Hermes.
v0.3.0.1:
- Major change on the GUI. Introduced docking windows.
- Edit your Call Sign in the Display settings.
v0.2.2.6:
- Changed way of getting firmware version numbers.
- Added warnings if another hardware has been selected as was discovered.
v0.2.2.5:
- Bug fixes (wide band, multi-Rx views, and more)
- S-Meter min/max-Bar (the red/orange one) improved: slow reset.
- Added an IP-packet 'LED' in order to indicate if there are packet losses.
Useful if you encounter audio distortions caused by network problems.
- Added timers to control the SYNC, ADC, and IP Packets LEDs.
only cuSDR32:
- Provided *.pro/*.pri files, and tested compilation under minGW.
(gcc-Version 4.7.0)
v0.2.2.4:
- Important bug fix: memory leak closed !
v0.2.2.3:
- Bug fix in the Peak-Hold function; zooming on the frequency scale can
cause a crash of the application.
- Added Peak-Hold for the other display styles.
v0.2.2.2:
- Peak Hold for the Panadapter has been added. Works currently only for
display style 'Line'.
v0.2.2.1:
- A new averaging method has been implemented. This method is taken from
Richard Lyons' book 'Understanding Digital Signal Processing', 3rd ed.,
p.791. It is called 'Dual-Mode Averaging', and consists of an exponential
averaging together with a fast way of blending the moving averager.
Note, this method introduces also a noise reduction, which can be seen
on the 16k wide band spectrum if you turn averaging on and off.
v0.2.2.0:
- In order to ensure backward compatibility to HPSDR firmware versions,
the start procedure has been changed. Now a first start is performed
to read out the firmware versions of the connected HPSDR hardware.
Then, with the correct initializations wrt the firmware versions, the
final start is launched. This causes in general a longer starting time.
- Added possibility to show wide band data with 16k sample size (Hermes
firmware > v1.6, Mercury firmware > v3.2).
- If there are two receivers selected, you now have the possibility to
link the center frequency displays of the two receivers in the Waterfall
display. This only makes sense if both receivers are on the same band.
Then you can drag the frequency rulers of, e.g. receiver 1, to show only
the Panadapter display, and receiver 2 to show only the Waterfall display.
In this way you have a moving Panadapter display (receiver 1 in this case)
and a fixed Waterfall display (receiver 2) with a line showing the
frequency of receiver 1.
v0.2.1.2:
- Minor correction of the wideband display data wrt 20 dB attn.
v0.2.1:
- The DOS command window is replaced now by a log file. This file
("cuSDR.log") is normally placed in the directory where cuSDR is
started. If you have problems with the application, I would be glad
if you could send me this log file.
v0.2.0:
- many small changes/improvements/bug fixes
- corrected a device discovery problem when more than one device is
in the local network (Metis/Hermes)
- Panadapter display (Filter, Frequency etc.)
- finally a slider for the AGC gain (DttSP and QtDSP)
- first instance of the QtDSP package, the Qt-adaptation of the
SharpDSP package. Note: QtDSP package is not yet completed; e.g.
the S-Meter is not yet working.
- first implementation of Warren Pratt's, NR0V, ingenious AGC function.
- Hermes (RX) support
- Alexiares support prepared
- First steps for the Tx path added; "Transmit" Tab added; "Ext Ctrl" Tab
added; "PA" Tab added; "Alex" Tab added
v0.1.10:
- added averaging for wide band panadapter
- fixed problem that Mercury/Metis are not correctly initialized after
the first "Start" if more than one receiver is selected.
- fixed wrong debug message in DOS-console after hitting "Start"
command ("send Start command to Metis at ...")
- fixed receiver display layout when switching from view1 to view2
v0.1.09:
- fixed problem when clicking the Windows close button and app is running
- fixed missing GUI link / filter and filter group changes
- fixed crashes when changing sample rate during receiving: inserted an
additional mutex in method dspProcessing()
- changed method initMetis() to connect to Metis/Hermes: it is now based on
a time out
- fixed some graphical problems when showing hair cross
- hair cross is switched off now when you switch receiver
V0.1.08
Changes:
- minor changes on the GUI; new S-Meter
***********************************************************************
Since there is no manual yet, here are the most important things to know,
but the GUI should mostly be self-explaining.
The application is controlled by a number of widgets which opens by hitting
the corresponding buttons, some of which are currently disabled. Just try
before hitting "Start" to find out where to control all the parameters.
Note, some of Buttons are disabled if the application is running (i.e
receiving), that is, they can only be altered after hitting "Stop".
If you are connecting Metis directly to the PC, chose the correct network
adapter with an APIPA address (see Metis manual) in the HPSDR widget.
Otherwise, if you are on a local LAN with DHCP server, the application will
check for the active network adapter. Remember, if your PC has already an
IP address, e.g. from your router, and you disconnect the PC from the network
in order to connect Metis to your PC, you have to deactivate and re-activate
your network adapter (or simply restart you PC). This is NOT necessary if
your PC has two network adapters, of course.
If you want to enable more than one receiver, please go to the "HPSDR" widget
(-> HPSDR Button) when the application is stopped. Then choose in the right
bottom the number of receivers. The corresponding number of receiver panels
should show up. Then press "Start" and feel lucky. On the main button panel,
right, you choose the receiver to control and listen to.
Every receiver panel can be controlled by itself. The scales are zoom-able
(right mouse button). The dBm scale can be moved by the left mouse button.
Mouse wheel for controlling frequency if you are in the panadapter. You can
also drag in the panadapter holding down the left mouse button to change
frequency.
If you move your mouse over the big frequency display, you can alter the
digits by the mouse wheel directly. Clicking on the digits alter the mouse
wheel's step size. The receiver panels are sizable. You can shut off the
waterfall display by dragging the frequency scales to the bottom of each
panel. Note, if you close a waterfall display by dragging the frequency scale
to the bottom, there is nearly no change of CPU utilization due to the use of
framebuffer objects of OpenGL.
On the Display widget you have some control over FPS and colors. Higher FPS
means, more data per time unit are sent to the receiver panels, and more CPU
resources are needed. Waterfall update is bound from below by 20 ms. The
ESCAPE key switches between full screen view and normal view.
A lot of parameters are stored in a file settings.ini. You can copy/rename/edit
this file, but always a file named settings.ini will be used. If you enter wrong
values, the application will take default values. If you loose settings.ini, the
application will create one for you.
In the settings.ini there is a parameter in the server section called
'widebandData'. If 'widebandData=off', Metis/Hermes will be initialzed without
sending wide band data, if 'widebandData=on', with sending wide band data.
Be careful when editing settings.ini.
Have fun!
***********************************************************************
Acknowledgements:
The writing of this software would not have been possible without
previous work on famous software packages like:
- Catherine Moss' SDRMAX3 for QSR1: notably the best SDR-GUI written
ever, at least in my eyes. I took her design idea for the zoom-able
scales - with personal permission. It's a wonderful smooth,
intelligent and working GUI concept!
- the SharpDSP package of Phil Covington (N8VB), which is used in KISS
Konsole, and which has been the starting point for my CudaSharpDSP
package.
- the wonderful KISS Konsole experimental software and all who have
contributed to it, and where I started to learn about SDR programming,
with lots of explanations. Special thanks to George, K9TRV and Phil,
VK6APH, with whom I had some longer discussions about KISS code and
techniques in the beginnings.
- the DttSP package, which I use currently for DSP processing.
- the MultiRx multiplexer function from gHPSDR3 by John Melton,
G0ORX/N6LYT. Great stuff.
- People, who worked on PowerSDR; the Waterfall color scale from is taken
from PowerSDR :-P
- to all Qt/OpenGL/OpenCL developers and their big number of example
code and snippets!
Big thanks to the makers/contributors/organizers of the HPSDR hardware!
Hermann, DL3HVH
The author can be reached at hvh.net@gmail.com