From Ghpsdr3 SDR project
Jump to: navigation, search

Thanks to Andrea for providing the Hermes backend for ghpsdr3-alex. There are two programs you need to start to get the server running. The first is hpsdr-server. It is the software that sets up the Hermes for action. It sends and gets data from the Hermes as shown on the Main Page.


Here is how you start the hpsdr-server from the command line.

$ hpsdr-server --samplerate 48000 --hermes 16 --interface eth2


  • you can use 48000, 96000, 192000, or 384000 for the --samplerate parameter.
  • the --hermes parameter is how much power Hermes will put out on transmit. The values go from 0 to 255.
  • the --interface parameter is the network interface that is connected to the same local area network that Hermes is connected to. It may be eth1, eth2, etc. or wlan1, wlan2, etc. You can figure out what it is by using the ifconfig command at the terminal as follows:
$ ifconfig
eth9      Link encap:Ethernet  HWaddr 5c:26:0a:45:28:7b  
         inet addr:  Bcast:  Mask:
         inet6 addr: fe80::5e26:aff:fe45:287b/64 Scope:Link
         RX packets:1877498 errors:0 dropped:0 overruns:0 frame:0
         TX packets:2572794 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:881124281 (881.1 MB)  TX bytes:3414696100 (3.4 GB)
         Interrupt:20 Memory:f6900000-f6920000 

lo        Link encap:Local Loopback  
         inet addr:  Mask:
         inet6 addr: ::1/128 Scope:Host
         UP LOOPBACK RUNNING  MTU:65536  Metric:1
         RX packets:7758949 errors:0 dropped:0 overruns:0 frame:0
         TX packets:7758949 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0 
         RX bytes:4143306543 (4.1 GB)  TX bytes:4143306543 (4.1 GB)

wlan2     Link encap:Ethernet  HWaddr 18:3d:a2:10:95:80  
         inet addr:  Bcast:  Mask:
         inet6 addr: fe80::1a3d:a2ff:fe10:9580/64 Scope:Link
         RX packets:3622385 errors:0 dropped:2 overruns:0 frame:0
         TX packets:1970372 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:4139564914 (4.1 GB)  TX bytes:1254030073 (1.2 GB)

In this case either eth9 or wlan2 could be used because my Hermes is on the 192.168.2.x network. The eth9 is an ethernet connection and wlan2 is a wireless connection. Other hpsdr-server options can be seen by using the --? option.

$ hpsdr-server --?
hpsdr-server: unrecognized option '--?'
 server --receivers N (default 1)
        --samplerate 48000|96000|192000|384000
        --dither off|on
        --random off|on
        --preamp off|on
        --10mhzsource atlas|penelope|mercury
        --122.88mhzsource atlas|penelope|mercury
        --micsource janus|penelope
        --class other|E
        --timing 1
        --interface if
        --fpga <file name>
        --ozyhex <file name>
        --hermes <power 0-255>


The second program you need to start is dspserver. It processes the samples coming from hpsdr-server using dttSP and communicates with the client (QtRadio, glSDR, etc.) to determine what signal processing is wanted. Here is how you start dspserver from the command line.

do dspserver --lo 0 --hpsdr --nocorrectiq --share

The options are described if you use the --? command line option as follows:

$ dspserver --?
dspserver: unrecognized option '--?'
 dspserver --receiver (0-3)
           --server (default
           --soundcard (machine dependent)
           --offset 0 
           --share (will register this server for other users 
                    use the default config file ~/.dspserver.conf) 
           --lo 0 (if no LO offset desired in DDC receivers, or 9000 in softrocks
           --hpsdr (if using hpsdr hardware with no local mike and headphone)
           --hpsdrloc (if using hpsdr hardware with LOCAL mike and headphone)
           --nocorrectiq (select if using non QSD receivers, like Hermes, Perseus, HiQSDR, Mercury)

Because the dspserver communicates with the clients and they are the most unstable as far as network connection, etc. I find that sometimes the dspserver crashes, so I have taken to making a script I call do-dspserver-hermes that contains the following to automatically restart it.

while true
       do dspserver --lo 0 --hpsdr --nocorrectiq --share
       sleep 5

You have to make this executable ($ chmod 755 do-dspserver-hermes) and put it somewhere in your command search PATH.

Other useful commands to google that will help you run the server on linux are nohup, top, ps and kill.