QtRadio - Operation

From Ghpsdr3 SDR project
Revision as of 11:19, 27 November 2011 by Dl6kbg (Talk | contribs)

Jump to: navigation, search

Connecting to a server

Tuning the radio

Fixed frequency radio

For crystal locked radios such as the softrock lite II or YU1LM sdr's It is necessary to use subRx. The procedure is to set vfoA to your centre frequency, usually the crystal frequency / 4 and leave it alone as changing it will affect your centre frequency. Using the button on the vfo panel or the 'Receiver' Menu / subRx choice switch on the subRx. You can now tune within the limits of the sample rate of your sound card (48, 96 or 192 KHz).

Note that you need to start dspserver with LO offset of zero:

$ dspserver --lo 0

si570 tunable radio

In the Softrock series of hardware using sound cards, there is frequently a noise band near DC (offset 0). As such most users will set an offset of 9000 Hz (or 12000Hz etc.) using programs such as PSDR-IQ. You do the same when starting dspserver:

$ dspserver --lo 9000

Direct Down Conversion (DDC) radio

Such radios (eg. Perseus, HPSDR, usrp) do not need the offset. So start dspserver with:

$ dspserver --lo 0

Setting the noise floor

The height of the spectrum from the baseline is adjusted by rolling the mouse wheel with the pointer over the level calibration markings on the extreme left hand side of the spectrum window. This will at the same time change the base colour of the waterfall.

The procedure is: After setting the sound-card gain you should remove the antenna and roll the mouse-wheel to give a spectrum display line just above the bottom of the window. When you apply the antenna the spectrum will rise in the window and the waterfall base colour should be dark blue unless the band is particularly noisy.

Calibrating the S meter

To calibrate the S Meter, a signal equal to S9 (-73 dBm) is injected into the sdr and the soundcard gain is adjusted until the S meter reads S9. It will then probably be necessary to adjust the spectrum noise floor level.

A subjective calibration may be performed by tuning into a signal considered S9 and performing the above procedure.

VFO and Split selection

Using RIT

Changing bands

Using Quick Memories

Using subRx

To be constructed

The Menu choices

Receiver

Connect/Disconnect

You can connect to a server either by selecting the server in the Configure > Server list and then click Connect, or by selecting the server in the Quick Server List and click connect.

After you Disconnect from a server, you must wait at least 10 seconds for the disconnection to take full effect before connecting to another server. This is to allow the internet connection to really disconnect (remember there is network latency and the server will continue to send data till its buffers are emptied). Failure to do so will often result in error in QtRadio and may even hang QtRadio.

Quick Server List

If you see that a public server's status is "Busy", please do not connect to it. Doing so will disrupt the user already connected. If you see a server's status is "Idle" or "0 client(s)", you can connect to it. If you see "1 client(s)" or "2 client(s)" etc., you are sharing a connection to the same server. The first client is the master who has control over the vfo and Tx etc., and you will be connecting as a slave. You will only be able to listen to the audio and see the spectrum passively as an observer. When the clients before you disconnect, you will automatically become the master. This is a queuing mechanism.

Configure > Audio

If you are connecting to a public server on the Internet (ie not your own server on your LAN), please set Audio to 8000, aLaw, and 1 channel. If you use other settings, your QtRadio and/or the dspserver/server will hang.

Audio

Band

Mode

Filter

Noise Reduction

AGC

Spectrum

Hardware

Bookmarks

Transmit commands

Keyboard Shortcuts

  • Arrow Left/Right Tune Down/Up the active VFO
  • Arrow Up/Down Increase /Decrease Step Size above
  • lowercase a = VFOA
  • lowercase b = VFOB
  • lowercase c = Connect
  • lowercase d = Disconnect
  • lowercase k= Bring up Keypad entry window
  • lowercase l = Bring up Quick Connect Window
  • lowercase s = toggle SubRX

Using the Griffin Powermate USB Dial as VFO Knob

The Griffin Powermate USB DIal

Powermate .png

The Griffin Powermate has a single wheel and a pushbutton, which is able to do the following actions:

1. Rotate Clockwise
2. Rotate Counterclockwise
3. Push Down and Rotate Clockwise
4. Push Down and Rotate Counterclockwise
5. Push Down
6. Long Push Down
7. Responisve Blue LED's

So we have 6 possibilities to map to keystrokes, soundcard levels and so on.

In Windows you may refer to the following Document published by FlexRadio. Install the Powermate Software for Windows and map your wanted keys.

http://support.flexradio.com/Downloads.aspx?id=47

Download Gizmod

In Linux there is Gizmo Daemon - THE Linux Linux Input Device Utility.

Unfortunately Gizmo is no longer supported by Ubuntu and most other Linux Distributions. The last update on the Gizmo page was in 2009.

So the following Setup is experimental until we may have support for the Powermate in QtRadio or Hamlib directly.

1. Go to your preferred local git directory.

$ git clone git://github.com/jtriley/gizmod.git
$ cd gizmod

Make the following two patches:

index 14b8d37..b61e2a1 100644
--- a/libH/Average.hpp
+++ b/libH/Average.hpp
@@ -35,6 +35,7 @@
 #include "config.h"
 #endif
 
+#include <stddef.h>
 #include <vector>
index d794055..75f4c27 100644
--- a/libH/DynamicBuffer.hpp
+++ b/libH/DynamicBuffer.hpp
@@ -33,6 +33,7 @@
 #include "config.h"
 #endif
 
+#include <stddef.h>
 #include <vector>
$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/usr -DSYSCONF_INSTALL_DIR=/etc ..
$ make
$ sudo make install

You will still get a built error:

$ nano gizmod/CMakeFiles/gizmod.dir/link.txt

and add:

-lboost_system

build again:

$ make
$ sudo make install

Setup Gizmod

Go to your user directory and do:

$ mkdir -p ~/.gizmod
$ cp /usr/etc/gizmod * .gizmod
$ mkdir .gizmod/modules.d
$ cp /usr/etc/gizmod/modules.d/000-CatchAllDebug.py .gizmod/modules.d/
$ cp /usr/etc/gizmod/modules.d/299-Powermate-Default.py .gizmod/modules.d/
$ cd .gizmod/modules.d
$ gedit 299-Powermate-Default.py

Edit 299-Powermate-Default.py like this (Do not change the Filename and edit exactly)

    #***
  #*********************************************************************
#*************************************************************************
#*** 
#*** GizmoDaemon Config Script
#*** 	Powermate Default config
#***
#*****************************************
  #*****************************************
    #***

"""

  Copyright (c) 2007, Gizmo Daemon Team
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at 

	http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and 
  limitations under the License. 
  
"""

############################
# Imports
##########################

from GizmoDaemon import *
from GizmoScriptDefault import *
import time

ENABLED = True
VERSION_NEEDED = 3.2
INTERESTED_CLASSES = [GizmoEventClass.Powermate]

############################
# PowermateDefault Class definition
##########################

class PowermateDefault(GizmoScriptDefault):
	"""
	Default Powermate Event Mapping
	"""
	
	############################
	# Public Functions
	##########################
			
	def onDeviceEvent(self, Event, Gizmo = None):
		"""
		Called from Base Class' onEvent method.
		See GizmodDispatcher.onEvent documention for an explanation of this function
		"""

	   	# Check for rotations
		if Event.Type == GizmoEventType.EV_REL:
			if Gizmo.getKeyState(GizmoKey.BTN_0):
		   		if Gizmod.DefaultMixerVolume:
		   			Gizmod.DefaultMixerVolume.VolumePlayback = Gizmod.DefaultMixerVolume.VolumePlayback + Event.Value
			else:
				# scroll quickly (by pages using the page up / page down keys)
				if Event.Value < 0:
					for repeat in range(abs(Event.Value)):
						Gizmod.Keyboards[0].createEvent(GizmoEventType.EV_KEY, GizmoKey.KEY_RIGHT)
				else:
					for repeat in range(abs(Event.Value)):
						Gizmod.Keyboards[0].createEvent(GizmoEventType.EV_KEY, GizmoKey.KEY_LEFT)
			return True
		elif Event.Type == GizmoEventType.EV_KEY:
			if Event.Value == 0 and not Gizmo.Rotated:
				Gizmod.Keyboards[0].createEvent(GizmoEventType.EV_KEY, GizmoKey.KEY_PLUS)				
			return True
		return False
		
	############################
	# Private Functions
	##########################

	def __init__(self):
		""" 
		Default Constructor
		"""
		
		GizmoScriptDefault.__init__(self, ENABLED, VERSION_NEEDED, INTERESTED_CLASSES)

############################
# PowermateDefault class end
##########################

# register the user script
PowermateDefault()
$ gizmod

you should see the following output:(depends on your system)

GizmoDaemon v3.4 -=- (c) 2007, Tim Burrell <tim.burrell@gmail.com>
=---------=

Registering Devices:

    Standard - Directory [input]
    Standard - Sleep Button [event0] vId: 0x0 pId: 0x3
    Standard - Lid Switch [event1] vId: 0x0 pId: 0x5
    Standard - HDA Intel Mic [event10] vId: 0x0 pId: 0x0
    Standard - HDA Intel Mic [event11] vId: 0x0 pId: 0x0
    Standard - HDA Intel Headphone [event12] vId: 0x0 pId: 0x0
    Standard - HDA Intel Headphone [event13] vId: 0x0 pId: 0x0
    Standard - Power Button [event2] vId: 0x0 pId: 0x1
    Keyboard - AT Translated Set 2 keyboard [event3] vId: 0x1 pId: 0x1
    Standard - Asus Laptop extra buttons [event4] vId: 0x0 pId: 0x0
   Powermate - Griffin PowerMate [event5] vId: 0x77d pId: 0x410
    Standard - CNF7237&CNF7238 [event6] vId: 0x17ef pId: 0x4808
       Mouse - SynPS/2 Synaptics TouchPad [event7] vId: 0x2 pId: 0x7
    Standard - Video Bus [event8] vId: 0x0 pId: 0x6
    Standard - HDA Intel HDMI/DP,pcm=3 [event9] vId: 0x0 pId: 0x0

Loading User Scripts:

         CatchAllDebug - CatchAll Event Mapping for Testing
      PowermateDefault - Default Powermate Event Mapping

You should have the following functions:

turn left = KEY RIGHT
turn right = KEY LEFT
press and turn left = System Volume down
press and turn right = System Volume up
Buttonpress = cycle through Step Size