SignalScopePage » History » Revision 13
« Previous |
Revision 13/30
(diff)
| Next »
max, 04/22/2017 04:04 PM
= Signal Scope =
InstallationBefore running the scope app, check that the following standard pre-requisite packages are also installed: * GNU Radio * The op25 blocks * Frank's gr-fsk4 block * The op25 repeater block
The Python Numeric package is now also required. If you're running Debian or Ubuntu:
{{{
apt-get install python-numeric
}}}
Other than these pre-reqs, no special setup or installation is needed.
Targets * Choice of USRP, discriminator-tap, or "audio-IF" hardware modes * Supports either GL or non-GL display mode * Both FSK4 and CQPSK demodulation modes supported * Lower and middle range PC hardware, not just the latest Running the ProgramThere are three overall options or modes depending on your hardware; these are * USRP * External receiver with discriminator tap connected to sound card * External receiver with IF in the audio sound card range (e.g., 24 KHz), referred to as "audio IF"
=== Running with the disc-tap option ===
The signal scope does not require the USRP. If you have a discriminator-tapped receiver, use the "-a" option:
{{{
./scope.py -a -v 10 -g 50
}}}
=== Running with the USRP ===
It's helpful to find out the current calibration error beforehand (I use kalibrate), for example, +1234 hertz:
{{{
./scope.py -f 412.34e6 -RA -g 65 -c 1234 -v 10
}}}
=== Running in the Audio IF mode ===
Receivers equipped with an IF output in the sound card range can be used. This is known as "audio IF" mode.
A soundcard sampling rate of 96K is used and the IF frequency (typically 24 KHz) is given using the {{{--calibration}}} parameter:
{{{
./scope.py -A -c 24e3 -g 50 -v 10
}}}
In the baseband AF (disc. tap) mode, several program functions are disabled (spectrum FFT, constellation diagram, PSK demod, FAC and iDEN correlation)
because these functions require direct access to the signal with no demodulation.
In all modes, the {{{--wireshark}}} option is used to write received P25 packet data to Wireshark.
Program OptionsHere is a full list of program options:
{{{
Usage: scope.py [options]
Options:
-h, --help show this help message and exit
-a, --audio use direct audio input
-A, --audio-if soundcard IF mode (use --calibration to set IF freq)
-I AUDIO_INPUT, --audio-input=AUDIO_INPUT
pcm input device name. E.g., hw:0,0 or /dev/dsp
-i INPUT, --input=INPUT
input file name
-b Hz, --excess-bw=Hz
for RRC filter
-c Hz, --calibration=Hz
USRP offset or audio IF frequency
-C Hz, --costas-alpha=Hz
value of alpha for Costas loop
-f Hz, --frequency=Hz
USRP center frequency
-d DECIM, --decim=DECIM
source decimation factor
-v VERBOSITY, --verbosity=VERBOSITY
message debug level
-p, --pause block on startup
-w, --wireshark output data to Wireshark
-W WIRESHARK_HOST, --wireshark-host=WIRESHARK_HOST
Wireshark host
-R RX_SUBDEV_SPEC, --rx-subdev-spec=RX_SUBDEV_SPEC
select USRP Rx side A or B (default=A)
-g GAIN, --gain=GAIN set USRP gain in dB (default is midpoint) or set audio
gain
-G GAIN_MU, --gain-mu=GAIN_MU
gardner gain
}}}
The controls arranged along the bottom of the page are:
* Frequency: to retune, type the new frequency here and press ENTER
* Signal Gain: adjusts the baseband (demodulated) signal level
* Fine Tune: adjusts tuning frequency over +/- 3000 Hz range
* Demod: Selects demodulator (currently used in Demodulated Symbols only)
Except for the signal gain control, these controls are only available in USRP RX mode.
The scope input source can be connected either before or after the symbol filter using the Viewpoint toggle.
Also the proper speed must be selected from the available options.
Constellation DiagramThe signal scope also features an angular population graph (shown above) in addition to the traditional constellation display.
In this mode the symbol magnitude (distance from center) is discarded. Instead the circle is sliced into segments and a count
of symbols found in each segment is plotted. This is similar to a histogram except that a straight line is drawn between each
result, and that the results are arranged in polar form instead of rectangular form.
With this display, the zone at the exact center of the plot can be used precisely to measure the degree of separation or margin
between the demodulated symbols. The plots below illustrate the difference, with poor separation showing on the left image as
revealed by the failure to converge at the center and by the clear territorial violations:
The two-color mode is used in these images, providing natural relief to highlight the distinctive feature of π/4 DQPSK in which
successive symbols are chosen from two distinct constellations (each containing four possible symbol values) separated by 45°
Cross correlation allows rapid identification of signals with known characteristics. Frame Sync (FS) signatures of several commonly
used radio systems are included.
By convention correlation results are usually displayed using positive correlation peaks only. In this system
however it is possible (and legal) for negative correlation products to be produced. This can occur for two wholly separate reasons:
* If the hardware polarity is inverted
* When the FS symbols are purposely inverted as an integral part of protocol processing (commonly used in certain protocols but not used in P25)
The first case commonly happens when using the disc-tap method of hardware connection, because the actual polarity of the signal seems to vary
randomly among different sound cards and receivers. In one actual case, two PC's of the same PC brand bought from the same store had opposite polarity.
The P25 software framer automatically detects the proper polarity and issues a message if negative polarity data is received:
{{{
Reversed FS polarity detected - autocorrecting
}}}
The automatic correction applies only to software framing and doesn't help with correlation. For correct results for both software framing and
correlation, you should correct the polarity reversal problem at its source; this is done using negative values for the {{{--gain}}} parameter at
program start time:
{{{
./scope.py -a -v 10 -g -50
}}}
The second cause of negative correlation peaks is that some protocols (although not P25) make use of both normal- and inverted-polarity FS
sequences as a standard part of their processing. Instead of clogging the GUI menu with several choices that are merely inverses of others,
just for the sake of always having positive-peaked correlations, we allow the correlation graph to reflect the natural polarity of the data.
Thus both + and - peaks are shown, allowing quick diagnosis of incorrect hardware polarity (see above), and allowing identification of the
particular family and sub-protocol in use.
Also included is Frank's Fast Auto Correlation (fac):
For further details about Fast Auto Correlation refer to Frank's page at http://sites.google.com/site/radiorausch/
BUGSPossibly bugs exist, here are a few of the known ones as of this writing * Symbol filters totally brain damaged (need separate filters for each speed) * When switching modes using the notebook tabs, leftover data from before may appear momentarily * Highest and lowest speeds are not well tuned resulting either in sluggish updates or CPU exhaustion
CREDITSI ripped off the "tabbed notebook" theme (and code) from Stevie; it already had the spectrum, baseband, and decoded symbol displays. I added the data scope, constellation scope, and cross correlation features.
The Fast Auto Correlation (fac) code came from Radiorausch.
Special thanks to Mossmann for leaving one commented-out "print" statement in c4fm-decode.py. Of course it was tempting to wonder "what would happen" if that statement were un-commented. The final result? The cross-correlation feature.
Special thanks also to GPL, for encouraging these mashups.
Updated by max over 7 years ago · 13 revisions