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

From HPSDRwiki
Jump to: navigation, search
m
(some text)
 
(12 intermediate revisions by 4 users not shown)
Line 1: Line 1:
The SVN (need to show link) has the following folders:
+
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
 
<pre>
 
<pre>
 
Folder            Contents
 
Folder            Contents
Line 9: Line 24:
 
server           source for server, with VS2003 solution/project files
 
server           source for server, with VS2003 solution/project files
 
</pre>
 
</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
 
each receiver are fewer than with PowerSDR or KK, 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.
 
  
Both parts are written in pure C  (no C++).  The files include project (solution) files for
+
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 29: 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 38: 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 48: 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    96000          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
Line 62: 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 76: 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 88: 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 125: Line 131:
 
<pre>
 
<pre>
 
When launching server, use a value greater than 1 for the number of receivers.
 
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  
+
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 all receivers.)
+
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.)
 
</pre>
 
</pre>
  
Line 185: 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