1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-11-22 08:04:49 -05:00

DSD demod: push version to 1.2.0 and added readme for the plugin

This commit is contained in:
f4exb 2016-04-24 18:24:08 +02:00
parent d92a8fe266
commit bf164db653
8 changed files with 193 additions and 1 deletions

BIN
doc/img/DSDdemod_plugin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

View File

@ -0,0 +1,192 @@
<h1>DSD (Digital Speech Decoder) demodulator and decoder plugin</h1>
<h2>Introduction</h2>
This plugin uses the [DSDcc](https://github.com/f4exb/dsdcc) library that has been rewritten from the original [DSD](https://github.com/szechyjs/dsd) program to decode several digital speech formats. At present it covers the following:
- DMR/MOTOTRBO: European two slot TDMA standard. MOTOTRBO is a popular implementation of this standard.
- D-Star: developed and promoted by Icom for Amateur Radio customers.
The modulation and format is automatically detected and switched.
DSDcc itself uses [mbelib](https://github.com/szechyjs/mbelib) to decode AMBE frames. While DSDcc is intended to be patent-free, `mbelib` that it uses describes functions that may be covered by one or more U.S. patents owned by DVSI Inc. The source code itself should not be infringing as it merely describes possible methods of implementation. Compiling or using `mbelib` may infringe on patents rights in your jurisdiction and/or require licensing. It is unknown if DVSI will sell licenses for software that uses `mbelib`.
If you are not comfortable with this just do not install DSDcc and/or mbelib and the plugin will not be compiled and added to SDRangel. For packaged distributions just remove `libdemoddsd.so` or `libdemoddsd.dll` from the installed package.
If you choose to compile and install this plugin you will need to have DSDcc installed in your system. Please follow instructions in [DSDcc readme](https://github.com/f4exb/dsdcc/blob/master/Readme.md) to build and install DSDcc. If you install it in a custom location say `/opt/install/dsdcc` you will need to add these defines to the cmake command: `-DLIBDSDCC_INCLUDE_DIR=/opt/install/dsdcc/include/dsdcc -DLIBDSDCC_LIBRARIES=/opt/install/dsdcc/lib/libdsdcc.so`
If you have mbelib installed in a custom location, say `/opt/install/mbelib` you will need to add these defines to the cmake command: `-DLIBMBE_INCLUDE_DIR=/opt/install/mbelib/include -DLIBMBE_LIBRARY=/opt/install/mbelib/lib/libmbe.so`
<h2>Interface</h2>
![DSD Demodulator plugin GUI](../../../doc/img/DSDdemod_plugin.png)
<h3>1: Frequency shift from center frequency of reception</h3>
Use the wheels to adjust the frequency shift in Hz from the center frequency of reception. Use the "+/-" button on the left side to toggle between positive and negative shift.
<h3>2: Modulation detected</h3>
This is the type of modulation detected by DSDcc. It can be the following:
- `C4FM`: 4FSK modulation as implemented for example by Yaesu. It is also the default display. Sometimes 4-GMSK can be detected as C4FM if the signal is relatively noisy. This should not affect decoding provided noise is not too strong.
- `GMSK`: Gaussian mean frequency shift keying. it is either 2 or 4-FSK (2-GMSK or 4-GMSK). DMR transmissions will typically be identified as GMSK as it is 4-GMSK. D-Star will also be detected as GMSK as it is 2-GMSK.
- `QPSK`: At present no decodable transmissions use QPSK.
<h3>3: Type of frame detected</h3>
This can be one of the following:
- `+DMRd`: non-inverted DMR data frame
- `-DMRd`: inverted DMR data frame
- `+DMRv`: non-inverted DMR voice frame
- `-DMRv`: inverted DMR voice frame
- `(+DMR)`: non-inverted isolated DMR voice frame
- `(-DMR)`: inverted isolated DMR voice frame
- `+D-STAR`: non-inverted D-Star frame
- `-D-STAR`: inverted D-Star frame
- `+D-STAR_HD`: non-inverted D-Star header frame encountered
- `-D-STAR_HD`: inverted D-Star header frame encountered
<h3>4: Decoder input level in %</h3>
Most satisfactory decodes for values 50~70%
<h3>5: Channel power</h3>
Total power in dB relative to a +/- 1.0 amplitude signal received in the pass band.
<h3>6: Channel bandwidth before discriminator</h3>
This is the bandwidth of the pre-discriminator filter
<h3>7: Gain after discriminator</h3>
This is the gain applied to the output of the discriminator before the decoder
<h3>8: Audio volume</h3>
This is the audio volume for positive values. Zero triggers the auto volume (audio AGC).
<h3>9: Maximum expected FM deviation</h3>
This is the deviation in kHz leading to maximum (100%) deviation. You should aim for 30 to 50% deviation on the scope display.
<h3>10: Squelch level</h3>
The level corresponds to the channel power above which the squelch gate opens.
<h3>11: Squelch time gate</h3>
Number of milliseconds following squelch gate opening after which the signal is actually fed to the decoder. 0 means immediate application.
<h3>12: Audio mute and squelch indicator</h3>
Audio mute toggle button. This button lights in green when the squelch opens.
<h3>13: Format specific status display</h3>
When the display is active the background turns from the surrounding grey color to dark green.
<h4>13.1: D-Star status display</h4>
![DSD D-Star status](../../../doc/img/DSDdemod_plugin_dstar_status.png)
These are the standard D-Star embedded information that is read from the header frame.
<h5>13.1.1: Repeater 1 callsign</h5>
<h5>13.1.2: Repeater 2 callsign</h5>
<h5>13.1.3: Destination (your) callsign</h5>
<h5>13.1.4: Origin (my) callsign</h5>
<h4>13.2: DMR status display</h4>
![DSD DMR status](../../../doc/img/DSDdemod_plugin_dmr_status.png)
<h5>13.2.1: Station role</h5>
- `BS`: base station
- `MS`: mobile station
<h5>13.2.2: TDMA slot #0 status</h5>
- `slot0`: nothing received in slot #0
- `[slot0]`: data frame received for slot #0
- `[SLOT0]`: voice frame received for slot #0
<h5>13.2.3: TDMA slot #1 status</h5>
- `slot1`: nothing received in slot #1
- `[slot1]`: data frame received for slot #1
- `[SLOT1]`: voice frame received for slot #1
<h3>14: Discriminator output scope display</h3>
The discriminator signal at 48 kS/s is routed to a scope display with the following connections:
- I signal: the discriminator samples
- Q signal: the discriminator samples delayed by the baud rate i.e. one symbol delay:
- 2400 baud: 20 samples
- 4800 baud: 10 samples
- 9600 baud: 5 samples
This allows the visualization of symbol transitioons which depends on the type of modulation.
![DSD scope](../../../doc/img/DSDdemod_plugin_scope.png)
<h4>14.1: Setting the display</h4>
- On the combo box you should choose IQ (lin) for the primary display and IQ (pol) for secondary display
- On the display buttons you should choose the side by side display
On the same line you can choose any trace length. If it is too short the constelaltion points will not appear clearly and if it is too long the polar figure will be too dense. Usually 100ms give good results.
<h4>14.2: IQ linear display</h4>
The yellow trace (I) is the direct trace and the blue trace (Q) is the delayed trace. This can show how symbols differentiate between each other in a sort of eye diagram.
<h4>14.3: IQ polar display</h4>
This shows the constellation of transition points. You should adjust the frequency shift to center the figure and the maximum deviation and/or discriminator gain to contain the figure within the +/-0.4 square. +/- 0.1 to +/- 0.3 give the best results.
<h5>2-FSK or 2-GMSK</h5>
This concerns the following fornats:
- D-Star
![DSD D-Star polar](../../../doc/img/DSDdemod_plugin_dstar_polar.png)
There are 4 possible points corresponding to the 4 possible transitions. x represents the current symbol and y the previous symbol. The 4 points given by their (y,x) coordinates correspond to the following:
- (1, 1): upper right corner. The pointer can stay there or move to (1, -1)
- (1, -1): upper left corner. The pointer can move to (-1, -1) or (-1, 1)
- (-1, 1): lower right corner. The pointer can move to (1, -1) ot (1, 1)
- (-1, -1): lower left corner. The pointer can stay ther or move to (-1, 1)
As you can see the pointer can make all moves except between (-1, -1) and (1,1) hence all vertices between the 4 points can appear except the one between the lower left corner and the upper right corner.
<h5>4-FSK or 4-GMSK</h5>
This concerns the following fornats:
- DMR
![DSD DMR polar](../../../doc/img/DSDdemod_plugin_dmr_polar.png)
There are 16 possible points corresponding to the 16 possible transitons between the 4 dibits. The 4 dibits are equally spaced at relative positions of -3, -1, 1, 3 hence the 16 points are also equally spaced between each other on the IQ or (x,y) plane.
Because not all transitions are possible similarly to the 2-FSK case pointer moves from the lower left side of the diagonal to the upper rihgt side are not possible.
<h4>14.4: I gain</h4>
You should set the slider to a unity span (+/- 0.5) with no offset.
<h4>14.5: Q gain</h4>
You should set the slider to a unity span (+/- 0.5) with no offset.
<h4>14.6: Trigger settings</h4>
You can leave the trigger free running or set it to I linear with a 0 threshold.

View File

@ -84,7 +84,7 @@
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Version 1.1.7 - Copyright (C) 2015-2016 Edouard Griffiths, F4EXB. &lt;/p&gt;&lt;p&gt;Code at &lt;a href=&quot;https://github.com/f4exb/sdrangel&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/f4exb/sdrangel&lt;/span&gt;&lt;/a&gt; This is a complete redesign from RTL-SDRangelove at &lt;a href=&quot;https://github.com/hexameron/rtl-sdrangelove&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/hexameron/rtl-sdrangelove&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Many thanks to the original developers:&lt;/p&gt;&lt;p&gt;The osmocom developer team - especially horizon, Hoernchen &amp;amp; tnt.&lt;/p&gt;&lt;p&gt;Christian Daniel from maintech GmbH.&lt;/p&gt;&lt;p&gt;John Greb (hexameron) for the contributions in RTL-SDRangelove&lt;/p&gt;&lt;p&gt;The following rules apply to the SDRangel main application and libsdrbase:&lt;br/&gt;This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You should have received a copy of the GNU General Public License along with this program. If not, see &lt;a href=&quot;http://www.gnu.org/licenses/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://www.gnu.org/licenses/&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;For the license of installed plugins, look into the plugin list.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Version 1.2.0 - Copyright (C) 2015-2016 Edouard Griffiths, F4EXB. &lt;/p&gt;&lt;p&gt;Code at &lt;a href=&quot;https://github.com/f4exb/sdrangel&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/f4exb/sdrangel&lt;/span&gt;&lt;/a&gt; This is a complete redesign from RTL-SDRangelove at &lt;a href=&quot;https://github.com/hexameron/rtl-sdrangelove&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/hexameron/rtl-sdrangelove&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Many thanks to the original developers:&lt;/p&gt;&lt;p&gt;The osmocom developer team - especially horizon, Hoernchen &amp;amp; tnt.&lt;/p&gt;&lt;p&gt;Christian Daniel from maintech GmbH.&lt;/p&gt;&lt;p&gt;John Greb (hexameron) for the contributions in RTL-SDRangelove&lt;/p&gt;&lt;p&gt;The following rules apply to the SDRangel main application and libsdrbase:&lt;br/&gt;This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You should have received a copy of the GNU General Public License along with this program. If not, see &lt;a href=&quot;http://www.gnu.org/licenses/&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://www.gnu.org/licenses/&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;For the license of installed plugins, look into the plugin list.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>