parent
56da871ce2
commit
064cc21b2b
78
README.md
78
README.md
|
|
@ -1,78 +1,75 @@
|
|||
# Digital Speech Decoder - Florida Man Edition
|
||||
This version of DSD is a flavor blend of [szechyjs](https://github.com/szechyjs/dsd "szechyjs") RTL branch and some of my own additions, along with portions of DMR and NXDN code from the [LouisErigHerve](https://github.com/LouisErigHerve/dsd "LouisErigHerve") branch as well. NXDN voice decoding is currently working a lot better, thanks to the latter, although I have yet to explore the expanded NXDN or DMR decoding he has laid out. That is a goal. I have also implemented a few more RTL options, including rtl device gain, PPM error, device index selection, squelch, VFO bandwidth, and a UDP remote that works like the old rtl_udp fork, although its currently limited to changing frequency and squelch. The goal is to integrate this project into [EDACS-FM](https://github.com/lwvmobile/edacs-fm "EDACS-FM") but I also want it to be its own standalone project.
|
||||
This version of DSD is a flavor blend of [szechyjs](https://github.com/szechyjs/dsd "szechyjs") RTL branch and some of my own additions, along with portions of DMR and NXDN code from the [LouisErigHerve](https://github.com/LouisErigHerve/dsd "LouisErigHerve") branch as well. This code also borrows snippets, inspiration, and ideas from other open source works including [Boatbod OP25](https://github.com/boatbod/op25 "Boatbod OP25"), [DSDcc](https://github.com/f4exb/dsdcc "DSDcc"), [SDTRunk](https://github.com/DSheirer/sdrtrunk "SDRTrunk"), and [MMDVMHost](https://github.com/g4klx/MMDVMHost "MMDVMHost"). This project wouldn't be possible without a few good people providing me plenty of sample audio files to run over and over again. Special thanks to jurek1111, KrisMar, noamlivne, racingfan360, and hrh17 for the many hours of wav samples submitted by them.
|
||||
|
||||
## 2022.05.05 Update ##
|
||||
I have successfully added a DMR Stereo method for listening to voice audio in both TDMA channels/slots simultaneously. This method will also allow for data decoding in the opposite slot if only one voice call is active, allowing the user not to miss any useful information in the second slot while the previous slot is in use. DMR Stereo also has vastly improved handling of MS/Simplex voice decoding and (limited/hit or miss) MS data decoding. To call this method, see the example below. The old method of decoding DMR is also included and is stil the default for the time being, but the DMR Stereo method is working well, users are encouraged to try both methods and find the one that is suitable for them. New commands include:
|
||||
I have successfully added a DMR Stereo method for listening to voice audio in both TDMA channels/slots simultaneously. This method will also allow for data decoding in the opposite slot if only one voice call is active, allowing the user not to miss any useful information in the second slot while the previous slot is in use. DMR Stereo also has vastly improved handling of MS/Simplex voice decoding and (hit or miss) MS data decoding. To call this method, see the example below. The old method of decoding DMR is also included and is stil the default for the time being, but the DMR Stereo method is working well, users are encouraged to try both methods and find the one that is suitable for them. New commands include:
|
||||
```
|
||||
-T Enable DMR 'TDMA' Stereo
|
||||
Please note, for the time being, any MBE file saving, WAV file saving, or MBE payloads are disabled while using DMR Stereo. These features are still present in the default DMR handling and other voice decoder options and will be re- integrated into DMR Stereo in the future. DMR Stereo will also need to be enabled to handle DMR MS/Simplex voice, as it was removed from the default method due to poor performance.
|
||||
|
||||
-F Enable Passive Frame Sync
|
||||
Use Passive Frame Sync if voice in both slots becomes choppy/skips
|
||||
Using Passive Sync may cause wonky audio though, depends on quality of signal.
|
||||
|
||||
```
|
||||
Please note, for the time being, any MBE file saving, WAV file saving, or MBE payloads are disabled while using DMR Stereo. These features are still present in the default DMR handling and other voice decoder options and will be re- integrated into DMR Stereo in the future. DMR Stereo will also need to be enabled to handle DMR MS/Simplex voice, as it was removed from the default method due to poor performance.
|
||||
|
||||
Use Passive Frame Sync if voice in both slots becomes choppy or skips. Using Passive Sync may cause wonky audio though, depends on quality of signal and bit errors present.
|
||||
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## Example Usage - New DMR Stereo, Ncurses Terminal, Pulse Input/Output, and Log Console to file
|
||||
`./dsd -fr -T -Z -N 2> voice.log`
|
||||
### Example Usage and Note!
|
||||
`dsd` or `./dsd` may need to be used in your usage, depending on if you are running it from the build folder, or if you have run make install. You will need to tweak the examples to your particular usage. Users can always check `dsd -h` for help and all command line switches to use.
|
||||
|
||||
in second terminal, same folder, run:
|
||||
`dsd` is all you need to run for pulse input, pulse output, and auto detect for DMR, P25P1, D-STAR, and X2-TDMA decoding. To use other decoding methods which cannot be auto detected, please use the following command line switches.
|
||||
|
||||
```
|
||||
-fi NXDN48
|
||||
-fn NXDN96
|
||||
-fp ProVoice
|
||||
-fm dPMR, also may need to use -xd if inverted dPMR.
|
||||
-fr DMR, also may need to use -xr if inverted DMR, use -T for Stereo, and -F for passive sync
|
||||
-f1 P25P1
|
||||
-fx X2-TDMA
|
||||
```
|
||||
|
||||
## Example Usage - New DMR Stereo, Ncurses Terminal, Pulse Input/Output, and Log Console to file
|
||||
`dsd -fr -T -Z -N 2> voice.log`
|
||||
|
||||
and in a second terminal tab, same folder, run
|
||||
|
||||
`tail -n 40 -f voice.log`
|
||||
|
||||
## Example Usage - RTL
|
||||
## Example Usage - RTL2832 Dongle Input
|
||||
`dsd -fi -i rtl -c 154.9875M -P -2 -D 1 -G 36 -L 70 -U 6021 -Y 12`
|
||||
|
||||
```
|
||||
-i rtl to use rtl_fm (default is -i pulse for pulse audio)
|
||||
|
||||
-o pulse to set output to pulse audio (is default anyways)
|
||||
-o pulse to set output to pulse audio (excluded, is default anyways)
|
||||
|
||||
-c Set frequency
|
||||
|
||||
-P set PPM error
|
||||
-P set PPM error (default = 0)
|
||||
|
||||
-D set device index number
|
||||
-D set device index number (default = 0; first device detected)
|
||||
|
||||
-G set device gain (0-49) (default = 0 Auto Gain)
|
||||
|
||||
-L set rtl squelch to 25
|
||||
-L set rtl squelch to 25 (default = 0; off)
|
||||
|
||||
-V set RTL sample 'volume' multiplier
|
||||
-U set UDP port for rtl_fm remote control (default = 6020)
|
||||
|
||||
-U set UDP port for rtl_fm remote control
|
||||
|
||||
-Y 12 set rtl VFO bandwidth in kHz, (default = 48)(6, 8, 12, 16, 24, 48)
|
||||
-Y 12 set rtl VFO bandwidth in kHz, (default = 12)(6, 8, 12, 16, 24, 48)
|
||||
|
||||
```
|
||||
|
||||
### Note
|
||||
|
||||
`dsd` and `./dsd` may need to be used in your usage, depending on if you are running it from the build folder, or if you have run make install. You will need to tweak the examples to your particular usage
|
||||
|
||||
|
||||
## Example Pulse Audio Input and Pulse Audio Output, Autodetect Frame Type
|
||||
`dsd` or `./dsd`
|
||||
```
|
||||
Yes, it really is this simple now
|
||||
|
||||
-fa Auto-detect frame type, is default
|
||||
|
||||
sans NXDN, dPMR, or Provoice, need to specify -fp, -fd, -fi, or -fn respectively
|
||||
pulse audio is set as default input and output methods
|
||||
|
||||
```
|
||||
## Example STDIN UDP from GQRX or SDR++, output to Pulse Audio, and save wav files
|
||||
`socat stdio udp-listen:7355 | dsd -fi -i - -o pulse -w nxdn.wav`
|
||||
## Example STDIN UDP from GQRX or SDR++, output to Pulse Audio, and append decoded audio to wav file
|
||||
`socat stdio udp-listen:7355 | dsd -fi -i - -w nxdn.wav`
|
||||
|
||||
## Example Usage - Extra Information for Academic Study and Logging
|
||||
Be sure to create a folder called MBE first and run
|
||||
|
||||
`dsd -d ./MBE/ -Z -pu 2>> voice.log`
|
||||
|
||||
in second terminal, same folder, run:
|
||||
and in a second terminal tab, same folder, run
|
||||
|
||||
`tail -n 40 -f voice.log`
|
||||
|
||||
|
|
@ -106,8 +103,7 @@ The above install.sh should now function on older system types. You can elect to
|
|||
|
||||
## Manual Install
|
||||
|
||||
First, install dependency packages. This guide will assume you are using Ubuntu 20.04 based distros. Check your package manager for equivalent packages if different. PortAudio is not currently used in this build, and is disabled in CMakeLists.txt, you can re-enable it if you wish, but it isn't recommended unless you have a very specific reason to do so. Some of these dependencies are not currently be used, but may be used in future builds.
|
||||
|
||||
First, install dependency packages. This guide will assume you are using Ubuntu 20.04 based distros. Check your package manager for equivalent packages if different. PortAudio is not used in this build!
|
||||
|
||||
```
|
||||
sudo apt update
|
||||
|
|
|
|||
Loading…
Reference in New Issue