Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
DEVCAL(1)			 User Manuals			     DEVCAL(1)

       devcal -	An FM deviation	calibration utility for	the SvxLink system

       devcal	[-?|--help]   [-h|--usage]   [-f|--modfqs=frequencies  in  Hz]
       [-d|--caldev=deviation in Hz] [-m|--maxdev=deviation in Hz] [-H|--head-
       room=Headroom	in   dB]   [-r|--rxcal]	  [-F|--flat]	[-M|--measure]
       [-w|--wide] [-a|--audiodev=type:dev] <config file> <config section>

       devcal is a utility that	is used	to  calibrate  the  input  and	output
       sound  levels  (deviation) on an	FM SvxLink system. The idea is that it
       should be possible to calibrate multiple	parts of a SvxLink  system  to
       the exact same sound levels.  This will ensure that a system using mul-
       tiple receivers have the	same sound level for all receivers and	for  a
       repeater	 it  means  that  the audio being retransmitted	is at the same
       level as	the received audio. For	an EchoLink system it  will  guarantee
       that  audio  received by	the local node will be at a proper level to be
       retransmitted on	remote EchoLink	nodes, and the other way around.

       An RTL2832U based DVB-T USB dongle can be used to measure deviation and
       the  devcal  utility  can  also be used to calibrate the	receiving fre-
       quency correction for such a dongle.

       Deviation calibration can be done both with and	without	 a  DVB-T  USB
       dongle.	Both methods are described below.

	      Print a help message and exit.

	      Display a	brief help message and exit.

       -f|--modfqsfrequencies in Hz
	      Use this command line option to set at what frequencies you want
	      to calibrate the deviation. Separate multiple frequencies	 using
	      commas. The default frequency is 1000Hz.

       -d|--caldev=deviation in	Hz
	      The deviation value at where to perform the calibration. The de-
	      fault value of 2404,8Hz may seem strange	but  it	 will  be  ex-
	      plained below.

       -m|--maxdev=deviation in	Hz
	      The maximum deviation used on the	channel. This is the deviation
	      value where transmitters start to	limit the deviation so as  not
	      to  cause	 interference  in  neighbouring	 channels. The default
	      value is 5000Hz.

       -H|--headroom=headroom in dB
	      The headroom is the margin to add	above  the  maximum  deviation
	      level.  Adding  a	 headroom  will	allow SvxLink to handle	levels
	      above the	maximum	deviation level	without	causing	immediate dis-
	      torsion.	The  default is	6dB which mean that SvxLink can	handle
	      twice the	specified maximum deviation. If	both maxdev and	 head-
	      room  are	 left at their default this will mean that SvxLink can
	      handle 10kHz deviation without distorsion.

	      Changing the headroom cause a lot	of different effects so	 don't
	      do  that	unless you are prepared	to deal	with the problems. For
	      example, increasing the headroom will cause the TX level to  get
	      lower and	the RX level to	get higher, which then must be compen-
	      sated. The announcement levels will get lower so they also  need
	      to be compensated. The EchoLink RX/TX levels will	get unbalanced
	      and at the moment	there is no way	to fix that.

	      Specify this command line	option to  perform  receiver  calibra-

	      Specify this command line	option to perform transmitter calibra-

	      Perform calibration on a transmitter or receiver that has	a flat
	      frequency	 response (no pre- or de-emphasis). If the transceiver
	      has flat frequency response but you have enabled	pre-/de-empha-
	      sis in SvxLink, this option should NOT be	specified.

	      The  measurement mode requires the use of	a RTL2832U based DVB-T
	      USB dongle and will measure the received deviation.

	      Use wide FM (broadcast) instead of narrow	band FM

	      Use this command line option to set an audio device to  use  for
	      playing	back  the  received  audio.  The  default  is  to  use
	      "oss:/dev/dsp". Disable audio output by setting the audio	device
	      to the empty string (i.e.	--audiodev="").

       All  RTL2832U  based DVB-T USB dongles requires calibration so that the
       specified receiving frequency is	correct. Most dongles are way  off  in
       frequency. 50-60ppm is not uncommon which translates to more than 20kHz
       on 434MHz.

       Most dongles are	sensitive to temperature change	so start  by  plugging
       the dongle into the computer and	let it warm up for like	15 minutes be-
       fore doing the calibration.

       Devcal need a receiver configuration file to work so such a  file  must
       be  created before this utility can be used. Read the Ddr Receiver Sec-
       tion and	the Wideband Receiver Section in  the  svxlink.conf(5)	manual
       page for	information on how to set it up.

       A  first	coarse calibration should be done in wideband mode so that the
       calibration carrier is easy to find. You	can use	any FM carrier to cal-
       ibrate  on that you know	is correct in frequency. It does not matter if
       the carrier is modulated	or not.	Use your own transceiver or a repeater
       for  example. If	the frequency calibration is unknown for the transmit-
       ter being used it may be	wise to	test with multiple  transmitters.  The
       command line may	look like this:

	 devcal	-Mw /path/to/svxlink.conf RxRtl

       The  utility  will print, among other things, the carrier frequency er-
       ror. It may look	something like:

       Tone dev=7.30  Full bw dev=39198.90  Carrier freq err=-27713.53(-64ppm)

       We ignore the first two values for now and concentrate on  the  carrier
       frequency  error.  The  -64ppm  mean  that  the dongle is receiving the
       transmitted carrier about 27kHz below the set frequency.	To  compensate
       for  this,  set	the FQ_CORR configuration variable in the wideband re-
       ceiver configuration section to 64. Do another  measurement  to	verify
       that the	received carrier frequency is now closer to the	expected one.

       Now we can do the final calibration in narrow band mode.	Remove the "w"
       command line option from	the command above and do another  measurement.
       Adjust FQ_CORR until a value around 0ppm	is shown.

       In  order  to calibrate the transmitted deviation we need a way to mea-
       sure it.	 There are multiple methods to do that.	If you have  a	devia-
       tion  meter  you're  in luck but	most people does not own one of	those.
       Fortuantely there are other ways.

       One way is to use a RTL2832U based DVB-T	dongle with the	 devcal	 util-
       ity.  First calibrate the DVB-T dongle according	to the instructions in
       the previous section. The devcal	utility	can then be used  in  measure-
       ment mode to measure the	transmitted FM deviation. The measurement mode
       is activated using the "-M" command line	option.	Use the	 "-f"  command
       line  option  to	specify	the audio frequency to calibrate at if the de-
       fault of	1000Hz need to be changed.

       Another way to measure FM deviation without a deviation meter is	to use
       the  Bessel  null  method. It makes use of the fact that	the FM carrier
       will go down to zero power for certain combinations of modulation  fre-
       quency  and  deviation.	 The  deviation	divided	by the modulation fre-
       quency give something called the	modulation index. Bessel  nulls	 occur
       at specific modulation indexes where the	first one is at	2.4048.	So, if
       we choose the deviation to 2404.8Hz and	the  modulation	 frequency  to
       1000Hz  we should get a Bessel null when	the transmitter	is calibrated.
       These are the default modulation	parameters in devcal.

       So how can we detect when the carrier power goes	down to	zero?  If  you
       own  some  form of spectrum analyzer the	spectrum can be	watched	to see
       when the	carrier	falls down to zero. If you own a CW receiver that cov-
       ers  the	 frequency  of interest	you can	use that to listen to the car-
       rier. Start devcal in transmitter  calibration  mode  using  a  command
       looking like the	one below.

	devcal -t /path/to/svxlink.conf	Tx1

       In another window, start	the alsamixer utility or some other utility to
       adjust the audio	output level. Set the output level to zero. Go back to
       the  devcal  window  and	press 0	to set MASTER_GAIN to zero. Press T to
       start transmitting.  Since we set the sound output level	to zero	only a
       carrier	will  be transmitted.  Adjust the CW receiver to center	on the
       carrier.	Use the	narrowest filter that the receiver support. Now	 start
       increasing  the audio output level in alsamixer.	 Listen	to the tone to
       find the	first minimum. Use the +/- keys	in deval to fine tune the out-
       put  level  to a	minimum. You have now found the	calibration values for
       the transmitter.	The printed value of  MASTER_GAIN  should  be  entered
       into the	configuration section for the transmitter.

       To  calibrate  the receiver we need a transmitter with a	known calibra-
       tion. If	possible, the transmitter that was  calibrated	above  can  be
       used.  If  it's	not possible, another transmitter can be calibrated in
       the same	way to be used as a calibration	transmitter. Start the	devcal
       utility something like this:

	 devcal	-r /path/to/svxlink.conf Rx1

       Start  alsamixer	in another window and adjust the input level to	get as
       close as	possible to the	expected deviation. Use	the 0, + and - keys to
       adjust PREAMP to	fine tune the deviation	that is	shown. When satisfied,
       enter the PREAMP	value into the configuration file in the receiver sec-

       This  is	 an  example of	how the	calibration procedure may be performed
       using a DVB-T USB dongle	and an arbitrary transmitter,  like  a	handie

       The  calibration	transmitter, a handie transmitter for example, must be
       able to send some form of modulated tone	for this  procedure  to	 work.
       The  1750Hz  tone  burst	 that many transmitters	are equipped with is a
       good one	to use.	It is also possible to use a DTMF tone but the results
       is  not	as  good as when using a single	tone, it seems.	If using DTMF,
       try using the code "A" (1633Hz) or "3" (1477Hz).	In this	 example,  the
       use of 1750Hz tone burst	is described.

       Use the DVB-T dongle to measure the deviation of	the 1750Hz tone.

	 devcal	-M -f1750 /path/to/svxlink.conf	RxRtl

       Start  transmitting  with  the calibration transmitter and wait for the
       values to stablilize. Take a note of the	value for "tone	dev".  It  may
       be something like 3200Hz, which is used in the example below. Leave de-
       val running since we will need it later on.

       On the system being calibrated, start the receiver calibration.

	 devcal	-r -f1750 /path/to/svxlink.conf	Rx1

       Transmit	using the calibration transmitter and adjust the  input	 level
       using alsamixer and PREAMP to the correct level for "tone dev".

       Make  sure that devcal is started in measurement	mode like when the de-
       viation on the calibration transmitter was measured above. Then,	on the
       system being calibrated,	start the transmitter calibration.

	 devcal	-t -f1750 -d3200 /path/to/svxlink.conf Tx1

       The  value of 3200 was the one we measured in the first step. Adjust it
       to match	your own measurements. Adjust the output level using alsamixer
       and MASTER_GAIN to get the correct reading for "tone dev".

       To check	the calibration, use devcal in measurement mode	to measure the
       deviation on the	transmitter when retransmitting	a received signal. For
       a  repeater that	is easily achieved by transmitting on the receive fre-
       quency using the	calibration  transmitter.  The	deviation  measurement
       should  show  the correct value being retransmitted. For	a simplex link
       the parrot can be used to achieve the same thing.

       NOTE: The retransmitted deviation may not be exactly the	same for  some
       transceivers. This is an	issue that remains to find the cause of.

	      Set  this	 environment  variable	to 1 if	you get	an error about
	      ioctl: Broken pipe during	devcal startup when using OSS audio.

	      Set this environment variable to 1 to make the Alsa  audio  code
	      write  zeros to the audio	device when there is no	audio to write
	      available. This may be needed for	some audio devices that	take a
	      long time	to recover from	an underflow condition.

       Tobias Blomberg (SM0SVX)	<sm0svx	at svxlink dot org>

       SvxLink Devel <svxlink-devel at lists dot sourceforge dot net>

       svxlink(1), remotetrx.conf(5), svxlink.conf(5), siglevdetcal(1)

Linux				  APRIL	2019			     DEVCAL(1)


Want to link to this manual page? Use this URL:

home | help