Difference between revisions of "Ghpsdr3"

From HPSDRwiki
Jump to: navigation, search
(Architecture)
(SVN)
 
(35 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
===Server/Client version of ghpsdr===
 
[[Image:ghpsdr4.png|thumb|400px|right|Screenshot of the ghpsdr3 GUI on 20 meters. (Click to enlarge)]]
 
[[Image:ghpsdr4.png|thumb|400px|right|Screenshot of the ghpsdr3 GUI on 20 meters. (Click to enlarge)]]
[[Image:Screenshot-JMonitor - Mozilla Firefox.png|thumb|400px|right|Screenshot of the java in a web browser GUI on 40 meters. (Click to enlarge)]]
 
[[Image:ghpsdr3.png|thumb|400px|right|Architecture of the server/dspserver/client configuration. (Click to enlarge)]]
 
 
===Server/Client version of ghpsdr===
 
  
 
'''ghpsdr3''' is a software defined radio server/client or server/dspserver/client format program written specifically for HPSDR by John Melton, G0ORX/N6LYT.  
 
'''ghpsdr3''' is a software defined radio server/client or server/dspserver/client format program written specifically for HPSDR by John Melton, G0ORX/N6LYT.  
Line 9: Line 6:
 
The software is being developed on the Ubuntu version of Linux (specifically version 9.10).
 
The software is being developed on the Ubuntu version of Linux (specifically version 9.10).
 
The server and dspserver have been ported to run on Windows--
 
The server and dspserver have been ported to run on Windows--
* [[How to set up on Windows]]
+
* [[Multiple independent receivers - how to set up on Windows]]
  
 
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.
 
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.
Line 20: Line 17:
 
Since this code does not currently run on Windows here is the Linux svn command,
 
Since this code does not currently run on Windows here is the Linux svn command,
  
   svn co svn://64.245.179.219/svn/repos_sdr_hpsdr/trunk/N6LYT/ghpsdr3
+
   svn co http://svn.tapr.org/repos_sdr_hpsdr/trunk/N6LYT/ghpsdr3
 +
 
 +
[[Image:Screenshot-JMonitor - Mozilla Firefox.png|thumb|400px|right|Screenshot of the java in a web browser GUI on 40 meters. (Click to enlarge)]]
 +
 
 +
[[Image:Screenshot-QtRadio-8.png|thumb|400px|right|Screenshot of the QtRadio GUI on 40 meters. (Click to enlarge)]]
  
 
===Libraries===
 
===Libraries===
Line 26: Line 27:
  
 
You will need a couple of libraries to run this code, they include:
 
You will need a couple of libraries to run this code, they include:
* '''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).
+
* '''libfftw3''' - [http://www.fftw.org/ FFTW3] 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).
* '''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.
+
* '''libgtk2''' - [http://www.gtk.org/ GTK+] is a highly usable, feature rich toolkit for creating graphical user interfaces which boasts cross platform compatibility and an easy to use API.
* '''libusb-1.0''' - libusb is an open source library that allows you to communicate with USB devices from userspace.
+
* '''libusb-1.0''' - [http://www.libusb.org/ libusb] is an open source library that allows you to communicate with USB devices from userspace.
 
These can be obtain with your package installer.
 
These can be obtain with your package installer.
  
 
===Architecture===
 
===Architecture===
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).
+
[[Image:ghpsdr3.png|thumb|400px|right|Architecture of the server/dspserver/client configuration. (Click to enlarge)]]
 +
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).
  
 
'''HPSDR''' box represented the hardware and the Mercury/Ozy,Penelope, Mercury/Magister,Penelope, or Mercury/OzyII,Penelope  
 
'''HPSDR''' box represented the hardware and the Mercury/Ozy,Penelope, Mercury/Magister,Penelope, or Mercury/OzyII,Penelope  
Line 38: Line 40:
 
'''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.
 
'''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.
  
'''Server''' box is a software multiplexer.  It takes the multiple receiver communication protocol and divides it in to single receiver channels.   
+
[[ghpsdr3 Server|'''Server''']] box is a software multiplexer.  It takes the multiple receiver communication protocol and divides it in to single receiver channels.   
  
 
'''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.  
 
'''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.  
  
'''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.
+
'''Receiver Clients''' can be in many forms and it was designed to foster experimentation.  The first client is the same interface used in [[ghpsdr3 receiver|'''ghpsdr''']].  The second interface is a simple waterfall called [[ghpsdr3 monitor|'''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.
  
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.   
+
In an effort to demonstrate world wide access to your receiver a third approach was developed.  In this method the receiver client is a [[ghpsdr3 dspserver|'''dspserver''']] that take the output of the [[ghpsdr3 Server|'''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 [[ghpsdr3 dspserver|'''dspserver''']] also accepts commands from the client.  To run multiple low bandwidth clients you must run a separate copy of [[ghpsdr3 dspserver|'''dspserver''']] for each client.   
  
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.
+
The base code for the current [[ghpsdr3 jmonitor|'''jmonitor''']] is written in java.  It can be run as a program on a computer or within a web browser.  This code has also been ported to the [[ghpsdr3 iphone|'''iphone''']] and [[ghpsdr3 android|'''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.
 
+
 +
In the summer of 2010 the development of the [[ghpsdr3_QtRadio|'''Qt Radio''']] and [[ghpsdr3 qtmonitor|'''qtmonitor''']] began.  This GUI is written in Qt4, an open-source cross platform environment.  The code compiles and runs on Linux, Windows and MacOS, this with the jmonitor and the server code written in the C language has been ported from Linux to Windows makes this a multi-platform radio environment.
 +
 
 +
All this code can be found in the SVN listed above.  Here is a [[ghpsdr3 build| '''build page''']] that helps explain how to build the applications.
  
 
Links to other pages:
 
Links to other pages:
Line 54: Line 59:
 
* [http://www.tapr.org/pdf/2010-G0ORX-N6LYT-Putting-HPSDR-on-Internet.pdf John Melton's 2010 Dayton presentation on ghpsdr3]
 
* [http://www.tapr.org/pdf/2010-G0ORX-N6LYT-Putting-HPSDR-on-Internet.pdf John Melton's 2010 Dayton presentation on ghpsdr3]
 
* [[Media:ghpsdr3-protocols2010-08-07.pdf|ghpsdr3 communication protocols 2010-08-07]]
 
* [[Media:ghpsdr3-protocols2010-08-07.pdf|ghpsdr3 communication protocols 2010-08-07]]
 +
* [[Ghpsdr3 protocols|updated protocol description]]
 
* [http://www.n9vv.com/N6LYT-Online-Mercury-Receiver.pdf Ken Hoppers N9VV online documentation of the online multi-receiver setup.]
 
* [http://www.n9vv.com/N6LYT-Online-Mercury-Receiver.pdf Ken Hoppers N9VV online documentation of the online multi-receiver setup.]
* [[How to set up on Windows]]
+
* [[Multiple independent receivers - how to set up on Windows]]
 
* Features List [[ghpsdr3 Requests|requests]]
 
* Features List [[ghpsdr3 Requests|requests]]
 
* Programmers Notes
 
* Programmers Notes
 
* - [[ghpsdr3 Ports|Ports]]
 
* - [[ghpsdr3 Ports|Ports]]
 
* Known [[ghpsdr3 Bugs|bugs]]
 
* Known [[ghpsdr3 Bugs|bugs]]
 +
 +
===Related Projects===
 +
 +
In an effort to increase networking related features and hardware receivers other than HPSDR hardware (eg. softrock, , a version of ghpsdr3 has been created call '''ghpsdr3-alex'''.  This code has the same base, but the current versions have diverged for their special purposes.  There is ongoing work to unify the code base.
 +
 +
* [http://napan.ca/ghpsdr3/ '''ghpsdr3-alex wiki''']
 +
* '''ghpsdr3-alex ppa'''  [https://launchpad.net/~andrew-montefusco/+archive/ghpsdr3 https://launchpad.net/~andrew-montefusco/+archive/ghpsdr3]
 +
* '''ghpsdr3-alex list''' [http://groups.google.com/group/sdr-widget http://groups.google.com/group/sdr-widget]
 +
* [http://openhpsdr.org/wiki/images/6/63/NewbieGuide.pdf '''Newbie Guide for ghpsdr3 and ghpsdr3-alex''']
  
 
[[Category:ghpsdr3| ]]
 
[[Category:ghpsdr3| ]]

Latest revision as of 09:23, 3 March 2012

Server/Client version of ghpsdr

Screenshot of the ghpsdr3 GUI on 20 meters. (Click to enlarge)

ghpsdr3 is a software defined radio server/client or server/dspserver/client format program written specifically for HPSDR by John Melton, G0ORX/N6LYT.

The software is being developed on the Ubuntu version of Linux (specifically version 9.10). The server and dspserver have been ported to run on Windows--

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.

To follow the development of this code look at John's Blog http://g0orx.blogspot.com/

SVN

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.

Since this code does not currently run on Windows here is the Linux svn command,

 svn co http://svn.tapr.org/repos_sdr_hpsdr/trunk/N6LYT/ghpsdr3
Screenshot of the java in a web browser GUI on 40 meters. (Click to enlarge)
Screenshot of the QtRadio GUI on 40 meters. (Click to enlarge)

Libraries

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.

You will need a couple of libraries to run this code, they include:

  • libfftw3 - FFTW3 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).
  • 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.
  • libusb-1.0 - libusb is an open source library that allows you to communicate with USB devices from userspace.

These can be obtain with your package installer.

Architecture

Architecture of the server/dspserver/client configuration. (Click to enlarge)

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).

HPSDR box represented the hardware and the Mercury/Ozy,Penelope, Mercury/Magister,Penelope, or Mercury/OzyII,Penelope

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.

Server box is a software multiplexer. It takes the multiple receiver communication protocol and divides it in to single receiver channels.

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.

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.

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.

The base code for the current jmonitor is written in java. It can be run as a program on a computer or within a web browser. 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.

In the summer of 2010 the development of the Qt Radio and qtmonitor began. This GUI is written in Qt4, an open-source cross platform environment. The code compiles and runs on Linux, Windows and MacOS, this with the jmonitor and the server code written in the C language has been ported from Linux to Windows makes this a multi-platform radio environment.

All this code can be found in the SVN listed above. Here is a build page that helps explain how to build the applications.

Links to other pages:

Related Projects

In an effort to increase networking related features and hardware receivers other than HPSDR hardware (eg. softrock, , a version of ghpsdr3 has been created call ghpsdr3-alex. This code has the same base, but the current versions have diverged for their special purposes. There is ongoing work to unify the code base.