Difference between revisions of "Multiple independent receivers - how to set up on Windows"

From HPSDRwiki
Jump to: navigation, search
(Added page with information about running ghpsdr3 on Windows)
 
(some text)
 
(14 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<pre>
+
The ability to have multiple independent receivers using a single Mercury is made possible
Folder Contents
+
by the efforts of Kirk Weedman KD7IRS, John Melton G0ORX / N6LYT, and Bruce Walker W1BW.
bin Executables and all files needed to run
+
Two of the parts of John Melton's [[ghpsdr3]] have been ported to Windows (tested on XP 32 bit)
server source for server, with VS2003 solution/project files
+
The two pieces are "server" and "dspserver". These two, with Mercury FPGA version 3.0 and the corresponding Ozy code (version 1.8),  
dspserver source for dspserver, with solution/project files
+
provide for four simulteneous independent receivers for a single [[MERCURY]] board, using John's  
dist java files for jmonitor (you'll need to have installed java)
+
</pre>
+
Two of the parts of John Melton's ghpsdr3 have been ported to Windows (tested on XP 32 bit)
+
The two pieces are "server" and "dspserver".
+
 
+
These two, with Mercury FPGA version 3.0 and the corresponding Ozy code (version 1.8),  
+
provide for four simulteneous independent receivers for a single Mercury board, using John's  
+
 
jmonitor as the (minimal) receiver graphical user interface.  The controls available for  
 
jmonitor as the (minimal) receiver graphical user interface.  The controls available for  
each receiver are fewer than with PowerSDR or KK, but are quite adequate, for monitoring  
+
each receiver are fewer than with [[PowerSDR]] or [[KISS Konsole]], but are quite adequate for monitoring  
 
up to four 96kHz segments in the frequency range 0 to 55 MHz simultaneously.
 
up to four 96kHz segments in the frequency range 0 to 55 MHz simultaneously.
  
 
No transmit capability is provided.
 
No transmit capability is provided.
  
Both parts are written in pure C  (no C++).  The files include project (solution) files for
+
All files needed to run server and dspserver on Windows may be found on the SVN
 +
 
 +
  svn://svn.openhpsdr.org/svn/repos_hpsdr_kiss/branches/WA8YWQ/ghpsdr3-Windows
 +
 
 +
You'll find the following folders
 +
<pre>
 +
Folder            Contents
 +
bin                Executables and all files needed to run
 +
dist              java files for jmonitor (you'll need to have installed java)
 +
dspserver          source for dspserver, with solution/project files
 +
DttSP              source for DSP package, with solution/project files to create .dll
 +
LoadMercuryFirmware      all files needed to load Mercury FPGA with V3.0
 +
server           source for server, with VS2003 solution/project files
 +
</pre>
 +
 
 +
Both server and dspserver are written in pure C  (no C++).  The files include project (solution) files for
 
Visual Studio 2003.  You'll probably have no trouble using VS2005 or VS2008.
 
Visual Studio 2003.  You'll probably have no trouble using VS2005 or VS2008.
 
I've added #ifdef ... #endif so that (hopefully) the same code may be compiled on Windows
 
I've added #ifdef ... #endif so that (hopefully) the same code may be compiled on Windows
Line 26: Line 34:
 
In the future, additional options will be explored / implemented.  These include using the fully-
 
In the future, additional options will be explored / implemented.  These include using the fully-
 
featured ghpsdr3 receiver user interface, other receiver interfaces, connections to digital mode
 
featured ghpsdr3 receiver user interface, other receiver interfaces, connections to digital mode
software, and special communication software, such as WSPR.  Transmit capability may also be possible.
+
software, and special communication software, such as [http://physics.princeton.edu/pulsar/K1JT/wspr.html WSPR].  Transmit capability may also be possible.
 
(Of course WSPR needs to transmit.  I'd hope that one could run WSPR on four bands simultaneously,
 
(Of course WSPR needs to transmit.  I'd hope that one could run WSPR on four bands simultaneously,
 
with the software setting Penelope frequency as needed.)
 
with the software setting Penelope frequency as needed.)
Line 35: Line 43:
 
card output is the sum of audio from all active receivers.  If you want to listen to only one,  
 
card output is the sum of audio from all active receivers.  If you want to listen to only one,  
 
reduce the AFGain to zero on other instances of jmonitor.  The server does not read the 55 MHz wide
 
reduce the AFGain to zero on other instances of jmonitor.  The server does not read the 55 MHz wide
spectrum samples from Ozy / Mercury (USB endpoint 4).
+
spectrum samples from [[OZY]] / [[MERCURY]] (USB endpoint 4).
  
 
Each functional receiver uses its own instances of dspserver and jmonitor.  dspserver provides the
 
Each functional receiver uses its own instances of dspserver and jmonitor.  dspserver provides the
Line 45: Line 53:
 
For the server, the options are--
 
For the server, the options are--
 
<pre>
 
<pre>
receivers   1, 2, 3, or 4 the number of simultaneous receivers to be supported
+
receivers     1, 2, 3, or 4   The number of simultaneous receivers to be supported
samplerate # one of 48000, 96000, 192000 (only tested with 96000)
+
samplerate     96000          One of 48000, 96000, 192000 (only tested with 96000)
dither     on / off Setting for Mercury ADC
+
dither         on / off       Setting for Mercury ADC
random     on / off Setting for Mercury ADC
+
random         on / off       Setting for Mercury ADC
preamp     on / off Setting for Mercury
+
preamp         on / off       Setting for Mercury
10mhzsource atlas / penelope / mercury
+
10mhzsource   atlas / penelope / mercury
122.8mhzsource penelope / mercury
+
122.8mhzsource penelope / mercury
micsource penelope / janus
+
micsource     penelope / janus
class other / E
+
class         other / E
 
timing
 
timing
 
 
Line 59: Line 67:
 
receivers 1
 
receivers 1
 
samplerate 96000
 
samplerate 96000
dither off
+
dither off
random off
+
random off
preamp off
+
preamp off
 
10mhzsource mercury
 
10mhzsource mercury
 
122.88mhzsource mercury
 
122.88mhzsource mercury
Line 73: Line 81:
 
<pre>
 
<pre>
 
dspserver options:
 
dspserver options:
soundcard SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY, DELTA_44, FIREBOX, EDIROL_FA_66, HPSDR
+
soundcard SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY,  
 +
                DELTA_44, FIREBOX, EDIROL_FA_66, HPSDR
 
receiver 0 - 3
 
receiver 0 - 3
 
server IP address
 
server IP address
Line 85: Line 94:
 
</pre>
 
</pre>
  
To make it easy to launch multiple receivers, make a folder with a short path name, such as
+
To make it easy to launch multiple receivers, make a folder with a short path name,  
C:\MultiRx
+
such as C:\MultiRx
  
 
Into this folder place the following--
 
Into this folder place the following--
Line 103: Line 112:
 
<pre>
 
<pre>
 
First command window
 
First command window
cd to the folder containing the required files and type--
+
cd \MultiRx
 
server --receivers 4  
 
server --receivers 4  
  
  
 
2nd command window
 
2nd command window
 +
cd \MultiRx
 
dspserver --receiver 0
 
dspserver --receiver 0
  
  
 
3rd command window
 
3rd command window
 +
cd \MultiRx
 
java -jar "jmonitor.jar" --server 127.0.0.1 --receiver 0
 
java -jar "jmonitor.jar" --server 127.0.0.1 --receiver 0
 
</pre>
 
</pre>
Line 118: Line 129:
  
 
To use more than one simultaneous receiver,
 
To use more than one simultaneous receiver,
* When launching server, use a value greater than 1 for the number of receivers.
+
<pre>
* Launch multiple copies of dspserver and jmonitor, each from their own command window,
+
When launching server, use a value greater than 1 for the number of receivers.
    using different receiver numbers--ie 0, 1, 2, 3
+
Launch multiple copies of dspserver and jmonitor, each from their own command window,  
    (Only one instance of server is needed--it supplies connection to the hardware for
+
using different receiver numbers--ie 0, 1, 2, 3  
    all receivers.)
+
(Only one instance of server is needed--it supplies connection to the hardware  
 +
for all receivers.)
 +
</pre>
  
 
With 4 receivers running, you'll have 9 command windows open.
 
With 4 receivers running, you'll have 9 command windows open.
Line 128: Line 141:
  
 
When server starts it says--
 
When server starts it says--
          (socket numbers and buffer addresses will be different on your system):
 
 
<pre>
 
<pre>
 
Listening for TCP connections on port 11000
 
Listening for TCP connections on port 11000
Line 148: Line 160:
 
</pre>
 
</pre>
  
When dspserver starts it says--
+
When dspserver starts it says (socket numbers and buffer addresses will be different on your system)--
 
<pre>
 
<pre>
 
hHPSDR rx 0 (Version 0.6)
 
hHPSDR rx 0 (Version 0.6)
Line 181: Line 193:
 
you'll see more output from server and the dspservers.
 
you'll see more output from server and the dspservers.
  
Please post your comments and questions to the openhpsdr email reflector.
+
Some information on how to make a receiver available on the internet may be found at
 +
 
 +
http://www.n9vv.com/N6LYT-Online-Mercury-Receiver.pdf
 +
 
 +
Please post your comments and questions to the openhpsdr email reflector, hpsdr (at) openhpsdr.org.
 +
 
 +
== See also ==
 +
* [[Multi-Receiver]] - not the same as above, but related.
 +
 
 +
[[Category:Software]]

Latest revision as of 04:48, 22 April 2011

The ability to have multiple independent receivers using a single Mercury is made possible by the efforts of Kirk Weedman KD7IRS, John Melton G0ORX / N6LYT, and Bruce Walker W1BW. Two of the parts of John Melton's ghpsdr3 have been ported to Windows (tested on XP 32 bit) The two pieces are "server" and "dspserver". These two, with Mercury FPGA version 3.0 and the corresponding Ozy code (version 1.8), provide for four simulteneous independent receivers for a single MERCURY board, using John's jmonitor as the (minimal) receiver graphical user interface. The controls available for each receiver are fewer than with PowerSDR or KISS Konsole, but are quite adequate for monitoring up to four 96kHz segments in the frequency range 0 to 55 MHz simultaneously.

No transmit capability is provided.

All files needed to run server and dspserver on Windows may be found on the SVN

 svn://svn.openhpsdr.org/svn/repos_hpsdr_kiss/branches/WA8YWQ/ghpsdr3-Windows

You'll find the following folders

Folder             Contents
bin                Executables and all files needed to run
dist               java files for jmonitor (you'll need to have installed java)
dspserver          source for dspserver, with solution/project files
DttSP              source for DSP package, with solution/project files to create .dll
LoadMercuryFirmware      all files needed to load Mercury FPGA with V3.0
server	           source for server, with VS2003 solution/project files

Both server and dspserver are written in pure C (no C++). The files include project (solution) files for Visual Studio 2003. You'll probably have no trouble using VS2005 or VS2008. I've added #ifdef ... #endif so that (hopefully) the same code may be compiled on Windows and on Linux. Once any problems have been ironed out, the merged code will be placed in the SVN trunk, rather than branch, so that further development will simultaneously apply to both Windows and Linux.

In the future, additional options will be explored / implemented. These include using the fully- featured ghpsdr3 receiver user interface, other receiver interfaces, connections to digital mode software, and special communication software, such as WSPR. Transmit capability may also be possible. (Of course WSPR needs to transmit. I'd hope that one could run WSPR on four bands simultaneously, with the software setting Penelope frequency as needed.)

The server part loads Ozy FX2 and FPGA via the USB, sends I & Q samples to dspservers 0 thru 3, and sends demodulated audio (for receiver 0 only) back to Ozy and Mercury. Each jmonitor sends demodulated audio to computer's sound card. When more than one receiver is active, the sound card output is the sum of audio from all active receivers. If you want to listen to only one, reduce the AFGain to zero on other instances of jmonitor. The server does not read the 55 MHz wide spectrum samples from OZY / MERCURY (USB endpoint 4).

Each functional receiver uses its own instances of dspserver and jmonitor. dspserver provides the passband filtering, demodulation, AGC, and noise reduction.

server and dspserver are launched from a command window ("DOS window"), and each is started with some command-line arguments, or options.

For the server, the options are--

receivers      1, 2, 3, or 4   The number of simultaneous receivers to be supported
samplerate     96000           One of 48000, 96000, 192000 (only tested with 96000)
dither         on / off        Setting for Mercury ADC
random         on / off        Setting for Mercury ADC
preamp         on / off        Setting for Mercury
10mhzsource    atlas / penelope / mercury
122.8mhzsource penelope / mercury
micsource      penelope / janus
class          other / E
timing
	
The default settings are
receivers 1
samplerate 96000
dither  off
random  off
preamp off
10mhzsource mercury
122.88mhzsource mercury
micsource penelope
class other

You only need to specify the options whose values need to be different from the defaults.

For the dspserver, the options are--

dspserver options:
soundcard	SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY, 
                DELTA_44, FIREBOX, EDIROL_FA_66, HPSDR
receiver	0 - 3
server		IP address
offset		?

default values:
soundcard	HPSDR
server		127.0.0.1	(this is "localhost")
receiver	0
offset		0

To make it easy to launch multiple receivers, make a folder with a short path name, such as C:\MultiRx

Into this folder place the following--

libfftw3f-3.dll
pthreadVC2.dll
jmonitor.jar
ozyfw-sdr1k.hex
Ozy_Janus.rbf
server.exe
dspserver.exe
folder "lib" from the java dist folder

Here's how to start the system--

First command window
cd \MultiRx
server --receivers 4 


2nd command window
cd \MultiRx
dspserver --receiver 0


3rd command window
cd \MultiRx
java -jar "jmonitor.jar" --server 127.0.0.1 --receiver 0

Now you have one receiver running.

To use more than one simultaneous receiver,

When launching server, use a value greater than 1 for the number of receivers.
Launch multiple copies of dspserver and jmonitor, each from their own command window, 
using different receiver numbers--ie 0, 1, 2, 3 
(Only one instance of server is needed--it supplies connection to the hardware 
 for all receivers.)

With 4 receivers running, you'll have 9 command windows open.


When server starts it says--

Listening for TCP connections on port 11000
    (a few seconds delay while Ozy FX2 and FPGA are loaded)
... (hex dumps of 9 USB frames)
server configured for 4 receivers at 96000
Ozy Software version 18
Mercury Software version 30

client_socket 1832
client connected 127.0.0.1:12000
client connected: 127.0.0.1:12000
parse_command(Rx-842150451): 'attach 0'
response(Rx0): OK 96000'
parse_command(Rx0): 'start iq 13000'
response(Rx0): 'OK'
audio_thread port=15000
listening for rx 0 audio on port 15000

When dspserver starts it says (socket numbers and buffer addresses will be different on your system)--

hHPSDR rx 0 (Version 0.6)
getSoundcardID: HPSDR id=8
setSoundcard: 8
setSoundcard -11 000000 -25 000000
setup_system_audio: sdr-5044-0
setup_system_audio: sdr-5044-1
client_init audio_buffer_size=2000 audio_buffer=9736336
client_thread
client_thread: listening on port 8000
ozy_init: command bound to port 12000 socket 1808
ozy_init: server 127.0.0.1
connect: sampleRate=96000
setSpeed 1
ozy_init: iq bound to port 13000 socket=1776
iq_thread: socket 1784
output_sample_increment=2

(when jmonitor for Rx 0 starts, dspserver says:)

26/06/2010 23:48:29 RX0: client connection from 127.0.0.1:2995
client message: setFrequency 7048000
client message: setMode 0
client message: setFilter -2850 -150
client message: SetRXOutputGain 30
client message: start AudioStream 480

As you start additional receivers, and make changes to the state of each of the receivers, you'll see more output from server and the dspservers.

Some information on how to make a receiver available on the internet may be found at

http://www.n9vv.com/N6LYT-Online-Mercury-Receiver.pdf

Please post your comments and questions to the openhpsdr email reflector, hpsdr (at) openhpsdr.org.

See also