From b5097d309ec9f71551b144715315f7fe3def01c1 Mon Sep 17 00:00:00 2001 From: mh Date: Sat, 13 Jan 2018 08:30:03 -0500 Subject: [PATCH] Added README which has history and some usage instructions. --- Source/README | 510 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 510 insertions(+) create mode 100644 Source/README diff --git a/Source/README b/Source/README new file mode 100644 index 0000000..5579bda --- /dev/null +++ b/Source/README @@ -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