<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://openhpsdr.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=WA8YWQ</id>
		<title>HPSDRwiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://openhpsdr.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=WA8YWQ"/>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Special:Contributions/WA8YWQ"/>
		<updated>2026-05-08T21:34:24Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.0</generator>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=HERMES&amp;diff=4407</id>
		<title>HERMES</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=HERMES&amp;diff=4407"/>
				<updated>2012-10-29T00:05:45Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: added link to Hermes VNA wiki page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''&lt;br /&gt;
''' Hermes - A DUC/DDC Transceiver '''&lt;br /&gt;
&lt;br /&gt;
[[Image:Hardware_Block_Diagram_1_8.JPG|thumb|500px|Hardware block diagram. Click to enlarge.]]&lt;br /&gt;
Project Leader: Kevin M0KHZ&lt;br /&gt;
&lt;br /&gt;
====Update 11 July 2012====&lt;br /&gt;
&lt;br /&gt;
Hermes is a single board Digital Up and Down Conversion (DUC/DDC) full duplex HF + 6m multi-mode transceiver.&lt;br /&gt;
&lt;br /&gt;
It is basically the [[MERCURY|Mercury]], [[PENNYLANE|Pennylane]], [[METIS|Metis]] and [[EXCALIBUR|Excalibur]] (less TCXO) boards rolled into one PCB. The board communicates to an associated PC via 100T/1000T Ethernet.&lt;br /&gt;
&lt;br /&gt;
Hermes has the following features and facilities:&lt;br /&gt;
&lt;br /&gt;
* Continuous, uninterrupted, receive coverage from 10kHz to 55MHz.&lt;br /&gt;
* Supports Real-Time display of entire spectrum from 0-55MHz (with suitable PC software)&lt;br /&gt;
* Supports 7 fully independent receivers (sharing the same antenna - and with suitable PC software)&lt;br /&gt;
* Each receiver can display 48/96/192kHz of spectrum&lt;br /&gt;
* Blocking Dynamic Range (ARRL Method) - no detectable gain compression below ADC overload&lt;br /&gt;
* High performance receiver – same specifications as the HPSDR Mercury receiver (ie Dynamic Range typically 125dB)&lt;br /&gt;
* Transmit and receiver image rejection &amp;gt; 110dB&lt;br /&gt;
* Full duplex operation, any split over entire 160m to 6m range.&lt;br /&gt;
* Transmitter two-tone 3rd order IMD of -50dBc on 20m @ 400mW output&lt;br /&gt;
* 500mW RF output on 160 – 10m amateur bands, 350mW on 6m&lt;br /&gt;
* Built-in high performance preamp, with a noise floor typically -135dBm in 500Hz&lt;br /&gt;
* Software-selectable 31dB input attenuator in 1dB steps&lt;br /&gt;
* FPGA code can be updated via the Industry Standard TCP/IP network Ethernet connection&lt;br /&gt;
* Seven user-configurable open-collector outputs, independently selectable per band and Tx/Rx (for relay control, etc - with sequencing via PC code)&lt;br /&gt;
* Separate open-collector PTT connection for amplifier control, etc, with sequencer&lt;br /&gt;
* Microphone PTT jumper-selectable from tip or ring connection&lt;br /&gt;
* Bias for electret microphones via jumper&lt;br /&gt;
* Four user-configurable 12 bit analogue inputs (for ALC, SWR etc)&lt;br /&gt;
* Three user-configurable digital inputs (for linear amplifier over temperature, etc)&lt;br /&gt;
* Can operate from a 13.8v DC supply or +12v and +5v supplies&lt;br /&gt;
* Jumper selected in-built low noise and high efficiency switch mode power supply designed by Kjell Karson,LA2NI – less than 600mA (receive - one receiver) from a 13.8V supply&lt;br /&gt;
* I2C bus connector for control of external equipment&lt;br /&gt;
* Full QSK operation (performance dependant on associated PC and control software)&lt;br /&gt;
* Low-level transmitter output for transverter use via user-selectable output attenuator&lt;br /&gt;
* Stereo audio outputs at line and headphone levels&lt;br /&gt;
* In-built 1W stereo audio amplifier for directly driving speakers&lt;br /&gt;
* Direct, de-bounced connections for a Morse key (straight or iambic) and PTT&lt;br /&gt;
* Low phase noise (-140dBc/Hz @ 1kHz at 14MHz) 122.88MHz master clock,which can be phase-locked to an internal 10MHz TCXO or external frequency reference&lt;br /&gt;
* Direct ribbon cable interface to [[Apollo]] 15W power amplifier, low pass filters and automatic ATU or ANAN-10 10W power amplifier and low power filters [http://www.apache-labs.com http://www.apache-labs.com]&lt;br /&gt;
* Industry Standard TCP/IP network Ethernet interface supports static, APIPA or DHCP IP address&lt;br /&gt;
* Hermes responds to ping and ARP requests and auto senses network connection speed&lt;br /&gt;
* PCB is 160mm x 120mm, 8 layers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Apollo]] is a combined 15w PA, Low Pass Filter bank and Automatic ATU. The Apollo project is led by Kjell Karlsen LA2NI.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Hermes can be used as a Vector Network Analyzer: [[VNA]]&lt;br /&gt;
&lt;br /&gt;
[[Image:hermesapolloincase.jpg|thumb|500px|Hermes and Apollo in enclosure - photo copyright Kjell Karlsen 2010.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Update 7 August 2011====&lt;br /&gt;
&lt;br /&gt;
The primary PCB layout team member of Hermes, Abhi has a blog on Hermes at [http://hpsdrhermes.blogspot.com/ http://hpsdrhermes.blogspot.com/ ]. --[[User:KV0S|KV0S, Dave]]&lt;br /&gt;
&lt;br /&gt;
====Update 7 July 2011====&lt;br /&gt;
&lt;br /&gt;
A prototype board has been built and tested. The board is fully functional and meets or exceeds the performance of the Mercury/Penelope/Metis/Excalibur boards the design is based on.&lt;br /&gt;
&lt;br /&gt;
Some minor board layout issues are currently being addressed and a pre-production layout is presently being prepared. &lt;br /&gt;
The KD5TFD and W5WC versions of PowerSDR(TM) as well as KISS Konsole have been modified to provide native Hermes support.&lt;br /&gt;
&lt;br /&gt;
Ken, N9VV, has a lot of information regarding Hermes on his web site here  http://www.n9vv.com/hamradio.html&lt;br /&gt;
&lt;br /&gt;
[[Image:Hermes.jpg|thumb|500px|center| (click for larger image) photo courtesy Abhi Arunoday ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Hermes| ]]&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=VNA&amp;diff=4406</id>
		<title>VNA</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=VNA&amp;diff=4406"/>
				<updated>2012-10-28T23:55:18Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: Added brief description of Sam Wetterlin's reflection bridge&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Vector Network Analyser==&lt;br /&gt;
&lt;br /&gt;
This project is to develop PC and FPGA software in order to use Hermes (and possibly Mercury, PennyLane and Metis) as a Vector Network Analyser.&lt;br /&gt;
&lt;br /&gt;
Project Leader:  Phil VK6APH &lt;br /&gt;
&lt;br /&gt;
====Update 14 August 2012====&lt;br /&gt;
&lt;br /&gt;
FPGA code for Hermes has been developed and tested that enables the transmitter (which will be used as the VNA signal source) and receiver in Hermes to be phase synchronous.&lt;br /&gt;
&lt;br /&gt;
PC code has been written (in C# using the free Visual Studio 2010 software) to implement the Reflection function of a VNA. The code draws a Smith Chart, which is zoomable, and displays the Impedance being measured as a complex value on the chart. Additionally, the equivalent series and parallel impedance is displayed as are the equivalent component values at the measurement frequency.  The VSWR and Return Loss are also displayed.&lt;br /&gt;
&lt;br /&gt;
The code enables Open/Short/Load calibration to be made (presently at a single frequency); the calibration data can be saved to a file and subsequently re-loaded as required. The repeatability of measurements after loading the previous calibration data is excellent. &lt;br /&gt;
&lt;br /&gt;
The screen shot shows the current status of the PC software. An number of items being displayed are for debug purposes only and will be removed when no longer required.&lt;br /&gt;
&lt;br /&gt;
The additional code required in the Hermes FPGA is very small. In which case a future version of code will include the ability to use Hermes in VNA mode via a Command &amp;amp; Control flag.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:HermesVNA2.jpg|thumb|100px|VNA Screen Shot. Click to enlarge.]]&lt;br /&gt;
&lt;br /&gt;
====Reflection Bridge====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reflection measurements require the use of a directional coupler or reflection bridge.  There are a number of different designs, but one that is currently being looked at is a design by Sam Wetterlin.  It uses a MiniCircuits balun transformer augmented by a string of three ferrite beads.  &lt;br /&gt;
&lt;br /&gt;
[http://www.wetterlin.org/sam/Reflection/3BeadBalunBridge.pdf  PDF showing Sam's design and characterization]&lt;br /&gt;
&lt;br /&gt;
The transformer is MiniCircuits TC1-1-13.  There are several variants.  Is there any advantage to any specific one?  The following link leads to a page listing MiniCircuits' &amp;quot;configuration G&amp;quot; (ie balun) transformers.&lt;br /&gt;
&lt;br /&gt;
[http://www.minicircuits.com/products/transformers_sm_g.shtml Configuration G balun transformers]&lt;br /&gt;
&lt;br /&gt;
The ferrite beads are Steward LFB090050-000, which seem to match Digikey part number 240-2135-ND, listed as a product of Laird-Signal Integrity Products.&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=EXCALIBUR&amp;diff=4312</id>
		<title>EXCALIBUR</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=EXCALIBUR&amp;diff=4312"/>
				<updated>2012-03-25T02:18:27Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: updated link to documents.php -- was documents.html&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:DCP_3351 (Medium).JPG|thumb|500px|]]&lt;br /&gt;
'''Excalibur''' is a small accessory card for the [[ATLAS|Atlas]] bus that enables the use of an external 10 MHz frequency reference for locking the frequency of an HPSDR radio to the same accuracy of the standard, or GPS disciplined oscillator.  &lt;br /&gt;
&lt;br /&gt;
It also provides an optional TCXO frequency reference for the HPSDR, that is much better than the on board 10 MHz oscillators, although not as good as an external standard or GPS-DO.&lt;br /&gt;
&lt;br /&gt;
Final version cards are currently offered for sale on the TAPR website.  The first prototype card constructed is pictured.&lt;br /&gt;
&lt;br /&gt;
This board is much simpler than the main HPSDR cards, so they are offered as either bare boards, or as kits as was Atlas.  This card uses the larger 1206 surface mount parts for easier manual assembly.&lt;br /&gt;
&lt;br /&gt;
Ideas, comments and suggestions are welcome.&lt;br /&gt;
&lt;br /&gt;
--- Graham, KE9H&lt;br /&gt;
&lt;br /&gt;
== DESCRIPTION ==&lt;br /&gt;
[[Image:Excal_Sch_1_(Medium).JPG|thumb|450px|Schematic 1]]&lt;br /&gt;
[[Image:Excal_Sch2_(Small).JPG|thumb|200px|Schematic 2]]&lt;br /&gt;
Excalibur can be configured/populated in several ways.&lt;br /&gt;
&lt;br /&gt;
First, it can be configured to take an external 10MHz signal, such as a sine wave or square wave output from a reference standard or GPS disciplined oscillator, into a BNC input and process it into a square wave and put it on Atlas bus 10 MHz clock line C16. &lt;br /&gt;
&lt;br /&gt;
It can alternately output a square wave to a two pin connector (J2), for direct connection to the AUXCLK-(J8) input on [[MERCURY|Mercury]].&lt;br /&gt;
&lt;br /&gt;
Optionally, it is a way to have an on-bus &amp;quot;instant on&amp;quot; TCXO with more accuracy than the 10 MHz oscillators on either [[PENELOPE|Penelope]] or Mercury.&lt;br /&gt;
&lt;br /&gt;
The board has a 10 MHz &amp;quot;Input&amp;quot; BNC, and a 10 MHz &amp;quot;Output&amp;quot; BNC connector. The input can be configured to drive the bus, or act as a reference for setting the on-board TCXO. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Output&amp;quot; BNC provides a 10 MHz sine wave at 8.5 dBm as a way to lock external equipment to which ever 10 MHz source is in use.&lt;br /&gt;
&lt;br /&gt;
There is a multi-colored LED, hooked to the output of a frequency-phase detector comparing the TCXO to whatever is coming in the &amp;quot;Input&amp;quot; connector. It gives both a HIGH/LOW frequency color indication and a visible beat indicator. It is useful for setting the TCXO to within a fraction of a Hz.&lt;br /&gt;
&lt;br /&gt;
The 10 MHz oscillators on the Mercury or Penelope cards have a rated stability of +/- 50 or 100 ppM over wide temperature, or +/- 500 Hz to 1 kHz at 10 MHz. Using the Calibrate function built into PowerSDR, you can set them to WWV or other reference, with an accuracy of about 10 to 30 Hz, but I would still expect them to walk around +/- 50 to 100 Hz over normal room temperature variation.&lt;br /&gt;
&lt;br /&gt;
The TCXO on Excalibur has a rated stability of +/- 1 ppM over wide temperature, or +/- 10 Hz at 10 MHz. I observe that over just normal room temperature variation, it stays within 1 Hz of the calibrated frequency, and will likely age at the rate of 1 Hz every several months.&lt;br /&gt;
&lt;br /&gt;
A (high performance) external 10 MHz GPS disciplined oscillator will typically exceed +/- 0.0001 ppM or +/- 0.001 Hz at 10 MHz for as long as the GPS system remains operating.&lt;br /&gt;
&lt;br /&gt;
The card is the same width as Penelope or Mercury, but is only 4 cm. (1.6 inches) high, and takes one slot position on the Atlas bus. &lt;br /&gt;
&lt;br /&gt;
Although the board contains no software, it is compatible with the JTAG chain, so that it will pass through JTAG programming from cards on either side of it.&lt;br /&gt;
&lt;br /&gt;
== TEST RESULTS ==&lt;br /&gt;
&lt;br /&gt;
From '''Joe, K5SO''' ---&lt;br /&gt;
&lt;br /&gt;
[[Image:Excalibur_TCXO_(Medium).jpg|thumb|300px|Frequency Plot]]&lt;br /&gt;
Here is a JPEG image of my measurement results of Excalibur's TCXO output frequency over a 3-day period. Measurements were taken every 100 seconds with a precision of 1 milli-Hz using the equipment indicated in the image file. The Excalibur board was open (in an Antec NSK2480 enclosure &lt;br /&gt;
with the top off) to the shack environment.  Daily ambient shack temperature variations were over the range 65F to 79F; I did not record the precise time-temperature profile of the shack during these measurements.  As you can see from the plot, the Excalibur TCXO stayed at 10 MHz within about +/- 1 Hz &lt;br /&gt;
during the entire measurement period.&lt;br /&gt;
&lt;br /&gt;
73,  Joe K5SO&lt;br /&gt;
&lt;br /&gt;
'''John, N8UR,''' has done a detailed Allan Variance and phase noise measurement of the TCXO on Excalibur.  More testing of the results comparison of HPSDR running with the onboard oscillators, versus Excalibur TCXO, versus external standard injected through Excalibur will follow.  View his measurement results on his website at http://www.febo.com/pages/excalibur.&lt;br /&gt;
&lt;br /&gt;
== CURRENT STATUS ==&lt;br /&gt;
&lt;br /&gt;
October 26, 2009&lt;br /&gt;
&lt;br /&gt;
The project is currently offered for sale on the TAPR web site.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
October 17, 2009&lt;br /&gt;
&lt;br /&gt;
The project is currently in kitting.  The manual has been posted to the Support page on the Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
April 19, 2009&lt;br /&gt;
&lt;br /&gt;
Assembly and testing of the Alpha cards is complete, with agreement received from all the Alpha testers to release the design to TAPR for kitting and distribution. A few minor changes were made to the board to make access to the TCXO adjustment and &amp;quot;Source Selection&amp;quot; jumper easier from the top of the board.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
March 21, 2009&lt;br /&gt;
&lt;br /&gt;
Alpha version cards are being built and tested currently, by Phil, VK6APH; John, N8UR; Joe, K5SO; and myself, KE9H.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== WHAT HPSDR BUILDERS ARE USING TO DRIVE EXCALIBUR ==&lt;br /&gt;
&lt;br /&gt;
I will post submitted descriptions and documents of what HPSDR owners are using to drive their Excalibur boards with.&lt;br /&gt;
&lt;br /&gt;
#Hans, DL2MDQ and Juergen, DD6UJS have described how to power and interface a surplus LPRO-101 Rubidium Frequency standard suitable for driving Excalibur/HPSDR. &lt;br /&gt;
&lt;br /&gt;
See: [[Media:Rb-Normal_paper_20.10.09.pdf‎ |Rb-Normal_paper_20.10.09.pdf‎ ]]‎&lt;br /&gt;
&lt;br /&gt;
== RELATED DOCUMENTS AND LINKS ==&lt;br /&gt;
&lt;br /&gt;
The Manual for Excalibur is posted on the Support &amp;gt;&amp;gt; HPSDR Manuals page on this Wiki.&lt;br /&gt;
* http://openhpsdr.org/documents.php&lt;br /&gt;
&lt;br /&gt;
The PCB cards and schematics are designed in EAGLE Layout Editor&lt;br /&gt;
* http://www.cadsoftusa.com/&lt;br /&gt;
* http://www.cadsoft.de/&lt;br /&gt;
&lt;br /&gt;
==&lt;br /&gt;
&lt;br /&gt;
Good design notes on conversion of sine-waves to squarewaves and vice versa in frequency standards clock distribution are found at Wenzel's web site:&lt;br /&gt;
* http://www.wenzel.com/documents/waveform.html&lt;br /&gt;
* http://www.wenzel.com/library1.htm&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware available]]&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=HPSDRwiki:Community_Portal&amp;diff=4234</id>
		<title>HPSDRwiki:Community Portal</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=HPSDRwiki:Community_Portal&amp;diff=4234"/>
				<updated>2011-11-27T06:36:25Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [[FAQ]] - Frequently Asked Questions ==&lt;br /&gt;
&lt;br /&gt;
This is a new section started to allow asking and hopefully answering questions about HPSDR.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
*'''[[DOC]]''' This section contains links for downloading manuals for HPSDR Projects.&lt;br /&gt;
&lt;br /&gt;
*'''[http://openhpsdr.org/support.php Support documentation]''' Build documents for users interested in building boards can be found here.&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
&lt;br /&gt;
*'''[[Hardware Introduction]]''' This is a guide for those new to HPSDR about exactly what hardware you need to be able to use the system.&lt;br /&gt;
*'''[[Quick Startup Guide]]'''&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
*'''[[SVN]] Subversion code versioning software ''' Source code in the process of development.&lt;br /&gt;
&lt;br /&gt;
*'''[[HPSDR_related_software|Software links and introduction to software components.]] '''&lt;br /&gt;
&lt;br /&gt;
* Links to HPSDR software and resources can be found on the [http://openhpsdr.org/resources.php Resource] page.&lt;br /&gt;
&lt;br /&gt;
*'''[[DOWNLOADS]] - Firmware and Software''' Links to old firmware and software.&lt;br /&gt;
&lt;br /&gt;
* Links to the Verilog/FPGA programming course by Kirk, KD7IRS -- see the [[Verilog]] page.&lt;br /&gt;
&lt;br /&gt;
== Microsoft Windows XP, Vista, and Windows 7 Software ==&lt;br /&gt;
&lt;br /&gt;
*'''[http://www.g3ukb.co.uk/ Acorn-SDR]''' by Bob Cowdery &lt;br /&gt;
&lt;br /&gt;
*'''[http://www.dxatlas.com/CwSkimmer/ CW Skimmer]''' From Alex, VE3NEA, has support for Mercury&lt;br /&gt;
&lt;br /&gt;
*'''[[KISS Konsole]]''', Written in C#  and intended as a simple introduction to PC DSP programming.&lt;br /&gt;
&lt;br /&gt;
*'''[https://java-sdr.dev.java.net/ java-sdr]''' Platform independent Java by John G0ORX/N6LYT.&lt;br /&gt;
&lt;br /&gt;
*'''ghpsdr3 [[Multiple independent receivers - how to set up on Windows]]''' server &amp;amp; dspserver allow for multiple receivers (jmonitor) on a single Mercury&lt;br /&gt;
&lt;br /&gt;
====PowerSDR====&lt;br /&gt;
*'''[[PowerSDR]] Running on Microsoft Windows XP. Vista, or Windows 7'''&lt;br /&gt;
&lt;br /&gt;
*'''PowerSDR [[Quick Startup Guide (Windows)|Quick Startup Guide]]'''  Documents to help users get HPSDR setup and working. Includes firmware upload instructions.&lt;br /&gt;
&lt;br /&gt;
*'''[[HPSDR Digital Modes Operation using PowerSDR, Fldigi, VAC and com0com]]'''  How to use additional programs to enable the digital modes using PowerSDR&lt;br /&gt;
&lt;br /&gt;
*'''[[HPSDR Weak Signal Digital Modes Operation using PowerSDR with WSPR, WSJT9, JT65HF, VAC and VSP]]'''  How to use additional programs to enable the weak signal digital modes using PowerSDR&lt;br /&gt;
&lt;br /&gt;
*'''[[PowerSDR Keyboard Shortcut List ]]'''  This page lists all the known PowerSDR keyboard shortcuts.&lt;br /&gt;
&lt;br /&gt;
====USB drivers for Windows====&lt;br /&gt;
&lt;br /&gt;
*'''[[libusb0 Notes]]''' used in Windows 32 and 64 bit systems&lt;br /&gt;
&lt;br /&gt;
== Linux Software ==&lt;br /&gt;
&lt;br /&gt;
*'''[[ghpsdr]]''', written in C with a [http://www.gtk.org/ GTK+] GUI by John G0ORX/N6LYT. http://javaguifordttsp.blogspot.com/&lt;br /&gt;
&lt;br /&gt;
*'''[[ghpsdr3]]''', written in C with as a server/client or server/dspserver/client framework by John G0ORX/N6LYT. http://g0orx.blogspot.com/&lt;br /&gt;
&lt;br /&gt;
*'''[https://java-sdr.dev.java.net/ java-sdr]''' Platform independent Java by John G0ORX/N6LYT.&lt;br /&gt;
&lt;br /&gt;
====Linux USB Drivers====&lt;br /&gt;
&lt;br /&gt;
*'''[[libusb1.0 Notes]]''' used in Linux 32 and 64 bit systems&lt;br /&gt;
&lt;br /&gt;
====Linux System Integration====&lt;br /&gt;
&lt;br /&gt;
*'''[[SYSTEM INTEGRATION]]''' This section contains information relative to &amp;quot;putting the pieces together&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== MacOS X Software ==&lt;br /&gt;
&lt;br /&gt;
*'''[[ghpsdr]]''', written in C with a [http://www.gtk.org/ GTK+] GUI by John G0ORX/N6LYT. http://javaguifordttsp.blogspot.com/&lt;br /&gt;
&lt;br /&gt;
*'''[[Mac-Ghpsdr]]''' is a version of ghpsdr v2 with changes to make it run acceptably on the Mac by Jeremy McDermond ([[User:NH6Z|NH6Z]]).&lt;br /&gt;
&lt;br /&gt;
*'''[[Heterodyne]]''' is a native Cocoa implementation of an HPSDR receiver.  It uses currently John Melton's modified DttSP from ghpsdr to do the DSP work, but replaces out everything else with native Objective-C and Cocoa technologies.  The current author and maintainer of the code is Jeremy McDermond ([[User:NH6Z|NH6Z]]).&lt;br /&gt;
&lt;br /&gt;
*'''[https://java-sdr.dev.java.net/ java-sdr]''' Platform independent Java by John G0ORX/N6LYT.&lt;br /&gt;
&lt;br /&gt;
==Cross Platform issues==&lt;br /&gt;
&lt;br /&gt;
*'''[[USB Libraries]]''' Information of the various USB libraries used to access the [[OZY]] and [[MAGISTER]] interface boards.&lt;br /&gt;
&lt;br /&gt;
==Multi-Receivers==&lt;br /&gt;
&lt;br /&gt;
*'''[[Multi-Receiver]] How-to''' - This page explains the multi-receiver options and how-to set them up.&lt;br /&gt;
&lt;br /&gt;
== Software Projects ==&lt;br /&gt;
&lt;br /&gt;
* '''[[ATHENA]] - A software Server module''' - A project to build OS specific server code, module communication libraries and communication protocol documentation.&lt;br /&gt;
&lt;br /&gt;
* '''[[KISS Konsole]] - Learning SDR Console''' - The KISS Konsole is a software project to provide a straightforward, well-commented User Interface to [[Mercury]] and other modules.&lt;br /&gt;
&lt;br /&gt;
== HPSDR Radio Setup Examples ==&lt;br /&gt;
&lt;br /&gt;
*'''[[A Basic HPSDR Transceiver in PANDORA]]'''  provides another example of how a [[PANDORA|Pandora]] enclosure can be used for the amateur radio experimenter.&lt;br /&gt;
&lt;br /&gt;
*'''[[A complete HPSDR transceiver in a Pandora Box]]''' provides an example of how to build a transceiver using HPSDR components in a [[PANDORA|Pandora]] enclosure, other available hardware and PowerSDR.&lt;br /&gt;
&lt;br /&gt;
*'''[[A complete HPSDR transceiver]]''' provides an example of how to build your own transceiver using HPSDR components and other available hardware and software.&lt;br /&gt;
&lt;br /&gt;
*'''[[The Antec P183 Solution]]''' an example of how to build your own transceiver using HPSDR components and other available hardware and software in a traditional a mid-tower PC enclosure.&lt;br /&gt;
&lt;br /&gt;
*'''[[The Tokyo Hy-Power HL-45B Solution]]''' an example of how to add a commercial solid state 45 Watt Amplifier to your HPSDR rig.&lt;br /&gt;
&lt;br /&gt;
*'''[[The Rino R-1 Solution]]''' a smaller PC case solution with an optical drive included.&lt;br /&gt;
&lt;br /&gt;
*'''[[The Antec Minuet Solution]]''' the smallest PC case solution attempted so far.&lt;br /&gt;
&lt;br /&gt;
==Hardware Configuration Cautions==&lt;br /&gt;
&lt;br /&gt;
*'''[[Never Short a Penelope by AD9DP]]''' This short paper tells you why you should never operate Penelope into a shorted load.&lt;br /&gt;
&lt;br /&gt;
*'''[[Using Penelope with a linear amplifier]]''' When using Penelope with a linear amplifier you need to ensure you use enough drive. This paper explains why.&lt;br /&gt;
&lt;br /&gt;
== HPSDR Performance Tests ==&lt;br /&gt;
&lt;br /&gt;
The purpose of these pages are to establish HPSDR performance measurement process standards.&lt;br /&gt;
&lt;br /&gt;
==== Receiver Performance Tests ====&lt;br /&gt;
* Mercury: [[Receiver Performance Tests]]&lt;br /&gt;
* PowerSDR, HPSDR, Flex [[AGC Tests]]&lt;br /&gt;
* Active Antennas and HPSDR: [[Antenna Performance Tests]]&lt;br /&gt;
&lt;br /&gt;
==== Transmitter Performance Tests ====&lt;br /&gt;
&lt;br /&gt;
== Hardware Projects ==&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
&lt;br /&gt;
==== Common ====&lt;br /&gt;
&lt;br /&gt;
* '''[[ATLAS]] - Backplane''' - The Atlas is a passive backplane that all other modules plug into.&lt;br /&gt;
&lt;br /&gt;
* '''[[LPU]] - Simple Linear Power Unit''' - The LPU unit takes power from a regulated power supply and steps it to the input needed by Atlas.&lt;br /&gt;
&lt;br /&gt;
* '''[[METIS]] - (formerly called OzyII) - A high speed PC interface''' - High speed PC interface using Ethernet PHY.&lt;br /&gt;
&lt;br /&gt;
* '''[[MERCURY]] - 0-65 MHz Direct Sampling Receiver''' - Perhaps the most exciting of all modules, Mercury will enable direct sampling of the 0-55 MHz spectrum.&lt;br /&gt;
&lt;br /&gt;
* '''[[MAGISTER]] - USB 2.0 to Atlas Bus Interface''' - The Magister module is an alternative to OZY and METIS.&lt;br /&gt;
&lt;br /&gt;
* '''[[PENNYLANE]] - Two stage Penelope''' - This is a two stage penelope based on changes made in the Hermes boards.&lt;br /&gt;
&lt;br /&gt;
==== Primarily Mercury and Penelope related ====&lt;br /&gt;
&lt;br /&gt;
* '''[[Antenna Switch|ANTENNA SWITCH]] - by NT-Electronics''' - An antenna switch for use with Penelope and Mercury when Alex is not used, also has optional low Noise RX Amplifier for 6 meters&lt;br /&gt;
&lt;br /&gt;
==== Primarily Phoenix and Janus related ====&lt;br /&gt;
&lt;br /&gt;
* '''[[JANUS]] - ADC/DAC Board''' - The Janus module is a very high performance, dual, full duplex, audio frequency A/D and D/A converter board.&lt;br /&gt;
&lt;br /&gt;
==== Optional ====&lt;br /&gt;
&lt;br /&gt;
* '''[[PANDORA]] - Enclosure''' - HPSDR enclosure.&lt;br /&gt;
&lt;br /&gt;
* '''[[EXCALIBUR]] - Clock Reference board''' - A board to allow an external 10 MHz frequency reference interface.&lt;br /&gt;
&lt;br /&gt;
* '''[[PINOCCHIO]] - Extender Card''' - Pinocchio is an extender card to allow measurements and troubleshooting of an active card in an ATLAS back-plane.&lt;br /&gt;
&lt;br /&gt;
* '''[[HERCULES]] - By NT-Electronics''' - A 100 Watt amplifier designed to be compatible with current HPSDR hardware (Atlas, Penelope, Mercury, and Magister/Ozy).&lt;br /&gt;
&lt;br /&gt;
* '''[[PENNYWHISTLE]] - 20 Watt RF Power Ampilfier''' - The PennyWhistle takes the RF output of Penelope and amplifies it to approximately 20 watts.&lt;br /&gt;
&lt;br /&gt;
===Completed but unavailable===&lt;br /&gt;
&lt;br /&gt;
* '''[[PENELOPE]] - Companion Exciter to Mercury''' - A 1/2 watt DUC(k).&lt;br /&gt;
&lt;br /&gt;
* '''[[OZY]] - HPSDR Host Interface &amp;amp; Control''' - The OZY module is an FPGA based interface controller card providing input and output connections to the real world. Now replaced by the MAGISTER or METIS module - see above.&lt;br /&gt;
&lt;br /&gt;
===Future hardware===&lt;br /&gt;
====Hardware nearing completion====&lt;br /&gt;
&lt;br /&gt;
* '''[[ALEXIARES]] - RF Preselector''' - Alexiares (or Alex for short) is a set of RF Bandpass filters for use with Mercury and Penelope or any other SDR. Alex also contain an RX/TX antenna switch.&lt;br /&gt;
&lt;br /&gt;
* '''[[HERMES]] - A DUC/DDC Transceiver''' - Merging the verilog code of Mercury and Penelope into a single FPGA, on a single board.&lt;br /&gt;
&lt;br /&gt;
* '''[[APOLLO]] - 15W PA and Filter''' - A companion 15W PA and Low Pass Filter for [[HERMES|Hermes]].&lt;br /&gt;
&lt;br /&gt;
* '''[[PHOENIX]] - QSD/QSE Receiver/Transmitter Module''' - QSD based HF Receiver, a QSE based HF Exciter and a supporting synthesizer.&lt;br /&gt;
&lt;br /&gt;
====Proposed hardware====&lt;br /&gt;
&lt;br /&gt;
* '''[[CYCLOPS]] - Spectrum Analyzer''' - Cyclops is a 0-1 GHz spectrum analyzer with tracking generator support.&lt;br /&gt;
&lt;br /&gt;
* '''[[DEMETER]] - Power Supply''' - Power supply designed for HPSDR.&lt;br /&gt;
&lt;br /&gt;
* '''[[GIBRALTAR]] - GPS-disciplined Frequency Standard''' - Gibraltar is a GPS-disciplined frequency standard board.&lt;br /&gt;
&lt;br /&gt;
* '''[[ODYSSEY]] - Low Power Handheld SDR''' - Odyssey includes a low power SDR based on the QSD, QSE, and a dsPIC33 as the basic radio core.&lt;br /&gt;
&lt;br /&gt;
* '''[[THOR]] - High Efficiency HF Power Amplifier''' - Thor is a high efficiency HF power amplifier using Envelope Elimination and Restoration (ERR) techniques.&lt;br /&gt;
&lt;br /&gt;
* '''[[MUNIN]] - 100W HF Power Amplifier''' - Munin is a 100W HF power amplifier,  This hardware is dependent on Alex filters.&lt;br /&gt;
&lt;br /&gt;
* '''[[GRIFFIN]] - A Chirp-WSPR beacon board''' - This board is a stand alone beacon board.&lt;br /&gt;
&lt;br /&gt;
====Other proposed/future hardware====&lt;br /&gt;
&lt;br /&gt;
* '''[[ANICETUS]]  (Anie) - Preselector''' - A few designs for narrow band preselectors.&lt;br /&gt;
&lt;br /&gt;
* '''[[EPIMETHEUS]] - General Purpose I/O''' - Epi is a general purpose I/O board for the Atlas bus and includes relays, open collectors, IF switching, etc.&lt;br /&gt;
&lt;br /&gt;
* '''[[HELIOS]] - Helios Small Transmitting Loop Antenna and Controller.&lt;br /&gt;
&lt;br /&gt;
* '''[[HORTON]] - Receiver Module''' - A receiver module integrating the Janus ADC with a QSD on a board for a version of the HPSDR RX board.&lt;br /&gt;
&lt;br /&gt;
* '''[[PROTEUS]] - Prototyping Board''' - This is the planned prototyping board.&lt;br /&gt;
&lt;br /&gt;
* '''[[SASQUATCH]] - DSP back-end''' - The Sasquatch board is a hardware DSP back-end intended for use by constructors who would like to operate stand-alone rather than attached to a PC.&lt;br /&gt;
&lt;br /&gt;
== [[Board Designer's Resources]] ==&lt;br /&gt;
&lt;br /&gt;
== [[ANCILLARY]] - Additional &amp;quot;stuff&amp;quot; of interest to HPSDR ==&lt;br /&gt;
Some stuff like Norton Amplifier, FPGA VHDL/Verilog ...&lt;br /&gt;
&lt;br /&gt;
== [[EXPERIMENTERS-CORNER]] - Ideas not yet projects ==&lt;br /&gt;
&lt;br /&gt;
== [[ADMINISTRATION-NEWS]] - Messages about HPSDR web, wiki, discussion list ==&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:Community| ]]&lt;br /&gt;
[[Category:Hardware| ]]&lt;br /&gt;
[[Category:Categories]]&lt;br /&gt;
[[Category:Developer resources| ]]&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=PENNYWHISTLE&amp;diff=4233</id>
		<title>PENNYWHISTLE</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=PENNYWHISTLE&amp;diff=4233"/>
				<updated>2011-11-27T06:23:57Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:DCP_3376_(Small).JPG|thumb|400px|PennyWhistle 16 to 20 Watt RF PA using Mitsubishi RF Power Transistors]]&lt;br /&gt;
'''PennyWhistle''' is a compact RF power amplifier that can be used with [[PENELOPE|Penelope]] and [[ALEXIARES|Alex]] to make a complete 16 Watt PEP Linear or 20 Watt saturated CW transmitter.  This amplifier can quickly and inexpensively be used to get an HPSDR on the air, either barefoot, or as a driver for a larger linear.  It covers the same 160 Meter through 6 Meter bands as the rest of HPSDR.&lt;br /&gt;
&lt;br /&gt;
It is 10 cm by 8 cm (half Euro-board size.)&lt;br /&gt;
&lt;br /&gt;
== DESCRIPTION ==&lt;br /&gt;
&lt;br /&gt;
The amplifier has a single push-pull output stage that uses a pair of TO-220 “15 Watt” Mitsubishi RD15HVF1 or RD16HHF1 parts, and has approximately 19 dB gain, depending where you bias it, so it will deliver 16 to 20 watts output with one-fourth watt drive.&lt;br /&gt;
&lt;br /&gt;
I would expect this could be sold as a bare PC build-it-yourself kit.  It uses surface mount, but would be easy to build.  There are two easily wound transformers and the output transformer is preassembled and wound, from Communications Concepts.  As a pure kit, hopefully it could be offered in the same time frame as ALEX, and let people get on the air.&lt;br /&gt;
&lt;br /&gt;
It will fit in a Euro-Card housing, with an appropriate heat sink., or it can be mounted with a heat sink inside of the Pandora housing. We need to extract about 20 to 25 watts of heat when transmitting continuously.  Dissipation in standby is negligible.  The circuit is capable of continuous duty, provided that the heatsink is big enough to hold a reasonable temperature.&lt;br /&gt;
&lt;br /&gt;
[[Image:System_(Small).JPG|thumb|400px|Alpha board running with Mercury, Penelope, Alex and Ozy.]]&lt;br /&gt;
&lt;br /&gt;
PennyWhistle requires a low pass filter between the output of PennyWhistle and the antenna in order to meet regulatory requirements for harmonic emissions.  When used in conjunction with ALEX, the low pass filter bank in ALEX will provide this low pass filtering requirement. &lt;br /&gt;
&lt;br /&gt;
[[Image:PW_P1.0_Sch_Med.JPG|thumb|400px|Schematic]]&lt;br /&gt;
&lt;br /&gt;
[[Image:HS_Mounting.JPG|thumb|300px|The two output transistors are actually mounted underneath the PC board, with their heat sink tabs bolted to the main heatsink.]]&lt;br /&gt;
&lt;br /&gt;
The PCB is mounted to the main heatsink with ¼ inch long #4-40 spacers at four locations in the vicinity of the PA transistors.  The leads from the transistors are bent upwards and through the PCB and soldered from the top.  Holes in the PCB allow unbolting the transistors from the main heatsink if needed, without having to unsolder anything.&lt;br /&gt;
&lt;br /&gt;
In the normal 16/20 Watt application, the feedback winding on T2, R2, R12, C8 and C15 would not be populated. They are only used if you want to reduce power output, by using negative feedback, to some lower level.  So they are there only as an&lt;br /&gt;
option for special applications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TEST RESULTS ==&lt;br /&gt;
&lt;br /&gt;
[[Image:PW_Input_VSWR_(Small).JPG|thumb|450px|PennyWhistle input VSWR (without input attenuator]]&lt;br /&gt;
&lt;br /&gt;
Two tone testing, at rated 16 Watt PEP levels for linear operation on 20 Meters provides third order IM levels of 30 dB below test tone, or 36 dB below PEP.  Fifth order IM levels are 50 dB below test tone, or 56 dB below PEP.  These IM levels are about the same at lower frequencies and slowly degrade as you go up in frequency.&lt;br /&gt;
&lt;br /&gt;
[[Image:Output_(Small).JPG|thumb|450px|PennyWhistle Output versus frequency‎]]&lt;br /&gt;
&lt;br /&gt;
The convergence of the linear and saturated lines at 6 Meters is an artifact of being drive limited by Penelope.  With a higher drive level, the actual linear and saturated output levels at 6 Meters are about the same as 10 Meters.&lt;br /&gt;
&lt;br /&gt;
== CURRENT STATUS ==&lt;br /&gt;
&lt;br /&gt;
October 31, 2009&lt;br /&gt;
&lt;br /&gt;
The kits are shipping, and Version 1.1 of the manual has been posted.&lt;br /&gt;
&lt;br /&gt;
October 17, 2009&lt;br /&gt;
&lt;br /&gt;
The project is in kitting, and the manual has been posted to the Support &amp;gt;&amp;gt; HPSDR Manuals page on the Wiki&lt;br /&gt;
* http://openhpsdr.org/documents.php&lt;br /&gt;
&lt;br /&gt;
April 19, 2009&lt;br /&gt;
&lt;br /&gt;
Assembly and testing of the Alpha cards is complete, and the design has been released to TAPR for kitting and distribution. &lt;br /&gt;
&lt;br /&gt;
== RELATED DOCUMENTS AND LINKS ==&lt;br /&gt;
Manual:&lt;br /&gt;
* [[Media:PennyWhistle_Manual_V1.1.pdf‎ |PennyWhistle_Manual_V1.1.pdf]]&lt;br /&gt;
&lt;br /&gt;
The full manual has also been posted to the Support &amp;gt;&amp;gt; HPSDR Manuals page on the Wiki&lt;br /&gt;
* http://openhpsdr.org/documents.php &lt;br /&gt;
&lt;br /&gt;
The RF power transistors used in this design are true RF power transistors, although quite inexpensive and packaged in plastic TO-220 packages.  As true RF transistors, the metal heat sink tabs on the transistors are at ground potential, so can be directly attached to the metal heat sink.&lt;br /&gt;
* http://www.rfparts.com/pdf_docs/RD/rd15hvf1.pdf&lt;br /&gt;
* http://www.rfparts.com/pdf_docs/RD/rd16hhf1.pdf&lt;br /&gt;
&lt;br /&gt;
The PCB cards and schematics are designed in EAGLE Layout Editor&lt;br /&gt;
* http://www.cadsoftusa.com/&lt;br /&gt;
* http://www.cadsoft.de/&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware available]]&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_Bugs&amp;diff=3624</id>
		<title>Ghpsdr3 Bugs</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_Bugs&amp;diff=3624"/>
				<updated>2010-08-13T00:16:06Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: added 3 known problems&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Features not currently implemented in this version===&lt;br /&gt;
&lt;br /&gt;
* Transmit has not been implemented but the structure and functions are in the code.&lt;br /&gt;
* Bandscope has not been implemented.&lt;br /&gt;
&lt;br /&gt;
===Known problems===&lt;br /&gt;
* Server &amp;amp; dspserver must both be running on Windows, or Linux, not a mix.&lt;br /&gt;
* If dspserver for Rx 1 is started before dspserver for Rx 0, the Rx 1 client will receive spectrum and audio data for Rx 0, and changes in Rx 1 frequency will not result in changes to spectrum or audio data.  Once dspserver for Rx 0 has also been started, everything is correct.&lt;br /&gt;
* When a client disconnects or is terminated, it or a newly running client is not able to connect to the server unless the server is terminated and restarted.  This applies to both dspserver-server pairs, and to monitor-server pairs.&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3623</id>
		<title>Ghpsdr3 protocols</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3623"/>
				<updated>2010-08-13T00:06:49Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''server''' HPSDR hardware server ==&lt;br /&gt;
The HPSDR server handles communications with the HPSDR hardware and is designed to work with multiple receivers either on a single Mercury card or multiple Mercury cards. It demultiplexes the I/Q samples into separate streams for each receiver.&lt;br /&gt;
The hardware server listens on port 11000 for TCP connections from clients. The client (dspserver) makes a connection request through port 11000, and sets up a TCP socket on on port 12000+'''''rx''''', on which it sends commands to the server.  IQ data is sent over UDP.&lt;br /&gt;
&lt;br /&gt;
===Commands to server===&lt;br /&gt;
The server recognizes a number of commands, shown below.  It sends a response to the client after parsing each command.  The possible responses are also shown.&lt;br /&gt;
&lt;br /&gt;
** '''attach''' '''''rx'''''&lt;br /&gt;
*: attach client to receiver '''''rx'''''&lt;br /&gt;
*: The receiver number ''rx'' is an integer from 0 to 3&lt;br /&gt;
*: example:  attach 0&lt;br /&gt;
*: response: &lt;br /&gt;
*: &amp;quot;Error: Client is already attached to receiver&amp;quot; (Receiver ''rx'' is already attached.)&lt;br /&gt;
*: &amp;quot;Error: Invalid Receiver&amp;quot;   (''rx'' is higher than number of receivers specified on the command line.)&lt;br /&gt;
*: &amp;quot;Error: Receiver in use&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot; &amp;lt;sample Rate&amp;gt;&lt;br /&gt;
** '''detach''' '''''rx'''''&lt;br /&gt;
*: detach client from receiver '''''rx'''''&lt;br /&gt;
*: example:  detach 0&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Client is not attached to receiver&amp;quot;&lt;br /&gt;
*: &amp;quot;Error: Invalid Receiver&amp;quot;   (''rx'' is higher than number of receivers specified on the command line.)&lt;br /&gt;
*: &amp;quot;Error: Not owner of receiver&amp;quot;&lt;br /&gt;
** '''frequency''' '''''f'''''&lt;br /&gt;
*: Set attached receiver frequency to the integer frequency '''''f''''' (Hz)&lt;br /&gt;
*: example:  frequency 7056000&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Client is not attached to receiver&amp;quot;&lt;br /&gt;
*: &amp;quot;Error: Invalid Receiver&amp;quot;   (''rx'' is higher than number of receivers specified on the command line.)&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
** '''start iq''' '''''port'''''&lt;br /&gt;
*: start sending I &amp;amp; Q samples for the attached receiver to the UDP '''''port''''' specified&lt;br /&gt;
*: example:   start iq 13000&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Invalid Command&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
** '''start bandscope''' '''''port'''''&lt;br /&gt;
*: start sending bandscope samples to the UDP '''''port''''' specified&lt;br /&gt;
*: example start bandscope 12500&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Invalid Command&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
** '''stop iq'''&lt;br /&gt;
*: stop sending I &amp;amp; Q data to the attached receiver&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Invalid Command&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
** '''stop bandscope'''&lt;br /&gt;
*: stop sending bandscope data&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Invalid Command&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A typical exchange would be:&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Client&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Server&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;attach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK 96000&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;start iq 13000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056100&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;stop iq&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;detach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that there are currently no commands to control setting the number of receivers, preamp, dither, random, samplerate or clock sources. As this was developed to support multiple receivers, I decided to not allow clients to change these as they would be changed for all receivers. They are all&lt;br /&gt;
controlled by command line arguments when running the server.&lt;br /&gt;
&lt;br /&gt;
===I / Q data stream===&lt;br /&gt;
The I/Q samples are accumulated in the server until there are 1024 I/Q samples to send. The samples are sent in 512 byte UDP packets, to the port specified in the 'start iq' message, with 12 byte header and up to 500 bytes of I/Q samples.&lt;br /&gt;
&lt;br /&gt;
The UDP packet header contains:&lt;br /&gt;
*8 byte sequence number (At present, the Windows port uses only a 4 byte sequence number.  Until this is changed, both server and dspserver must be running on Windows or Linux, not one on Windows and one on Linux.)&lt;br /&gt;
*2 byte offset within this set of samples&lt;br /&gt;
*2 byte length of samples&lt;br /&gt;
&lt;br /&gt;
Following the header, the I and Q samples are sent, first 1024 float I samples, followed by 1024 float Q samples.&lt;br /&gt;
&lt;br /&gt;
===server command line options ('''''default value''''')===&lt;br /&gt;
* --receivers &amp;lt;'''''1'''''..4&amp;gt;&lt;br /&gt;
* --samplerate [48000|'''''96000'''''|192000]&lt;br /&gt;
* --dither ['''''off'''''|on]&lt;br /&gt;
* --random ['''''off'''''|on]&lt;br /&gt;
* --preamp ['''''off'''''|on]&lt;br /&gt;
* --10mhzsource [atlas|penelope|'''''mercury''''']&lt;br /&gt;
* --122.88mhzsource [penelope|'''''mercury''''']&lt;br /&gt;
* --micsource [janus|'''''penelope''''']&lt;br /&gt;
* --class [E|'''''other''''']&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
./server --receivers 4 --samplerate 96000 --dither on --10mhzsource atlas&lt;br /&gt;
&lt;br /&gt;
'''Note:'''&lt;br /&gt;
As an experiment, there is also a softrockserver that supports the same protocol with the restriction that there is only one receiver and it uses the USB/si570 interface to control the frequency. The I/Q samples are taken from an Audio device specified on the command line.&lt;br /&gt;
&lt;br /&gt;
==dspserver==&lt;br /&gt;
'''dspserver''' is a client to the hardware server. In turn, it is the server for another client, typically a GUI, such as jmonitor.  It provides a dsp processing service using DttSP. Typically one dspserver is started for each receiver. The dspserver listens for client TCP connections on port 8000+rx. i.e. rx0 listens on 8000, rx1 listens on 8001, etc. The client sends commands to the dspserver and dspserver sends data packets to its client on this same port.  The first byte of each packet sent to the client identifies the type of data in the packet.&lt;br /&gt;
*0 spectrum data&lt;br /&gt;
*1 audio data&lt;br /&gt;
&lt;br /&gt;
===Commands to dspserver===&lt;br /&gt;
** '''getSpectrum''' '''''points'''''&lt;br /&gt;
*: Request '''''points''''' of spectrum data.  The value sent for each point is an 8 bit unsigned integer.  If the calculated spectrum contains more points than the client requests, adjacent points are combined, and the highest value in the group is sent.  &lt;br /&gt;
*:Example:  getSpectrum 480&lt;br /&gt;
** '''setFrequency''' '''''f'''''&lt;br /&gt;
*: Set the receiver frequency to '''''f''''', in Hz&lt;br /&gt;
*: example:   setFrequency 7056000&lt;br /&gt;
** '''setMode''' '''''mode'''''&lt;br /&gt;
*: '''''mode''''' is an integer specifying the type of demodulation &lt;br /&gt;
*** 0 - LSB&lt;br /&gt;
*** 1 – USB&lt;br /&gt;
*** 2 – DSB&lt;br /&gt;
*** 3 – CWL&lt;br /&gt;
*** 4 – CWH&lt;br /&gt;
*** 5 – FM&lt;br /&gt;
*** 6 – AM&lt;br /&gt;
*** 7 - DIGU&lt;br /&gt;
*** 8 - SPEC&lt;br /&gt;
*** 9 - DIGL&lt;br /&gt;
*** 10 - SAM&lt;br /&gt;
*** 11 – DRM&lt;br /&gt;
*:example: setMode 0&lt;br /&gt;
** '''setFilter''' '''''low''''' '''''high'''''&lt;br /&gt;
*: Set filter cutoff frequencies&lt;br /&gt;
*: For LSB, both frequencies are negative&lt;br /&gt;
*: For USB, both frequencies are positive&lt;br /&gt;
*: For AM or DSP, typically '''low''' is negative and '''high''' is positive&lt;br /&gt;
*: example:  setFilter 150 3450&lt;br /&gt;
** '''setAGC''' '''''n'''''&lt;br /&gt;
*: Select AGC time&lt;br /&gt;
*** 1 - LONG&lt;br /&gt;
*** 2 - SLOW&lt;br /&gt;
*** 3 - MEDIUM&lt;br /&gt;
*** 4 - FAST&lt;br /&gt;
*: example:  setAGC 3&lt;br /&gt;
** '''setNR''' '''''n'''''&lt;br /&gt;
*: Set noise reduction&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setNB''' '''''n'''''&lt;br /&gt;
*: Set noise blanker&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setANF''' '''''n'''''&lt;br /&gt;
*: Set automatic noise filter&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setRXOutputGain''' '''''gain'''''&lt;br /&gt;
*: Set receiver audio output level to the value '''''gain'''''&lt;br /&gt;
*: The value is a floating point number in the range 0 to 1.&lt;br /&gt;
*: example:  setRXOutputGain 0.5&lt;br /&gt;
** '''startAudioStream''' '''''buffer size'''''&lt;br /&gt;
*: start sending audio data.  &lt;br /&gt;
*: '''''buffer size''''' is optional, and is an integer, typically 480.&lt;br /&gt;
*: If omitted, a value of 480 is used.&lt;br /&gt;
** '''stopAudioStream'''&lt;br /&gt;
*: stop sending the audio data.&lt;br /&gt;
&lt;br /&gt;
'''data packet format'''&lt;br /&gt;
Each packet has a 48 byte header.  &lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt; Byte &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; Function &amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Packet type: 0=spectrum data; 1=audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 1-31&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Reserved&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 32-39&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Sample rate&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 40-47&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Meter reading&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 48-end&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; spectrum or audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample rate and Meter reading numbers are in ASCII characters.&lt;br /&gt;
&lt;br /&gt;
Audio data is sent as one channel of 8-bit aLaw samples at 8000 samples per second.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===dspserver command line options ('''''default value''''')===&lt;br /&gt;
* --soundcard SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY, &lt;br /&gt;
*:                DELTA_44, FIREBOX, EDIROL_FA_66, '''''HPSDR'''''&lt;br /&gt;
* --receiver '''''0''''', 1, 2, or 3&lt;br /&gt;
* --server IP address '''''127.0.0.1''''' (this is &amp;quot;localhost&amp;quot;)&lt;br /&gt;
* --offset ???&lt;br /&gt;
&lt;br /&gt;
==summary of port usage==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt; sender    &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; type &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; port         &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; purpose &amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 11000        &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; connection request to server&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 12000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; commands to server &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; server    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 12000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; responses to commands&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; server    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; UDP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 13000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; I &amp;amp; Q data to dspserver&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; UDP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 15000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; demodulated audio to server for Mercury headphone/speaker output&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 8000 + rx    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; spectrum &amp;amp; alaw-encoded audio to monitor&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; monitor   &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 8000 + rx    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; commands to dspserver&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3622</id>
		<title>Ghpsdr3 protocols</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3622"/>
				<updated>2010-08-13T00:01:39Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''server''' HPSDR hardware server ==&lt;br /&gt;
The HPSDR server handles communications with the HPSDR hardware and is designed to work with multiple receivers either on a single Mercury card or multiple Mercury cards. It demultiplexes the I/Q samples into separate streams for each receiver.&lt;br /&gt;
The hardware server listens on port 11000 for TCP connections from clients. The client (dspserver) makes a connection request through port 11000, and sets up a TCP socket on on port 12000+'''''rx''''', on which it sends commands to the server.  IQ data is sent over UDP.&lt;br /&gt;
&lt;br /&gt;
===Commands to server===&lt;br /&gt;
The server recognizes a number of commands, shown below.  It sends a response to the client after parsing each command.  The possible responses are also shown.&lt;br /&gt;
&lt;br /&gt;
** '''attach''' '''''rx'''''&lt;br /&gt;
*: attach client to receiver '''''rx'''''&lt;br /&gt;
*: The receiver number ''rx'' is an integer from 0 to 3&lt;br /&gt;
*: example:  attach 0&lt;br /&gt;
*: response: &lt;br /&gt;
*: &amp;quot;Error: Client is already attached to receiver&amp;quot; (Receiver ''rx'' is already attached.)&lt;br /&gt;
*: &amp;quot;Error: Invalid Receiver&amp;quot;   (''rx'' is higher than number of receivers specified on the command line.)&lt;br /&gt;
*: &amp;quot;Error: Receiver in use&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot; &amp;lt;sample Rate&amp;gt;&lt;br /&gt;
** '''detach''' '''''rx'''''&lt;br /&gt;
*: detach client from receiver '''''rx'''''&lt;br /&gt;
*: example:  detach 0&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Client is not attached to receiver&amp;quot;&lt;br /&gt;
*: &amp;quot;Error: Invalid Receiver&amp;quot;   (''rx'' is higher than number of receivers specified on the command line.)&lt;br /&gt;
*: &amp;quot;Error: Not owner of receiver&amp;quot;&lt;br /&gt;
** '''frequency''' '''''f'''''&lt;br /&gt;
*: Set attached receiver frequency to the integer frequency '''''f''''' (Hz)&lt;br /&gt;
*: example:  frequency 7056000&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Client is not attached to receiver&amp;quot;&lt;br /&gt;
*: &amp;quot;Error: Invalid Receiver&amp;quot;   (''rx'' is higher than number of receivers specified on the command line.)&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
** '''start iq''' '''''port'''''&lt;br /&gt;
*: start sending I &amp;amp; Q samples for the attached receiver to the UDP '''''port''''' specified&lt;br /&gt;
*: example:   start iq 13000&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Invalid Command&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
** '''start bandscope''' '''''port'''''&lt;br /&gt;
*: start sending bandscope samples to the UDP '''''port''''' specified&lt;br /&gt;
*: example start bandscope 12500&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Invalid Command&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
** '''stop iq'''&lt;br /&gt;
*: stop sending I &amp;amp; Q data to the attached receiver&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Invalid Command&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
** '''stop bandscope'''&lt;br /&gt;
*: stop sending bandscope data&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Invalid Command&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A typical exchange would be:&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Client&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Server&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;attach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK 96000&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;start iq 13000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056100&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;stop iq&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;detach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that there are currently no commands to control setting the number of receivers, preamp, dither, random, samplerate or clock sources. As this was developed to support multiple receivers, I decided to not allow clients to change these as they would be changed for all receivers. They are all&lt;br /&gt;
controlled by command line arguments when running the server.&lt;br /&gt;
&lt;br /&gt;
===I / Q data stream===&lt;br /&gt;
The I/Q samples are accumulated in the server until there are 1024 I/Q samples to send. The samples are sent in 512 byte UDP packets, to the port specified in the 'start iq' message, with 12 byte header and up to 500 bytes of I/Q samples.&lt;br /&gt;
&lt;br /&gt;
The UDP packet header contains:&lt;br /&gt;
*8 byte sequence number&lt;br /&gt;
*2 byte offset within this set of samples&lt;br /&gt;
*2 byte length of samples&lt;br /&gt;
&lt;br /&gt;
Following the header, the I and Q samples are sent, first 1024 float I samples, followed by 1024 float Q samples.&lt;br /&gt;
&lt;br /&gt;
===server command line options ('''''default value''''')===&lt;br /&gt;
* --receivers &amp;lt;'''''1'''''..4&amp;gt;&lt;br /&gt;
* --samplerate [48000|'''''96000'''''|192000]&lt;br /&gt;
* --dither ['''''off'''''|on]&lt;br /&gt;
* --random ['''''off'''''|on]&lt;br /&gt;
* --preamp ['''''off'''''|on]&lt;br /&gt;
* --10mhzsource [atlas|penelope|'''''mercury''''']&lt;br /&gt;
* --122.88mhzsource [penelope|'''''mercury''''']&lt;br /&gt;
* --micsource [janus|'''''penelope''''']&lt;br /&gt;
* --class [E|'''''other''''']&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
./server --receivers 4 --samplerate 96000 --dither on --10mhzsource atlas&lt;br /&gt;
&lt;br /&gt;
'''Note:'''&lt;br /&gt;
As an experiment, there is also a softrockserver that supports the same protocol with the restriction that there is only one receiver and it uses the USB/si570 interface to control the frequency. The I/Q samples are taken from an Audio device specified on the command line.&lt;br /&gt;
&lt;br /&gt;
==dspserver==&lt;br /&gt;
'''dspserver''' is a client to the hardware server. In turn, it is the server for another client, typically a GUI, such as jmonitor.  It provides a dsp processing service using DttSP. Typically one dspserver is started for each receiver. The dspserver listens for client TCP connections on port 8000+rx. i.e. rx0 listens on 8000, rx1 listens on 8001, etc. The client sends commands to the dspserver and dspserver sends data packets to its client on this same port.  The first byte of each packet sent to the client identifies the type of data in the packet.&lt;br /&gt;
*0 spectrum data&lt;br /&gt;
*1 audio data&lt;br /&gt;
&lt;br /&gt;
===Commands to dspserver===&lt;br /&gt;
** '''getSpectrum''' '''''points'''''&lt;br /&gt;
*: Request '''''points''''' of spectrum data.  The value sent for each point is an 8 bit unsigned integer.  If the calculated spectrum contains more points than the client requests, adjacent points are combined, and the highest value in the group is sent.  &lt;br /&gt;
*:Example:  getSpectrum 480&lt;br /&gt;
** '''setFrequency''' '''''f'''''&lt;br /&gt;
*: Set the receiver frequency to '''''f''''', in Hz&lt;br /&gt;
*: example:   setFrequency 7056000&lt;br /&gt;
** '''setMode''' '''''mode'''''&lt;br /&gt;
*: '''''mode''''' is an integer specifying the type of demodulation &lt;br /&gt;
*** 0 - LSB&lt;br /&gt;
*** 1 – USB&lt;br /&gt;
*** 2 – DSB&lt;br /&gt;
*** 3 – CWL&lt;br /&gt;
*** 4 – CWH&lt;br /&gt;
*** 5 – FM&lt;br /&gt;
*** 6 – AM&lt;br /&gt;
*** 7 - DIGU&lt;br /&gt;
*** 8 - SPEC&lt;br /&gt;
*** 9 - DIGL&lt;br /&gt;
*** 10 - SAM&lt;br /&gt;
*** 11 – DRM&lt;br /&gt;
*:example: setMode 0&lt;br /&gt;
** '''setFilter''' '''''low''''' '''''high'''''&lt;br /&gt;
*: Set filter cutoff frequencies&lt;br /&gt;
*: For LSB, both frequencies are negative&lt;br /&gt;
*: For USB, both frequencies are positive&lt;br /&gt;
*: For AM or DSP, typically '''low''' is negative and '''high''' is positive&lt;br /&gt;
*: example:  setFilter 150 3450&lt;br /&gt;
** '''setAGC''' '''''n'''''&lt;br /&gt;
*: Select AGC time&lt;br /&gt;
*** 1 - LONG&lt;br /&gt;
*** 2 - SLOW&lt;br /&gt;
*** 3 - MEDIUM&lt;br /&gt;
*** 4 - FAST&lt;br /&gt;
*: example:  setAGC 3&lt;br /&gt;
** '''setNR''' '''''n'''''&lt;br /&gt;
*: Set noise reduction&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setNB''' '''''n'''''&lt;br /&gt;
*: Set noise blanker&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setANF''' '''''n'''''&lt;br /&gt;
*: Set automatic noise filter&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setRXOutputGain''' '''''gain'''''&lt;br /&gt;
*: Set receiver audio output level to the value '''''gain'''''&lt;br /&gt;
*: The value is a floating point number in the range 0 to 1.&lt;br /&gt;
*: example:  setRXOutputGain 0.5&lt;br /&gt;
** '''startAudioStream''' '''''buffer size'''''&lt;br /&gt;
*: start sending audio data.  &lt;br /&gt;
*: '''''buffer size''''' is optional, and is an integer, typically 480.&lt;br /&gt;
*: If omitted, a value of 480 is used.&lt;br /&gt;
** '''stopAudioStream'''&lt;br /&gt;
*: stop sending the audio data.&lt;br /&gt;
&lt;br /&gt;
'''data packet format'''&lt;br /&gt;
Each packet has a 48 byte header.  &lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt; Byte &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; Function &amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Packet type: 0=spectrum data; 1=audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 1-31&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Reserved&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 32-39&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Sample rate&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 40-47&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Meter reading&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 48-end&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; spectrum or audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample rate and Meter reading numbers are in ASCII characters.&lt;br /&gt;
&lt;br /&gt;
Audio data is sent as one channel of 8-bit aLaw samples at 8000 samples per second.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===dspserver command line options ('''''default value''''')===&lt;br /&gt;
* --soundcard SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY, &lt;br /&gt;
*:                DELTA_44, FIREBOX, EDIROL_FA_66, '''''HPSDR'''''&lt;br /&gt;
* --receiver '''''0''''', 1, 2, or 3&lt;br /&gt;
* --server IP address '''''127.0.0.1''''' (this is &amp;quot;localhost&amp;quot;)&lt;br /&gt;
* --offset ???&lt;br /&gt;
&lt;br /&gt;
==summary of port usage==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt; sender    &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; type &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; port         &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; purpose &amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 11000        &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; connection request to server&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 12000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; commands to server &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; server    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 12000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; responses to commands&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; server    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; UDP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 13000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; I &amp;amp; Q data to dspserver&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; UDP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 15000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; demodulated audio to server for Mercury headphone/speaker output&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 8000 + rx    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; spectrum &amp;amp; alaw-encoded audio to monitor&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; monitor   &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 8000 + rx    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; commands to dspserver&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3621</id>
		<title>Ghpsdr3 protocols</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3621"/>
				<updated>2010-08-12T23:33:04Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''server''' HPSDR hardware server ==&lt;br /&gt;
The HPSDR server handles communications with the HPSDR hardware and is designed to work with multiple receivers either on a single Mercury card or multiple Mercury cards. It demultiplexes the I/Q samples into separate streams for each receiver.&lt;br /&gt;
The hardware server listens on port 11000 for TCP connections from clients. The client (dspserver) makes a connection request through port 11000, and sets up a TCP socket on on port 12000+'''''rx''''', on which it sends commands to the server.  IQ data is sent over UDP.&lt;br /&gt;
&lt;br /&gt;
===Commands to server===&lt;br /&gt;
The server recognizes a number of commands, shown below.  It sends a response to the client after parsing each command.  The possible responses are also shown.&lt;br /&gt;
&lt;br /&gt;
** '''attach''' '''''rx'''''&lt;br /&gt;
*: attach client to receiver '''''rx'''''&lt;br /&gt;
*: The receiver number ''rx'' is an integer from 0 to 3&lt;br /&gt;
*: example:  attach 0&lt;br /&gt;
*: response: &lt;br /&gt;
*: &amp;quot;Error: Client is already attached to receiver&amp;quot; (Receiver ''rx'' is already attached.)&lt;br /&gt;
*: &amp;quot;Error: Invalid Receiver&amp;quot;   (''rx'' is higher than number of receivers specified on the command line.)&lt;br /&gt;
*: &amp;quot;Error: Receiver in use&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot; &amp;lt;sample Rate&amp;gt;&lt;br /&gt;
** '''detach''' '''''rx'''''&lt;br /&gt;
*: detach client from receiver '''''rx'''''&lt;br /&gt;
*: example:  detach 0&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Client is not attached to receiver&amp;quot;&lt;br /&gt;
*: &amp;quot;Error: Invalid Receiver&amp;quot;   (''rx'' is higher than number of receivers specified on the command line.)&lt;br /&gt;
*: &amp;quot;Error: Not owner of receiver&amp;quot;&lt;br /&gt;
** '''frequency''' '''''f'''''&lt;br /&gt;
*: Set attached receiver frequency to the integer frequency '''''f''''' (Hz)&lt;br /&gt;
*: example:  frequency 7056000&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Client is not attached to receiver&amp;quot;&lt;br /&gt;
*: &amp;quot;Error: Invalid Receiver&amp;quot;   (''rx'' is higher than number of receivers specified on the command line.)&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
** '''start iq''' '''''port'''''&lt;br /&gt;
*: start sending I &amp;amp; Q samples for the attached receiver to the UDP '''''port''''' specified&lt;br /&gt;
*: example:   start iq 13000&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Invalid Command&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
** '''start bandscope''' '''''port'''''&lt;br /&gt;
*: start sending bandscope samples to the UDP '''''port''''' specified&lt;br /&gt;
*: example start bandscope 12500&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Invalid Command&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
** '''stop iq'''&lt;br /&gt;
*: stop sending I &amp;amp; Q data to the attached receiver&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Invalid Command&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
** '''stop bandscope'''&lt;br /&gt;
*: stop sending bandscope data&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Invalid Command&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A typical exchange would be:&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Client&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Server&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;attach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK 96000&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;start iq 13000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056100&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;stop iq&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;detach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that there are currently no commands to control setting the number of receivers, preamp, dither, random, samplerate or clock sources. As this was developed to support multiple receivers, I decided to not allow clients to change these as they would be changed for all receivers. They are all&lt;br /&gt;
controlled by command line arguments when running the server.&lt;br /&gt;
&lt;br /&gt;
===I / Q data stream===&lt;br /&gt;
The I/Q samples are accumulated in the server until there are 1024 I/Q samples to send. The samples are sent in 512 byte UDP packets, to the port specified in the 'start iq' message, with 12 byte header and up to 500 bytes of I/Q samples.&lt;br /&gt;
&lt;br /&gt;
The UDP packet header contains:&lt;br /&gt;
*8 byte sequence number&lt;br /&gt;
*2 byte offset within this set of samples&lt;br /&gt;
*2 byte length of samples&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===server command line options ('''''default value''''')===&lt;br /&gt;
* --receivers &amp;lt;'''''1'''''..4&amp;gt;&lt;br /&gt;
* --samplerate [48000|'''''96000'''''|192000]&lt;br /&gt;
* --dither ['''''off'''''|on]&lt;br /&gt;
* --random ['''''off'''''|on]&lt;br /&gt;
* --preamp ['''''off'''''|on]&lt;br /&gt;
* --10mhzsource [atlas|penelope|'''''mercury''''']&lt;br /&gt;
* --122.88mhzsource [penelope|'''''mercury''''']&lt;br /&gt;
* --micsource [janus|'''''penelope''''']&lt;br /&gt;
* --class [E|'''''other''''']&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
./server --receivers 4 --samplerate 96000 --dither on --10mhzsource atlas&lt;br /&gt;
&lt;br /&gt;
'''Note:'''&lt;br /&gt;
As an experiment, there is also a softrockserver that supports the same protocol with the restriction that there is only one receiver and it uses the USB/si570 interface to control the frequency. The I/Q samples are taken from an Audio device specified on the command line.&lt;br /&gt;
&lt;br /&gt;
==dspserver==&lt;br /&gt;
'''dspserver''' is a client to the hardware server. In turn, it is the server for another client, typically a GUI, such as jmonitor.  It provides a dsp processing service using DttSP. Typically one dspserver is started for each receiver. The dspserver listens for client TCP connections on port 8000+rx. i.e. rx0 listens on 8000, rx1 listens on 8001, etc. The client sends commands to the dspserver and dspserver sends data packets to its client on this same port.  The first byte of each packet sent to the client identifies the type of data in the packet.&lt;br /&gt;
*0 spectrum data&lt;br /&gt;
*1 audio data&lt;br /&gt;
&lt;br /&gt;
===Commands to dspserver===&lt;br /&gt;
** '''getSpectrum''' '''''points'''''&lt;br /&gt;
*: Request '''''points''''' of spectrum data.  The value sent for each point is an 8 bit unsigned integer.  If the calculated spectrum contains more points than the client requests, adjacent points are combined, and the highest value in the group is sent.  &lt;br /&gt;
*:Example:  getSpectrum 480&lt;br /&gt;
** '''setFrequency''' '''''f'''''&lt;br /&gt;
*: Set the receiver frequency to '''''f''''', in Hz&lt;br /&gt;
*: example:   setFrequency 7056000&lt;br /&gt;
** '''setMode''' '''''mode'''''&lt;br /&gt;
*: '''''mode''''' is an integer specifying the type of demodulation &lt;br /&gt;
*** 0 - LSB&lt;br /&gt;
*** 1 – USB&lt;br /&gt;
*** 2 – DSB&lt;br /&gt;
*** 3 – CWL&lt;br /&gt;
*** 4 – CWH&lt;br /&gt;
*** 5 – FM&lt;br /&gt;
*** 6 – AM&lt;br /&gt;
*** 7 - DIGU&lt;br /&gt;
*** 8 - SPEC&lt;br /&gt;
*** 9 - DIGL&lt;br /&gt;
*** 10 - SAM&lt;br /&gt;
*** 11 – DRM&lt;br /&gt;
*:example: setMode 0&lt;br /&gt;
** '''setFilter''' '''''low''''' '''''high'''''&lt;br /&gt;
*: Set filter cutoff frequencies&lt;br /&gt;
*: For LSB, both frequencies are negative&lt;br /&gt;
*: For USB, both frequencies are positive&lt;br /&gt;
*: For AM or DSP, typically '''low''' is negative and '''high''' is positive&lt;br /&gt;
*: example:  setFilter 150 3450&lt;br /&gt;
** '''setAGC''' '''''n'''''&lt;br /&gt;
*: Select AGC time&lt;br /&gt;
*** 1 - LONG&lt;br /&gt;
*** 2 - SLOW&lt;br /&gt;
*** 3 - MEDIUM&lt;br /&gt;
*** 4 - FAST&lt;br /&gt;
*: example:  setAGC 3&lt;br /&gt;
** '''setNR''' '''''n'''''&lt;br /&gt;
*: Set noise reduction&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setNB''' '''''n'''''&lt;br /&gt;
*: Set noise blanker&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setANF''' '''''n'''''&lt;br /&gt;
*: Set automatic noise filter&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setRXOutputGain''' '''''gain'''''&lt;br /&gt;
*: Set receiver audio output level to the value '''''gain'''''&lt;br /&gt;
*: The value is a floating point number in the range 0 to 1.&lt;br /&gt;
*: example:  setRXOutputGain 0.5&lt;br /&gt;
** '''startAudioStream''' '''''buffer size'''''&lt;br /&gt;
*: start sending audio data.  &lt;br /&gt;
*: '''''buffer size''''' is optional, and is an integer, typically 480.&lt;br /&gt;
*: If omitted, a value of 480 is used.&lt;br /&gt;
** '''stopAudioStream'''&lt;br /&gt;
*: stop sending the audio data.&lt;br /&gt;
&lt;br /&gt;
'''data packet format'''&lt;br /&gt;
Each packet has a 48 byte header.  &lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt; Byte &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; Function &amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Packet type: 0=spectrum data; 1=audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 1-31&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Reserved&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 32-39&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Sample rate&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 40-47&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Meter reading&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 48-end&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; spectrum or audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample rate and Meter reading numbers are in ASCII characters.&lt;br /&gt;
&lt;br /&gt;
Audio data is sent as one channel of 8-bit aLaw samples at 8000 samples per second.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===dspserver command line options ('''''default value''''')===&lt;br /&gt;
* --soundcard SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY, &lt;br /&gt;
*:                DELTA_44, FIREBOX, EDIROL_FA_66, '''''HPSDR'''''&lt;br /&gt;
* --receiver '''''0''''', 1, 2, or 3&lt;br /&gt;
* --server IP address '''''127.0.0.1''''' (this is &amp;quot;localhost&amp;quot;)&lt;br /&gt;
* --offset ???&lt;br /&gt;
&lt;br /&gt;
==summary of port usage==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt; sender    &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; type &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; port         &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; purpose &amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 11000        &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; connection request to server&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 12000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; commands to server &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; server    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 12000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; responses to commands&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; server    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; UDP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 13000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; I &amp;amp; Q data to dspserver&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; UDP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 15000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; demodulated audio to server for Mercury headphone/speaker output&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 8000 + rx    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; spectrum &amp;amp; alaw-encoded audio to monitor&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; monitor   &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 8000 + rx    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; commands to dspserver&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3620</id>
		<title>Ghpsdr3 protocols</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3620"/>
				<updated>2010-08-12T23:32:09Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: added more detailed description of server's responses to commands sent to it&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''server''' HPSDR hardware server ==&lt;br /&gt;
The HPSDR server handles communications with the HPSDR hardware and is designed to work with multiple receivers either on a single Mercury card or multiple Mercury cards. It demultiplexes the I/Q samples into separate streams for each receiver.&lt;br /&gt;
The hardware server listens on port 11000 for TCP connections from clients. The client (dspserver) makes a connection request through port 11000, and sets up a TCP socket on on port 12000+'''''rx''''', on which it sends commands to the server.  IQ data is sent over UDP.&lt;br /&gt;
&lt;br /&gt;
===Commands to server===&lt;br /&gt;
The server recognizes a number of commands, shown below.  It sends a response to the client after parsing each command.  The possible responses are also shown.&lt;br /&gt;
&lt;br /&gt;
** '''attach''' '''''rx'''''&lt;br /&gt;
*: attach client to receiver '''''rx'''''&lt;br /&gt;
*: The receiver number ''rx'' is an integer from 0 to 3&lt;br /&gt;
*: example:  attach 0&lt;br /&gt;
*: response: &lt;br /&gt;
*: &amp;quot;Error: Client is already attached to receiver&amp;quot; (Receiver ''rx'' is already attached.)&lt;br /&gt;
*: &amp;quot;Error: Invalid Receiver&amp;quot;   (''rx'' is higher than number of receivers specified on the command line.)&lt;br /&gt;
*: &amp;quot;Error: Receiver in use&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot; &amp;lt;sample Rate&amp;gt;&lt;br /&gt;
** '''detach''' '''''rx'''''&lt;br /&gt;
*: detach client from receiver '''''rx'''''&lt;br /&gt;
*: example:  detach 0&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Client is not attached to receiver&amp;quot;&lt;br /&gt;
*: &amp;quot;Error: Invalid Receiver&amp;quot;   (''rx'' is higher than number of receivers specified on the command line.)&lt;br /&gt;
*: &amp;quot;Error: Not owner of receiver&amp;quot;&lt;br /&gt;
** '''frequency''' '''''f'''''&lt;br /&gt;
*: Set attached receiver frequency to the integer frequency '''''f''''' (Hz)&lt;br /&gt;
*: example:  frequency 7056000&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Client is not attached to receiver&amp;quot;&lt;br /&gt;
*: &amp;quot;Error: Invalid Receiver&amp;quot;   (''rx'' is higher than number of receivers specified on the command line.)&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
** '''start iq''' '''''port'''''&lt;br /&gt;
*: start sending I &amp;amp; Q samples for the attached receiver to the UDP '''''port''''' specified&lt;br /&gt;
*: example:   start iq 13000&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Invalid Command&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
** '''start bandscope''' '''''port'''''&lt;br /&gt;
*: start sending bandscope samples to the UDP '''''port''''' specified&lt;br /&gt;
*: example start bandscope 12500&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Invalid Command&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
** '''stop iq'''&lt;br /&gt;
*: stop sending I &amp;amp; Q data to the attached receiver&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Invalid Command&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
** '''stop bandscope'''&lt;br /&gt;
*: stop sending bandscope data&lt;br /&gt;
*: response:&lt;br /&gt;
*: &amp;quot;Error: Invalid Command&amp;quot;&lt;br /&gt;
*: &amp;quot;OK&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A typical exchange would be:&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Client&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Server&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;attach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK 96000&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;start iq 13000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056100&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;stop iq&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;detach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===I / Q data stream===&lt;br /&gt;
The I/Q samples are accumulated in the server until there are 1024 I/Q samples to send. The samples are sent in 512 byte UDP packets, to the port specified in the 'start iq' message, with 12 byte header and up to 500 bytes of I/Q samples.&lt;br /&gt;
&lt;br /&gt;
The UDP packet header contains:&lt;br /&gt;
*8 byte sequence number&lt;br /&gt;
*2 byte offset within this set of samples&lt;br /&gt;
*2 byte length of samples&lt;br /&gt;
&lt;br /&gt;
Note that there are currently no commands to control setting the number of receivers, preamp, dither, random, samplerate or clock sources. As this was developed to support multiple receivers, I decided to not allow clients to change these as they would be changed for all receivers. They are all&lt;br /&gt;
controlled by command line arguments when running the server.&lt;br /&gt;
&lt;br /&gt;
===server command line options ('''''default value''''')===&lt;br /&gt;
* --receivers &amp;lt;'''''1'''''..4&amp;gt;&lt;br /&gt;
* --samplerate [48000|'''''96000'''''|192000]&lt;br /&gt;
* --dither ['''''off'''''|on]&lt;br /&gt;
* --random ['''''off'''''|on]&lt;br /&gt;
* --preamp ['''''off'''''|on]&lt;br /&gt;
* --10mhzsource [atlas|penelope|'''''mercury''''']&lt;br /&gt;
* --122.88mhzsource [penelope|'''''mercury''''']&lt;br /&gt;
* --micsource [janus|'''''penelope''''']&lt;br /&gt;
* --class [E|'''''other''''']&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
./server --receivers 4 --samplerate 96000 --dither on --10mhzsource atlas&lt;br /&gt;
&lt;br /&gt;
'''Note:'''&lt;br /&gt;
As an experiment, there is also a softrockserver that supports the same protocol with the restriction that there is only one receiver and it uses the USB/si570 interface to control the frequency. The I/Q samples are taken from an Audio device specified on the command line.&lt;br /&gt;
&lt;br /&gt;
==dspserver==&lt;br /&gt;
'''dspserver''' is a client to the hardware server. In turn, it is the server for another client, typically a GUI, such as jmonitor.  It provides a dsp processing service using DttSP. Typically one dspserver is started for each receiver. The dspserver listens for client TCP connections on port 8000+rx. i.e. rx0 listens on 8000, rx1 listens on 8001, etc. The client sends commands to the dspserver and dspserver sends data packets to its client on this same port.  The first byte of each packet sent to the client identifies the type of data in the packet.&lt;br /&gt;
*0 spectrum data&lt;br /&gt;
*1 audio data&lt;br /&gt;
&lt;br /&gt;
===Commands to dspserver===&lt;br /&gt;
** '''getSpectrum''' '''''points'''''&lt;br /&gt;
*: Request '''''points''''' of spectrum data.  The value sent for each point is an 8 bit unsigned integer.  If the calculated spectrum contains more points than the client requests, adjacent points are combined, and the highest value in the group is sent.  &lt;br /&gt;
*:Example:  getSpectrum 480&lt;br /&gt;
** '''setFrequency''' '''''f'''''&lt;br /&gt;
*: Set the receiver frequency to '''''f''''', in Hz&lt;br /&gt;
*: example:   setFrequency 7056000&lt;br /&gt;
** '''setMode''' '''''mode'''''&lt;br /&gt;
*: '''''mode''''' is an integer specifying the type of demodulation &lt;br /&gt;
*** 0 - LSB&lt;br /&gt;
*** 1 – USB&lt;br /&gt;
*** 2 – DSB&lt;br /&gt;
*** 3 – CWL&lt;br /&gt;
*** 4 – CWH&lt;br /&gt;
*** 5 – FM&lt;br /&gt;
*** 6 – AM&lt;br /&gt;
*** 7 - DIGU&lt;br /&gt;
*** 8 - SPEC&lt;br /&gt;
*** 9 - DIGL&lt;br /&gt;
*** 10 - SAM&lt;br /&gt;
*** 11 – DRM&lt;br /&gt;
*:example: setMode 0&lt;br /&gt;
** '''setFilter''' '''''low''''' '''''high'''''&lt;br /&gt;
*: Set filter cutoff frequencies&lt;br /&gt;
*: For LSB, both frequencies are negative&lt;br /&gt;
*: For USB, both frequencies are positive&lt;br /&gt;
*: For AM or DSP, typically '''low''' is negative and '''high''' is positive&lt;br /&gt;
*: example:  setFilter 150 3450&lt;br /&gt;
** '''setAGC''' '''''n'''''&lt;br /&gt;
*: Select AGC time&lt;br /&gt;
*** 1 - LONG&lt;br /&gt;
*** 2 - SLOW&lt;br /&gt;
*** 3 - MEDIUM&lt;br /&gt;
*** 4 - FAST&lt;br /&gt;
*: example:  setAGC 3&lt;br /&gt;
** '''setNR''' '''''n'''''&lt;br /&gt;
*: Set noise reduction&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setNB''' '''''n'''''&lt;br /&gt;
*: Set noise blanker&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setANF''' '''''n'''''&lt;br /&gt;
*: Set automatic noise filter&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setRXOutputGain''' '''''gain'''''&lt;br /&gt;
*: Set receiver audio output level to the value '''''gain'''''&lt;br /&gt;
*: The value is a floating point number in the range 0 to 1.&lt;br /&gt;
*: example:  setRXOutputGain 0.5&lt;br /&gt;
** '''startAudioStream''' '''''buffer size'''''&lt;br /&gt;
*: start sending audio data.  &lt;br /&gt;
*: '''''buffer size''''' is optional, and is an integer, typically 480.&lt;br /&gt;
*: If omitted, a value of 480 is used.&lt;br /&gt;
** '''stopAudioStream'''&lt;br /&gt;
*: stop sending the audio data.&lt;br /&gt;
&lt;br /&gt;
'''data packet format'''&lt;br /&gt;
Each packet has a 48 byte header.  &lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt; Byte &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; Function &amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Packet type: 0=spectrum data; 1=audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 1-31&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Reserved&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 32-39&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Sample rate&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 40-47&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Meter reading&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 48-end&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; spectrum or audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample rate and Meter reading numbers are in ASCII characters.&lt;br /&gt;
&lt;br /&gt;
Audio data is sent as one channel of 8-bit aLaw samples at 8000 samples per second.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===dspserver command line options ('''''default value''''')===&lt;br /&gt;
* --soundcard SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY, &lt;br /&gt;
*:                DELTA_44, FIREBOX, EDIROL_FA_66, '''''HPSDR'''''&lt;br /&gt;
* --receiver '''''0''''', 1, 2, or 3&lt;br /&gt;
* --server IP address '''''127.0.0.1''''' (this is &amp;quot;localhost&amp;quot;)&lt;br /&gt;
* --offset ???&lt;br /&gt;
&lt;br /&gt;
==summary of port usage==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt; sender    &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; type &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; port         &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; purpose &amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 11000        &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; connection request to server&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 12000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; commands to server &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; server    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 12000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; responses to commands&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; server    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; UDP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 13000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; I &amp;amp; Q data to dspserver&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; UDP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 15000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; demodulated audio to server for Mercury headphone/speaker output&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 8000 + rx    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; spectrum &amp;amp; alaw-encoded audio to monitor&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; monitor   &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 8000 + rx    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; commands to dspserver&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&amp;diff=3619</id>
		<title>Ghpsdr3</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&amp;diff=3619"/>
				<updated>2010-08-12T06:16:19Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: added link to protocol description with more detail&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Server/Client version of ghpsdr===&lt;br /&gt;
[[Image:ghpsdr4.png|thumb|400px|right|Screenshot of the ghpsdr3 GUI on 20 meters. (Click to enlarge)]]&lt;br /&gt;
[[Image:Screenshot-JMonitor - Mozilla Firefox.png|thumb|400px|right|Screenshot of the java in a web browser GUI on 40 meters. (Click to enlarge)]]&lt;br /&gt;
'''ghpsdr3''' is a software defined radio server/client or server/dspserver/client format program written specifically for HPSDR by John Melton, G0ORX/N6LYT. &lt;br /&gt;
&lt;br /&gt;
The software is being developed on the Ubuntu version of Linux (specifically version 9.10).&lt;br /&gt;
The server and dspserver have been ported to run on Windows--&lt;br /&gt;
* [[How to set up on Windows]]&lt;br /&gt;
&lt;br /&gt;
This version of '''ghpsdr3''' allows for the server and client to be on the same machine or separate machines. The servers are written in C and run on linux machines. John and others are working on a full set of clients to run on multiple machines connecting to the servers through TCP/IP protocals.&lt;br /&gt;
&lt;br /&gt;
To follow the development of this code look at John's Blog http://g0orx.blogspot.com/&lt;br /&gt;
&lt;br /&gt;
===SVN===&lt;br /&gt;
The software is available from SVN and includes a precompiled executable in the bin directory.  There are now a compiled version of the 64-bit linux version, 32-bit linux version and the MacOS version.  The README explains how to compile the source if you wish to modify the code.&lt;br /&gt;
&lt;br /&gt;
Since this code does not currently run on Windows here is the Linux svn command,&lt;br /&gt;
&lt;br /&gt;
  svn co svn://64.245.179.219/svn/repos_sdr_hpsdr/trunk/N6LYT/ghpsdr3&lt;br /&gt;
&lt;br /&gt;
===Libraries===&lt;br /&gt;
It uses a modifed version of DttSP that is ported from the Windows version. DttSP is built as a static library that is linked with the GUI code.  The DttSP code is provided with the SVN distribution.&lt;br /&gt;
&lt;br /&gt;
You will need a couple of libraries to run this code, they include:&lt;br /&gt;
* '''libfftw3''' - FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST).&lt;br /&gt;
* '''libgtk2''' - GTK+ is a highly usable, feature rich toolkit for creating graphical user interfaces which boasts cross platform compatibility and an easy to use API.&lt;br /&gt;
* '''libusb-1.0''' - libusb is an open source library that allows you to communicate with USB devices from userspace.&lt;br /&gt;
These can be obtain with your package installer.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
[[Image:ghpsdr3.png|thumb|400px|right|Architecture of the server/dspserver/client configuration. (Click to enlarge)]]&lt;br /&gt;
The image illustrates the architecture of the ghpsdr3 software chain.  The software works with either the single receiver verilog code (Mercury 2.9) or the multiple receiver verilog code or (Mercury 3.0 experimental).  If Mercury 2.9 is install only one receiver can be accessed.  (Please not that there is a matching ozyfw-sdr1k.hex and Ozy_Janus.rbf file to go with the different versions of the Mercury code).&lt;br /&gt;
&lt;br /&gt;
'''HPSDR''' box represented the hardware and the Mercury/Ozy,Penelope, Mercury/Magister,Penelope, or Mercury/OzyII,Penelope &lt;br /&gt;
&lt;br /&gt;
'''Link between HPSDR and Server''' uses the communication protocol documented in USB Protocol v1.27 at the link on this page or in the SVN in the Documentation directory.&lt;br /&gt;
&lt;br /&gt;
'''Server''' box is a software multiplexer.  It takes the multiple receiver communication protocol and divides it in to single receiver channels.  &lt;br /&gt;
&lt;br /&gt;
'''Link between Server and Receiver clients''' output is the same IQ signal format as the single receiver USB format except the data is sent over UDP link.  The commands are handled as TCP protocol format to allow acknowledgement of the command. &lt;br /&gt;
&lt;br /&gt;
'''Receiver Clients''' can be in many forms and it was designed to foster experimentation.  The first client is the same interface used in '''ghpsdr'''.  The second interface is a simple waterfall called '''monitor''' used to keep track of activity on other bands.  Both of these programs the DSP code in in the GUI program.  These programs usually will be with a short distance of the server as the bandwidth is quite large for most home network connections.&lt;br /&gt;
&lt;br /&gt;
In an effort to demonstrate world wide access to your receiver a third approach was developed.  In this method the receiver client is a '''dspserver''' that take the output of the '''server''' and creates a low bandwidth version of the spectrum in 8 bit data, the audio data 8-bit ALAW audio format at only 480 sample size at 10 times a second.  The '''dspserver''' also accepts commands from the client.  To run multiple low bandwidth clients you must run a separate copy of '''dspserver''' for each client.  &lt;br /&gt;
&lt;br /&gt;
The base code for the current '''jmonitor''' is written in java.  It can be run as a program on a computer or within a webbrowser.  This code has also been ported to the iphone and Android platforms so that you can monitor your radios on the go.  At the 2010 Dayton Hamvention, John Melton monitored his receiver in England from the TAPR booth on the Hamvention floor.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
Links to other pages:&lt;br /&gt;
&lt;br /&gt;
* [[ghpsdr3 FAQ|Frequently Asked Questions]]&lt;br /&gt;
* [http://www.tapr.org/pdf/2010-G0ORX-N6LYT-Putting-HPSDR-on-Internet.pdf John Melton's 2010 Dayton presentation on ghpsdr3]&lt;br /&gt;
* [[Media:ghpsdr3-protocols2010-08-07.pdf|ghpsdr3 communication protocols 2010-08-07]]&lt;br /&gt;
* [[Ghpsdr3 protocols|updated protocol description]]&lt;br /&gt;
* [http://www.n9vv.com/N6LYT-Online-Mercury-Receiver.pdf Ken Hoppers N9VV online documentation of the online multi-receiver setup.]&lt;br /&gt;
* [[How to set up on Windows]]&lt;br /&gt;
* Features List [[ghpsdr3 Requests|requests]]&lt;br /&gt;
* Programmers Notes&lt;br /&gt;
* - [[ghpsdr3 Ports|Ports]]&lt;br /&gt;
* Known [[ghpsdr3 Bugs|bugs]]&lt;br /&gt;
&lt;br /&gt;
[[Category:ghpsdr3| ]]&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3618</id>
		<title>Ghpsdr3 protocols</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3618"/>
				<updated>2010-08-12T06:05:36Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''server''' HPSDR hardware server ==&lt;br /&gt;
The HPSDR server handles communications with the HPSDR hardware and is designed to work with multiple receivers either on a single Mercury card or multiple Mercury cards. It demultiplexes the I/Q samples into separate streams for each receiver.&lt;br /&gt;
The hardware server listens on port 11000 for TCP connections from clients. The client (dspserver) makes a connection request through port 11000, and sets up a TCP socket on on port 12000+'''''rx''''', on which it sends commands to the server.  IQ data is sent over UDP.&lt;br /&gt;
&lt;br /&gt;
===Commands to server===&lt;br /&gt;
** '''attach''' '''''rx'''''&lt;br /&gt;
*: attach client to receiver '''''rx'''''&lt;br /&gt;
*: The receiver number ''rx'' is an integer from 0 to 3&lt;br /&gt;
*: example:  attach 0&lt;br /&gt;
** '''detach''' '''''rx'''''&lt;br /&gt;
*: detach client from receiver '''''rx'''''&lt;br /&gt;
*: example:  detach 0&lt;br /&gt;
** '''frequency''' '''''f'''''&lt;br /&gt;
*: Set attached receiver frequency to the integer frequency '''''f''''' (Hz)&lt;br /&gt;
*: example:  frequency 7056000&lt;br /&gt;
** '''start iq''' '''''port'''''&lt;br /&gt;
*: start sending I &amp;amp; Q samples for the attached receiver to the UDP '''''port''''' specified&lt;br /&gt;
*: example:   start iq 13000&lt;br /&gt;
** '''start bandscope''' '''''port'''''&lt;br /&gt;
*: start sending bandscope samples to the UDP '''''port''''' specified&lt;br /&gt;
*: example start bandscope 12500&lt;br /&gt;
** '''stop iq'''&lt;br /&gt;
*: stop sending I &amp;amp; Q data to the attached receiver&lt;br /&gt;
** '''stop bandscope'''&lt;br /&gt;
*: stop sending bandscope data&lt;br /&gt;
&lt;br /&gt;
The server sends a response to the client after parsing each command.&lt;br /&gt;
The response is either '''OK''' or '''ERROR'''.  Some responses include a short message:  The response to an '''attach''' command includes the current sample rate.  &lt;br /&gt;
&lt;br /&gt;
A typical exchange would be:&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Client&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Server&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;attach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK 96000&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;start iq 13000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056100&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;stop iq&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;detach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The I/Q samples are accumulated in the server until there are 1024 I/Q samples to send. The samples are sent in 512 byte UDP packets, to the port specified in the 'start iq' message, with 12 byte header and up to 500 bytes of I/Q samples.&lt;br /&gt;
&lt;br /&gt;
The UDP packet header contains:&lt;br /&gt;
*8 byte sequence number&lt;br /&gt;
*2 byte offset within this set of samples&lt;br /&gt;
*2 byte length of samples&lt;br /&gt;
&lt;br /&gt;
Note that there are currently no commands to control setting the number of receivers, preamp, dither, random, samplerate or clock sources. As this was developed to support multiple receivers, I decided to not allow clients to change these as they would be changed for all receivers. They are all&lt;br /&gt;
controlled by command line arguments when running the server.&lt;br /&gt;
&lt;br /&gt;
===server command line options ('''''default value''''')===&lt;br /&gt;
* --receivers &amp;lt;'''''1'''''..4&amp;gt;&lt;br /&gt;
* --samplerate [48000|'''''96000'''''|192000]&lt;br /&gt;
* --dither ['''''off'''''|on]&lt;br /&gt;
* --random ['''''off'''''|on]&lt;br /&gt;
* --preamp ['''''off'''''|on]&lt;br /&gt;
* --10mhzsource [atlas|penelope|'''''mercury''''']&lt;br /&gt;
* --122.88mhzsource [penelope|'''''mercury''''']&lt;br /&gt;
* --micsource [janus|'''''penelope''''']&lt;br /&gt;
* --class [E|'''''other''''']&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
./server --receivers 4 --samplerate 96000 --dither on --10mhzsource atlas&lt;br /&gt;
&lt;br /&gt;
'''Note:'''&lt;br /&gt;
As an experiment, there is also a softrockserver that supports the same protocol with the restriction that there is only one receiver and it uses the USB/si570 interface to control the frequency. The I/Q samples are taken from an Audio device specified on the command line.&lt;br /&gt;
&lt;br /&gt;
==dspserver==&lt;br /&gt;
'''dspserver''' is a client to the hardware server. In turn, it is the server for another client, typically a GUI, such as jmonitor.  It provides a dsp processing service using DttSP. Typically one dspserver is started for each receiver. The dspserver listens for client TCP connections on port 8000+rx. i.e. rx0 listens on 8000, rx1 listens on 8001, etc. The client sends commands to the dspserver and dspserver sends data packets to its client on this same port.  The first byte of each packet sent to the client identifies the type of data in the packet.&lt;br /&gt;
*0 spectrum data&lt;br /&gt;
*1 audio data&lt;br /&gt;
&lt;br /&gt;
===Commands to dspserver===&lt;br /&gt;
** '''getSpectrum''' '''''points'''''&lt;br /&gt;
*: Request '''''points''''' of spectrum data.  The value sent for each point is an 8 bit unsigned integer.  If the calculated spectrum contains more points than the client requests, adjacent points are combined, and the highest value in the group is sent.  &lt;br /&gt;
*:Example:  getSpectrum 480&lt;br /&gt;
** '''setFrequency''' '''''f'''''&lt;br /&gt;
*: Set the receiver frequency to '''''f''''', in Hz&lt;br /&gt;
*: example:   setFrequency 7056000&lt;br /&gt;
** '''setMode''' '''''mode'''''&lt;br /&gt;
*: '''''mode''''' is an integer specifying the type of demodulation &lt;br /&gt;
*** 0 - LSB&lt;br /&gt;
*** 1 – USB&lt;br /&gt;
*** 2 – DSB&lt;br /&gt;
*** 3 – CWL&lt;br /&gt;
*** 4 – CWH&lt;br /&gt;
*** 5 – FM&lt;br /&gt;
*** 6 – AM&lt;br /&gt;
*** 7 - DIGU&lt;br /&gt;
*** 8 - SPEC&lt;br /&gt;
*** 9 - DIGL&lt;br /&gt;
*** 10 - SAM&lt;br /&gt;
*** 11 – DRM&lt;br /&gt;
*:example: setMode 0&lt;br /&gt;
** '''setFilter''' '''''low''''' '''''high'''''&lt;br /&gt;
*: Set filter cutoff frequencies&lt;br /&gt;
*: For LSB, both frequencies are negative&lt;br /&gt;
*: For USB, both frequencies are positive&lt;br /&gt;
*: For AM or DSP, typically '''low''' is negative and '''high''' is positive&lt;br /&gt;
*: example:  setFilter 150 3450&lt;br /&gt;
** '''setAGC''' '''''n'''''&lt;br /&gt;
*: Select AGC time&lt;br /&gt;
*** 1 - LONG&lt;br /&gt;
*** 2 - SLOW&lt;br /&gt;
*** 3 - MEDIUM&lt;br /&gt;
*** 4 - FAST&lt;br /&gt;
*: example:  setAGC 3&lt;br /&gt;
** '''setNR''' '''''n'''''&lt;br /&gt;
*: Set noise reduction&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setNB''' '''''n'''''&lt;br /&gt;
*: Set noise blanker&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setANF''' '''''n'''''&lt;br /&gt;
*: Set automatic noise filter&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setRXOutputGain''' '''''gain'''''&lt;br /&gt;
*: Set receiver audio output level to the value '''''gain'''''&lt;br /&gt;
*: The value is a floating point number in the range 0 to 1.&lt;br /&gt;
*: example:  setRXOutputGain 0.5&lt;br /&gt;
** '''startAudioStream''' '''''buffer size'''''&lt;br /&gt;
*: start sending audio data.  &lt;br /&gt;
*: '''''buffer size''''' is optional, and is an integer, typically 480.&lt;br /&gt;
*: If omitted, a value of 480 is used.&lt;br /&gt;
** '''stopAudioStream'''&lt;br /&gt;
*: stop sending the audio data.&lt;br /&gt;
&lt;br /&gt;
'''data packet format'''&lt;br /&gt;
Each packet has a 48 byte header.  &lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt; Byte &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; Function &amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Packet type: 0=spectrum data; 1=audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 1-31&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Reserved&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 32-39&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Sample rate&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 40-47&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Meter reading&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 48-end&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; spectrum or audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample rate and Meter reading numbers are in ASCII characters.&lt;br /&gt;
&lt;br /&gt;
Audio data is sent as one channel of 8-bit aLaw samples at 8000 samples per second.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===dspserver command line options ('''''default value''''')===&lt;br /&gt;
* --soundcard SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY, &lt;br /&gt;
*:                DELTA_44, FIREBOX, EDIROL_FA_66, '''''HPSDR'''''&lt;br /&gt;
* --receiver '''''0''''', 1, 2, or 3&lt;br /&gt;
* --server IP address '''''127.0.0.1''''' (this is &amp;quot;localhost&amp;quot;)&lt;br /&gt;
* --offset ???&lt;br /&gt;
&lt;br /&gt;
==summary of port usage==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt; sender    &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; type &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; port         &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; purpose &amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 11000        &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; connection request to server&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 12000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; commands to server &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; server    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 12000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; responses to commands&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; server    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; UDP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 13000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; I &amp;amp; Q data to dspserver&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; UDP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 15000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; demodulated audio to server for Mercury headphone/speaker output&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 8000 + rx    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; spectrum &amp;amp; alaw-encoded audio to monitor&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; monitor   &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 8000 + rx    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; commands to dspserver&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3617</id>
		<title>Ghpsdr3 protocols</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3617"/>
				<updated>2010-08-12T06:01:29Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: added port summary table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''server''' HPSDR hardware server ==&lt;br /&gt;
The HPSDR server handles communications with the HPSDR hardware and is designed to work with multiple receivers either on a single Mercury card or multiple Mercury cards. It demultiplexes the I/Q samples into separate streams for each receiver.&lt;br /&gt;
The hardware server listens on port 11000 for TCP connections from clients. The client (dspserver) makes a connection request through port 11000, and sets up a TCP socket on on port 12000+'''''rx''''', on which it sends commands to the server.  IQ data is sent over UDP.&lt;br /&gt;
&lt;br /&gt;
* ''' Commands to server '''&lt;br /&gt;
** '''attach''' '''''rx'''''&lt;br /&gt;
*: attach client to receiver '''''rx'''''&lt;br /&gt;
*: The receiver number ''rx'' is an integer from 0 to 3&lt;br /&gt;
*: example:  attach 0&lt;br /&gt;
** '''detach''' '''''rx'''''&lt;br /&gt;
*: detach client from receiver '''''rx'''''&lt;br /&gt;
*: example:  detach 0&lt;br /&gt;
** '''frequency''' '''''f'''''&lt;br /&gt;
*: Set attached receiver frequency to the integer frequency '''''f''''' (Hz)&lt;br /&gt;
*: example:  frequency 7056000&lt;br /&gt;
** '''start iq''' '''''port'''''&lt;br /&gt;
*: start sending I &amp;amp; Q samples for the attached receiver to the UDP '''''port''''' specified&lt;br /&gt;
*: example:   start iq 13000&lt;br /&gt;
** '''start bandscope''' '''''port'''''&lt;br /&gt;
*: start sending bandscope samples to the UDP '''''port''''' specified&lt;br /&gt;
*: example start bandscope 12500&lt;br /&gt;
** '''stop iq'''&lt;br /&gt;
*: stop sending I &amp;amp; Q data to the attached receiver&lt;br /&gt;
** '''stop bandscope'''&lt;br /&gt;
*: stop sending bandscope data&lt;br /&gt;
&lt;br /&gt;
The server sends a response to the client after parsing each command.&lt;br /&gt;
The response is either '''OK''' or '''ERROR'''.  Some responses include a short message:  The response to an '''attach''' command includes the current sample rate.  &lt;br /&gt;
&lt;br /&gt;
A typical exchange would be:&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Client&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Server&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;attach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK 96000&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;start iq 13000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056100&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;stop iq&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;detach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The I/Q samples are accumulated in the server until there are 1024 I/Q samples to send. The samples are sent in 512 byte UDP packets, to the port specified in the 'start iq' message, with 12 byte header and up to 500 bytes of I/Q samples.&lt;br /&gt;
&lt;br /&gt;
The UDP packet header contains:&lt;br /&gt;
*8 byte sequence number&lt;br /&gt;
*2 byte offset within this set of samples&lt;br /&gt;
*2 byte length of samples&lt;br /&gt;
&lt;br /&gt;
Note that there are currently no commands to control setting the number of receivers, preamp, dither, random, samplerate or clock sources. As this was developed to support multiple receivers, I decided to not allow clients to change these as they would be changed for all receivers. They are all&lt;br /&gt;
controlled by command line arguments when running the server.&lt;br /&gt;
&lt;br /&gt;
===server command line options ('''''default value''''')===&lt;br /&gt;
* --receivers &amp;lt;'''''1'''''..4&amp;gt;&lt;br /&gt;
* --samplerate [48000|'''''96000'''''|192000]&lt;br /&gt;
* --dither ['''''off'''''|on]&lt;br /&gt;
* --random ['''''off'''''|on]&lt;br /&gt;
* --preamp ['''''off'''''|on]&lt;br /&gt;
* --10mhzsource [atlas|penelope|'''''mercury''''']&lt;br /&gt;
* --122.88mhzsource [penelope|'''''mercury''''']&lt;br /&gt;
* --micsource [janus|'''''penelope''''']&lt;br /&gt;
* --class [E|'''''other''''']&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
./server --receivers 4 --samplerate 96000 --dither on --10mhzsource atlas&lt;br /&gt;
&lt;br /&gt;
'''Note:'''&lt;br /&gt;
As an experiment, there is also a softrockserver that supports the same protocol with the restriction that there is only one receiver and it uses the USB/si570 interface to control the frequency. The I/Q samples are taken from an Audio device specified on the command line.&lt;br /&gt;
&lt;br /&gt;
==dspserver==&lt;br /&gt;
'''dspserver''' is a client to the hardware server. In turn, it is the server for another client, typically a GUI, such as jmonitor.  It provides a dsp processing service using DttSP. Typically one dspserver is started for each receiver. The dspserver listens for client TCP connections on port 8000+rx. i.e. rx0 listens on 8000, rx1 listens on 8001, etc. The client sends commands to the dspserver and dspserver sends data packets to its client on this same port.  The first byte of each packet sent to the client identifies the type of data in the packet.&lt;br /&gt;
*0 spectrum data&lt;br /&gt;
*1 audio data&lt;br /&gt;
&lt;br /&gt;
* ''' Commands to dspserver '''&lt;br /&gt;
** '''getSpectrum''' '''''points'''''&lt;br /&gt;
*: Request '''''points''''' of spectrum data.  The value sent for each point is an 8 bit unsigned integer.  If the calculated spectrum contains more points than the client requests, adjacent points are combined, and the highest value in the group is sent.  &lt;br /&gt;
*:Example:  getSpectrum 480&lt;br /&gt;
** '''setFrequency''' '''''f'''''&lt;br /&gt;
*: Set the receiver frequency to '''''f''''', in Hz&lt;br /&gt;
*: example:   setFrequency 7056000&lt;br /&gt;
** '''setMode''' '''''mode'''''&lt;br /&gt;
*: '''''mode''''' is an integer specifying the type of demodulation &lt;br /&gt;
*** 0 - LSB&lt;br /&gt;
*** 1 – USB&lt;br /&gt;
*** 2 – DSB&lt;br /&gt;
*** 3 – CWL&lt;br /&gt;
*** 4 – CWH&lt;br /&gt;
*** 5 – FM&lt;br /&gt;
*** 6 – AM&lt;br /&gt;
*** 7 - DIGU&lt;br /&gt;
*** 8 - SPEC&lt;br /&gt;
*** 9 - DIGL&lt;br /&gt;
*** 10 - SAM&lt;br /&gt;
*** 11 – DRM&lt;br /&gt;
*:example: setMode 0&lt;br /&gt;
** '''setFilter''' '''''low''''' '''''high'''''&lt;br /&gt;
*: Set filter cutoff frequencies&lt;br /&gt;
*: For LSB, both frequencies are negative&lt;br /&gt;
*: For USB, both frequencies are positive&lt;br /&gt;
*: For AM or DSP, typically '''low''' is negative and '''high''' is positive&lt;br /&gt;
*: example:  setFilter 150 3450&lt;br /&gt;
** '''setAGC''' '''''n'''''&lt;br /&gt;
*: Select AGC time&lt;br /&gt;
*** 1 - LONG&lt;br /&gt;
*** 2 - SLOW&lt;br /&gt;
*** 3 - MEDIUM&lt;br /&gt;
*** 4 - FAST&lt;br /&gt;
*: example:  setAGC 3&lt;br /&gt;
** '''setNR''' '''''n'''''&lt;br /&gt;
*: Set noise reduction&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setNB''' '''''n'''''&lt;br /&gt;
*: Set noise blanker&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setANF''' '''''n'''''&lt;br /&gt;
*: Set automatic noise filter&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setRXOutputGain''' '''''gain'''''&lt;br /&gt;
*: Set receiver audio output level to the value '''''gain'''''&lt;br /&gt;
*: The value is a floating point number in the range 0 to 1.&lt;br /&gt;
*: example:  setRXOutputGain 0.5&lt;br /&gt;
** '''startAudioStream''' '''''buffer size'''''&lt;br /&gt;
*: start sending audio data.  &lt;br /&gt;
*: '''''buffer size''''' is optional, and is an integer, typically 480.&lt;br /&gt;
*: If omitted, a value of 480 is used.&lt;br /&gt;
** '''stopAudioStream'''&lt;br /&gt;
*: stop sending the audio data.&lt;br /&gt;
&lt;br /&gt;
'''data packet format'''&lt;br /&gt;
Each packet has a 48 byte header.  &lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt; Byte &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; Function &amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Packet type: 0=spectrum data; 1=audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 1-31&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Reserved&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 32-39&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Sample rate&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 40-47&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Meter reading&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 48-end&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; spectrum or audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sample rate and Meter reading numbers are in ASCII characters.&lt;br /&gt;
&lt;br /&gt;
Audio data is sent as one channel of 8-bit aLaw samples at 8000 samples per second.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===dspserver command line options ('''''default value''''')===&lt;br /&gt;
* --soundcard SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY, &lt;br /&gt;
*:                DELTA_44, FIREBOX, EDIROL_FA_66, '''''HPSDR'''''&lt;br /&gt;
* --receiver '''''0''''', 1, 2, or 3&lt;br /&gt;
* --server IP address '''''127.0.0.1''''' (this is &amp;quot;localhost&amp;quot;)&lt;br /&gt;
* --offset ???&lt;br /&gt;
&lt;br /&gt;
==summary of port usage==&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt; sender    &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; type &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; port         &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; purpose &amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 11000        &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; connection request to server&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 12000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; commands to server &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; server    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 12000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; responses to commands&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; server    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; UDP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 13000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; I &amp;amp; Q data to dspserver&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; UDP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 15000 + 2*rx &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; demodulated audio to server for Mercury headphone/speaker output&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; dspserver &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 8000 + rx    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; spectrum &amp;amp; alaw-encoded audio to monitor&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; monitor   &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; TCP  &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 8000 + rx    &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; commands to dspserver&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3616</id>
		<title>Ghpsdr3 protocols</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3616"/>
				<updated>2010-08-11T07:49:13Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: added dspserver command line options, and indication of default values for commands to server&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''server''' HPSDR hardware server ==&lt;br /&gt;
The HPSDR server handles communications with the HPSDR hardware and is designed to work with multiple receivers either on a single Mercury card or multiple Mercury cards. It demultiplexes the I/Q samples into separate streams for each receiver.&lt;br /&gt;
The hardware server listens on port 11000 for TCP connections from clients. The client sends commands to the server over a TCP connection on port 12000+'''''rx'''''. IQ data is sent over UDP.&lt;br /&gt;
&lt;br /&gt;
* ''' Commands to server '''&lt;br /&gt;
** '''attach''' '''''rx'''''&lt;br /&gt;
*: attach client to receiver '''''rx'''''&lt;br /&gt;
*: The receiver number ''rx'' is an integer from 0 to 3&lt;br /&gt;
*: example:  attach 0&lt;br /&gt;
** '''detach''' '''''rx'''''&lt;br /&gt;
*: detach client from receiver '''''rx'''''&lt;br /&gt;
*: example:  detach 0&lt;br /&gt;
** '''frequency''' '''''f'''''&lt;br /&gt;
*: Set attached receiver frequency to the integer frequency '''''f''''' (Hz)&lt;br /&gt;
*: example:  frequency 7056000&lt;br /&gt;
** '''start iq''' '''''port'''''&lt;br /&gt;
*: start sending I &amp;amp; Q samples for the attached receiver to the UDP '''''port''''' specified&lt;br /&gt;
*: example:   start iq 13000&lt;br /&gt;
** '''start bandscope''' '''''port'''''&lt;br /&gt;
*: start sending bandscope samples to the UDP '''''port''''' specified&lt;br /&gt;
*: example start bandscope 12500&lt;br /&gt;
** '''stop iq'''&lt;br /&gt;
*: stop sending I &amp;amp; Q data to the attached receiver&lt;br /&gt;
** '''stop bandscope'''&lt;br /&gt;
*: stop sending bandscope data&lt;br /&gt;
&lt;br /&gt;
The server sends a response to the client after parsing each command.&lt;br /&gt;
The response is either '''OK''' or '''ERROR'''.  Some responses include a short message:  The response to an '''attach''' command includes the current sample rate.  &lt;br /&gt;
&lt;br /&gt;
A typical exchange would be:&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Client&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Server&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;attach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK 96000&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;start iq 13000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056100&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;stop iq&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;detach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The I/Q samples are accumulated in the server until there are 1024 I/Q samples to send. The samples are sent in 512 byte UDP packets, to the port specified in the 'start iq' message, with 12 byte header and up to 500 bytes of I/Q samples.&lt;br /&gt;
&lt;br /&gt;
The UDP packet header contains:&lt;br /&gt;
*8 byte sequence number&lt;br /&gt;
*2 byte offset within this set of samples&lt;br /&gt;
*2 byte length of samples&lt;br /&gt;
&lt;br /&gt;
Note that there are currently no commands to control setting the number of receivers, preamp, dither, random, samplerate or clock sources. As this was developed to support multiple receivers, I decided to not allow clients to change these as they would be changed for all receivers. They are all&lt;br /&gt;
controlled by command line arguments when running the server.&lt;br /&gt;
&lt;br /&gt;
===server command line options ('''''default value''''')===&lt;br /&gt;
* --receivers &amp;lt;'''''1'''''..4&amp;gt;&lt;br /&gt;
* --samplerate [48000|'''''96000'''''|192000]&lt;br /&gt;
* --dither ['''''off'''''|on]&lt;br /&gt;
* --random ['''''off'''''|on]&lt;br /&gt;
* --preamp ['''''off'''''|on]&lt;br /&gt;
* --10mhzsource [atlas|penelope|'''''mercury''''']&lt;br /&gt;
* --122.88mhzsource [penelope|'''''mercury''''']&lt;br /&gt;
* --micsource [janus|'''''penelope''''']&lt;br /&gt;
* --class [E|'''''other''''']&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
./server --receivers 4 --samplerate 96000 --dither on --10mhzsource atlas&lt;br /&gt;
&lt;br /&gt;
'''Note:'''&lt;br /&gt;
As an experiment, there is also a softrockserver that supports the same protocol with the restriction that there is only one receiver and it uses the USB/si570 interface to control the frequency. The I/Q samples are taken from an Audio device specified on the command line.&lt;br /&gt;
&lt;br /&gt;
==dspserver==&lt;br /&gt;
'''dspserver''' is a client to the hardware server. In turn, it is the server for another client, typically a GUI, such as jmonitor.  It provides a dsp processing service using DttSP. Typically one dspserver is started for each receiver. The dsp server listens for client TCP connections on port 8000+rx. i.e. rx0 listens on 8000, rx1 listens on 8001, etc. The client sends commands to the dspserver over the TCP connection, and dspserver sends data to its client on the same port.  The first byte of each packet sent to the client identifies the type of data in the packet.&lt;br /&gt;
*0 spectrum data&lt;br /&gt;
*1 audio data&lt;br /&gt;
&lt;br /&gt;
* ''' Commands to dspserver '''&lt;br /&gt;
** '''getSpectrum''' '''''points'''''&lt;br /&gt;
*: Request '''''points''''' of spectrum data.  The value sent for each point is an 8 bit unsigned integer.  If the calculated spectrum contains more points than the client requests, adjacent points are combined, and the highest value in the group is sent.  &lt;br /&gt;
*:Example:  getSpectrum 480&lt;br /&gt;
** '''setFrequency''' '''''f'''''&lt;br /&gt;
*: Set the receiver frequency to '''''f''''', in Hz&lt;br /&gt;
*: example:   setFrequency 7056000&lt;br /&gt;
** '''setMode''' '''''mode'''''&lt;br /&gt;
*: '''''mode''''' is an integer specifying the type of demodulation &lt;br /&gt;
*** 0 - LSB&lt;br /&gt;
*** 1 – USB&lt;br /&gt;
*** 2 – DSB&lt;br /&gt;
*** 3 – CWL&lt;br /&gt;
*** 4 – CWH&lt;br /&gt;
*** 5 – FM&lt;br /&gt;
*** 6 – AM&lt;br /&gt;
*** 7 - DIGU&lt;br /&gt;
*** 8 - SPEC&lt;br /&gt;
*** 9 - DIGL&lt;br /&gt;
*** 10 - SAM&lt;br /&gt;
*** 11 – DRM&lt;br /&gt;
*:example: setMode 0&lt;br /&gt;
** '''setFilter''' '''''low''''' '''''high'''''&lt;br /&gt;
*: Set filter cutoff frequencies&lt;br /&gt;
*: For LSB, both frequencies are negative&lt;br /&gt;
*: For USB, both frequencies are positive&lt;br /&gt;
*: For AM or DSP, typically '''low''' is negative and '''high''' is positive&lt;br /&gt;
*: example:  setFilter 150 3450&lt;br /&gt;
** '''setAGC''' '''''n'''''&lt;br /&gt;
*: Select AGC time&lt;br /&gt;
*** 1 - LONG&lt;br /&gt;
*** 2 - SLOW&lt;br /&gt;
*** 3 - MEDIUM&lt;br /&gt;
*** 4 - FAST&lt;br /&gt;
*: example:  setAGC 3&lt;br /&gt;
** '''setNR''' '''''n'''''&lt;br /&gt;
*: Set noise reduction&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setNB''' '''''n'''''&lt;br /&gt;
*: Set noise blanker&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setANF''' '''''n'''''&lt;br /&gt;
*: Set automatic noise filter&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setRXOutputGain''' '''''gain'''''&lt;br /&gt;
*: Set receiver audio output level to the value '''''gain'''''&lt;br /&gt;
*: The value is a floating point number in the range 0 to 1.&lt;br /&gt;
*: example:  setRXOutputGain 0.5&lt;br /&gt;
** '''startAudioStream''' '''''buffer size'''''&lt;br /&gt;
*: start sending audio data.  &lt;br /&gt;
*: '''''buffer size''''' is optional, and is an integer, typically 480.&lt;br /&gt;
*: If omitted, a value of 480 is used.&lt;br /&gt;
** '''stopAudioStream'''&lt;br /&gt;
*: stop sending the audio data.&lt;br /&gt;
&lt;br /&gt;
'''data packet format'''&lt;br /&gt;
Each packet has a 48 byte header.  &lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt; Byte &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; Function &amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Packet type: 0=spectrum data; 1=audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 1-31&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Reserved&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 32-39&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Sample rate&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 40-47&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Meter reading&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 48-end&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; spectrum or audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio data is sent as 1 channel 8-bit aLaw samples at 8000 samples per second.&lt;br /&gt;
&lt;br /&gt;
Sample rate and Meter reading numbers are in ASCII characters.&lt;br /&gt;
&lt;br /&gt;
===dspserver command line options ('''''default value''''')===&lt;br /&gt;
* --soundcard SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY, &lt;br /&gt;
*:                DELTA_44, FIREBOX, EDIROL_FA_66, '''''HPSDR'''''&lt;br /&gt;
* --receiver '''''0''''', 1, 2, or 3&lt;br /&gt;
* --server IP address '''''127.0.0.1''''' (this is &amp;quot;localhost&amp;quot;)&lt;br /&gt;
* --offset ???&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3615</id>
		<title>Ghpsdr3 protocols</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3615"/>
				<updated>2010-08-11T07:31:59Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''server''' HPSDR hardware server ==&lt;br /&gt;
The HPSDR server handles communications with the HPSDR hardware and is designed to work with multiple receivers either on a single Mercury card or multiple Mercury cards. It demultiplexes the I/Q samples into separate streams for each receiver.&lt;br /&gt;
The hardware server listens on port 11000 for TCP connections from clients. The client sends commands to the server over a TCP connection on port 12000+'''''rx'''''. IQ data is sent over UDP.&lt;br /&gt;
&lt;br /&gt;
* ''' Commands to server '''&lt;br /&gt;
** '''attach''' '''''rx'''''&lt;br /&gt;
*: attach client to receiver '''''rx'''''&lt;br /&gt;
*: The receiver number ''rx'' is an integer from 0 to 3&lt;br /&gt;
*: example:  attach 0&lt;br /&gt;
** '''detach''' '''''rx'''''&lt;br /&gt;
*: detach client from receiver '''''rx'''''&lt;br /&gt;
*: example:  detach 0&lt;br /&gt;
** '''frequency''' '''''f'''''&lt;br /&gt;
*: Set attached receiver frequency to the integer frequency '''''f''''' (Hz)&lt;br /&gt;
*: example:  frequency 7056000&lt;br /&gt;
** '''start iq''' '''''port'''''&lt;br /&gt;
*: start sending I &amp;amp; Q samples for the attached receiver to the UDP '''''port''''' specified&lt;br /&gt;
*: example:   start iq 13000&lt;br /&gt;
** '''start bandscope''' '''''port'''''&lt;br /&gt;
*: start sending bandscope samples to the UDP '''''port''''' specified&lt;br /&gt;
*: example start bandscope 12500&lt;br /&gt;
** '''stop iq'''&lt;br /&gt;
*: stop sending I &amp;amp; Q data to the attached receiver&lt;br /&gt;
** '''stop bandscope'''&lt;br /&gt;
*: stop sending bandscope data&lt;br /&gt;
&lt;br /&gt;
The server sends a response to the client after parsing each command.&lt;br /&gt;
The response is either '''OK''' or '''ERROR'''.  Some responses include a short message.&lt;br /&gt;
&lt;br /&gt;
A typical exchange would be:&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Client&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Server&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;attach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK 96000&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;start iq 13000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056100&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;stop iq&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;detach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The I/Q samples are accumulated in the server until there are 1024 I/Q samples to send. The samples are sent in 512 byte UDP packets, to the port specified in the 'start iq' message, with 12 byte header and up to 500 bytes of I/Q samples.&lt;br /&gt;
&lt;br /&gt;
The UDP packet header contains:&lt;br /&gt;
*8 byte sequence number&lt;br /&gt;
*2 byte offset within this set of samples&lt;br /&gt;
*2 byte length of samples&lt;br /&gt;
&lt;br /&gt;
Note that there are currently no commands to control setting the number of receivers, preamp, dither, random, samplerate or clock sources. As this was developed to support multiple receivers, I decided to not allow clients to change these as they would be changed for all receivers. They are all&lt;br /&gt;
controlled by command line arguments when running the server.&lt;br /&gt;
&lt;br /&gt;
===server command line options===&lt;br /&gt;
* --receivers &amp;lt;1..4&amp;gt;&lt;br /&gt;
* --samplerate [48000|96000|192000]&lt;br /&gt;
* --dither [off|on]&lt;br /&gt;
* --random [off|on]&lt;br /&gt;
* --preamp [off|on]&lt;br /&gt;
* --10mhzsource [atlas|penelope|mercury]&lt;br /&gt;
* --122.88mhzsource [penelope|mercury]&lt;br /&gt;
* --micsource [janus|penelope]&lt;br /&gt;
* --class [E|other]&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
./server --receivers 4 --samplerate 96000 --dither on --10mhzsource atlas&lt;br /&gt;
&lt;br /&gt;
'''Note:'''&lt;br /&gt;
As an experiment, there is also a softrockserver that supports the same protocol with the restriction that there is only one receiver and it uses the USB/si570 interface to control the frequency. The I/Q samples are taken from an Audio device specified on the command line.&lt;br /&gt;
&lt;br /&gt;
==dspserver==&lt;br /&gt;
'''dspserver''' is a client to the hardware server. In turn, it is the server for another client, typically a GUI, such as jmonitor.  It provides a dsp processing service using DttSP. Typically one dspserver is started for each receiver. The dsp server listens for client TCP connections on port 8000+rx. i.e. rx0 listens on 8000, rx1 listens on 8001, etc. The client sends commands to the dspserver over the TCP connection, and dspserver sends data to its client on the same port.  The first byte of each packet sent to the client identifies the type of data in the packet.&lt;br /&gt;
*0 spectrum data&lt;br /&gt;
*1 audio data&lt;br /&gt;
&lt;br /&gt;
* ''' Commands to dspserver '''&lt;br /&gt;
** '''getSpectrum''' '''''points'''''&lt;br /&gt;
*: Request '''''points''''' of spectrum data.  The value sent for each point is an 8 bit unsigned integer.  If the calculated spectrum contains more points than the client requests, adjacent points are combined, and the highest value in the group is sent.  &lt;br /&gt;
*:Example:  getSpectrum 480&lt;br /&gt;
** '''setFrequency''' '''''f'''''&lt;br /&gt;
*: Set the receiver frequency to '''''f''''', in Hz&lt;br /&gt;
*: example:   setFrequency 7056000&lt;br /&gt;
** '''setMode''' '''''mode'''''&lt;br /&gt;
*: '''''mode''''' is an integer specifying the type of demodulation &lt;br /&gt;
*** 0 - LSB&lt;br /&gt;
*** 1 – USB&lt;br /&gt;
*** 2 – DSB&lt;br /&gt;
*** 3 – CWL&lt;br /&gt;
*** 4 – CWH&lt;br /&gt;
*** 5 – FM&lt;br /&gt;
*** 6 – AM&lt;br /&gt;
*** 7 - DIGU&lt;br /&gt;
*** 8 - SPEC&lt;br /&gt;
*** 9 - DIGL&lt;br /&gt;
*** 10 - SAM&lt;br /&gt;
*** 11 – DRM&lt;br /&gt;
*:example: setMode 0&lt;br /&gt;
** '''setFilter''' '''''low''''' '''''high'''''&lt;br /&gt;
*: Set filter cutoff frequencies&lt;br /&gt;
*: For LSB, both frequencies are negative&lt;br /&gt;
*: For USB, both frequencies are positive&lt;br /&gt;
*: For AM or DSP, typically '''low''' is negative and '''high''' is positive&lt;br /&gt;
*: example:  setFilter 150 3450&lt;br /&gt;
** '''setAGC''' '''''n'''''&lt;br /&gt;
*: Select AGC time&lt;br /&gt;
*** 1 - LONG&lt;br /&gt;
*** 2 - SLOW&lt;br /&gt;
*** 3 - MEDIUM&lt;br /&gt;
*** 4 - FAST&lt;br /&gt;
*: example:  setAGC 3&lt;br /&gt;
** '''setNR''' '''''n'''''&lt;br /&gt;
*: Set noise reduction&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setNB''' '''''n'''''&lt;br /&gt;
*: Set noise blanker&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setANF''' '''''n'''''&lt;br /&gt;
*: Set automatic noise filter&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setRXOutputGain''' '''''gain'''''&lt;br /&gt;
*: Set receiver audio output level to the value '''''gain'''''&lt;br /&gt;
*: The value is a floating point number in the range 0 to 1.&lt;br /&gt;
*: example:  setRXOutputGain 0.5&lt;br /&gt;
** '''startAudioStream''' '''''buffer size'''''&lt;br /&gt;
*: start sending audio data.  &lt;br /&gt;
*: '''''buffer size''''' is optional, and is an integer, typically 480.&lt;br /&gt;
*: If omitted, a value of 480 is used.&lt;br /&gt;
** '''stopAudioStream'''&lt;br /&gt;
*: stop sending the audio data.&lt;br /&gt;
&lt;br /&gt;
'''data packet format'''&lt;br /&gt;
Each packet has a 48 byte header.  &lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt; Byte &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; Function &amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Packet type: 0=spectrum data; 1=audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 1-31&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Reserved&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 32-39&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Sample rate&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 40-47&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Meter reading&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 48-end&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; spectrum or audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio data is sent as 1 channel 8-bit aLaw samples at 8000 samples per second.&lt;br /&gt;
&lt;br /&gt;
Sample rate and Meter reading numbers are in ASCII characters.&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3614</id>
		<title>Ghpsdr3 protocols</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_protocols&amp;diff=3614"/>
				<updated>2010-08-11T07:28:46Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: Initial translation from .pdf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''server''' HPSDR hardware server ==&lt;br /&gt;
The HPSDR server handles communications with the HPSDR hardware and is designed to work with multiple receivers either on a single Mercury card or multiple Mercury cards. It demultiplexes the I/Q samples into separate streams for each receiver.&lt;br /&gt;
The hardware server listens on port 11000 for TCP connections from clients. The client sends commands to the server over the TCP connection. IQ data is sent over UDP.&lt;br /&gt;
&lt;br /&gt;
* ''' Commands to server '''&lt;br /&gt;
** '''attach''' '''''rx'''''&lt;br /&gt;
*: attach client to receiver '''''rx'''''&lt;br /&gt;
*: The receiver number ''rx'' is an integer from 0 to 3&lt;br /&gt;
*: example:  attach 0&lt;br /&gt;
** '''detach''' '''''rx'''''&lt;br /&gt;
*: detach client from receiver '''''rx'''''&lt;br /&gt;
*: example:  detach 0&lt;br /&gt;
** '''frequency''' '''''f'''''&lt;br /&gt;
*: Set attached receiver frequency to the integer frequency '''''f''''' (Hz)&lt;br /&gt;
*: example:  frequency 7056000&lt;br /&gt;
** '''start iq''' '''''port'''''&lt;br /&gt;
*: start sending I &amp;amp; Q samples for the attached receiver to the UDP '''''port''''' specified&lt;br /&gt;
*: example:   start iq 13000&lt;br /&gt;
** '''start bandscope''' '''''port'''''&lt;br /&gt;
*: start sending bandscope samples to the UDP '''''port''''' specified&lt;br /&gt;
*: example start bandscope 12500&lt;br /&gt;
** '''stop iq'''&lt;br /&gt;
*: stop sending I &amp;amp; Q data to the attached receiver&lt;br /&gt;
** '''stop bandscope'''&lt;br /&gt;
*: stop sending bandscope data&lt;br /&gt;
&lt;br /&gt;
The server sends a response to the client after parsing each command.&lt;br /&gt;
The response is either '''OK''' or '''ERROR'''.  Some responses include a short message.&lt;br /&gt;
&lt;br /&gt;
A typical exchange would be:&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt;Client&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Server&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;attach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK 96000&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;start iq 13000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;set frequency 7056100&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;stop iq&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;detach 0&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;OK&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The I/Q samples are accumulated in the server until there are 1024 I/Q samples to send. The samples are sent in 512 byte UDP packets, to the port specified in the 'start iq' message, with 12 byte header and up to 500 bytes of I/Q samples.&lt;br /&gt;
&lt;br /&gt;
The UDP packet header contains:&lt;br /&gt;
*8 byte sequence number&lt;br /&gt;
*2 byte offset within this set of samples&lt;br /&gt;
*2 byte length of samples&lt;br /&gt;
&lt;br /&gt;
Note that there are currently no commands to control setting the number of receivers, preamp, dither, random, samplerate or clock sources. As this was developed to support multiple receivers, I decided to not allow clients to change these as they would be changed for all receivers. They are all&lt;br /&gt;
controlled by command line arguments when running the server.&lt;br /&gt;
&lt;br /&gt;
===server command line options===&lt;br /&gt;
* --receivers &amp;lt;1..4&amp;gt;&lt;br /&gt;
* --samplerate [48000|96000|192000]&lt;br /&gt;
* --dither [off|on]&lt;br /&gt;
* --random [off|on]&lt;br /&gt;
* --preamp [off|on]&lt;br /&gt;
* --10mhzsource [atlas|penelope|mercury]&lt;br /&gt;
* --122.88mhzsource [penelope|mercury]&lt;br /&gt;
* --micsource [janus|penelope]&lt;br /&gt;
* --class [E|other]&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
./server --receivers 4 --samplerate 96000 --dither on --10mhzsource atlas&lt;br /&gt;
&lt;br /&gt;
'''Note:'''&lt;br /&gt;
As an experiment, there is also a softrockserver that supports the same protocol with the restriction that there is only one receiver and it uses the USB/si570 interface to control the frequency. The I/Q samples are taken from an Audio device specified on the command line.&lt;br /&gt;
&lt;br /&gt;
==dspserver==&lt;br /&gt;
'''dspserver''' is a client to the hardware server. In turn, it is the server for another client, typically a GUI, such as jmonitor.  It provides a dsp processing service using DttSP. Typically one dspserver is started for each receiver. The dsp server listens for client TCP connections on port 8000+rx. i.e. rx0 listens on 8000, rx1 listens on 8001, etc. The client sends commands to the dspserver over the TCP connection, and dspserver sends data to its client on the same port.  The first byte of each packet sent to the client identifies the type of data in the packet.&lt;br /&gt;
*0 spectrum data&lt;br /&gt;
*1 audio data&lt;br /&gt;
&lt;br /&gt;
* ''' Commands to dspserver '''&lt;br /&gt;
** '''getSpectrum''' '''''points'''''&lt;br /&gt;
*: Request '''''points''''' of spectrum data.  The value sent for each point is an 8 bit unsigned integer.  If the calculated spectrum contains more points than the client requests, adjacent points are combined, and the highest value in the group is sent.  &lt;br /&gt;
*:Example:  getSpectrum 480&lt;br /&gt;
** '''setFrequency''' '''''f'''''&lt;br /&gt;
*: Set the receiver frequency to '''''f''''', in Hz&lt;br /&gt;
*: example:   setFrequency 7056000&lt;br /&gt;
** '''setMode''' '''''mode'''''&lt;br /&gt;
*: '''''mode''''' is an integer specifying the type of demodulation &lt;br /&gt;
*** 0 - LSB&lt;br /&gt;
*** 1 – USB&lt;br /&gt;
*** 2 – DSB&lt;br /&gt;
*** 3 – CWL&lt;br /&gt;
*** 4 – CWH&lt;br /&gt;
*** 5 – FM&lt;br /&gt;
*** 6 – AM&lt;br /&gt;
*** 7 - DIGU&lt;br /&gt;
*** 8 - SPEC&lt;br /&gt;
*** 9 - DIGL&lt;br /&gt;
*** 10 - SAM&lt;br /&gt;
*** 11 – DRM&lt;br /&gt;
*:example: setMode 0&lt;br /&gt;
** '''setFilter''' '''''low''''' '''''high'''''&lt;br /&gt;
*: Set filter cutoff frequencies&lt;br /&gt;
*: For LSB, both frequencies are negative&lt;br /&gt;
*: For USB, both frequencies are positive&lt;br /&gt;
*: For AM or DSP, typically '''low''' is negative and '''high''' is positive&lt;br /&gt;
*: example:  setFilter 150 3450&lt;br /&gt;
** '''setAGC''' '''''n'''''&lt;br /&gt;
*: Select AGC time&lt;br /&gt;
*** 1 - LONG&lt;br /&gt;
*** 2 - SLOW&lt;br /&gt;
*** 3 - MEDIUM&lt;br /&gt;
*** 4 - FAST&lt;br /&gt;
*: example:  setAGC 3&lt;br /&gt;
** '''setNR''' '''''n'''''&lt;br /&gt;
*: Set noise reduction&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setNB''' '''''n'''''&lt;br /&gt;
*: Set noise blanker&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setANF''' '''''n'''''&lt;br /&gt;
*: Set automatic noise filter&lt;br /&gt;
*** 0 - off&lt;br /&gt;
*** 1 - on&lt;br /&gt;
** '''setRXOutputGain''' '''''gain'''''&lt;br /&gt;
*: Set receiver audio output level to the value '''''gain'''''&lt;br /&gt;
*: The value is a floating point number in the range 0 to 1.&lt;br /&gt;
*: example:  setRXOutputGain 0.5&lt;br /&gt;
** '''startAudioStream''' '''''buffer size'''''&lt;br /&gt;
*: start sending audio data.  &lt;br /&gt;
*: '''''buffer size''''' is optional, and is an integer, typically 480.&lt;br /&gt;
*: If omitted, a value of 480 is used.&lt;br /&gt;
** '''stopAudioStream'''&lt;br /&gt;
*: stop sending the audio data.&lt;br /&gt;
&lt;br /&gt;
'''data packet format'''&lt;br /&gt;
Each packet has a 48 byte header.  &lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;th&amp;gt; Byte &amp;lt;/th&amp;gt; &amp;lt;th&amp;gt; Function &amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Packet type: 0=spectrum data; 1=audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 1-31&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Reserved&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 32-39&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Sample rate&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 40-47&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Meter reading&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 48-end&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; spectrum or audio data&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio data is sent as 1 channel 8-bit aLaw samples at 8000 samples per second.&lt;br /&gt;
&lt;br /&gt;
Sample rate and Meter reading numbers are in ASCII characters.&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=ATHENA&amp;diff=3612</id>
		<title>ATHENA</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=ATHENA&amp;diff=3612"/>
				<updated>2010-08-11T05:53:20Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: Added link to new ghpsdr3 protocol page containing additional information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:Athena.png|thumb|100px|Goddess Athena]]&lt;br /&gt;
'''Athena''' is a Software project intended to develop a software developers kit for the HPSDR radio system.  The objective of the project is to provide a multi-platform code basis that will help programmers write client programs using the output of the HPSDR boards.  Project goals include:&lt;br /&gt;
&lt;br /&gt;
:- Document all the communications protocols and the Library Application Protocol Interface (API) &lt;br /&gt;
:- Explore the development of RTP [http://www.ietf.org/rfc/rfc3550.txt] and RTSP [http://www.ietf.org/rfc/rfc2326.txt] protocols for the sending of data over ethernet. &lt;br /&gt;
:- Development of IO compatible server code to communicate with the HPSDR hardware and communicate with client programs with UDP/TCP commands.      &lt;br /&gt;
:- Develop a set of operating specific server code that maintains IO compatibility.   &lt;br /&gt;
:- Potentially develop libraries of functions to help programmers easily access the server. &lt;br /&gt;
&lt;br /&gt;
This project will be run as a moderated open source software project.  Code contributions will be evaluated as to the degree it contributes to the over all goals of the project and whether there are undesired interactions with existing code. &lt;br /&gt;
&lt;br /&gt;
'''Athena''' is the Greek goddess of home industry including spinning, weaving and carpentry.  She is also the goddess of wisdom and known to be very clever, She is also the goddess of war. This is a good name for the server program that is the main connection between many parts of a HPSDR system.&lt;br /&gt;
&lt;br /&gt;
[[Image:Openhpsdr-diagram.png|thumb|400px|Athena Block Diagram -- Initial ideas]]&lt;br /&gt;
&lt;br /&gt;
Project leader is Dave Larsen, KV0S&lt;br /&gt;
&lt;br /&gt;
Team members include: &lt;br /&gt;
:John Melton, G0ORX/N6LYT&lt;br /&gt;
:Bill Tracey, KD5TFD&lt;br /&gt;
:Dave McQuate, WA8YWQ&lt;br /&gt;
:Jeremy McDermond, NH6Z &lt;br /&gt;
&lt;br /&gt;
Ideas, comments and suggestions are welcome.&lt;br /&gt;
&lt;br /&gt;
==ghpsdr3 Communication Protocols 2010-08-07==&lt;br /&gt;
&lt;br /&gt;
Here is the document of the current ghpsdr3 communication protocols.&lt;br /&gt;
&lt;br /&gt;
[[Media:ghpsdr3-protocols2010-08-07.pdf|ghpsdr3 communication protocols 2010-08-07]]&lt;br /&gt;
&lt;br /&gt;
[[ghpsdr3 protocols|updated description]]&lt;br /&gt;
&lt;br /&gt;
This document is also available on the ghpsdr3 svn under 'doc' directory&lt;br /&gt;
&lt;br /&gt;
--[[User:KV0S|KV0S, Dave]] 14:56, 7 August 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Draft HPSDR Object Rule Set==&lt;br /&gt;
&lt;br /&gt;
Based on the discussion on the list server in August 2010, This is an attempt to capture the many of the ideas and create a set of program rule.  Design ideas are the programs have discovery  and capability reporting.  Radio system objects are peers but the the dominate information flow is from hardware to a User interface with some information moving the in reverse direction.  This set of rule becomes more important as we move to the ethernet connections but is relevent to USB connections and object to object communications.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Information components include:&lt;br /&gt;
:1. Connection informations&lt;br /&gt;
::This is the discovery of Radio system components currently in the users environment.  This include both hardware connections and other programs using part of all the radio capabilities.&lt;br /&gt;
:2. Object capabilities&lt;br /&gt;
::This is information about the capabilities of the object.&lt;br /&gt;
:::Example:&lt;br /&gt;
::: - Radio Model x&lt;br /&gt;
::: - Sampling Base Frequency 14.125MHz &lt;br /&gt;
::: - Sampling Rate 96kHz&lt;br /&gt;
::: - I and Q are 24 bit signed integers&lt;br /&gt;
::: - available on x.x.x.x port y&lt;br /&gt;
::: - Data format &lt;br /&gt;
::: - Commands available&lt;br /&gt;
:3. Object current status&lt;br /&gt;
:: This is information about the current status of the object.&lt;br /&gt;
&lt;br /&gt;
Possible structure container could be [http://www.json.org/ JSON] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:KV0S|KV0S, Dave]] 18:04, 6 August 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Design Ideas==&lt;br /&gt;
The following is a list of ideas that have been suggested on either the [http://openHPSDR.org/teamspeak.html Teamspeak] session or the [http://openHPSDR.org/reflector.html HPSDR reflector].&lt;br /&gt;
&lt;br /&gt;
[[Image:Openhpsdr-diagram-driver.png|thumb|400px|Athena Driver Wrapper Diagram -- Initial ideas]]&lt;br /&gt;
:- The user should be able a common set of HPSDR function to interface with the hardware.  &lt;br /&gt;
::HPSDR Wrapper code on [http://sourceforge.net/projects/libusb/ libusb1.0] (Linux and MacOS?) and [http://msdn.microsoft.com/en-us/library/aa476426.aspx WinUSB] (Windows systems) to allow the use of either driver on corresponding systems.   &lt;br /&gt;
::Theses wrappers should also function with the new [[OZYII]] interface.&lt;br /&gt;
&lt;br /&gt;
:- Definitions of the UDP/TCP packets structure and allowable command variation to the structure. &lt;br /&gt;
::Command set to be accepted.&lt;br /&gt;
::Can packet length and structure be varied by commands?&lt;br /&gt;
::Logging and peripheral control by TCP?  Command structure (CAT?, other)&lt;br /&gt;
&lt;br /&gt;
:- Can we design the structure to accommodate both low latency applications and remote base applications?  &lt;br /&gt;
::Options that a user could use to favor one or the other.&lt;br /&gt;
&lt;br /&gt;
:- Code documentation formats to follow?&lt;br /&gt;
::[http://www.stack.nl/~dimitri/doxygen/ Doxygen], other?&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
[[Media:USB_protocol_V1.27.pdf|HPSDR USB Documentation V1.27]]&lt;br /&gt;
&lt;br /&gt;
[[SVN]] --- Subversion repository of '''HPSDR''' code.&lt;br /&gt;
&lt;br /&gt;
[[Category:Future software]]&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Multiple_independent_receivers_-_how_to_set_up_on_Windows&amp;diff=3591</id>
		<title>Multiple independent receivers - how to set up on Windows</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Multiple_independent_receivers_-_how_to_set_up_on_Windows&amp;diff=3591"/>
				<updated>2010-08-03T06:09:04Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: formatting improvements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ability to have multiple independent receivers using a single Mercury is made possible&lt;br /&gt;
by the efforts of Kirk Weedman KD7IRS, John Melton G0ORX / N6LYT, and Bruce Walker W1BW.&lt;br /&gt;
Two of the parts of John Melton's [[ghpsdr3]] have been ported to Windows (tested on XP 32 bit)&lt;br /&gt;
The two pieces are &amp;quot;server&amp;quot; and &amp;quot;dspserver&amp;quot;.  These two, with Mercury FPGA version 3.0 and the corresponding Ozy code (version 1.8), &lt;br /&gt;
provide for four simulteneous independent receivers for a single [[MERCURY]] board, using John's &lt;br /&gt;
jmonitor as the (minimal) receiver graphical user interface.  The controls available for &lt;br /&gt;
each receiver are fewer than with [[PowerSDR]] or [[KISS Konsole]], but are quite adequate for monitoring &lt;br /&gt;
up to four 96kHz segments in the frequency range 0 to 55 MHz simultaneously.&lt;br /&gt;
&lt;br /&gt;
No transmit capability is provided.&lt;br /&gt;
&lt;br /&gt;
All files needed to run server and dspserver on Windows may be found on the SVN&lt;br /&gt;
&lt;br /&gt;
  svn://64.245.179.219/svn/repos_hpsdr_kiss/branches/WA8YWQ/ghpsdr3-Windows&lt;br /&gt;
&lt;br /&gt;
You'll find the following folders&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Folder             Contents&lt;br /&gt;
bin                Executables and all files needed to run&lt;br /&gt;
dist               java files for jmonitor (you'll need to have installed java)&lt;br /&gt;
dspserver          source for dspserver, with solution/project files&lt;br /&gt;
DttSP              source for DSP package, with solution/project files to create .dll&lt;br /&gt;
LoadMercuryFirmware      all files needed to load Mercury FPGA with V3.0&lt;br /&gt;
server	           source for server, with VS2003 solution/project files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both server and dspserver are written in pure C  (no C++).  The files include project (solution) files for&lt;br /&gt;
Visual Studio 2003.  You'll probably have no trouble using VS2005 or VS2008.&lt;br /&gt;
I've added #ifdef ... #endif so that (hopefully) the same code may be compiled on Windows&lt;br /&gt;
and on Linux.  Once any problems have been ironed out, the merged code will be placed in the&lt;br /&gt;
SVN trunk, rather than branch, so that further development will simultaneously apply to both&lt;br /&gt;
Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
In the future, additional options will be explored / implemented.  These include using the fully-&lt;br /&gt;
featured ghpsdr3 receiver user interface, other receiver interfaces, connections to digital mode&lt;br /&gt;
software, and special communication software, such as [http://physics.princeton.edu/pulsar/K1JT/wspr.html WSPR].  Transmit capability may also be possible.&lt;br /&gt;
(Of course WSPR needs to transmit.  I'd hope that one could run WSPR on four bands simultaneously,&lt;br /&gt;
with the software setting Penelope frequency as needed.)&lt;br /&gt;
&lt;br /&gt;
The server part loads Ozy FX2 and FPGA via the USB, sends  I &amp;amp; Q samples to dspservers 0 thru 3,&lt;br /&gt;
and sends demodulated audio (for receiver 0 only) back to Ozy and Mercury.  Each jmonitor sends &lt;br /&gt;
demodulated audio to computer's sound card.  When more than one receiver is active, the sound &lt;br /&gt;
card output is the sum of audio from all active receivers.  If you want to listen to only one, &lt;br /&gt;
reduce the AFGain to zero on other instances of jmonitor.  The server does not read the 55 MHz wide&lt;br /&gt;
spectrum samples from [[OZY]] / [[MERCURY]] (USB endpoint 4).&lt;br /&gt;
&lt;br /&gt;
Each functional receiver uses its own instances of dspserver and jmonitor.  dspserver provides the&lt;br /&gt;
passband filtering, demodulation, AGC, and noise reduction.&lt;br /&gt;
&lt;br /&gt;
server and dspserver are launched from a command window (&amp;quot;DOS window&amp;quot;), and each is started with&lt;br /&gt;
some command-line arguments, or options.&lt;br /&gt;
&lt;br /&gt;
For the server, the options are--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
receivers      1, 2, 3, or 4   The number of simultaneous receivers to be supported&lt;br /&gt;
samplerate     96000           One of 48000, 96000, 192000 (only tested with 96000)&lt;br /&gt;
dither         on / off        Setting for Mercury ADC&lt;br /&gt;
random         on / off        Setting for Mercury ADC&lt;br /&gt;
preamp         on / off        Setting for Mercury&lt;br /&gt;
10mhzsource    atlas / penelope / mercury&lt;br /&gt;
122.8mhzsource penelope / mercury&lt;br /&gt;
micsource      penelope / janus&lt;br /&gt;
class          other / E&lt;br /&gt;
timing&lt;br /&gt;
	&lt;br /&gt;
The default settings are&lt;br /&gt;
receivers 1&lt;br /&gt;
samplerate 96000&lt;br /&gt;
dither  off&lt;br /&gt;
random  off&lt;br /&gt;
preamp off&lt;br /&gt;
10mhzsource mercury&lt;br /&gt;
122.88mhzsource mercury&lt;br /&gt;
micsource penelope&lt;br /&gt;
class other&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You only need to specify the options whose values need to be different from the defaults.&lt;br /&gt;
&lt;br /&gt;
For the dspserver, the options are--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dspserver options:&lt;br /&gt;
soundcard	SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY, &lt;br /&gt;
                DELTA_44, FIREBOX, EDIROL_FA_66, HPSDR&lt;br /&gt;
receiver	0 - 3&lt;br /&gt;
server		IP address&lt;br /&gt;
offset		?&lt;br /&gt;
&lt;br /&gt;
default values:&lt;br /&gt;
soundcard	HPSDR&lt;br /&gt;
server		127.0.0.1	(this is &amp;quot;localhost&amp;quot;)&lt;br /&gt;
receiver	0&lt;br /&gt;
offset		0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make it easy to launch multiple receivers, make a folder with a short path name, &lt;br /&gt;
such as C:\MultiRx&lt;br /&gt;
&lt;br /&gt;
Into this folder place the following--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libfftw3f-3.dll&lt;br /&gt;
pthreadVC2.dll&lt;br /&gt;
jmonitor.jar&lt;br /&gt;
ozyfw-sdr1k.hex&lt;br /&gt;
Ozy_Janus.rbf&lt;br /&gt;
server.exe&lt;br /&gt;
dspserver.exe&lt;br /&gt;
folder &amp;quot;lib&amp;quot; from the java dist folder&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's how to start the system--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
First command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
server --receivers 4 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2nd command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
dspserver --receiver 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3rd command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
java -jar &amp;quot;jmonitor.jar&amp;quot; --server 127.0.0.1 --receiver 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you have one receiver running.&lt;br /&gt;
&lt;br /&gt;
To use more than one simultaneous receiver,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
When launching server, use a value greater than 1 for the number of receivers.&lt;br /&gt;
Launch multiple copies of dspserver and jmonitor, each from their own command window, &lt;br /&gt;
using different receiver numbers--ie 0, 1, 2, 3 &lt;br /&gt;
(Only one instance of server is needed--it supplies connection to the hardware &lt;br /&gt;
 for all receivers.)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With 4 receivers running, you'll have 9 command windows open.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When server starts it says--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listening for TCP connections on port 11000&lt;br /&gt;
    (a few seconds delay while Ozy FX2 and FPGA are loaded)&lt;br /&gt;
... (hex dumps of 9 USB frames)&lt;br /&gt;
server configured for 4 receivers at 96000&lt;br /&gt;
Ozy Software version 18&lt;br /&gt;
Mercury Software version 30&lt;br /&gt;
&lt;br /&gt;
client_socket 1832&lt;br /&gt;
client connected 127.0.0.1:12000&lt;br /&gt;
client connected: 127.0.0.1:12000&lt;br /&gt;
parse_command(Rx-842150451): 'attach 0'&lt;br /&gt;
response(Rx0): OK 96000'&lt;br /&gt;
parse_command(Rx0): 'start iq 13000'&lt;br /&gt;
response(Rx0): 'OK'&lt;br /&gt;
audio_thread port=15000&lt;br /&gt;
listening for rx 0 audio on port 15000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When dspserver starts it says (socket numbers and buffer addresses will be different on your system)--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hHPSDR rx 0 (Version 0.6)&lt;br /&gt;
getSoundcardID: HPSDR id=8&lt;br /&gt;
setSoundcard: 8&lt;br /&gt;
setSoundcard -11 000000 -25 000000&lt;br /&gt;
setup_system_audio: sdr-5044-0&lt;br /&gt;
setup_system_audio: sdr-5044-1&lt;br /&gt;
client_init audio_buffer_size=2000 audio_buffer=9736336&lt;br /&gt;
client_thread&lt;br /&gt;
client_thread: listening on port 8000&lt;br /&gt;
ozy_init: command bound to port 12000 socket 1808&lt;br /&gt;
ozy_init: server 127.0.0.1&lt;br /&gt;
connect: sampleRate=96000&lt;br /&gt;
setSpeed 1&lt;br /&gt;
ozy_init: iq bound to port 13000 socket=1776&lt;br /&gt;
iq_thread: socket 1784&lt;br /&gt;
output_sample_increment=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(when jmonitor for Rx 0 starts, dspserver says:)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
26/06/2010 23:48:29 RX0: client connection from 127.0.0.1:2995&lt;br /&gt;
client message: setFrequency 7048000&lt;br /&gt;
client message: setMode 0&lt;br /&gt;
client message: setFilter -2850 -150&lt;br /&gt;
client message: SetRXOutputGain 30&lt;br /&gt;
client message: start AudioStream 480&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you start additional receivers, and make changes to the state of each of the receivers,&lt;br /&gt;
you'll see more output from server and the dspservers.&lt;br /&gt;
&lt;br /&gt;
Some information on how to make a receiver available on the internet may be found at&lt;br /&gt;
&lt;br /&gt;
http://www.n9vv.com/N6LYT-Online-Mercury-Receiver.pdf&lt;br /&gt;
&lt;br /&gt;
Please post your comments and questions to the openhpsdr email reflector, hpsdr (at) openhpsdr.org.&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=HPSDRwiki:Community_Portal&amp;diff=3590</id>
		<title>HPSDRwiki:Community Portal</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=HPSDRwiki:Community_Portal&amp;diff=3590"/>
				<updated>2010-08-03T06:04:47Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: added link to Windows setup for ghpsdr3 in Windows software section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== [[FAQ]] - Frequently Asked Questions ==&lt;br /&gt;
&lt;br /&gt;
This is a new section started to allow asking and hopefully answering questions about HPSDR.&lt;br /&gt;
&lt;br /&gt;
== [[DOC]] - Documentation ==&lt;br /&gt;
&lt;br /&gt;
This section contains links for downloading all documentation for HPSDR Projects.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
===[[DOWNLOADS]] - Firmware and Software ===&lt;br /&gt;
&lt;br /&gt;
Links to current firmware and software available.&lt;br /&gt;
&lt;br /&gt;
===[[SVN]] Subversion code versioning software ===&lt;br /&gt;
Source code in the process of development&lt;br /&gt;
&lt;br /&gt;
=== [[HPSDR_related_software|Software links and introduction to software components.]] ===&lt;br /&gt;
&lt;br /&gt;
Links to HPSDR software and resources can be found on the [http://openhpsdr.org/resources.html Resource] page.&lt;br /&gt;
&lt;br /&gt;
Links to the FPGA programming course by Kirk, KD7IRS -- see the [[Verilog]] page.&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Windows XP, Vista, and Windows 7 Software ===&lt;br /&gt;
&lt;br /&gt;
[http://www.g3ukb.co.uk/ Acorn-SDR] by Bob Cowdery &lt;br /&gt;
&lt;br /&gt;
[http://www.dxatlas.com/CwSkimmer/ CW Skimmer] From Alex, VE3NEA, has support for Mercury&lt;br /&gt;
&lt;br /&gt;
[[KISS Konsole]], Written in C#  and intended as a simple introduction to PC DSP programming.&lt;br /&gt;
&lt;br /&gt;
[https://java-sdr.dev.java.net/ java-sdr] Platform independent Java by John G0ORX/N6LYT.&lt;br /&gt;
&lt;br /&gt;
ghpsdr3 [[How to set up on Windows]] server &amp;amp; dspserver allow for multiple receivers (jmonitor) on a single Mercury&lt;br /&gt;
&lt;br /&gt;
[[PowerSDR]] Running on Microsoft Windows XP.&lt;br /&gt;
&lt;br /&gt;
====PowerSDR [[Quick Startup Guide]]====&lt;br /&gt;
&lt;br /&gt;
Documents to help users get HPSDR setup and working. Includes firmware upload instructions.&lt;br /&gt;
&lt;br /&gt;
====[[HPSDR Digital Modes Operation using PowerSDR, Fldigi, VAC and com0com]]====&lt;br /&gt;
&lt;br /&gt;
How to use additional programs to enable the digital modes using PowerSDR&lt;br /&gt;
&lt;br /&gt;
====[[PowerSDR Keyboard Shortcut List ]]====&lt;br /&gt;
&lt;br /&gt;
This page lists all the known PowerSDR keyboard shortcuts.&lt;br /&gt;
&lt;br /&gt;
=== Linux Software ===&lt;br /&gt;
&lt;br /&gt;
[[ghpsdr]], written in C with a [http://www.gtk.org/ GTK+] GUI by John G0ORX/N6LYT. http://javaguifordttsp.blogspot.com/&lt;br /&gt;
&lt;br /&gt;
[[ghpsdr3]], written in C with as a server/client or server/dspserver/client framework by John G0ORX/N6LYT. http://g0orx.blogspot.com/&lt;br /&gt;
&lt;br /&gt;
[https://java-sdr.dev.java.net/ java-sdr] Platform independent Java by John G0ORX/N6LYT.&lt;br /&gt;
&lt;br /&gt;
====Linux [[SYSTEM INTEGRATION]]====&lt;br /&gt;
&lt;br /&gt;
This section contains information relative to &amp;quot;putting the pieces together&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===[[USB Libraries]]===  &lt;br /&gt;
&lt;br /&gt;
Information of the various USB libraries used to access the [[OZY]] and [[MAGISTER]] interface boards.&lt;br /&gt;
&lt;br /&gt;
=== Mac OS-X Software ===&lt;br /&gt;
&lt;br /&gt;
[[ghpsdr]], written in C with a [http://www.gtk.org/ GTK+] GUI by John G0ORX/N6LYT. http://javaguifordttsp.blogspot.com/&lt;br /&gt;
&lt;br /&gt;
[[Mac-Ghpsdr]] is a version of ghpsdr v2 with changes to make it run acceptably on the Mac by Jeremy McDermond ([[User:NH6Z|NH6Z]]).&lt;br /&gt;
&lt;br /&gt;
[[MacHPSDR]] is a native Cocoa implementation of an HPSDR receiver.  It uses currently John Melton's modified DttSP from ghpsdr to do the DSP work, but replaces out everything else with native Objective-C and Cocoa technologies.  The current author and maintainer of the code is Jeremy McDermond ([[User:NH6Z|NH6Z]]).&lt;br /&gt;
&lt;br /&gt;
[https://java-sdr.dev.java.net/ java-sdr] Platform independent Java by John G0ORX/N6LYT.&lt;br /&gt;
&lt;br /&gt;
=== Multi-Receiver options ===&lt;br /&gt;
&lt;br /&gt;
'''[[Multi-Receiver]] How-to''' - This page explains the multi-receiver options and how-to set them up.&lt;br /&gt;
&lt;br /&gt;
=== Individual software Project Wiki Pages ===&lt;br /&gt;
&lt;br /&gt;
* '''[[ATHENA]] - A software Server module''' - A project to build OS specific server code, module communication libraries and communication protocol documentation.&lt;br /&gt;
&lt;br /&gt;
* '''[[KISS Konsole]] - Learning SDR Console''' - The KISS Konsole is a software project to provide a straightforward, well-commented User Interface to [[Mercury]] and other modules.&lt;br /&gt;
&lt;br /&gt;
== Building HPSDR Rigs ==&lt;br /&gt;
&lt;br /&gt;
===[[Hardware Introduction]]===&lt;br /&gt;
&lt;br /&gt;
This is a guide for those new to HPSDR about exactly what hardware you need to be able to use the system.&lt;br /&gt;
&lt;br /&gt;
=== [http://openhpsdr.org/support.html Support documentation] ===&lt;br /&gt;
&lt;br /&gt;
Documents for user interested in building boards can be found on the [http://openhpsdr.org/support.html Support] page.&lt;br /&gt;
&lt;br /&gt;
===[[A Basic HPSDR Transceiver in PANDORA]]===&lt;br /&gt;
&lt;br /&gt;
This page is by John Petrich, W7FU, and provides another example of how a [[PANDORA|Pandora]] enclosure can be used for the amateur radio experimenter.&lt;br /&gt;
&lt;br /&gt;
===[[A complete HPSDR transceiver in a Pandora Box]]===&lt;br /&gt;
&lt;br /&gt;
This page provides an example of how to build a transceiver using HPSDR components in a [[PANDORA|Pandora]] enclosure, other available hardware and PowerSDR version 1.19.3 software.&lt;br /&gt;
&lt;br /&gt;
===[[A complete HPSDR transceiver]]===&lt;br /&gt;
&lt;br /&gt;
This page provides an example of how to build your own transceiver using HPSDR components and other available hardware and software.&lt;br /&gt;
&lt;br /&gt;
===[[The Antec P183 Solution]]===&lt;br /&gt;
&lt;br /&gt;
This page documents an example of how to build your own transceiver using HPSDR components and other available hardware and software in a traditional a mid-tower PC enclosure.&lt;br /&gt;
&lt;br /&gt;
===[[The Tokyo Hy-Power HL-45B Solution]]===&lt;br /&gt;
&lt;br /&gt;
This page documents an example of how to add a commercial solid state 45 Watt Amplifier to your HPSDR rig.&lt;br /&gt;
&lt;br /&gt;
===[[The Rino R-1 Solution]]===&lt;br /&gt;
&lt;br /&gt;
A smaller PC case solution with an optical drive included.&lt;br /&gt;
&lt;br /&gt;
===[[The Antec Minuet Solution]]===&lt;br /&gt;
&lt;br /&gt;
The smallest PC case solution attempted so far.&lt;br /&gt;
&lt;br /&gt;
===[[Never Short a Penelope by AD9DP]]===&lt;br /&gt;
&lt;br /&gt;
The short paper tells you why you should never operate Penelope into a shorted load.&lt;br /&gt;
&lt;br /&gt;
===[[Using Penelope with a linear amplifier]]===&lt;br /&gt;
&lt;br /&gt;
When using Penelope with a linear amplifier you need to ensure you use enough drive. This paper explains why.&lt;br /&gt;
&lt;br /&gt;
== HPSDR Performance Tests ==&lt;br /&gt;
&lt;br /&gt;
The purpose of these pages are to establish HPSDR performance measurement process standards.&lt;br /&gt;
&lt;br /&gt;
=== Receiver Performance Tests ===&lt;br /&gt;
* Mercury: [[Receiver Performance Tests]]&lt;br /&gt;
* Active Antennas and HPSDR: [[Antenna Performance Tests]]&lt;br /&gt;
&lt;br /&gt;
=== Transmitter Performance Tests ===&lt;br /&gt;
&lt;br /&gt;
== Individual hardware Project Wiki Pages ==&lt;br /&gt;
&lt;br /&gt;
Click on the NAME of the project to get to its page!&lt;br /&gt;
&lt;br /&gt;
=== Completed ===&lt;br /&gt;
&lt;br /&gt;
==== Common ====&lt;br /&gt;
&lt;br /&gt;
* '''[[ATLAS]] - Backplane''' - The Atlas is a passive backplane that all other modules plug into.&lt;br /&gt;
&lt;br /&gt;
* '''[[LPU]] - Simple Linear Power Unit''' - The LPU unit takes power from a regulated power supply and steps it to the input needed by Atlas.&lt;br /&gt;
&lt;br /&gt;
* '''[[MAGISTER]] - USB 2.0 to Atlas Bus Interface''' - The Magister module is an alternative to OZY.&lt;br /&gt;
&lt;br /&gt;
==== Primarily Mercury and Penelope related ====&lt;br /&gt;
&lt;br /&gt;
* '''[[Antenna Switch|ANTENNA SWITCH]] - by NT-Electronics''' - An antenna switch for use with Penelope and Mercury when Alex is not used, also has optional low Noise RX Amplifier for 6 meters&lt;br /&gt;
&lt;br /&gt;
* '''[[MERCURY]] - 0-55 MHz Direct Sampling Receiver''' - Perhaps the most exciting of all modules, Mercury will enable direct sampling of the 0-55 MHz spectrum.&lt;br /&gt;
&lt;br /&gt;
* '''[[PENELOPE]] - Companion Exciter to Mercury''' - A 1/2 watt DUC(k).&lt;br /&gt;
&lt;br /&gt;
==== Primarily Phoenix and Janus related ====&lt;br /&gt;
&lt;br /&gt;
* '''[[JANUS]] - ADC/DAC Board''' - The Janus module is a very high performance, dual, full duplex, A/D and D/A converter board.&lt;br /&gt;
&lt;br /&gt;
==== Optional ====&lt;br /&gt;
&lt;br /&gt;
* '''[[PANDORA]] - Enclosure''' - HPSDR enclosure.&lt;br /&gt;
&lt;br /&gt;
* '''[[EXCALIBUR]] - Clock Reference board''' - A board to allow an external 10 MHz frequency reference interface.&lt;br /&gt;
&lt;br /&gt;
* '''[[PINOCCHIO]] - Extender Card''' - Pinocchio is an extender card to allow measurements and troubleshooting of an active card in an ATLAS back-plane.&lt;br /&gt;
&lt;br /&gt;
* '''[[HERCULES]] - By NT-Electronics''' - A 100 Watt amplifier designed to be compatible with current HPSDR hardware (Atlas, Penelope, Mercury, and Magister/Ozy).&lt;br /&gt;
&lt;br /&gt;
* '''[[PENNYWHISTLE]] - 20 Watt RF Power Ampilfier''' - The PennyWhistle takes the RF output of Penelope and amplifies it to approximately 20 watts.&lt;br /&gt;
&lt;br /&gt;
===Completed but unavailable===&lt;br /&gt;
&lt;br /&gt;
* '''[[OZY]] - HPSDR Host Interface &amp;amp; Control''' - The OZY module is an FPGA based interface controller card providing input and output connections to the real world. Now replaced with the Magister module - see above.&lt;br /&gt;
&lt;br /&gt;
===Future hardware===&lt;br /&gt;
====Hardware nearing completion====&lt;br /&gt;
&lt;br /&gt;
* '''[[ALEXIARES]] - RF Preselector''' - Alexiares (or Alex for short) is a set of RF Bandpass filters for use with Mercury and Penelope or any other SDR. Alex also contain an RX/TX antenna switch.&lt;br /&gt;
&lt;br /&gt;
* '''[[HERMES]] - A DUC/DDC Transceiver''' - Merging the verilog code of Mercury and Penelope into a single FPGA, on a single board.&lt;br /&gt;
&lt;br /&gt;
* '''[[APOLLO]] - 15W PA and Filter''' - A companion 15W PA and Low Pass Filter for [[HERMES|Hermes]].&lt;br /&gt;
&lt;br /&gt;
* '''[[OZYII]] - (AussieII) - A high speed PC interface''' - High speed PC interface using Ethernet PHY.&lt;br /&gt;
&lt;br /&gt;
* '''[[PHOENIX]] - QSD/QSE Receiver/Transmitter Module''' - QSD based HF Receiver, a QSE based HF Exciter and a supporting synthesizer.&lt;br /&gt;
&lt;br /&gt;
====Proposed hardware====&lt;br /&gt;
&lt;br /&gt;
* '''[[CYCLOPS]] - Spectrum Analyzer''' - Cyclops is a 0-1 GHz spectrum analyzer with tracking generator support.&lt;br /&gt;
&lt;br /&gt;
* '''[[DEMETER]] - Power Supply''' - Power supply designed for HPSDR.&lt;br /&gt;
&lt;br /&gt;
* '''[[GIBRALTAR]] - GPS-disciplined Frequency Standard''' - Gibraltar is a GPS-disciplined frequency standard board.&lt;br /&gt;
&lt;br /&gt;
* '''[[ODYSSEY]] - Low Power Handheld SDR''' - Odyssey includes a low power SDR based on the QSD, QSE, and a dsPIC33 as the basic radio core.&lt;br /&gt;
&lt;br /&gt;
* '''[[THOR]] - High Efficiency HF Power Amplifier''' - Thor is a high efficiency HF power amplifier using Envelope Elimination and Restoration (ERR) techniques.&lt;br /&gt;
&lt;br /&gt;
* '''[[MUNIN]] - 100W HF Power Amplifier''' - Munin is a 100W HF power amplifier,  This hardware is dependent on Alex filters.&lt;br /&gt;
&lt;br /&gt;
* '''[[PENNYLANE]] - Two stage Penelope''' - This is a two stage penelope based on changes made in the Hermes boards.&lt;br /&gt;
&lt;br /&gt;
====Other proposed/future hardware====&lt;br /&gt;
&lt;br /&gt;
* '''[[ANICETUS]]  (Anie) - Preselector''' - A few designs for narrow band preselectors.&lt;br /&gt;
&lt;br /&gt;
* '''[[EPIMETHEUS]] - General Purpose I/O''' - Epi is a general purpose I/O board for the Atlas bus and includes relays, open collectors, IF switching, etc.&lt;br /&gt;
&lt;br /&gt;
* '''[[HELIOS]] - Helios Small Transmitting Loop Antenna and Controller.&lt;br /&gt;
&lt;br /&gt;
* '''[[HORTON]] - Receiver Module''' - A receiver module integrating the Janus ADC with a QSD on a board for a version of the HPSDR RX board.&lt;br /&gt;
&lt;br /&gt;
* '''[[PROTEUS]] - Prototyping Board''' - This is the planned prototyping board.&lt;br /&gt;
&lt;br /&gt;
* '''[[SASQUATCH]] - DSP back-end''' - The Sasquatch board is a hardware DSP back-end intended for use by constructors who would like to operate stand-alone rather than attached to a PC.&lt;br /&gt;
&lt;br /&gt;
== [[Board Designer's Resources]] ==&lt;br /&gt;
&lt;br /&gt;
== [[ANCILLARY]] - Additional &amp;quot;stuff&amp;quot; of interest to HPSDR ==&lt;br /&gt;
Some stuff like Norton Amplifier, FPGA VHDL/Verilog ...&lt;br /&gt;
&lt;br /&gt;
== [[EXPERIMENTERS-CORNER]] - Ideas not yet projects ==&lt;br /&gt;
&lt;br /&gt;
== [[ADMINISTRATION-NEWS]] - Messages about HPSDR web, wiki, discussion list ==&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[Category:Community| ]]&lt;br /&gt;
[[Category:Hardware| ]]&lt;br /&gt;
[[Category:Categories]]&lt;br /&gt;
[[Category:Developer resources| ]]&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_Ports&amp;diff=3470</id>
		<title>Ghpsdr3 Ports</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Ghpsdr3_Ports&amp;diff=3470"/>
				<updated>2010-07-18T05:52:25Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Ports===&lt;br /&gt;
&lt;br /&gt;
'''server''' listens for TCP connection requests on port 12000 (all Rx).   &lt;br /&gt;
(all other socket traffic is UDP)&lt;br /&gt;
&lt;br /&gt;
'''server''' receives demodulated audio from the first dspserver (only) on &lt;br /&gt;
port 15000 (and sends it to Mercury)&lt;br /&gt;
&lt;br /&gt;
'''server''' receives commands on ports &lt;br /&gt;
* Rx0 - 12000 &lt;br /&gt;
* Rx1 - 12002&lt;br /&gt;
* Rx2 - 12004&lt;br /&gt;
* Rx3 - 12006&lt;br /&gt;
&lt;br /&gt;
'''server''' sends I &amp;amp; Q samples to   &lt;br /&gt;
* Rx0 - 13000&lt;br /&gt;
* Rx1 - 13002&lt;br /&gt;
* Rx2 - 13004&lt;br /&gt;
* Rx3 - 13006&lt;br /&gt;
&lt;br /&gt;
'''dspservers''' receives&lt;br /&gt;
&lt;br /&gt;
I &amp;amp; Q samples from server on ports &lt;br /&gt;
* Rx0 - 13000&lt;br /&gt;
* Rx1 - 13002&lt;br /&gt;
* Rx2 - 13004 &lt;br /&gt;
* Rx3 - 13006&lt;br /&gt;
&lt;br /&gt;
commands from '''jmonitor''' on ports&lt;br /&gt;
* Rx0 - 8000&lt;br /&gt;
* Rx1 - 8001&lt;br /&gt;
* Rx2 - 8002&lt;br /&gt;
* Rx3 - 8003&lt;br /&gt;
&lt;br /&gt;
and sends spectrum-display data and alaw-encoded 8-bit audio to '''jmonitor''' &lt;br /&gt;
* Rx0 - 8000&lt;br /&gt;
* Rx1 - 8001&lt;br /&gt;
* Rx2 - 8002&lt;br /&gt;
* Rx3 - 8003&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&amp;diff=3469</id>
		<title>Ghpsdr3</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&amp;diff=3469"/>
				<updated>2010-07-18T05:37:36Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:ghpsdr4.png|thumb|400px|right|Screenshot of the ghpsdr3 GUI on 20 meters. (Click to enlarge)]]&lt;br /&gt;
[[Image:Screenshot-JMonitor - Mozilla Firefox.png|thumb|400px|right|Screenshot of the java in a web browser GUI on 40 meters. (Click to enlarge)]]&lt;br /&gt;
[[Image:ghpsdr3.png|thumb|400px|right|Architecture of the server/dspserver/client configuration. (Click to enlarge)]]&lt;br /&gt;
&lt;br /&gt;
===Server/Client version of ghpsdr===&lt;br /&gt;
&lt;br /&gt;
'''ghpsdr3''' is a software defined radio server/client or server/dspserver/client format program written specifically for HPSDR by John Melton, G0ORX/N6LYT. &lt;br /&gt;
&lt;br /&gt;
The software is being developed on the Ubuntu version of Linux (specifically version 9.10).&lt;br /&gt;
The server and dspserver have been ported to run on Windows--&lt;br /&gt;
* [[How to set up on Windows]]&lt;br /&gt;
&lt;br /&gt;
This version of '''ghpsdr3''' allows for the server and client to be on the same machine or separate machines. The servers are written in C and run on linux machines. John and others are working on a full set of clients to run on multiple machines connecting to the servers through TCP/IP protocals.&lt;br /&gt;
&lt;br /&gt;
To follow the development of this code look at John's Blog http://g0orx.blogspot.com/&lt;br /&gt;
&lt;br /&gt;
===SVN===&lt;br /&gt;
The software is available from SVN and includes a precompiled executable in the bin directory.  There are now a compiled version of the 64-bit linux version, 32-bit linux version and the MacOS version.  The README explains how to compile the source if you wish to modify the code.&lt;br /&gt;
&lt;br /&gt;
Since this code does not currently run on Windows here is the Linux svn command,&lt;br /&gt;
&lt;br /&gt;
svn co svn://64.245.179.219/svn/repos_sdr_hpsdr/trunk/N6LYT/ghpsdr3&lt;br /&gt;
&lt;br /&gt;
===Libraries===&lt;br /&gt;
It uses a modifed version of DttSP that is ported from the Windows version. DttSP is built as a static library that is linked with the GUI code.  The DttSP code is provided with the SVN distribution.&lt;br /&gt;
&lt;br /&gt;
You will need a couple of libraries to run this code, they include:&lt;br /&gt;
* '''libfftw3''' - FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST).&lt;br /&gt;
* '''libgtk2''' - GTK+ is a highly usable, feature rich toolkit for creating graphical user interfaces which boasts cross platform compatibility and an easy to use API.&lt;br /&gt;
* '''libusb-1.0''' - libusb is an open source library that allows you to communicate with USB devices from userspace.&lt;br /&gt;
These can be obtain with your package installer.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
The image on this page illustrates the architecture of the ghpsdr3 software chain.  The software works with either the single receiver verilog code (Mercury 2.9) or the multiple receiver verilog code or (Mercury 3.0 experimental).  If Mercury 2.9 is install only one receiver can be accessed.  (Please not that there is a matching ozyfw-sdr1k.hex and Ozy_Janus.rbf file to go with the different versions of the Mercury code).&lt;br /&gt;
&lt;br /&gt;
'''HPSDR''' box represented the hardware and the Mercury/Ozy,Penelope, Mercury/Magister,Penelope, or Mercury/OzyII,Penelope &lt;br /&gt;
&lt;br /&gt;
'''Link between HPSDR and Server''' uses the communication protocol documented in USB Protocol v1.27 at the link on this page or in the SVN in the Documentation directory.&lt;br /&gt;
&lt;br /&gt;
'''Server''' box is a software multiplexer.  It takes the multiple receiver communication protocol and divides it in to single receiver channels.  &lt;br /&gt;
&lt;br /&gt;
'''Link between Server and Receiver clients''' output is the same IQ signal format as the single receiver USB format except the data is sent over UDP link.  The commands are handled as TCP protocol format to allow acknowledgement of the command. &lt;br /&gt;
&lt;br /&gt;
'''Receiver Clients''' can be in many forms and it was designed to foster experimentation.  The first client is the same interface used in '''ghpsdr'''.  The second interface is a simple waterfall called '''monitor''' used to keep track of activity on other bands.  Both of these programs the DSP code in in the GUI program.  These programs usually will be with a short distance of the server as the bandwidth is quite large for most home network connections.&lt;br /&gt;
&lt;br /&gt;
In an effort to demonstrate world wide access to your receiver a third approach was developed.  In this method the receiver client is a '''dspserver''' that take the output of the '''server''' and creates a low bandwidth version of the spectrum in 8 bit data, the audio data 8-bit ALAW audio format at only 480 sample size at 10 times a second.  The '''dspserver''' also accepts commands from the client.  To run multiple low bandwidth clients you must run a separate copy of '''dspserver''' for each client.  &lt;br /&gt;
&lt;br /&gt;
The base code for the current '''jmonitor''' is written in java.  It can be run as a program on a computer or within a webbrowser.  This code has also been ported to the iphone and Android platforms so that you can monitor your radios on the go.  At the 2010 Dayton Hamvention, John Melton monitored his receiver in England from the TAPR booth on the Hamvention floor.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
Links to other pages:&lt;br /&gt;
&lt;br /&gt;
* [[ghpsdr3 FAQ|Frequently Asked Questions]]&lt;br /&gt;
* [http://www.tapr.org/pdf/2010-G0ORX-N6LYT-Putting-HPSDR-on-Internet.pdf John Melton's 2010 Dayton presentation on ghpsdr3]&lt;br /&gt;
* [http://www.n9vv.com/N6LYT-Online-Mercury-Receiver.pdf Ken Hoppers N9VV online documentation of the online multi-receiver setup.]&lt;br /&gt;
* [[How to set up on Windows]]&lt;br /&gt;
* Features List [[ghpsdr3 Requests|requests]]&lt;br /&gt;
* Programmers Notes&lt;br /&gt;
* - [[ghpsdr3 Ports|Ports]]&lt;br /&gt;
* Known [[ghpsdr3 Bugs|bugs]]&lt;br /&gt;
&lt;br /&gt;
[[Category:ghpsdr3| ]]&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Multiple_independent_receivers_-_how_to_set_up_on_Windows&amp;diff=3468</id>
		<title>Multiple independent receivers - how to set up on Windows</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Multiple_independent_receivers_-_how_to_set_up_on_Windows&amp;diff=3468"/>
				<updated>2010-07-18T04:59:13Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ability to have multiple independent receivers using a single Mercury is made possible&lt;br /&gt;
by the efforts of Kirk Weedman KD7IRS, John Melton G0ORX / N6LYT, and Bruce Walker W1BW.&lt;br /&gt;
Two of the parts of John Melton's ghpsdr3 have been ported to Windows (tested on XP 32 bit)&lt;br /&gt;
The two pieces are &amp;quot;server&amp;quot; and &amp;quot;dspserver&amp;quot;.  These two, with Mercury FPGA version 3.0 and the corresponding Ozy code (version 1.8), &lt;br /&gt;
provide for four simulteneous independent receivers for a single Mercury board, using John's &lt;br /&gt;
jmonitor as the (minimal) receiver graphical user interface.  The controls available for &lt;br /&gt;
each receiver are fewer than with PowerSDR or KK, but are quite adequate for monitoring &lt;br /&gt;
up to four 96kHz segments in the frequency range 0 to 55 MHz simultaneously.&lt;br /&gt;
&lt;br /&gt;
No transmit capability is provided.&lt;br /&gt;
&lt;br /&gt;
All files needed to run server and dspserver on Windows may be found on the SVN&lt;br /&gt;
&lt;br /&gt;
[[svn://64.245.179.219/svn/repos_hpsdr_kiss/branches/WA8YWQ/ghpsdr3-Windows]]&lt;br /&gt;
&lt;br /&gt;
You'll find the following folders&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Folder             Contents&lt;br /&gt;
bin                Executables and all files needed to run&lt;br /&gt;
dist               java files for jmonitor (you'll need to have installed java)&lt;br /&gt;
dspserver          source for dspserver, with solution/project files&lt;br /&gt;
DttSP              source for DSP package, with solution/project files to create .dll&lt;br /&gt;
LoadMercuryFirmware      all files needed to load Mercury FPGA with V3.0&lt;br /&gt;
server	           source for server, with VS2003 solution/project files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Both server and dspserver are written in pure C  (no C++).  The files include project (solution) files for&lt;br /&gt;
Visual Studio 2003.  You'll probably have no trouble using VS2005 or VS2008.&lt;br /&gt;
I've added #ifdef ... #endif so that (hopefully) the same code may be compiled on Windows&lt;br /&gt;
and on Linux.  Once any problems have been ironed out, the merged code will be placed in the&lt;br /&gt;
SVN trunk, rather than branch, so that further development will simultaneously apply to both&lt;br /&gt;
Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
In the future, additional options will be explored / implemented.  These include using the fully-&lt;br /&gt;
featured ghpsdr3 receiver user interface, other receiver interfaces, connections to digital mode&lt;br /&gt;
software, and special communication software, such as WSPR.  Transmit capability may also be possible.&lt;br /&gt;
(Of course WSPR needs to transmit.  I'd hope that one could run WSPR on four bands simultaneously,&lt;br /&gt;
with the software setting Penelope frequency as needed.)&lt;br /&gt;
&lt;br /&gt;
The server part loads Ozy FX2 and FPGA via the USB, sends  I &amp;amp; Q samples to dspservers 0 thru 3,&lt;br /&gt;
and sends demodulated audio (for receiver 0 only) back to Ozy and Mercury.  Each jmonitor sends &lt;br /&gt;
demodulated audio to computer's sound card.  When more than one receiver is active, the sound &lt;br /&gt;
card output is the sum of audio from all active receivers.  If you want to listen to only one, &lt;br /&gt;
reduce the AFGain to zero on other instances of jmonitor.  The server does not read the 55 MHz wide&lt;br /&gt;
spectrum samples from Ozy / Mercury (USB endpoint 4).&lt;br /&gt;
&lt;br /&gt;
Each functional receiver uses its own instances of dspserver and jmonitor.  dspserver provides the&lt;br /&gt;
passband filtering, demodulation, AGC, and noise reduction.&lt;br /&gt;
&lt;br /&gt;
server and dspserver are launched from a command window (&amp;quot;DOS window&amp;quot;), and each is started with&lt;br /&gt;
some command-line arguments, or options.&lt;br /&gt;
&lt;br /&gt;
For the server, the options are--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
receivers      1, 2, 3, or 4   The number of simultaneous receivers to be supported&lt;br /&gt;
samplerate     96000           One of 48000, 96000, 192000 (only tested with 96000)&lt;br /&gt;
dither         on / off        Setting for Mercury ADC&lt;br /&gt;
random         on / off        Setting for Mercury ADC&lt;br /&gt;
preamp         on / off        Setting for Mercury&lt;br /&gt;
10mhzsource    atlas / penelope / mercury&lt;br /&gt;
122.8mhzsource penelope / mercury&lt;br /&gt;
micsource      penelope / janus&lt;br /&gt;
class          other / E&lt;br /&gt;
timing&lt;br /&gt;
	&lt;br /&gt;
The default settings are&lt;br /&gt;
receivers 1&lt;br /&gt;
samplerate 96000&lt;br /&gt;
dither  off&lt;br /&gt;
random  off&lt;br /&gt;
preamp off&lt;br /&gt;
10mhzsource mercury&lt;br /&gt;
122.88mhzsource mercury&lt;br /&gt;
micsource penelope&lt;br /&gt;
class other&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You only need to specify the options whose values need to be different from the defaults.&lt;br /&gt;
&lt;br /&gt;
For the dspserver, the options are--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dspserver options:&lt;br /&gt;
soundcard	SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY, DELTA_44, FIREBOX, EDIROL_FA_66, HPSDR&lt;br /&gt;
receiver	0 - 3&lt;br /&gt;
server		IP address&lt;br /&gt;
offset		?&lt;br /&gt;
&lt;br /&gt;
default values:&lt;br /&gt;
soundcard	HPSDR&lt;br /&gt;
server		127.0.0.1	(this is &amp;quot;localhost&amp;quot;)&lt;br /&gt;
receiver	0&lt;br /&gt;
offset		0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make it easy to launch multiple receivers, make a folder with a short path name, such as&lt;br /&gt;
C:\MultiRx&lt;br /&gt;
&lt;br /&gt;
Into this folder place the following--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libfftw3f-3.dll&lt;br /&gt;
pthreadVC2.dll&lt;br /&gt;
jmonitor.jar&lt;br /&gt;
ozyfw-sdr1k.hex&lt;br /&gt;
Ozy_Janus.rbf&lt;br /&gt;
server.exe&lt;br /&gt;
dspserver.exe&lt;br /&gt;
folder &amp;quot;lib&amp;quot; from the java dist folder&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's how to start the system--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
First command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
server --receivers 4 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2nd command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
dspserver --receiver 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3rd command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
java -jar &amp;quot;jmonitor.jar&amp;quot; --server 127.0.0.1 --receiver 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you have one receiver running.&lt;br /&gt;
&lt;br /&gt;
To use more than one simultaneous receiver,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
When launching server, use a value greater than 1 for the number of receivers.&lt;br /&gt;
Launch multiple copies of dspserver and jmonitor, each from their own command window, using different receiver numbers--ie 0, 1, 2, 3 &lt;br /&gt;
(Only one instance of server is needed--it supplies connection to the hardware for all receivers.)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With 4 receivers running, you'll have 9 command windows open.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When server starts it says--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listening for TCP connections on port 11000&lt;br /&gt;
    (a few seconds delay while Ozy FX2 and FPGA are loaded)&lt;br /&gt;
... (hex dumps of 9 USB frames)&lt;br /&gt;
server configured for 4 receivers at 96000&lt;br /&gt;
Ozy Software version 18&lt;br /&gt;
Mercury Software version 30&lt;br /&gt;
&lt;br /&gt;
client_socket 1832&lt;br /&gt;
client connected 127.0.0.1:12000&lt;br /&gt;
client connected: 127.0.0.1:12000&lt;br /&gt;
parse_command(Rx-842150451): 'attach 0'&lt;br /&gt;
response(Rx0): OK 96000'&lt;br /&gt;
parse_command(Rx0): 'start iq 13000'&lt;br /&gt;
response(Rx0): 'OK'&lt;br /&gt;
audio_thread port=15000&lt;br /&gt;
listening for rx 0 audio on port 15000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When dspserver starts it says (socket numbers and buffer addresses will be different on your system)--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hHPSDR rx 0 (Version 0.6)&lt;br /&gt;
getSoundcardID: HPSDR id=8&lt;br /&gt;
setSoundcard: 8&lt;br /&gt;
setSoundcard -11 000000 -25 000000&lt;br /&gt;
setup_system_audio: sdr-5044-0&lt;br /&gt;
setup_system_audio: sdr-5044-1&lt;br /&gt;
client_init audio_buffer_size=2000 audio_buffer=9736336&lt;br /&gt;
client_thread&lt;br /&gt;
client_thread: listening on port 8000&lt;br /&gt;
ozy_init: command bound to port 12000 socket 1808&lt;br /&gt;
ozy_init: server 127.0.0.1&lt;br /&gt;
connect: sampleRate=96000&lt;br /&gt;
setSpeed 1&lt;br /&gt;
ozy_init: iq bound to port 13000 socket=1776&lt;br /&gt;
iq_thread: socket 1784&lt;br /&gt;
output_sample_increment=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(when jmonitor for Rx 0 starts, dspserver says:)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
26/06/2010 23:48:29 RX0: client connection from 127.0.0.1:2995&lt;br /&gt;
client message: setFrequency 7048000&lt;br /&gt;
client message: setMode 0&lt;br /&gt;
client message: setFilter -2850 -150&lt;br /&gt;
client message: SetRXOutputGain 30&lt;br /&gt;
client message: start AudioStream 480&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you start additional receivers, and make changes to the state of each of the receivers,&lt;br /&gt;
you'll see more output from server and the dspservers.&lt;br /&gt;
&lt;br /&gt;
Some information on how to make a receiver available on the internet may be found at&lt;br /&gt;
&lt;br /&gt;
http://www.n9vv.com/N6LYT-Online-Mercury-Receiver.pdf&lt;br /&gt;
&lt;br /&gt;
Please post your comments and questions to the openhpsdr email reflector, hpsdr (at) openhpsdr.org.&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Multiple_independent_receivers_-_how_to_set_up_on_Windows&amp;diff=3467</id>
		<title>Multiple independent receivers - how to set up on Windows</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Multiple_independent_receivers_-_how_to_set_up_on_Windows&amp;diff=3467"/>
				<updated>2010-07-18T04:57:11Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ability to have multiple independent receivers using a single Mercury is made possible&lt;br /&gt;
by the efforts of Kirk Weedman KD7IRS, John Melton G0ORX / N6LYT, and Bruce Walker W1BW.&lt;br /&gt;
Two of the parts of John Melton's ghpsdr3 have been ported to Windows (tested on XP 32 bit)&lt;br /&gt;
The two pieces are &amp;quot;server&amp;quot; and &amp;quot;dspserver&amp;quot;.  These two, with Mercury FPGA version 3.0 and the corresponding Ozy code (version 1.8), &lt;br /&gt;
provide for four simulteneous independent receivers for a single Mercury board, using John's &lt;br /&gt;
jmonitor as the (minimal) receiver graphical user interface.  The controls available for &lt;br /&gt;
each receiver are fewer than with PowerSDR or KK, but are quite adequate for monitoring &lt;br /&gt;
up to four 96kHz segments in the frequency range 0 to 55 MHz simultaneously.&lt;br /&gt;
&lt;br /&gt;
All files needed to run server and dspserver on Windows may be found on the SVN&lt;br /&gt;
&lt;br /&gt;
[[svn://64.245.179.219/svn/repos_hpsdr_kiss/branches/WA8YWQ/ghpsdr3-Windows]]&lt;br /&gt;
&lt;br /&gt;
You'll find the following folders&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Folder             Contents&lt;br /&gt;
bin                Executables and all files needed to run&lt;br /&gt;
dist               java files for jmonitor (you'll need to have installed java)&lt;br /&gt;
dspserver          source for dspserver, with solution/project files&lt;br /&gt;
DttSP              source for DSP package, with solution/project files to create .dll&lt;br /&gt;
LoadMercuryFirmware      all files needed to load Mercury FPGA with V3.0&lt;br /&gt;
server	           source for server, with VS2003 solution/project files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
No transmit capability is provided.&lt;br /&gt;
&lt;br /&gt;
Both parts are written in pure C  (no C++).  The files include project (solution) files for&lt;br /&gt;
Visual Studio 2003.  You'll probably have no trouble using VS2005 or VS2008.&lt;br /&gt;
I've added #ifdef ... #endif so that (hopefully) the same code may be compiled on Windows&lt;br /&gt;
and on Linux.  Once any problems have been ironed out, the merged code will be placed in the&lt;br /&gt;
SVN trunk, rather than branch, so that further development will simultaneously apply to both&lt;br /&gt;
Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
In the future, additional options will be explored / implemented.  These include using the fully-&lt;br /&gt;
featured ghpsdr3 receiver user interface, other receiver interfaces, connections to digital mode&lt;br /&gt;
software, and special communication software, such as WSPR.  Transmit capability may also be possible.&lt;br /&gt;
(Of course WSPR needs to transmit.  I'd hope that one could run WSPR on four bands simultaneously,&lt;br /&gt;
with the software setting Penelope frequency as needed.)&lt;br /&gt;
&lt;br /&gt;
The server part loads Ozy FX2 and FPGA via the USB, sends  I &amp;amp; Q samples to dspservers 0 thru 3,&lt;br /&gt;
and sends demodulated audio (for receiver 0 only) back to Ozy and Mercury.  Each jmonitor sends &lt;br /&gt;
demodulated audio to computer's sound card.  When more than one receiver is active, the sound &lt;br /&gt;
card output is the sum of audio from all active receivers.  If you want to listen to only one, &lt;br /&gt;
reduce the AFGain to zero on other instances of jmonitor.  The server does not read the 55 MHz wide&lt;br /&gt;
spectrum samples from Ozy / Mercury (USB endpoint 4).&lt;br /&gt;
&lt;br /&gt;
Each functional receiver uses its own instances of dspserver and jmonitor.  dspserver provides the&lt;br /&gt;
passband filtering, demodulation, AGC, and noise reduction.&lt;br /&gt;
&lt;br /&gt;
server and dspserver are launched from a command window (&amp;quot;DOS window&amp;quot;), and each is started with&lt;br /&gt;
some command-line arguments, or options.&lt;br /&gt;
&lt;br /&gt;
For the server, the options are--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
receivers      1, 2, 3, or 4   The number of simultaneous receivers to be supported&lt;br /&gt;
samplerate     96000           One of 48000, 96000, 192000 (only tested with 96000)&lt;br /&gt;
dither         on / off        Setting for Mercury ADC&lt;br /&gt;
random         on / off        Setting for Mercury ADC&lt;br /&gt;
preamp         on / off        Setting for Mercury&lt;br /&gt;
10mhzsource    atlas / penelope / mercury&lt;br /&gt;
122.8mhzsource penelope / mercury&lt;br /&gt;
micsource      penelope / janus&lt;br /&gt;
class          other / E&lt;br /&gt;
timing&lt;br /&gt;
	&lt;br /&gt;
The default settings are&lt;br /&gt;
receivers 1&lt;br /&gt;
samplerate 96000&lt;br /&gt;
dither  off&lt;br /&gt;
random  off&lt;br /&gt;
preamp off&lt;br /&gt;
10mhzsource mercury&lt;br /&gt;
122.88mhzsource mercury&lt;br /&gt;
micsource penelope&lt;br /&gt;
class other&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You only need to specify the options whose values need to be different from the defaults.&lt;br /&gt;
&lt;br /&gt;
For the dspserver, the options are--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dspserver options:&lt;br /&gt;
soundcard	SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY, DELTA_44, FIREBOX, EDIROL_FA_66, HPSDR&lt;br /&gt;
receiver	0 - 3&lt;br /&gt;
server		IP address&lt;br /&gt;
offset		?&lt;br /&gt;
&lt;br /&gt;
default values:&lt;br /&gt;
soundcard	HPSDR&lt;br /&gt;
server		127.0.0.1	(this is &amp;quot;localhost&amp;quot;)&lt;br /&gt;
receiver	0&lt;br /&gt;
offset		0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make it easy to launch multiple receivers, make a folder with a short path name, such as&lt;br /&gt;
C:\MultiRx&lt;br /&gt;
&lt;br /&gt;
Into this folder place the following--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libfftw3f-3.dll&lt;br /&gt;
pthreadVC2.dll&lt;br /&gt;
jmonitor.jar&lt;br /&gt;
ozyfw-sdr1k.hex&lt;br /&gt;
Ozy_Janus.rbf&lt;br /&gt;
server.exe&lt;br /&gt;
dspserver.exe&lt;br /&gt;
folder &amp;quot;lib&amp;quot; from the java dist folder&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's how to start the system--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
First command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
server --receivers 4 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2nd command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
dspserver --receiver 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3rd command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
java -jar &amp;quot;jmonitor.jar&amp;quot; --server 127.0.0.1 --receiver 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you have one receiver running.&lt;br /&gt;
&lt;br /&gt;
To use more than one simultaneous receiver,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
When launching server, use a value greater than 1 for the number of receivers.&lt;br /&gt;
Launch multiple copies of dspserver and jmonitor, each from their own command window, using different receiver numbers--ie 0, 1, 2, 3 &lt;br /&gt;
(Only one instance of server is needed--it supplies connection to the hardware for all receivers.)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With 4 receivers running, you'll have 9 command windows open.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When server starts it says--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listening for TCP connections on port 11000&lt;br /&gt;
    (a few seconds delay while Ozy FX2 and FPGA are loaded)&lt;br /&gt;
... (hex dumps of 9 USB frames)&lt;br /&gt;
server configured for 4 receivers at 96000&lt;br /&gt;
Ozy Software version 18&lt;br /&gt;
Mercury Software version 30&lt;br /&gt;
&lt;br /&gt;
client_socket 1832&lt;br /&gt;
client connected 127.0.0.1:12000&lt;br /&gt;
client connected: 127.0.0.1:12000&lt;br /&gt;
parse_command(Rx-842150451): 'attach 0'&lt;br /&gt;
response(Rx0): OK 96000'&lt;br /&gt;
parse_command(Rx0): 'start iq 13000'&lt;br /&gt;
response(Rx0): 'OK'&lt;br /&gt;
audio_thread port=15000&lt;br /&gt;
listening for rx 0 audio on port 15000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When dspserver starts it says (socket numbers and buffer addresses will be different on your system)--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hHPSDR rx 0 (Version 0.6)&lt;br /&gt;
getSoundcardID: HPSDR id=8&lt;br /&gt;
setSoundcard: 8&lt;br /&gt;
setSoundcard -11 000000 -25 000000&lt;br /&gt;
setup_system_audio: sdr-5044-0&lt;br /&gt;
setup_system_audio: sdr-5044-1&lt;br /&gt;
client_init audio_buffer_size=2000 audio_buffer=9736336&lt;br /&gt;
client_thread&lt;br /&gt;
client_thread: listening on port 8000&lt;br /&gt;
ozy_init: command bound to port 12000 socket 1808&lt;br /&gt;
ozy_init: server 127.0.0.1&lt;br /&gt;
connect: sampleRate=96000&lt;br /&gt;
setSpeed 1&lt;br /&gt;
ozy_init: iq bound to port 13000 socket=1776&lt;br /&gt;
iq_thread: socket 1784&lt;br /&gt;
output_sample_increment=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(when jmonitor for Rx 0 starts, dspserver says:)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
26/06/2010 23:48:29 RX0: client connection from 127.0.0.1:2995&lt;br /&gt;
client message: setFrequency 7048000&lt;br /&gt;
client message: setMode 0&lt;br /&gt;
client message: setFilter -2850 -150&lt;br /&gt;
client message: SetRXOutputGain 30&lt;br /&gt;
client message: start AudioStream 480&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you start additional receivers, and make changes to the state of each of the receivers,&lt;br /&gt;
you'll see more output from server and the dspservers.&lt;br /&gt;
&lt;br /&gt;
Some information on how to make a receiver available on the internet may be found at&lt;br /&gt;
&lt;br /&gt;
http://www.n9vv.com/N6LYT-Online-Mercury-Receiver.pdf&lt;br /&gt;
&lt;br /&gt;
Please post your comments and questions to the openhpsdr email reflector, hpsdr (at) openhpsdr.org.&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Multiple_independent_receivers_-_how_to_set_up_on_Windows&amp;diff=3466</id>
		<title>Multiple independent receivers - how to set up on Windows</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Multiple_independent_receivers_-_how_to_set_up_on_Windows&amp;diff=3466"/>
				<updated>2010-07-18T04:41:35Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On the SVN&lt;br /&gt;
&lt;br /&gt;
[[svn://64.245.179.219/svn/repos_hpsdr_kiss/branches/WA8YWQ/ghpsdr3-Windows]]&lt;br /&gt;
&lt;br /&gt;
you'll find the following folders&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Folder             Contents&lt;br /&gt;
bin                Executables and all files needed to run&lt;br /&gt;
dist               java files for jmonitor (you'll need to have installed java)&lt;br /&gt;
dspserver          source for dspserver, with solution/project files&lt;br /&gt;
DttSP              source for DSP package, with solution/project files to create .dll&lt;br /&gt;
LoadMercuryFirmware      all files needed to load Mercury FPGA with V3.0&lt;br /&gt;
server	           source for server, with VS2003 solution/project files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Two of the parts of John Melton's ghpsdr3 have been ported to Windows (tested on XP 32 bit)&lt;br /&gt;
The two pieces are &amp;quot;server&amp;quot; and &amp;quot;dspserver&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
These two, with Mercury FPGA version 3.0 and the corresponding Ozy code (version 1.8), &lt;br /&gt;
provide for four simulteneous independent receivers for a single Mercury board, using John's &lt;br /&gt;
jmonitor as the (minimal) receiver graphical user interface.  The controls available for &lt;br /&gt;
each receiver are fewer than with PowerSDR or KK, but are quite adequate for monitoring &lt;br /&gt;
up to four 96kHz segments in the frequency range 0 to 55 MHz simultaneously.&lt;br /&gt;
&lt;br /&gt;
No transmit capability is provided.&lt;br /&gt;
&lt;br /&gt;
Both parts are written in pure C  (no C++).  The files include project (solution) files for&lt;br /&gt;
Visual Studio 2003.  You'll probably have no trouble using VS2005 or VS2008.&lt;br /&gt;
I've added #ifdef ... #endif so that (hopefully) the same code may be compiled on Windows&lt;br /&gt;
and on Linux.  Once any problems have been ironed out, the merged code will be placed in the&lt;br /&gt;
SVN trunk, rather than branch, so that further development will simultaneously apply to both&lt;br /&gt;
Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
In the future, additional options will be explored / implemented.  These include using the fully-&lt;br /&gt;
featured ghpsdr3 receiver user interface, other receiver interfaces, connections to digital mode&lt;br /&gt;
software, and special communication software, such as WSPR.  Transmit capability may also be possible.&lt;br /&gt;
(Of course WSPR needs to transmit.  I'd hope that one could run WSPR on four bands simultaneously,&lt;br /&gt;
with the software setting Penelope frequency as needed.)&lt;br /&gt;
&lt;br /&gt;
The server part loads Ozy FX2 and FPGA via the USB, sends  I &amp;amp; Q samples to dspservers 0 thru 3,&lt;br /&gt;
and sends demodulated audio (for receiver 0 only) back to Ozy and Mercury.  Each jmonitor sends &lt;br /&gt;
demodulated audio to computer's sound card.  When more than one receiver is active, the sound &lt;br /&gt;
card output is the sum of audio from all active receivers.  If you want to listen to only one, &lt;br /&gt;
reduce the AFGain to zero on other instances of jmonitor.  The server does not read the 55 MHz wide&lt;br /&gt;
spectrum samples from Ozy / Mercury (USB endpoint 4).&lt;br /&gt;
&lt;br /&gt;
Each functional receiver uses its own instances of dspserver and jmonitor.  dspserver provides the&lt;br /&gt;
passband filtering, demodulation, AGC, and noise reduction.&lt;br /&gt;
&lt;br /&gt;
server and dspserver are launched from a command window (&amp;quot;DOS window&amp;quot;), and each is started with&lt;br /&gt;
some command-line arguments, or options.&lt;br /&gt;
&lt;br /&gt;
For the server, the options are--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
receivers      1, 2, 3, or 4   The number of simultaneous receivers to be supported&lt;br /&gt;
samplerate     96000           One of 48000, 96000, 192000 (only tested with 96000)&lt;br /&gt;
dither         on / off        Setting for Mercury ADC&lt;br /&gt;
random         on / off        Setting for Mercury ADC&lt;br /&gt;
preamp         on / off        Setting for Mercury&lt;br /&gt;
10mhzsource    atlas / penelope / mercury&lt;br /&gt;
122.8mhzsource penelope / mercury&lt;br /&gt;
micsource      penelope / janus&lt;br /&gt;
class          other / E&lt;br /&gt;
timing&lt;br /&gt;
	&lt;br /&gt;
The default settings are&lt;br /&gt;
receivers 1&lt;br /&gt;
samplerate 96000&lt;br /&gt;
dither  off&lt;br /&gt;
random  off&lt;br /&gt;
preamp off&lt;br /&gt;
10mhzsource mercury&lt;br /&gt;
122.88mhzsource mercury&lt;br /&gt;
micsource penelope&lt;br /&gt;
class other&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You only need to specify the options whose values need to be different from the defaults.&lt;br /&gt;
&lt;br /&gt;
For the dspserver, the options are--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dspserver options:&lt;br /&gt;
soundcard	SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY, DELTA_44, FIREBOX, EDIROL_FA_66, HPSDR&lt;br /&gt;
receiver	0 - 3&lt;br /&gt;
server		IP address&lt;br /&gt;
offset		?&lt;br /&gt;
&lt;br /&gt;
default values:&lt;br /&gt;
soundcard	HPSDR&lt;br /&gt;
server		127.0.0.1	(this is &amp;quot;localhost&amp;quot;)&lt;br /&gt;
receiver	0&lt;br /&gt;
offset		0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make it easy to launch multiple receivers, make a folder with a short path name, such as&lt;br /&gt;
C:\MultiRx&lt;br /&gt;
&lt;br /&gt;
Into this folder place the following--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libfftw3f-3.dll&lt;br /&gt;
pthreadVC2.dll&lt;br /&gt;
jmonitor.jar&lt;br /&gt;
ozyfw-sdr1k.hex&lt;br /&gt;
Ozy_Janus.rbf&lt;br /&gt;
server.exe&lt;br /&gt;
dspserver.exe&lt;br /&gt;
folder &amp;quot;lib&amp;quot; from the java dist folder&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's how to start the system--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
First command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
server --receivers 4 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2nd command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
dspserver --receiver 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3rd command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
java -jar &amp;quot;jmonitor.jar&amp;quot; --server 127.0.0.1 --receiver 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you have one receiver running.&lt;br /&gt;
&lt;br /&gt;
To use more than one simultaneous receiver,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
When launching server, use a value greater than 1 for the number of receivers.&lt;br /&gt;
Launch multiple copies of dspserver and jmonitor, each from their own command window, using different receiver numbers--ie 0, 1, 2, 3 &lt;br /&gt;
(Only one instance of server is needed--it supplies connection to the hardware for all receivers.)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With 4 receivers running, you'll have 9 command windows open.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When server starts it says--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listening for TCP connections on port 11000&lt;br /&gt;
    (a few seconds delay while Ozy FX2 and FPGA are loaded)&lt;br /&gt;
... (hex dumps of 9 USB frames)&lt;br /&gt;
server configured for 4 receivers at 96000&lt;br /&gt;
Ozy Software version 18&lt;br /&gt;
Mercury Software version 30&lt;br /&gt;
&lt;br /&gt;
client_socket 1832&lt;br /&gt;
client connected 127.0.0.1:12000&lt;br /&gt;
client connected: 127.0.0.1:12000&lt;br /&gt;
parse_command(Rx-842150451): 'attach 0'&lt;br /&gt;
response(Rx0): OK 96000'&lt;br /&gt;
parse_command(Rx0): 'start iq 13000'&lt;br /&gt;
response(Rx0): 'OK'&lt;br /&gt;
audio_thread port=15000&lt;br /&gt;
listening for rx 0 audio on port 15000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When dspserver starts it says (socket numbers and buffer addresses will be different on your system)--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hHPSDR rx 0 (Version 0.6)&lt;br /&gt;
getSoundcardID: HPSDR id=8&lt;br /&gt;
setSoundcard: 8&lt;br /&gt;
setSoundcard -11 000000 -25 000000&lt;br /&gt;
setup_system_audio: sdr-5044-0&lt;br /&gt;
setup_system_audio: sdr-5044-1&lt;br /&gt;
client_init audio_buffer_size=2000 audio_buffer=9736336&lt;br /&gt;
client_thread&lt;br /&gt;
client_thread: listening on port 8000&lt;br /&gt;
ozy_init: command bound to port 12000 socket 1808&lt;br /&gt;
ozy_init: server 127.0.0.1&lt;br /&gt;
connect: sampleRate=96000&lt;br /&gt;
setSpeed 1&lt;br /&gt;
ozy_init: iq bound to port 13000 socket=1776&lt;br /&gt;
iq_thread: socket 1784&lt;br /&gt;
output_sample_increment=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(when jmonitor for Rx 0 starts, dspserver says:)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
26/06/2010 23:48:29 RX0: client connection from 127.0.0.1:2995&lt;br /&gt;
client message: setFrequency 7048000&lt;br /&gt;
client message: setMode 0&lt;br /&gt;
client message: setFilter -2850 -150&lt;br /&gt;
client message: SetRXOutputGain 30&lt;br /&gt;
client message: start AudioStream 480&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you start additional receivers, and make changes to the state of each of the receivers,&lt;br /&gt;
you'll see more output from server and the dspservers.&lt;br /&gt;
&lt;br /&gt;
Some information on how to make a receiver available on the internet may be found at&lt;br /&gt;
&lt;br /&gt;
http://www.n9vv.com/N6LYT-Online-Mercury-Receiver.pdf&lt;br /&gt;
&lt;br /&gt;
Please post your comments and questions to the openhpsdr email reflector, hpsdr (at) openhpsdr.org.&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Multiple_independent_receivers_-_how_to_set_up_on_Windows&amp;diff=3465</id>
		<title>Multiple independent receivers - how to set up on Windows</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Multiple_independent_receivers_-_how_to_set_up_on_Windows&amp;diff=3465"/>
				<updated>2010-07-17T23:50:57Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;On the SVN&lt;br /&gt;
&lt;br /&gt;
[[svn://64.245.179.219/svn/repos_hpsdr_kiss/branches/WA8YWQ/ghpsdr3-Windows]]&lt;br /&gt;
&lt;br /&gt;
you'll find the following folders&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Folder             Contents&lt;br /&gt;
bin                Executables and all files needed to run&lt;br /&gt;
dist               java files for jmonitor (you'll need to have installed java)&lt;br /&gt;
dspserver          source for dspserver, with solution/project files&lt;br /&gt;
DttSP              source for DSP package, with solution/project files to create .dll&lt;br /&gt;
LoadMercuryFirmware      all files needed to load Mercury FPGA with V3.0&lt;br /&gt;
server	           source for server, with VS2003 solution/project files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Two of the parts of John Melton's ghpsdr3 have been ported to Windows (tested on XP 32 bit)&lt;br /&gt;
The two pieces are &amp;quot;server&amp;quot; and &amp;quot;dspserver&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
These two, with Mercury FPGA version 3.0 and the corresponding Ozy code (version 1.8), &lt;br /&gt;
provide for four simulteneous independent receivers for a single Mercury board, using John's &lt;br /&gt;
jmonitor as the (minimal) receiver graphical user interface.  The controls available for &lt;br /&gt;
each receiver are fewer than with PowerSDR or KK, but are quite adequate for monitoring &lt;br /&gt;
up to four 96kHz segments in the frequency range 0 to 55 MHz simultaneously.&lt;br /&gt;
&lt;br /&gt;
No transmit capability is provided.&lt;br /&gt;
&lt;br /&gt;
Both parts are written in pure C  (no C++).  The files include project (solution) files for&lt;br /&gt;
Visual Studio 2003.  You'll probably have no trouble using VS2005 or VS2008.&lt;br /&gt;
I've added #ifdef ... #endif so that (hopefully) the same code may be compiled on Windows&lt;br /&gt;
and on Linux.  Once any problems have been ironed out, the merged code will be placed in the&lt;br /&gt;
SVN trunk, rather than branch, so that further development will simultaneously apply to both&lt;br /&gt;
Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
In the future, additional options will be explored / implemented.  These include using the fully-&lt;br /&gt;
featured ghpsdr3 receiver user interface, other receiver interfaces, connections to digital mode&lt;br /&gt;
software, and special communication software, such as WSPR.  Transmit capability may also be possible.&lt;br /&gt;
(Of course WSPR needs to transmit.  I'd hope that one could run WSPR on four bands simultaneously,&lt;br /&gt;
with the software setting Penelope frequency as needed.)&lt;br /&gt;
&lt;br /&gt;
The server part loads Ozy FX2 and FPGA via the USB, sends  I &amp;amp; Q samples to dspservers 0 thru 3,&lt;br /&gt;
and sends demodulated audio (for receiver 0 only) back to Ozy and Mercury.  Each jmonitor sends &lt;br /&gt;
demodulated audio to computer's sound card.  When more than one receiver is active, the sound &lt;br /&gt;
card output is the sum of audio from all active receivers.  If you want to listen to only one, &lt;br /&gt;
reduce the AFGain to zero on other instances of jmonitor.  The server does not read the 55 MHz wide&lt;br /&gt;
spectrum samples from Ozy / Mercury (USB endpoint 4).&lt;br /&gt;
&lt;br /&gt;
Each functional receiver uses its own instances of dspserver and jmonitor.  dspserver provides the&lt;br /&gt;
passband filtering, demodulation, AGC, and noise reduction.&lt;br /&gt;
&lt;br /&gt;
server and dspserver are launched from a command window (&amp;quot;DOS window&amp;quot;), and each is started with&lt;br /&gt;
some command-line arguments, or options.&lt;br /&gt;
&lt;br /&gt;
For the server, the options are--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
receivers      1, 2, 3, or 4	the number of simultaneous receivers to be supported&lt;br /&gt;
samplerate     96000           one of 48000, 96000, 192000 (only tested with 96000)&lt;br /&gt;
dither 	       on / off        Setting for Mercury ADC&lt;br /&gt;
random	       on / off	       Setting for Mercury ADC&lt;br /&gt;
preamp	       on / off	       Setting for Mercury&lt;br /&gt;
10mhzsource    atlas / penelope / mercury&lt;br /&gt;
122.8mhzsource penelope / mercury&lt;br /&gt;
micsource      penelope / janus&lt;br /&gt;
class          other / E&lt;br /&gt;
timing&lt;br /&gt;
	&lt;br /&gt;
The default settings are&lt;br /&gt;
receivers 1&lt;br /&gt;
samplerate 96000&lt;br /&gt;
dither	off&lt;br /&gt;
random	off&lt;br /&gt;
preamp	off&lt;br /&gt;
10mhzsource mercury&lt;br /&gt;
122.88mhzsource mercury&lt;br /&gt;
micsource penelope&lt;br /&gt;
class other&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You only need to specify the options whose values need to be different from the defaults.&lt;br /&gt;
&lt;br /&gt;
For the dspserver, the options are--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dspserver options:&lt;br /&gt;
soundcard	SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY, DELTA_44, FIREBOX, EDIROL_FA_66, HPSDR&lt;br /&gt;
receiver	0 - 3&lt;br /&gt;
server		IP address&lt;br /&gt;
offset		?&lt;br /&gt;
&lt;br /&gt;
default values:&lt;br /&gt;
soundcard	HPSDR&lt;br /&gt;
server		127.0.0.1	(this is &amp;quot;localhost&amp;quot;)&lt;br /&gt;
receiver	0&lt;br /&gt;
offset		0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make it easy to launch multiple receivers, make a folder with a short path name, such as&lt;br /&gt;
C:\MultiRx&lt;br /&gt;
&lt;br /&gt;
Into this folder place the following--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libfftw3f-3.dll&lt;br /&gt;
pthreadVC2.dll&lt;br /&gt;
jmonitor.jar&lt;br /&gt;
ozyfw-sdr1k.hex&lt;br /&gt;
Ozy_Janus.rbf&lt;br /&gt;
server.exe&lt;br /&gt;
dspserver.exe&lt;br /&gt;
folder &amp;quot;lib&amp;quot; from the java dist folder&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's how to start the system--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
First command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
server --receivers 4 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2nd command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
dspserver --receiver 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3rd command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
java -jar &amp;quot;jmonitor.jar&amp;quot; --server 127.0.0.1 --receiver 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you have one receiver running.&lt;br /&gt;
&lt;br /&gt;
To use more than one simultaneous receiver,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
When launching server, use a value greater than 1 for the number of receivers.&lt;br /&gt;
Launch multiple copies of dspserver and jmonitor, each from their own command window, using different receiver numbers--ie 0, 1, 2, 3 &lt;br /&gt;
(Only one instance of server is needed--it supplies connection to the hardware for all receivers.)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With 4 receivers running, you'll have 9 command windows open.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When server starts it says--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listening for TCP connections on port 11000&lt;br /&gt;
    (a few seconds delay while Ozy FX2 and FPGA are loaded)&lt;br /&gt;
... (hex dumps of 9 USB frames)&lt;br /&gt;
server configured for 4 receivers at 96000&lt;br /&gt;
Ozy Software version 18&lt;br /&gt;
Mercury Software version 30&lt;br /&gt;
&lt;br /&gt;
client_socket 1832&lt;br /&gt;
client connected 127.0.0.1:12000&lt;br /&gt;
client connected: 127.0.0.1:12000&lt;br /&gt;
parse_command(Rx-842150451): 'attach 0'&lt;br /&gt;
response(Rx0): OK 96000'&lt;br /&gt;
parse_command(Rx0): 'start iq 13000'&lt;br /&gt;
response(Rx0): 'OK'&lt;br /&gt;
audio_thread port=15000&lt;br /&gt;
listening for rx 0 audio on port 15000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When dspserver starts it says (socket numbers and buffer addresses will be different on your system)--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hHPSDR rx 0 (Version 0.6)&lt;br /&gt;
getSoundcardID: HPSDR id=8&lt;br /&gt;
setSoundcard: 8&lt;br /&gt;
setSoundcard -11 000000 -25 000000&lt;br /&gt;
setup_system_audio: sdr-5044-0&lt;br /&gt;
setup_system_audio: sdr-5044-1&lt;br /&gt;
client_init audio_buffer_size=2000 audio_buffer=9736336&lt;br /&gt;
client_thread&lt;br /&gt;
client_thread: listening on port 8000&lt;br /&gt;
ozy_init: command bound to port 12000 socket 1808&lt;br /&gt;
ozy_init: server 127.0.0.1&lt;br /&gt;
connect: sampleRate=96000&lt;br /&gt;
setSpeed 1&lt;br /&gt;
ozy_init: iq bound to port 13000 socket=1776&lt;br /&gt;
iq_thread: socket 1784&lt;br /&gt;
output_sample_increment=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(when jmonitor for Rx 0 starts, dspserver says:)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
26/06/2010 23:48:29 RX0: client connection from 127.0.0.1:2995&lt;br /&gt;
client message: setFrequency 7048000&lt;br /&gt;
client message: setMode 0&lt;br /&gt;
client message: setFilter -2850 -150&lt;br /&gt;
client message: SetRXOutputGain 30&lt;br /&gt;
client message: start AudioStream 480&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you start additional receivers, and make changes to the state of each of the receivers,&lt;br /&gt;
you'll see more output from server and the dspservers.&lt;br /&gt;
&lt;br /&gt;
Please post your comments and questions to the openhpsdr email reflector.&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Multiple_independent_receivers_-_how_to_set_up_on_Windows&amp;diff=3464</id>
		<title>Multiple independent receivers - how to set up on Windows</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Multiple_independent_receivers_-_how_to_set_up_on_Windows&amp;diff=3464"/>
				<updated>2010-07-16T15:46:38Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The SVN (need to show link) has the following folders:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Folder             Contents&lt;br /&gt;
bin                Executables and all files needed to run&lt;br /&gt;
dist               java files for jmonitor (you'll need to have installed java)&lt;br /&gt;
dspserver          source for dspserver, with solution/project files&lt;br /&gt;
DttSP              source for DSP package, with solution/project files to create .dll&lt;br /&gt;
LoadMercuryFirmware      all files needed to load Mercury FPGA with V3.0&lt;br /&gt;
server	           source for server, with VS2003 solution/project files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Two of the parts of John Melton's ghpsdr3 have been ported to Windows (tested on XP 32 bit)&lt;br /&gt;
The two pieces are &amp;quot;server&amp;quot; and &amp;quot;dspserver&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
These two, with Mercury FPGA version 3.0 and the corresponding Ozy code (version 1.8), &lt;br /&gt;
provide for four simulteneous independent receivers for a single Mercury board, using John's &lt;br /&gt;
jmonitor as the (minimal) receiver graphical user interface.  The controls available for &lt;br /&gt;
each receiver are fewer than with PowerSDR or KK, but are quite adequate for monitoring &lt;br /&gt;
up to four 96kHz segments in the frequency range 0 to 55 MHz simultaneously.&lt;br /&gt;
&lt;br /&gt;
No transmit capability is provided.&lt;br /&gt;
&lt;br /&gt;
Both parts are written in pure C  (no C++).  The files include project (solution) files for&lt;br /&gt;
Visual Studio 2003.  You'll probably have no trouble using VS2005 or VS2008.&lt;br /&gt;
I've added #ifdef ... #endif so that (hopefully) the same code may be compiled on Windows&lt;br /&gt;
and on Linux.  Once any problems have been ironed out, the merged code will be placed in the&lt;br /&gt;
SVN trunk, rather than branch, so that further development will simultaneously apply to both&lt;br /&gt;
Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
In the future, additional options will be explored / implemented.  These include using the fully-&lt;br /&gt;
featured ghpsdr3 receiver user interface, other receiver interfaces, connections to digital mode&lt;br /&gt;
software, and special communication software, such as WSPR.  Transmit capability may also be possible.&lt;br /&gt;
(Of course WSPR needs to transmit.  I'd hope that one could run WSPR on four bands simultaneously,&lt;br /&gt;
with the software setting Penelope frequency as needed.)&lt;br /&gt;
&lt;br /&gt;
The server part loads Ozy FX2 and FPGA via the USB, sends  I &amp;amp; Q samples to dspservers 0 thru 3,&lt;br /&gt;
and sends demodulated audio (for receiver 0 only) back to Ozy and Mercury.  Each jmonitor sends &lt;br /&gt;
demodulated audio to computer's sound card.  When more than one receiver is active, the sound &lt;br /&gt;
card output is the sum of audio from all active receivers.  If you want to listen to only one, &lt;br /&gt;
reduce the AFGain to zero on other instances of jmonitor.  The server does not read the 55 MHz wide&lt;br /&gt;
spectrum samples from Ozy / Mercury (USB endpoint 4).&lt;br /&gt;
&lt;br /&gt;
Each functional receiver uses its own instances of dspserver and jmonitor.  dspserver provides the&lt;br /&gt;
passband filtering, demodulation, AGC, and noise reduction.&lt;br /&gt;
&lt;br /&gt;
server and dspserver are launched from a command window (&amp;quot;DOS window&amp;quot;), and each is started with&lt;br /&gt;
some command-line arguments, or options.&lt;br /&gt;
&lt;br /&gt;
For the server, the options are--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
receivers      1, 2, 3, or 4	the number of simultaneous receivers to be supported&lt;br /&gt;
samplerate     96000           one of 48000, 96000, 192000 (only tested with 96000)&lt;br /&gt;
dither 	       on / off        Setting for Mercury ADC&lt;br /&gt;
random	       on / off	       Setting for Mercury ADC&lt;br /&gt;
preamp	       on / off	       Setting for Mercury&lt;br /&gt;
10mhzsource    atlas / penelope / mercury&lt;br /&gt;
122.8mhzsource penelope / mercury&lt;br /&gt;
micsource      penelope / janus&lt;br /&gt;
class          other / E&lt;br /&gt;
timing&lt;br /&gt;
	&lt;br /&gt;
The default settings are&lt;br /&gt;
receivers 1&lt;br /&gt;
samplerate 96000&lt;br /&gt;
dither	off&lt;br /&gt;
random	off&lt;br /&gt;
preamp	off&lt;br /&gt;
10mhzsource mercury&lt;br /&gt;
122.88mhzsource mercury&lt;br /&gt;
micsource penelope&lt;br /&gt;
class other&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You only need to specify the options whose values need to be different from the defaults.&lt;br /&gt;
&lt;br /&gt;
For the dspserver, the options are--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dspserver options:&lt;br /&gt;
soundcard	SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY, DELTA_44, FIREBOX, EDIROL_FA_66, HPSDR&lt;br /&gt;
receiver	0 - 3&lt;br /&gt;
server		IP address&lt;br /&gt;
offset		?&lt;br /&gt;
&lt;br /&gt;
default values:&lt;br /&gt;
soundcard	HPSDR&lt;br /&gt;
server		127.0.0.1	(this is &amp;quot;localhost&amp;quot;)&lt;br /&gt;
receiver	0&lt;br /&gt;
offset		0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make it easy to launch multiple receivers, make a folder with a short path name, such as&lt;br /&gt;
C:\MultiRx&lt;br /&gt;
&lt;br /&gt;
Into this folder place the following--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libfftw3f-3.dll&lt;br /&gt;
pthreadVC2.dll&lt;br /&gt;
jmonitor.jar&lt;br /&gt;
ozyfw-sdr1k.hex&lt;br /&gt;
Ozy_Janus.rbf&lt;br /&gt;
server.exe&lt;br /&gt;
dspserver.exe&lt;br /&gt;
folder &amp;quot;lib&amp;quot; from the java dist folder&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's how to start the system--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
First command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
server --receivers 4 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2nd command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
dspserver --receiver 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3rd command window&lt;br /&gt;
cd \MultiRx&lt;br /&gt;
java -jar &amp;quot;jmonitor.jar&amp;quot; --server 127.0.0.1 --receiver 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you have one receiver running.&lt;br /&gt;
&lt;br /&gt;
To use more than one simultaneous receiver,&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
When launching server, use a value greater than 1 for the number of receivers.&lt;br /&gt;
Launch multiple copies of dspserver and jmonitor, each from their own command window, using different receiver numbers--ie 0, 1, 2, 3 &lt;br /&gt;
(Only one instance of server is needed--it supplies connection to the hardware for all receivers.)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With 4 receivers running, you'll have 9 command windows open.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When server starts it says--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listening for TCP connections on port 11000&lt;br /&gt;
    (a few seconds delay while Ozy FX2 and FPGA are loaded)&lt;br /&gt;
... (hex dumps of 9 USB frames)&lt;br /&gt;
server configured for 4 receivers at 96000&lt;br /&gt;
Ozy Software version 18&lt;br /&gt;
Mercury Software version 30&lt;br /&gt;
&lt;br /&gt;
client_socket 1832&lt;br /&gt;
client connected 127.0.0.1:12000&lt;br /&gt;
client connected: 127.0.0.1:12000&lt;br /&gt;
parse_command(Rx-842150451): 'attach 0'&lt;br /&gt;
response(Rx0): OK 96000'&lt;br /&gt;
parse_command(Rx0): 'start iq 13000'&lt;br /&gt;
response(Rx0): 'OK'&lt;br /&gt;
audio_thread port=15000&lt;br /&gt;
listening for rx 0 audio on port 15000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When dspserver starts it says (socket numbers and buffer addresses will be different on your system)--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hHPSDR rx 0 (Version 0.6)&lt;br /&gt;
getSoundcardID: HPSDR id=8&lt;br /&gt;
setSoundcard: 8&lt;br /&gt;
setSoundcard -11 000000 -25 000000&lt;br /&gt;
setup_system_audio: sdr-5044-0&lt;br /&gt;
setup_system_audio: sdr-5044-1&lt;br /&gt;
client_init audio_buffer_size=2000 audio_buffer=9736336&lt;br /&gt;
client_thread&lt;br /&gt;
client_thread: listening on port 8000&lt;br /&gt;
ozy_init: command bound to port 12000 socket 1808&lt;br /&gt;
ozy_init: server 127.0.0.1&lt;br /&gt;
connect: sampleRate=96000&lt;br /&gt;
setSpeed 1&lt;br /&gt;
ozy_init: iq bound to port 13000 socket=1776&lt;br /&gt;
iq_thread: socket 1784&lt;br /&gt;
output_sample_increment=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(when jmonitor for Rx 0 starts, dspserver says:)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
26/06/2010 23:48:29 RX0: client connection from 127.0.0.1:2995&lt;br /&gt;
client message: setFrequency 7048000&lt;br /&gt;
client message: setMode 0&lt;br /&gt;
client message: setFilter -2850 -150&lt;br /&gt;
client message: SetRXOutputGain 30&lt;br /&gt;
client message: start AudioStream 480&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you start additional receivers, and make changes to the state of each of the receivers,&lt;br /&gt;
you'll see more output from server and the dspservers.&lt;br /&gt;
&lt;br /&gt;
Please post your comments and questions to the openhpsdr email reflector.&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Multiple_independent_receivers_-_how_to_set_up_on_Windows&amp;diff=3463</id>
		<title>Multiple independent receivers - how to set up on Windows</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Multiple_independent_receivers_-_how_to_set_up_on_Windows&amp;diff=3463"/>
				<updated>2010-07-16T15:34:39Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The SVN (need to show link) has the following folders:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Folder             Contents&lt;br /&gt;
bin                Executables and all files needed to run&lt;br /&gt;
dist               java files for jmonitor (you'll need to have installed java)&lt;br /&gt;
dspserver          source for dspserver, with solution/project files&lt;br /&gt;
DttSP              source for DSP package, with solution/project files to create .dll&lt;br /&gt;
LoadMercuryFirmware      all files needed to load Mercury FPGA with V3.0&lt;br /&gt;
server	           source for server, with VS2003 solution/project files&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Two of the parts of John Melton's ghpsdr3 have been ported to Windows (tested on XP 32 bit)&lt;br /&gt;
The two pieces are &amp;quot;server&amp;quot; and &amp;quot;dspserver&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
These two, with Mercury FPGA version 3.0 and the corresponding Ozy code (version 1.8), &lt;br /&gt;
provide for four simulteneous independent receivers for a single Mercury board, using John's &lt;br /&gt;
jmonitor as the (minimal) receiver graphical user interface.  The controls available for &lt;br /&gt;
each receiver are fewer than with PowerSDR or KK, but are quite adequate for monitoring &lt;br /&gt;
up to four 96kHz segments in the frequency range 0 to 55 MHz simultaneously.&lt;br /&gt;
&lt;br /&gt;
No transmit capability is provided.&lt;br /&gt;
&lt;br /&gt;
Both parts are written in pure C  (no C++).  The files include project (solution) files for&lt;br /&gt;
Visual Studio 2003.  You'll probably have no trouble using VS2005 or VS2008.&lt;br /&gt;
I've added #ifdef ... #endif so that (hopefully) the same code may be compiled on Windows&lt;br /&gt;
and on Linux.  Once any problems have been ironed out, the merged code will be placed in the&lt;br /&gt;
SVN trunk, rather than branch, so that further development will simultaneously apply to both&lt;br /&gt;
Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
In the future, additional options will be explored / implemented.  These include using the fully-&lt;br /&gt;
featured ghpsdr3 receiver user interface, other receiver interfaces, connections to digital mode&lt;br /&gt;
software, and special communication software, such as WSPR.  Transmit capability may also be possible.&lt;br /&gt;
(Of course WSPR needs to transmit.  I'd hope that one could run WSPR on four bands simultaneously,&lt;br /&gt;
with the software setting Penelope frequency as needed.)&lt;br /&gt;
&lt;br /&gt;
The server part loads Ozy FX2 and FPGA via the USB, sends  I &amp;amp; Q samples to dspservers 0 thru 3,&lt;br /&gt;
and sends demodulated audio (for receiver 0 only) back to Ozy and Mercury.  Each jmonitor sends &lt;br /&gt;
demodulated audio to computer's sound card.  When more than one receiver is active, the sound &lt;br /&gt;
card output is the sum of audio from all active receivers.  If you want to listen to only one, &lt;br /&gt;
reduce the AFGain to zero on other instances of jmonitor.  The server does not read the 55 MHz wide&lt;br /&gt;
spectrum samples from Ozy / Mercury (USB endpoint 4).&lt;br /&gt;
&lt;br /&gt;
Each functional receiver uses its own instances of dspserver and jmonitor.  dspserver provides the&lt;br /&gt;
passband filtering, demodulation, AGC, and noise reduction.&lt;br /&gt;
&lt;br /&gt;
server and dspserver are launched from a command window (&amp;quot;DOS window&amp;quot;), and each is started with&lt;br /&gt;
some command-line arguments, or options.&lt;br /&gt;
&lt;br /&gt;
For the server, the options are--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
receivers   1, 2, 3, or 4	the number of simultaneous receivers to be supported&lt;br /&gt;
samplerate 	#	one of 48000, 96000, 192000 (only tested with 96000)&lt;br /&gt;
dither 	    on / off	Setting for Mercury ADC&lt;br /&gt;
random	    on / off	Setting for Mercury ADC&lt;br /&gt;
preamp	    on / off	Setting for Mercury&lt;br /&gt;
10mhzsource	atlas / penelope / mercury&lt;br /&gt;
122.8mhzsource	penelope / mercury&lt;br /&gt;
micsource	penelope / janus&lt;br /&gt;
class		other / E&lt;br /&gt;
timing&lt;br /&gt;
	&lt;br /&gt;
The default settings are&lt;br /&gt;
receivers 1&lt;br /&gt;
samplerate 96000&lt;br /&gt;
dither	off&lt;br /&gt;
random	off&lt;br /&gt;
preamp	off&lt;br /&gt;
10mhzsource mercury&lt;br /&gt;
122.88mhzsource mercury&lt;br /&gt;
micsource penelope&lt;br /&gt;
class other&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You only need to specify the options whose values need to be different from the defaults.&lt;br /&gt;
&lt;br /&gt;
For the dspserver, the options are--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dspserver options:&lt;br /&gt;
soundcard	SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY, DELTA_44, FIREBOX, EDIROL_FA_66, HPSDR&lt;br /&gt;
receiver	0 - 3&lt;br /&gt;
server		IP address&lt;br /&gt;
offset		?&lt;br /&gt;
&lt;br /&gt;
default values:&lt;br /&gt;
soundcard	HPSDR&lt;br /&gt;
server		127.0.0.1	(this is &amp;quot;localhost&amp;quot;)&lt;br /&gt;
receiver	0&lt;br /&gt;
offset		0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make it easy to launch multiple receivers, make a folder with a short path name, such as&lt;br /&gt;
C:\MultiRx&lt;br /&gt;
&lt;br /&gt;
Into this folder place the following--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libfftw3f-3.dll&lt;br /&gt;
pthreadVC2.dll&lt;br /&gt;
jmonitor.jar&lt;br /&gt;
ozyfw-sdr1k.hex&lt;br /&gt;
Ozy_Janus.rbf&lt;br /&gt;
server.exe&lt;br /&gt;
dspserver.exe&lt;br /&gt;
folder &amp;quot;lib&amp;quot; from the java dist folder&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's how to start the system--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
First command window&lt;br /&gt;
cd to the folder containing the required files and type--&lt;br /&gt;
server --receivers 4 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2nd command window&lt;br /&gt;
dspserver --receiver 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3rd command window&lt;br /&gt;
java -jar &amp;quot;jmonitor.jar&amp;quot; --server 127.0.0.1 --receiver 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you have one receiver running.&lt;br /&gt;
&lt;br /&gt;
To use more than one simultaneous receiver,&lt;br /&gt;
* When launching server, use a value greater than 1 for the number of receivers.&lt;br /&gt;
* Launch multiple copies of dspserver and jmonitor, each from their own command window,&lt;br /&gt;
    using different receiver numbers--ie 0, 1, 2, 3&lt;br /&gt;
    (Only one instance of server is needed--it supplies connection to the hardware for&lt;br /&gt;
     all receivers.)&lt;br /&gt;
&lt;br /&gt;
With 4 receivers running, you'll have 9 command windows open.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When server starts it says--&lt;br /&gt;
          (socket numbers and buffer addresses will be different on your system):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listening for TCP connections on port 11000&lt;br /&gt;
    (a few seconds delay while Ozy FX2 and FPGA are loaded)&lt;br /&gt;
... (hex dumps of 9 USB frames)&lt;br /&gt;
server configured for 4 receivers at 96000&lt;br /&gt;
Ozy Software version 18&lt;br /&gt;
Mercury Software version 30&lt;br /&gt;
&lt;br /&gt;
client_socket 1832&lt;br /&gt;
client connected 127.0.0.1:12000&lt;br /&gt;
client connected: 127.0.0.1:12000&lt;br /&gt;
parse_command(Rx-842150451): 'attach 0'&lt;br /&gt;
response(Rx0): OK 96000'&lt;br /&gt;
parse_command(Rx0): 'start iq 13000'&lt;br /&gt;
response(Rx0): 'OK'&lt;br /&gt;
audio_thread port=15000&lt;br /&gt;
listening for rx 0 audio on port 15000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When dspserver starts it says--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hHPSDR rx 0 (Version 0.6)&lt;br /&gt;
getSoundcardID: HPSDR id=8&lt;br /&gt;
setSoundcard: 8&lt;br /&gt;
setSoundcard -11 000000 -25 000000&lt;br /&gt;
setup_system_audio: sdr-5044-0&lt;br /&gt;
setup_system_audio: sdr-5044-1&lt;br /&gt;
client_init audio_buffer_size=2000 audio_buffer=9736336&lt;br /&gt;
client_thread&lt;br /&gt;
client_thread: listening on port 8000&lt;br /&gt;
ozy_init: command bound to port 12000 socket 1808&lt;br /&gt;
ozy_init: server 127.0.0.1&lt;br /&gt;
connect: sampleRate=96000&lt;br /&gt;
setSpeed 1&lt;br /&gt;
ozy_init: iq bound to port 13000 socket=1776&lt;br /&gt;
iq_thread: socket 1784&lt;br /&gt;
output_sample_increment=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(when jmonitor for Rx 0 starts, dspserver says:)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
26/06/2010 23:48:29 RX0: client connection from 127.0.0.1:2995&lt;br /&gt;
client message: setFrequency 7048000&lt;br /&gt;
client message: setMode 0&lt;br /&gt;
client message: setFilter -2850 -150&lt;br /&gt;
client message: SetRXOutputGain 30&lt;br /&gt;
client message: start AudioStream 480&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you start additional receivers, and make changes to the state of each of the receivers,&lt;br /&gt;
you'll see more output from server and the dspservers.&lt;br /&gt;
&lt;br /&gt;
Please post your comments and questions to the openhpsdr email reflector.&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Multiple_independent_receivers_-_how_to_set_up_on_Windows&amp;diff=3462</id>
		<title>Multiple independent receivers - how to set up on Windows</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Multiple_independent_receivers_-_how_to_set_up_on_Windows&amp;diff=3462"/>
				<updated>2010-07-16T15:27:28Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: Added page with information about running ghpsdr3 on Windows&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Folder	Contents&lt;br /&gt;
bin	Executables and all files needed to run&lt;br /&gt;
server	source for server, with VS2003 solution/project files&lt;br /&gt;
dspserver	source for dspserver, with solution/project files&lt;br /&gt;
dist	java files for jmonitor (you'll need to have installed java)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Two of the parts of John Melton's ghpsdr3 have been ported to Windows (tested on XP 32 bit)&lt;br /&gt;
The two pieces are &amp;quot;server&amp;quot; and &amp;quot;dspserver&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
These two, with Mercury FPGA version 3.0 and the corresponding Ozy code (version 1.8), &lt;br /&gt;
provide for four simulteneous independent receivers for a single Mercury board, using John's &lt;br /&gt;
jmonitor as the (minimal) receiver graphical user interface.  The controls available for &lt;br /&gt;
each receiver are fewer than with PowerSDR or KK, but are quite adequate, for monitoring &lt;br /&gt;
up to four 96kHz segments in the frequency range 0 to 55 MHz simultaneously.&lt;br /&gt;
&lt;br /&gt;
No transmit capability is provided.&lt;br /&gt;
&lt;br /&gt;
Both parts are written in pure C  (no C++).  The files include project (solution) files for&lt;br /&gt;
Visual Studio 2003.  You'll probably have no trouble using VS2005 or VS2008.&lt;br /&gt;
I've added #ifdef ... #endif so that (hopefully) the same code may be compiled on Windows&lt;br /&gt;
and on Linux.  Once any problems have been ironed out, the merged code will be placed in the&lt;br /&gt;
SVN trunk, rather than branch, so that further development will simultaneously apply to both&lt;br /&gt;
Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
In the future, additional options will be explored / implemented.  These include using the fully-&lt;br /&gt;
featured ghpsdr3 receiver user interface, other receiver interfaces, connections to digital mode&lt;br /&gt;
software, and special communication software, such as WSPR.  Transmit capability may also be possible.&lt;br /&gt;
(Of course WSPR needs to transmit.  I'd hope that one could run WSPR on four bands simultaneously,&lt;br /&gt;
with the software setting Penelope frequency as needed.)&lt;br /&gt;
&lt;br /&gt;
The server part loads Ozy FX2 and FPGA via the USB, sends  I &amp;amp; Q samples to dspservers 0 thru 3,&lt;br /&gt;
and sends demodulated audio (for receiver 0 only) back to Ozy and Mercury.  Each jmonitor sends &lt;br /&gt;
demodulated audio to computer's sound card.  When more than one receiver is active, the sound &lt;br /&gt;
card output is the sum of audio from all active receivers.  If you want to listen to only one, &lt;br /&gt;
reduce the AFGain to zero on other instances of jmonitor.  The server does not read the 55 MHz wide&lt;br /&gt;
spectrum samples from Ozy / Mercury (USB endpoint 4).&lt;br /&gt;
&lt;br /&gt;
Each functional receiver uses its own instances of dspserver and jmonitor.  dspserver provides the&lt;br /&gt;
passband filtering, demodulation, AGC, and noise reduction.&lt;br /&gt;
&lt;br /&gt;
server and dspserver are launched from a command window (&amp;quot;DOS window&amp;quot;), and each is started with&lt;br /&gt;
some command-line arguments, or options.&lt;br /&gt;
&lt;br /&gt;
For the server, the options are--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
receivers   1, 2, 3, or 4	the number of simultaneous receivers to be supported&lt;br /&gt;
samplerate 	#	one of 48000, 96000, 192000 (only tested with 96000)&lt;br /&gt;
dither 	    on / off	Setting for Mercury ADC&lt;br /&gt;
random	    on / off	Setting for Mercury ADC&lt;br /&gt;
preamp	    on / off	Setting for Mercury&lt;br /&gt;
10mhzsource	atlas / penelope / mercury&lt;br /&gt;
122.8mhzsource	penelope / mercury&lt;br /&gt;
micsource	penelope / janus&lt;br /&gt;
class		other / E&lt;br /&gt;
timing&lt;br /&gt;
	&lt;br /&gt;
The default settings are&lt;br /&gt;
receivers 1&lt;br /&gt;
samplerate 96000&lt;br /&gt;
dither	off&lt;br /&gt;
random	off&lt;br /&gt;
preamp	off&lt;br /&gt;
10mhzsource mercury&lt;br /&gt;
122.88mhzsource mercury&lt;br /&gt;
micsource penelope&lt;br /&gt;
class other&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You only need to specify the options whose values need to be different from the defaults.&lt;br /&gt;
&lt;br /&gt;
For the dspserver, the options are--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dspserver options:&lt;br /&gt;
soundcard	SANTA_CRUZ, AUDIGY_2_ZS, MP3_PLUS, EXTIGY, DELTA_44, FIREBOX, EDIROL_FA_66, HPSDR&lt;br /&gt;
receiver	0 - 3&lt;br /&gt;
server		IP address&lt;br /&gt;
offset		?&lt;br /&gt;
&lt;br /&gt;
default values:&lt;br /&gt;
soundcard	HPSDR&lt;br /&gt;
server		127.0.0.1	(this is &amp;quot;localhost&amp;quot;)&lt;br /&gt;
receiver	0&lt;br /&gt;
offset		0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make it easy to launch multiple receivers, make a folder with a short path name, such as&lt;br /&gt;
C:\MultiRx&lt;br /&gt;
&lt;br /&gt;
Into this folder place the following--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
libfftw3f-3.dll&lt;br /&gt;
pthreadVC2.dll&lt;br /&gt;
jmonitor.jar&lt;br /&gt;
ozyfw-sdr1k.hex&lt;br /&gt;
Ozy_Janus.rbf&lt;br /&gt;
server.exe&lt;br /&gt;
dspserver.exe&lt;br /&gt;
folder &amp;quot;lib&amp;quot; from the java dist folder&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's how to start the system--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
First command window&lt;br /&gt;
cd to the folder containing the required files and type--&lt;br /&gt;
server --receivers 4 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2nd command window&lt;br /&gt;
dspserver --receiver 0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3rd command window&lt;br /&gt;
java -jar &amp;quot;jmonitor.jar&amp;quot; --server 127.0.0.1 --receiver 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you have one receiver running.&lt;br /&gt;
&lt;br /&gt;
To use more than one simultaneous receiver,&lt;br /&gt;
* When launching server, use a value greater than 1 for the number of receivers.&lt;br /&gt;
* Launch multiple copies of dspserver and jmonitor, each from their own command window,&lt;br /&gt;
    using different receiver numbers--ie 0, 1, 2, 3&lt;br /&gt;
    (Only one instance of server is needed--it supplies connection to the hardware for&lt;br /&gt;
     all receivers.)&lt;br /&gt;
&lt;br /&gt;
With 4 receivers running, you'll have 9 command windows open.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When server starts it says--&lt;br /&gt;
          (socket numbers and buffer addresses will be different on your system):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Listening for TCP connections on port 11000&lt;br /&gt;
    (a few seconds delay while Ozy FX2 and FPGA are loaded)&lt;br /&gt;
... (hex dumps of 9 USB frames)&lt;br /&gt;
server configured for 4 receivers at 96000&lt;br /&gt;
Ozy Software version 18&lt;br /&gt;
Mercury Software version 30&lt;br /&gt;
&lt;br /&gt;
client_socket 1832&lt;br /&gt;
client connected 127.0.0.1:12000&lt;br /&gt;
client connected: 127.0.0.1:12000&lt;br /&gt;
parse_command(Rx-842150451): 'attach 0'&lt;br /&gt;
response(Rx0): OK 96000'&lt;br /&gt;
parse_command(Rx0): 'start iq 13000'&lt;br /&gt;
response(Rx0): 'OK'&lt;br /&gt;
audio_thread port=15000&lt;br /&gt;
listening for rx 0 audio on port 15000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When dspserver starts it says--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
hHPSDR rx 0 (Version 0.6)&lt;br /&gt;
getSoundcardID: HPSDR id=8&lt;br /&gt;
setSoundcard: 8&lt;br /&gt;
setSoundcard -11 000000 -25 000000&lt;br /&gt;
setup_system_audio: sdr-5044-0&lt;br /&gt;
setup_system_audio: sdr-5044-1&lt;br /&gt;
client_init audio_buffer_size=2000 audio_buffer=9736336&lt;br /&gt;
client_thread&lt;br /&gt;
client_thread: listening on port 8000&lt;br /&gt;
ozy_init: command bound to port 12000 socket 1808&lt;br /&gt;
ozy_init: server 127.0.0.1&lt;br /&gt;
connect: sampleRate=96000&lt;br /&gt;
setSpeed 1&lt;br /&gt;
ozy_init: iq bound to port 13000 socket=1776&lt;br /&gt;
iq_thread: socket 1784&lt;br /&gt;
output_sample_increment=2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(when jmonitor for Rx 0 starts, dspserver says:)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
26/06/2010 23:48:29 RX0: client connection from 127.0.0.1:2995&lt;br /&gt;
client message: setFrequency 7048000&lt;br /&gt;
client message: setMode 0&lt;br /&gt;
client message: setFilter -2850 -150&lt;br /&gt;
client message: SetRXOutputGain 30&lt;br /&gt;
client message: start AudioStream 480&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you start additional receivers, and make changes to the state of each of the receivers,&lt;br /&gt;
you'll see more output from server and the dspservers.&lt;br /&gt;
&lt;br /&gt;
Please post your comments and questions to the openhpsdr email reflector.&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	<entry>
		<id>http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&amp;diff=3461</id>
		<title>Ghpsdr3</title>
		<link rel="alternate" type="text/html" href="http://openhpsdr.org/wiki/index.php?title=Ghpsdr3&amp;diff=3461"/>
				<updated>2010-07-16T14:52:27Z</updated>
		
		<summary type="html">&lt;p&gt;WA8YWQ: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:ghpsdr4.png|thumb|400px|right|Screenshot of the ghpsdr3 GUI on 20 meters. (Click to enlarge)]]&lt;br /&gt;
[[Image:Screenshot-JMonitor - Mozilla Firefox.png|thumb|400px|right|Screenshot of the java in a web browser GUI on 40 meters. (Click to enlarge)]]&lt;br /&gt;
[[Image:ghpsdr3.png|thumb|400px|right|Architecture of the server/dspserver/client configuration. (Click to enlarge)]]&lt;br /&gt;
&lt;br /&gt;
===Server/Client version of ghpsdr===&lt;br /&gt;
&lt;br /&gt;
'''ghpsdr3''' is a software defined radio server/client or server/dspserver/client format program written specifically for HPSDR by John Melton, G0ORX/N6LYT. &lt;br /&gt;
&lt;br /&gt;
The software is being developed on the Ubuntu version of Linux (specifically version 9.10).&lt;br /&gt;
&lt;br /&gt;
This version of '''ghpsdr3''' allows for the server and client to be on the same machine or separate machines. The servers are written in C and run on linux machines. John and others are working on a full set of clients to run on multiple machines connecting to the servers through TCP/IP protocals.&lt;br /&gt;
&lt;br /&gt;
To follow the development of this code look at John's Blog http://g0orx.blogspot.com/&lt;br /&gt;
&lt;br /&gt;
===SVN===&lt;br /&gt;
The software is available from SVN and includes a precompiled executable in the bin directory.  There are now a compiled version of the 64-bit linux version, 32-bit linux version and the MacOS version.  The README explains how to compile the source if you wish to modify the code.&lt;br /&gt;
&lt;br /&gt;
Since this code does not currently run on Windows here is the Linux svn command,&lt;br /&gt;
&lt;br /&gt;
svn co svn://64.245.179.219/svn/repos_sdr_hpsdr/trunk/N6LYT/ghpsdr3&lt;br /&gt;
&lt;br /&gt;
===Libraries===&lt;br /&gt;
It uses a modifed version of DttSP that is ported from the Windows version. DttSP is built as a static library that is linked with the GUI code.  The DttSP code is provided with the SVN distribution.&lt;br /&gt;
&lt;br /&gt;
You will need a couple of libraries to run this code, they include:&lt;br /&gt;
* '''libfftw3''' - FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST).&lt;br /&gt;
* '''libgtk2''' - GTK+ is a highly usable, feature rich toolkit for creating graphical user interfaces which boasts cross platform compatibility and an easy to use API.&lt;br /&gt;
* '''libusb-1.0''' - libusb is an open source library that allows you to communicate with USB devices from userspace.&lt;br /&gt;
These can be obtain with your package installer.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
The image on this page illustrates the architecture of the ghpsdr3 software chain.  The software works with either the single receiver verilog code (Mercury 2.9) or the multiple receiver verilog code or (Mercury 3.0 experimental).  If Mercury 2.9 is install only one receiver can be accessed.  (Please not that there is a matching ozyfw-sdr1k.hex and Ozy_Janus.rbf file to go with the different versions of the Mercury code).&lt;br /&gt;
&lt;br /&gt;
'''HPSDR''' box represented the hardware and the Mercury/Ozy,Penelope, Mercury/Magister,Penelope, or Mercury/OzyII,Penelope &lt;br /&gt;
&lt;br /&gt;
'''Link between HPSDR and Server''' uses the communication protocol documented in USB Protocol v1.27 at the link on this page or in the SVN in the Documentation directory.&lt;br /&gt;
&lt;br /&gt;
'''Server''' box is a software multiplexer.  It takes the multiple receiver communication protocol and divides it in to single receiver channels.  &lt;br /&gt;
&lt;br /&gt;
'''Link between Server and Receiver clients''' output is the same IQ signal format as the single receiver USB format except the data is sent over UDP link.  The commands are handled as TCP protocol format to allow acknowledgement of the command. &lt;br /&gt;
&lt;br /&gt;
'''Receiver Clients''' can be in many forms and it was designed to foster experimentation.  The first client is the same interface used in '''ghpsdr'''.  The second interface is a simple waterfall called '''monitor''' used to keep track of activity on other bands.  Both of these programs the DSP code in in the GUI program.  These programs usually will be with a short distance of the server as the bandwidth is quite large for most home network connections.&lt;br /&gt;
&lt;br /&gt;
In an effort to demonstrate world wide access to your receiver a third approach was developed.  In this method the receiver client is a '''dspserver''' that take the output of the '''server''' and creates a low bandwidth version of the spectrum in 8 bit data, the audio data 8-bit ALAW audio format at only 480 sample size at 10 times a second.  The '''dspserver''' also accepts commands from the client.  To run multiple low bandwidth clients you must run a separate copy of '''dspserver''' for each client.  &lt;br /&gt;
&lt;br /&gt;
The base code for the current '''jmonitor''' is written in java.  It can be run as a program on a computer or within a webbrowser.  This code has also been ported to the iphone and Android platforms so that you can monitor your radios on the go.  At the 2010 Dayton Hamvention, John Melton monitored his receiver in England from the TAPR booth on the Hamvention floor.&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
Links to other pages:&lt;br /&gt;
&lt;br /&gt;
* [[ghpsdr3 FAQ|Frequently Asked Questions]]&lt;br /&gt;
* [http://www.tapr.org/pdf/2010-G0ORX-N6LYT-Putting-HPSDR-on-Internet.pdf John Melton's 2010 Dayton presentation on ghpsdr3]&lt;br /&gt;
* [http://www.n9vv.com/N6LYT-Online-Mercury-Receiver.pdf Ken Hoppers N9VV online documentation of the online multi-receiver setup.]&lt;br /&gt;
* [[How to set up on Windows]]&lt;br /&gt;
* Features List [[ghpsdr3 Requests|requests]]&lt;br /&gt;
* Programmers Notes&lt;br /&gt;
* - [[ghpsdr3 Ports|Ports]]&lt;br /&gt;
* Known [[ghpsdr3 Bugs|bugs]]&lt;br /&gt;
&lt;br /&gt;
[[Category:ghpsdr3| ]]&lt;/div&gt;</summary>
		<author><name>WA8YWQ</name></author>	</entry>

	</feed>