Merge branch 'm17' into develop
This commit is contained in:
commit
eb981c04e9
@ -2,6 +2,7 @@
|
|||||||
- Introduced `squelch_auto_margin` config option that allows configuring the auto squelch level
|
- Introduced `squelch_auto_margin` config option that allows configuring the auto squelch level
|
||||||
- Removed `port` configuration option; `rtltcp_compat` takes the port number with the new connectors
|
- Removed `port` configuration option; `rtltcp_compat` takes the port number with the new connectors
|
||||||
- Added support for new WSJT-X modes FST4 and FST4W (only available with WSJT-X 2.3)
|
- Added support for new WSJT-X modes FST4 and FST4W (only available with WSJT-X 2.3)
|
||||||
|
- Added support for demodulating M17 digital voice signals using m17-cxx-demod
|
||||||
- New devices supported:
|
- New devices supported:
|
||||||
- HPSDR devices (Hermes Lite 2)
|
- HPSDR devices (Hermes Lite 2)
|
||||||
- BBRF103 / RX666 / RX888 devices supported by libsddc
|
- BBRF103 / RX666 / RX888 devices supported by libsddc
|
||||||
|
17
csdr/csdr.py
17
csdr/csdr.py
@ -203,11 +203,11 @@ class dsp(object):
|
|||||||
"csdr convert_f_s16"
|
"csdr convert_f_s16"
|
||||||
]
|
]
|
||||||
elif self.isDigitalVoice(which):
|
elif self.isDigitalVoice(which):
|
||||||
chain += ["csdr fmdemod_quadri_cf", "dc_block "]
|
chain += ["csdr fmdemod_quadri_cf"]
|
||||||
chain += last_decimation_block
|
chain += last_decimation_block
|
||||||
# dsd modes
|
# dsd modes
|
||||||
if which in ["dstar", "nxdn"]:
|
if which in ["dstar", "nxdn"]:
|
||||||
chain += ["csdr limit_ff", "csdr convert_f_s16"]
|
chain += ["dc_block", "csdr limit_ff", "csdr convert_f_s16"]
|
||||||
if which == "dstar":
|
if which == "dstar":
|
||||||
chain += ["dsd -fd -i - -o - -u {unvoiced_quality} -g -1 "]
|
chain += ["dsd -fd -i - -o - -u {unvoiced_quality} -g -1 "]
|
||||||
elif which == "nxdn":
|
elif which == "nxdn":
|
||||||
@ -217,9 +217,18 @@ class dsp(object):
|
|||||||
"CSDR_FIXED_BUFSIZE=32 csdr agc_s16 --max 30 --initial 3",
|
"CSDR_FIXED_BUFSIZE=32 csdr agc_s16 --max 30 --initial 3",
|
||||||
"sox -t raw -r 8000 -e signed-integer -b 16 -c 1 --buffer 32 - -t raw -r {output_rate} -e signed-integer -b 16 -c 1 - ",
|
"sox -t raw -r 8000 -e signed-integer -b 16 -c 1 --buffer 32 - -t raw -r {output_rate} -e signed-integer -b 16 -c 1 - ",
|
||||||
]
|
]
|
||||||
|
# m17
|
||||||
|
elif which == "m17":
|
||||||
|
chain += [
|
||||||
|
"csdr limit_ff",
|
||||||
|
"csdr convert_f_s16",
|
||||||
|
"m17-demod",
|
||||||
|
"CSDR_FIXED_BUFSIZE=32 csdr agc_s16 --max 30 --initial 3",
|
||||||
|
"sox -t raw -r 8000 -e signed-integer -b 16 -c 1 --buffer 32 - -t raw -r {output_rate} -e signed-integer -b 16 -c 1 - ",
|
||||||
|
]
|
||||||
# digiham modes
|
# digiham modes
|
||||||
else:
|
else:
|
||||||
chain += ["rrc_filter", "gfsk_demodulator"]
|
chain += ["dc_block", "rrc_filter", "gfsk_demodulator"]
|
||||||
if which == "dmr":
|
if which == "dmr":
|
||||||
chain += [
|
chain += [
|
||||||
"dmr_decoder --fifo {meta_pipe} --control-fifo {dmr_control_pipe}",
|
"dmr_decoder --fifo {meta_pipe} --control-fifo {dmr_control_pipe}",
|
||||||
@ -565,7 +574,7 @@ class dsp(object):
|
|||||||
def isDigitalVoice(self, demodulator=None):
|
def isDigitalVoice(self, demodulator=None):
|
||||||
if demodulator is None:
|
if demodulator is None:
|
||||||
demodulator = self.get_demodulator()
|
demodulator = self.get_demodulator()
|
||||||
return demodulator in ["dmr", "dstar", "nxdn", "ysf"]
|
return demodulator in ["dmr", "dstar", "nxdn", "ysf", "m17"]
|
||||||
|
|
||||||
def isWsjtMode(self, demodulator=None):
|
def isWsjtMode(self, demodulator=None):
|
||||||
if demodulator is None:
|
if demodulator is None:
|
||||||
|
2
debian/changelog
vendored
2
debian/changelog
vendored
@ -5,6 +5,8 @@ openwebrx (0.21.0) UNRELEASED; urgency=low
|
|||||||
with the new connectors
|
with the new connectors
|
||||||
* Added support for new WSJT-X modes FST4 and FST4W (only available with
|
* Added support for new WSJT-X modes FST4 and FST4W (only available with
|
||||||
WSJT-X 2.3)
|
WSJT-X 2.3)
|
||||||
|
* Added support for demodulating M17 digital voice signals using
|
||||||
|
m17-cxx-demod
|
||||||
* New devices supported:
|
* New devices supported:
|
||||||
- HPSDR devices (Hermes Lite 2) (`"type": "hpsdr"`)
|
- HPSDR devices (Hermes Lite 2) (`"type": "hpsdr"`)
|
||||||
- BBRF103 / RX666 / RX888 devices supported by libsddc (`"type": "sddc"`)
|
- BBRF103 / RX666 / RX888 devices supported by libsddc (`"type": "sddc"`)
|
||||||
|
@ -18,8 +18,8 @@ function cmakebuild() {
|
|||||||
|
|
||||||
cd /tmp
|
cd /tmp
|
||||||
|
|
||||||
STATIC_PACKAGES="sox libfftw3-bin python3 python3-setuptools netcat-openbsd libsndfile1 liblapack3 libusb-1.0-0 libqt5core5a libreadline7 libgfortran4 libgomp1 libasound2 libudev1 ca-certificates libqt5gui5 libqt5sql5 libqt5printsupport5 libpulse0 libfaad2 libopus0"
|
STATIC_PACKAGES="sox libfftw3-bin python3 python3-setuptools netcat-openbsd libsndfile1 liblapack3 libusb-1.0-0 libqt5core5a libreadline7 libgfortran4 libgomp1 libasound2 libudev1 ca-certificates libqt5gui5 libqt5sql5 libqt5printsupport5 libpulse0 libfaad2 libopus0 libboost-program-options1.67.0"
|
||||||
BUILD_PACKAGES="wget git libsndfile1-dev libfftw3-dev cmake make gcc g++ liblapack-dev texinfo gfortran libusb-1.0-0-dev qtbase5-dev qtmultimedia5-dev qttools5-dev libqt5serialport5-dev qttools5-dev-tools asciidoctor asciidoc libasound2-dev libudev-dev libhamlib-dev patch xsltproc qt5-default libfaad-dev libopus-dev"
|
BUILD_PACKAGES="wget git libsndfile1-dev libfftw3-dev cmake make gcc g++ liblapack-dev texinfo gfortran libusb-1.0-0-dev qtbase5-dev qtmultimedia5-dev qttools5-dev libqt5serialport5-dev qttools5-dev-tools asciidoctor asciidoc libasound2-dev libudev-dev libhamlib-dev patch xsltproc qt5-default libfaad-dev libopus-dev libgtest-dev libboost-dev libboost-program-options-dev"
|
||||||
apt-get update
|
apt-get update
|
||||||
apt-get -y install auto-apt-proxy
|
apt-get -y install auto-apt-proxy
|
||||||
apt-get -y install --no-install-recommends $STATIC_PACKAGES $BUILD_PACKAGES
|
apt-get -y install --no-install-recommends $STATIC_PACKAGES $BUILD_PACKAGES
|
||||||
@ -110,6 +110,10 @@ popd
|
|||||||
rm -rf dream
|
rm -rf dream
|
||||||
rm dream-2.1.1-svn808.tar.gz
|
rm dream-2.1.1-svn808.tar.gz
|
||||||
|
|
||||||
|
git clone https://github.com/mobilinkd/m17-cxx-demod.git
|
||||||
|
# latest master as of 2020-12-22 (fixed m17-mod install)
|
||||||
|
cmakebuild m17-cxx-demod d2474532b811f97f2b8665c272bffdf88716d31c
|
||||||
|
|
||||||
git clone https://github.com/hessu/aprs-symbols /usr/share/aprs-symbols
|
git clone https://github.com/hessu/aprs-symbols /usr/share/aprs-symbols
|
||||||
pushd /usr/share/aprs-symbols
|
pushd /usr/share/aprs-symbols
|
||||||
git checkout 5c2abe2658ee4d2563f3c73b90c6f59124839802
|
git checkout 5c2abe2658ee4d2563f3c73b90c6f59124839802
|
||||||
|
@ -75,6 +75,7 @@ class FeatureDetector(object):
|
|||||||
"digital_voice_digiham": ["digiham", "sox"],
|
"digital_voice_digiham": ["digiham", "sox"],
|
||||||
"digital_voice_dsd": ["dsd", "sox", "digiham"],
|
"digital_voice_dsd": ["dsd", "sox", "digiham"],
|
||||||
"digital_voice_freedv": ["freedv_rx", "sox"],
|
"digital_voice_freedv": ["freedv_rx", "sox"],
|
||||||
|
"digital_voice_m17": ["m17_demod", "sox"],
|
||||||
"wsjt-x": ["wsjtx", "sox"],
|
"wsjt-x": ["wsjtx", "sox"],
|
||||||
"packet": ["direwolf", "sox"],
|
"packet": ["direwolf", "sox"],
|
||||||
"pocsag": ["digiham", "sox"],
|
"pocsag": ["digiham", "sox"],
|
||||||
@ -150,7 +151,7 @@ class FeatureDetector(object):
|
|||||||
# prevent X11 programs from opening windows if called from a GUI shell
|
# prevent X11 programs from opening windows if called from a GUI shell
|
||||||
env.pop("DISPLAY", None)
|
env.pop("DISPLAY", None)
|
||||||
try:
|
try:
|
||||||
process = subprocess.Popen(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, cwd=tmp_dir, env=env)
|
process = subprocess.Popen(cmd, stdin=subprocess.DEVNULL, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, cwd=tmp_dir, env=env)
|
||||||
rc = process.wait()
|
rc = process.wait()
|
||||||
if expected_result is None:
|
if expected_result is None:
|
||||||
return rc != 32512
|
return rc != 32512
|
||||||
@ -419,6 +420,14 @@ class FeatureDetector(object):
|
|||||||
"""
|
"""
|
||||||
return self.command_is_runnable("dsd")
|
return self.command_is_runnable("dsd")
|
||||||
|
|
||||||
|
def has_m17_demod(self):
|
||||||
|
"""
|
||||||
|
The `m17-demod` tool is used to demodulate M17 digital voice signals.
|
||||||
|
|
||||||
|
You can find more information [here](https://github.com/mobilinkd/m17-cxx-demod)
|
||||||
|
"""
|
||||||
|
return self.command_is_runnable("m17-demod")
|
||||||
|
|
||||||
def has_sox(self):
|
def has_sox(self):
|
||||||
"""
|
"""
|
||||||
The sox audio library is used to convert between the typical 8 kHz audio sampling rate used by digital modes and
|
The sox audio library is used to convert between the typical 8 kHz audio sampling rate used by digital modes and
|
||||||
|
@ -63,6 +63,7 @@ class Modes(object):
|
|||||||
AnalogMode("dstar", "D-Star", bandpass=Bandpass(-3250, 3250), requirements=["digital_voice_dsd"], squelch=False),
|
AnalogMode("dstar", "D-Star", bandpass=Bandpass(-3250, 3250), requirements=["digital_voice_dsd"], squelch=False),
|
||||||
AnalogMode("nxdn", "NXDN", bandpass=Bandpass(-3250, 3250), requirements=["digital_voice_dsd"], squelch=False),
|
AnalogMode("nxdn", "NXDN", bandpass=Bandpass(-3250, 3250), requirements=["digital_voice_dsd"], squelch=False),
|
||||||
AnalogMode("ysf", "YSF", bandpass=Bandpass(-4000, 4000), requirements=["digital_voice_digiham"], squelch=False),
|
AnalogMode("ysf", "YSF", bandpass=Bandpass(-4000, 4000), requirements=["digital_voice_digiham"], squelch=False),
|
||||||
|
AnalogMode("m17", "M17", bandpass=Bandpass(-4000, 4000), requirements=["digital_voice_m17"], squelch=False),
|
||||||
AnalogMode("freedv", "FreeDV", bandpass=Bandpass(300, 3000), requirements=["digital_voice_freedv"], squelch=False),
|
AnalogMode("freedv", "FreeDV", bandpass=Bandpass(300, 3000), requirements=["digital_voice_freedv"], squelch=False),
|
||||||
AnalogMode("drm", "DRM", bandpass=Bandpass(-5000, 5000), requirements=["drm"], squelch=False),
|
AnalogMode("drm", "DRM", bandpass=Bandpass(-5000, 5000), requirements=["drm"], squelch=False),
|
||||||
DigitalMode("bpsk31", "BPSK31", underlying=["usb"]),
|
DigitalMode("bpsk31", "BPSK31", underlying=["usb"]),
|
||||||
|
Loading…
Reference in New Issue
Block a user