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

FreeBSD Manual Pages

  
 
  

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

NAME
     devcal - An FM deviation calibration utility for the SvxLink system

SYNOPSIS
     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>

DESCRIPTION
     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 multiple 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 frequency cor-
     rection for such a dongle.

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

OPTIONS
     -?|--help
	    Print a help message and exit.

     -h|--usage
	    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 default
	    value of 2404,8Hz may seem strange but it will be explained 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 max-
	    imum deviation level without causing immediate distorsion.	The  de-
	    fault  is 6dB which mean that SvxLink can handle twice the specified
	    maximum deviation. If both maxdev and headroom are left at their de-
	    fault 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 compensated. The an-
	    nouncement levels will get lower so they also  need  to  be  compen-
	    sated.  The EchoLink RX/TX levels will get unbalanced and at the mo-
	    ment there is no way to fix that.

     -r|--rxcal
	    Specify this command line option to perform receiver calibration.

     -t|--txcal
	    Specify this command line option to perform transmitter calibration.

     -F|--flat
	    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-emphasis  in
	    SvxLink, this option should NOT be specified.

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

     -w|--wide
	    Use wide FM (broadcast) instead of narrow band FM

     -a|--audiodev=type:dev
	    Use this command line option to set an audio device to use for play-
	    ing 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="").

CALIBRATING AN RTL2832U BASED DVB-T USB DONGLE
     All RTL2832U based DVB-T USB dongles requires calibration so that the spec-
     ified  receiving  frequency  is  correct.	Most dongles are way off in fre-
     quency. 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 before  do-
     ing 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 Section  and
     the Wideband Receiver Section in the svxlink.conf(5) manual page for infor-
     mation on how to set it up.

     A first coarse calibration should be done in wideband mode so that the cal-
     ibration  carrier	is easy to find. You can use any FM carrier to calibrate
     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 transmitter 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 error. 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  fre-
     quency  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 receiver 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.  Ad-
     just FQ_CORR until a value around 0ppm is shown.

CALIBRATING THE TRANSMITTER
     In  order	to  calibrate the transmitted deviation we need a way to measure
     it.  There are multiple methods to do that. If you have a	deviation  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 utility.
     First calibrate the DVB-T dongle according to the instructions in the  pre-
     vious  section.  The devcal utility can then be used in measurement mode to
     measure the transmitted FM deviation. The measurement mode is activated us-
     ing the "-M" command line option. Use the "-f" command line option to spec-
     ify the audio frequency to calibrate at if the default 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 frequency and de-
     viation.	The deviation divided by the modulation frequency give something
     called the modulation index. Bessel nulls occur at specific modulation  in-
     dexes  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  para-
     meters 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 covers the fre-
     quency of interest you can use that to listen to the carrier. 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 ad-
     just  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 min-
     imum. Use the +/- keys in deval to fine tune the output 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.

CALIBRATING THE RECEIVER
     To calibrate the receiver we need a transmitter with a  known  calibration.
     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 ad-
     just PREAMP to fine tune the deviation that is shown. When satisfied, enter
     the PREAMP value into the configuration file in the receiver section.

EXAMPLE: CALIBRATING USING A DVB-T USB DONGLE
     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 transceiver.

     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 deval 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 devia-
     tion 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 de-
     viation on the transmitter when retransmitting a received signal. For a re-
     peater that is easily achieved by transmitting on the receive frequency us-
     ing 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.

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

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

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

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

SEE ALSO
     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:
<https://man.freebsd.org/cgi/man.cgi?query=devcal&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help