Provided by: svxlink-calibration-tools_19.09.1-2_amd64 bug

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|--headroom=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 correction 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 maximum deviation level without causing immediate distorsion.
              The default is 6dB which mean that SvxLink can handle twice the specified  maximum  deviation.  If
              both  maxdev  and  headroom 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 compensated. 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.

       -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 playing back the received audio.
              The default is to use "alsa:default". 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 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 before 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 Section 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 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 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 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. Adjust 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 previous section. The devcal utility can then be used in measurement
       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
       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 deviation.  The deviation divided by the modulation frequency  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
       covers  the  frequency 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 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 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 adjust 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 deviation 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
       frequency  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.

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)