Giter Club home page Giter Club logo

leansdr's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

leansdr's Issues

GUI

could you please tell how to run the gui of leandvb

leandvd: Treat --help and -h identically

When I issue the command, "leandvd --help", I get the usage as expected, but at the bottom is an error which I do not expect to display:

** Error while processing '--help'

I feel that both "-h" and "--help" should be treated identically.

Compile: libiio and X11 not found

When I compile leandvb, I get these notifications:

libiio not found. Will not build leaniio{rx,tx}.
X11 not found. Will not compile GUI.

How do I resolve these? (Ubuntu 19.04)

Leandvb integration

I am trying to build a DTV receiver using a B200 Ettus receiver , the main problem to me was to find a digital decoder but finally dropped into leandvb. I did some test using the decoder as an application and apparently it was working but was not exactly what i was looking for.
I decided then to use the source as add on to mine adding the source files to my application changing very few to start it as a thread and using an unnamed pipe to transfer data.Problems? All easy until start testing.
leandvb returns from the scheduler after having done very few steps.
The following is a trace of the activity (leandvb runnables) when i start to send data:

Runnable: 0 stdin
Runnable: 1 scaler
Runnable: 2 spectrum
Runnable: 3 TS packets
Runnable: 4 rate_estimator
Runnable: 5 S2 frame receiver
Runnable: 6 S2 deinterleaver
Runnable: 7 S2 fecdec io
Runnable: 8 S2 deframer
sch stopped---------------------------stop and start closing
Runnable x shutdown: 0 stdin
Runnable x shutdown: 1 scaler
Runnable x shutdown: 2 spectrum
Runnable x shutdown: 3 TS packets
Runnable x shutdown: 4 rate_estimator
Runnable x shutdown: 5 S2 frame receiver
Runnable x shutdown: 6 S2 deinterleaver
Runnable x shutdown: 7 S2 fecdec io
Runnable x shutdown: 8 S2 deframer

The code is very hermetic and i was not able to go any further ..
As help the following is the used configuration:

config()
: verbose(false),
debug(true),
debug2(true),
highspeed(false),
input_format(INPUT_F32),
float_scale(1.0),
loop_input(false),
input_pipe(0),
input_buffer(0),
buf_factor(4),
Fs(2.4e6),
Fderot(0),
anf(0),
cnr(false),
decim(0),
fd_pp(-1),
fd_gse(-1),
fd_iqsymbols(-1),
awgn(0),
Fm(2e6),
standard(DVB_S2),
constellation(cstln_base::QPSK),
strongpls(false),
modcods(0xffffffff),
framesizes(0x03),
fec(FEC12),
Ftune(0),
allow_drift(false),
freq_tol(0.25),
sr_tol(100e-6),
fastlock(true),
fastdrift(false),
viterbi(true),
hard_metric(false),
ldpc_bf(10),
ldpc_helper("ldpc_tool"),
nhelpers(4),
resample(false),
resample_rej(10),
sampler(config::SAMP_RRC),
rrc_steps(0),
rrc_rej(10),
rolloff(0.35),

  hdlc(false),
  packetized(false),

  gui(false),
  duration(60),
  linger(false),
  fd_info(-1),
  Finfo(5),
  fd_const(-1),
  fd_spectrum(-1),
  json(false) {

Any hints will be very appreciated.
Thanks in advance,nando

How to provide live input from USRP

Hi again,

I am trying to provide a live input from an USRP device to leandvb input. Basically I am trying to achieve something like:
rtl_sdr ... - | ./leandvb --gui ...

For starters I was thinking to redirect the USRP's outptu to an udp port and then, using nc -u .. to provide this as input for leandvb, sadly with no success.

Wanted to ask you if it is possible for leandvb to get the input data from a local udp port or, if I'm way off the track, if you may have an advice on how can I feed live data from USRP to leandvb.

I read on http://www.pabr.org/radio/leandvb/leandvb.en.html that: " Instead, third-party applications can spawn a leandvb process, inject I/Q samples into its standard input, ..." but I am not sure how to achieve this.

Thank you very much

DVB-S2 rx - not getting .ts output

Hi,

I am trying to use the leandvb as an offline DVB-S2 receiver using an I/Q file as input.
The file was generated using the https://github.com/drmpeg/gr-dvbs transmitter.

The command used to run leandvb is the following:
./leandvb --f32 -f 2e6 --sr 500e3 --cr 9/10 --gui --fd-info 2 --anf 1 --standard DVB-S2 --const 16APSK --sampler rrc < recorded_data_source.iq > capture.ts

But I get no output written into capture.ts. Here are some screenshots:
screenshot from 2019-02-16 13-52-00

The preprocessed I/Q looks fine but the constellation does not.
I can not upload the recorded_data_source.iq as it is has a large size (~1.9GB).

The overall idea would be to use 2 USRPs (tx <-> rx) to transmit a .ts file. I have the chain available but when I redirect the USRP's source to a file then pass it to leandvb it gets even worse:
screenshot from 2019-02-16 13-51-34

Any help would be highly appreciated. Please let me know if further info in needed from my side. Thank you very much

Cannot compile ldpc

Following http://www.pabr.org/radio/leandvb/leandvb.en.html#install building of ldpc fails under Ubuntu 20.04.

$ uname -a
Linux E535ubuntu 5.4.0-52-generic #57-Ubuntu SMP Thu Oct 15 10:57:00 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
$ LC_ALL=C make CXX=g++ ldpc_tool 
g++ -std=c++11 -W -Wall -Ofast -fno-exceptions -fno-rtti tables_handler.cc -c -o tables_handler.o
g++ -std=c++11 -W -Wall -Ofast -fno-exceptions -fno-rtti itls_handler.cc -c -o itls_handler.o
g++ -std=c++11 -W -Wall -Ofast -fno-exceptions -fno-rtti mods_handler.cc -c -o mods_handler.o
g++ -std=c++11 -W -Wall -Ofast -fno-exceptions -fno-rtti ldpc_tool.cc tables_handler.o itls_handler.o mods_handler.o -o ldpc_tool
/usr/bin/ld: mods_handler.o: in function `Modulation<PhaseShiftKeying<8, std::complex<float>, signed char>, 21600>::hardN(signed char*, std::complex<float>*)':
mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE5hardNEPaPS2_[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE5hardNEPaPS2_]+0xe): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw'
/usr/bin/ld: mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE5hardNEPaPS2_[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE5hardNEPaPS2_]+0x28): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw'
/usr/bin/ld: mods_handler.o: in function `Modulation<PhaseShiftKeying<8, std::complex<float>, signed char>, 21600>::mapN(std::complex<float>*, signed char*)':
mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE4mapNEPS2_Pa[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE4mapNEPS2_Pa]+0x1e): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_acw'
/usr/bin/ld: mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE4mapNEPS2_Pa[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE4mapNEPS2_Pa]+0x61): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_acw'
/usr/bin/ld: mods_handler.o: in function `Modulation<PhaseShiftKeying<8, std::complex<float>, signed char>, 21600>::hard(signed char*, std::complex<float>)':
mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE4hardEPaS2_[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE4hardEPaS2_]+0x1a): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw'
/usr/bin/ld: mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE4hardEPaS2_[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE4hardEPaS2_]+0x22): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw'
/usr/bin/ld: mods_handler.o: in function `Modulation<PhaseShiftKeying<8, std::complex<float>, signed char>, 21600>::map(signed char*)':
mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE3mapEPa[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE3mapEPa]+0x25): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_acw'
/usr/bin/ld: mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE3mapEPa[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE3mapEPa]+0x2d): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_acw'
/usr/bin/ld: mods_handler.o: in function `Modulation<PhaseShiftKeying<8, std::complex<float>, signed char>, 10800>::hardN(signed char*, std::complex<float>*)':
mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE5hardNEPaPS2_[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE5hardNEPaPS2_]+0xe): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw'
/usr/bin/ld: mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE5hardNEPaPS2_[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE5hardNEPaPS2_]+0x28): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw'
/usr/bin/ld: mods_handler.o: in function `Modulation<PhaseShiftKeying<8, std::complex<float>, signed char>, 10800>::mapN(std::complex<float>*, signed char*)':
mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE4mapNEPS2_Pa[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE4mapNEPS2_Pa]+0x1e): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_acw'
/usr/bin/ld: mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE4mapNEPS2_Pa[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE4mapNEPS2_Pa]+0x61): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_acw'
/usr/bin/ld: mods_handler.o: in function `Modulation<PhaseShiftKeying<8, std::complex<float>, signed char>, 10800>::hard(signed char*, std::complex<float>)':
mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE4hardEPaS2_[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE4hardEPaS2_]+0x1a): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw'
/usr/bin/ld: mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE4hardEPaS2_[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE4hardEPaS2_]+0x22): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw'
/usr/bin/ld: mods_handler.o: in function `Modulation<PhaseShiftKeying<8, std::complex<float>, signed char>, 10800>::map(signed char*)':
mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE3mapEPa[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE3mapEPa]+0x25): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_acw'
/usr/bin/ld: mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE3mapEPa[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE3mapEPa]+0x2d): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_acw'
/usr/bin/ld: mods_handler.o: in function `Modulation<PhaseShiftKeying<8, std::complex<float>, signed char>, 5400>::hardN(signed char*, std::complex<float>*)':
mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE5hardNEPaPS2_[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE5hardNEPaPS2_]+0xe): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw'
/usr/bin/ld: mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE5hardNEPaPS2_[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE5hardNEPaPS2_]+0x28): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw'
/usr/bin/ld: mods_handler.o: in function `Modulation<PhaseShiftKeying<8, std::complex<float>, signed char>, 5400>::mapN(std::complex<float>*, signed char*)':
mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE4mapNEPS2_Pa[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE4mapNEPS2_Pa]+0x1e): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_acw'
/usr/bin/ld: mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE4mapNEPS2_Pa[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE4mapNEPS2_Pa]+0x61): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_acw'
/usr/bin/ld: mods_handler.o: in function `Modulation<PhaseShiftKeying<8, std::complex<float>, signed char>, 5400>::hard(signed char*, std::complex<float>)':
mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE4hardEPaS2_[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE4hardEPaS2_]+0x1a): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw'
/usr/bin/ld: mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE4hardEPaS2_[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE4hardEPaS2_]+0x22): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw'
/usr/bin/ld: mods_handler.o: in function `Modulation<PhaseShiftKeying<8, std::complex<float>, signed char>, 5400>::map(signed char*)':
mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE3mapEPa[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE3mapEPa]+0x25): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_acw'
/usr/bin/ld: mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE3mapEPa[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE3mapEPa]+0x2d): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_acw'
/usr/bin/ld: mods_handler.o: in function `Modulation<PhaseShiftKeying<8, std::complex<float>, signed char>, 10800>::softN(signed char*, std::complex<float>*, float)':
mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE5softNEPaPS2_f[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE5softNEPaPS2_f]+0x9): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw'
/usr/bin/ld: mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE5softNEPaPS2_f[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi10800EE5softNEPaPS2_f]+0x64): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw'
/usr/bin/ld: mods_handler.o: in function `Modulation<PhaseShiftKeying<8, std::complex<float>, signed char>, 5400>::softN(signed char*, std::complex<float>*, float)':
mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE5softNEPaPS2_f[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE5softNEPaPS2_f]+0x9): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw'
/usr/bin/ld: mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE5softNEPaPS2_f[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi5400EE5softNEPaPS2_f]+0x64): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw'
/usr/bin/ld: mods_handler.o: in function `Modulation<PhaseShiftKeying<8, std::complex<float>, signed char>, 21600>::softN(signed char*, std::complex<float>*, float)':
mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE5softNEPaPS2_f[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE5softNEPaPS2_f]+0x9): undefined reference to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw'
/usr/bin/ld: mods_handler.o:mods_handler.cc:(.text._ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE5softNEPaPS2_f[_ZN10ModulationI16PhaseShiftKeyingILi8ESt7complexIfEaELi21600EE5softNEPaPS2_f]+0x64): more undefined references to `PhaseShiftKeying<8, std::complex<float>, signed char>::rot_cw' follow
collect2: error: ld returned 1 exit status
make: *** [Makefile:18: ldpc_tool] Error 1

I found a solution at https://github.com/Blockstream/satellite/blob/master/doc/sdr.md but this is not repo.

Please add support for complex uint16_t and int16_t file types

Hi,

My LimeSDR and USRP1 both can output unsigned/signed 16bit ints as a file format (which is obviously half the space of a complex float). Would it be possible to add support to read (u)int16_t files to save the time & disk space of having to convert the files to complex floats? I had a quick look and will attempt to add it myself, but it appears not to be as trivial as I was hoping!

Thanks,

Matt

Processing IQ file to completion with nhelpers > 1

Hi @pabr ,

I'm trying to benchmark the gr-dvbs2rx performance and compare it to leandvb based on your work branch. For example, I'm using the command below for one of the IQ files I have:

leandvb --standard DVB-S2 --nhelpers 6 --ldpc-helper /usr/local/bin/ldpc_tool --sampler rrc --rrc-rej 30 --u8 --modcods 32 -f 2000000 --sr 1000000 --roll-off 0.2 --framesizes 1 < qpsk35.iq > /dev/null -d -v

The command works OK and demodulates the DVB-S2 signal. The problem is that leandvb hangs in the end instead of exiting once the input IQ file reaches EOF. I have realized the problem only occurs with --nhelpers greater than one, so I suspect it could be hanging in this loop.

Any hints? Is there a way to prevent this via command-line options? I would still like to run with more than one helper to put leandvb in a fast configuration for a fair comparison with gr-dvbs2rx.

Regards

OSX Build failure

I've tried adding -I/opt/X11/include, as well as exporting to $PATH and env CPPFLAG options but these don't work. Is there any chance someone could give me some more options to edit the makefile for OSX/mac?

Many thanks in advance, Chris

Chris-MacBookAir:apps chrisbridges$ make
g++ -O3 -I.. -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable -DGUI leandvb.cc -lX11 -o leandvb  ||  \
	g++ -O3 -I.. -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable       leandvb.cc       -o leandvb
In file included from leandvb.cc:17:
../leansdr/gui.h:16:10: fatal error: 'X11/X.h' file not found
#include <X11/X.h>
         ^
1 error generated.
In file included from leandvb.cc:14:
../leansdr/sdr.h:61:26: error: variable length array of non-POD element type
      'complex<float>'
      complex<float> data[fft.n];
                         ^
../leansdr/sdr.h:52:4: note: in instantiation of member function
      'leansdr::auto_notch<float>::detect' requested here
          detect();
          ^
../leansdr/sdr.h:33:5: note: in instantiation of member function
      'leansdr::auto_notch<float>::run' requested here
    auto_notch(scheduler *sch, pipebuf< complex<T> > &_in,
    ^
leandvb.cc:265:11: note: in instantiation of member function
      'leansdr::auto_notch<float>::auto_notch' requested here
      new auto_notch<f32>(&sch, *p_preprocessed, *p_autonotched,
          ^
In file included from leandvb.cc:14:
../leansdr/sdr.h:1198:22: error: variable length array of non-POD element type
      'complex<float>'
      complex<T> data[fft.n];
                     ^
../leansdr/sdr.h:1187:4: note: in instantiation of member function
      'leansdr::cnr_fft<float>::do_cnr' requested here
          do_cnr();
          ^
../leansdr/sdr.h:1166:5: note: in instantiation of member function
      'leansdr::cnr_fft<float>::run' requested here
    cnr_fft(scheduler *sch, pipebuf< complex<T> > &_in, pipebuf<float> &_out,
    ^
leandvb.cc:292:17: note: in instantiation of member function
      'leansdr::cnr_fft<float>::cnr_fft' requested here
    r_cnr = new cnr_fft<f32>(&sch, *p_preprocessed, p_cnr, cfg.Fm/cfg.Fs);
                ^
2 errors generated.

leandvb: Make columns consistent in help

This first output has inconsistent column tabbing:

pi@raspberrypi:/usr/local/bin $ leandvb -h
Usage: leandvb [options]  < IQ  > TS
Demodulate DVB-S I/Q on stdin, output MPEG packets on stdout

Input options:
  --u8           Input format is 8-bit unsigned (rtl_sdr, default)
  --s16          Input format is 16-bit signed (plutosdr)
  --f32          Input format is 32-bit float (gqrx)
  -f HZ          Input sample rate (default: 2.4e6)
  --loop         Repeat (stdin must be a file)
  --inbuf INT    Additional input buffering (samples)

Preprocessing options:
  --anf INT             Number of birdies to remove (default: 1)
  --derotate HZ         For use with --fd-pp, otherwise use --tune
  --resample            Resample baseband (CPU-intensive)
  --resample-rej FLOAT  Aliasing rejection (default: 10)
  --decim INT           Decimate baseband (causes aliasing)
  --cnr                 Measure CNR (requires samprate>3*symbrate)

DVB-S options:
  --sr HZ           Symbol rate (default: 2e6)
  --tune HZ         Bias frequency for demodulation
  --drift           Track frequency drift beyond safe limits
  --standard S      DVB-S (default), DVB-S2 (not implemented)
  --const STRING    QPSK (default),
                    BPSK .. 32APSK (DVB-S2),
                    64APSKe (DVB-S2X),
                    16QAM .. 256QAM (experimental)
  --cr NUM/DEN      Code rate 1/2 (default) .. 7/8 .. 9/10
  --fastlock        Synchronize more aggressively (CPU-intensive)
  --sampler         nearest, linear, rrc
  --rrc-steps INT   RRC interpolation factor
  --rrc-rej FLOAT   RRC filter rejection (defaut:10)
  --roll-off FLOAT  RRC roll-off (default: 0.35)
  --viterbi         Use Viterbi (CPU-intensive)
  --hard-metric     Use Hamming distances with Viterbi

Compatibility options:
  --hdlc         Expect HDLC frames instead of MPEG packets
  --packetized   Output 16-bit length prefix (default: as stream)

General options:
  --buf-factor INT  Buffer size factor (default:4)
  --hq              Maximize sensitivity
                    (Enables all CPU-intensive features)
  --hs              Maximize throughput (QPSK CR1/2 only)
                    (Disables all preprocessing)

UI options:
  -h                   Display this help message and exit
  -v                   Output debugging info at startup and exit
  -d                   Output debugging info during operation
  --version            Display version and exit
  --fd-pp FDNUM        Dump preprocessed IQ data to file descriptor
  --fd-info FDNUM      Output demodulator status to file descriptor
  --fd-const FDNUM     Output constellation and symbols to file descr
  --fd-spectrum FDNUM  Output spectrum to file descr
  --json               Use JSON syntax
  --gui             Show constellation and spectrum (X11)
  --duration FLOAT  Width of timeline plot (s, default 60)
  --linger          Keep GUI running after EOF

Testing options:
  --awgn FLOAT  Add white gaussian noise stddev (slow)


should look like this output:

pi@raspberrypi:/usr/local/bin $ leandvb -h
Usage: leandvb [options]  < IQ  > TS
Demodulate DVB-S I/Q on stdin, output MPEG packets on stdout

Input options:
  --u8           Input format is 8-bit unsigned (rtl_sdr, default)
  --s16          Input format is 16-bit signed (plutosdr)
  --f32          Input format is 32-bit float (gqrx)
  -f HZ          Input sample rate (default: 2.4e6)
  --loop         Repeat (stdin must be a file)
  --inbuf INT    Additional input buffering (samples)

Preprocessing options:
  --anf INT             Number of birdies to remove (default: 1)
  --derotate HZ         For use with --fd-pp, otherwise use --tune
  --resample            Resample baseband (CPU-intensive)
  --resample-rej FLOAT  Aliasing rejection (default: 10)
  --decim INT           Decimate baseband (causes aliasing)
  --cnr                 Measure CNR (requires samprate>3*symbrate)

DVB-S options:
  --sr HZ           Symbol rate (default: 2e6)
  --tune HZ         Bias frequency for demodulation
  --drift           Track frequency drift beyond safe limits
  --standard S      DVB-S (default), DVB-S2 (not implemented)
  --const STRING    QPSK (default),
                    BPSK .. 32APSK (DVB-S2),
                    64APSKe (DVB-S2X),
                    16QAM .. 256QAM (experimental)
  --cr NUM/DEN      Code rate 1/2 (default) .. 7/8 .. 9/10
  --fastlock        Synchronize more aggressively (CPU-intensive)
  --sampler         nearest, linear, rrc
  --rrc-steps INT   RRC interpolation factor
  --rrc-rej FLOAT   RRC filter rejection (defaut:10)
  --roll-off FLOAT  RRC roll-off (default: 0.35)
  --viterbi         Use Viterbi (CPU-intensive)
  --hard-metric     Use Hamming distances with Viterbi

Compatibility options:
  --hdlc         Expect HDLC frames instead of MPEG packets
  --packetized   Output 16-bit length prefix (default: as stream)

General options:
  --buf-factor INT  Buffer size factor (default:4)
  --hq              Maximize sensitivity
                    (Enables all CPU-intensive features)
  --hs              Maximize throughput (QPSK CR1/2 only)
                    (Disables all preprocessing)

UI options:
  -h                   Display this help message and exit
  -v                   Output debugging info at startup and exit
  -d                   Output debugging info during operation
  --version            Display version and exit
  --fd-pp FDNUM        Dump preprocessed IQ data to file descriptor
  --fd-info FDNUM      Output demodulator status to file descriptor
  --fd-const FDNUM     Output constellation and symbols to file descr
  --fd-spectrum FDNUM  Output spectrum to file descr
  --json               Use JSON syntax
  --gui             Show constellation and spectrum (X11)
  --duration FLOAT  Width of timeline plot (s, default 60)
  --linger          Keep GUI running after EOF

Testing options:
  --awgn FLOAT  Add white gaussian noise stddev (slow)

It should look like this:

pi@raspberrypi:/usr/local/bin $ leandvb -h
Usage: leandvb [options]  < IQ  > TS
Demodulate DVB-S I/Q on stdin, output MPEG packets on stdout

Input options:
  --u8                  Input format is 8-bit unsigned (rtl_sdr, default)
  --s16                 Input format is 16-bit signed (plutosdr)
  --f32                 Input format is 32-bit float (gqrx)
  -f HZ                 Input sample rate (default: 2.4e6)
  --loop                Repeat (stdin must be a file)
  --inbuf INT           Additional input buffering (samples)

Preprocessing options:
  --anf INT             Number of birdies to remove (default: 1)
  --derotate HZ         For use with --fd-pp, otherwise use --tune
  --resample            Resample baseband (CPU-intensive)
  --resample-rej FLOAT  Aliasing rejection (default: 10)
  --decim INT           Decimate baseband (causes aliasing)
  --cnr                 Measure CNR (requires samprate>3*symbrate)

DVB-S options:
  --sr HZ               Symbol rate (default: 2e6)
  --tune HZ             Bias frequency for demodulation
  --drift               Track frequency drift beyond safe limits
  --standard S          DVB-S (default), DVB-S2 (not implemented)
  --const STRING        QPSK (default),
                        BPSK .. 32APSK (DVB-S2),
                        64APSKe (DVB-S2X),
                        16QAM .. 256QAM (experimental)
  --cr NUM/DEN          Code rate 1/2 (default) .. 7/8 .. 9/10
  --fastlock            Synchronize more aggressively (CPU-intensive)
  --sampler             nearest, linear, rrc
  --rrc-steps INT       RRC interpolation factor
  --rrc-rej FLOAT       RRC filter rejection (defaut:10)
  --roll-off FLOAT      RRC roll-off (default: 0.35)
  --viterbi             Use Viterbi (CPU-intensive)
  --hard-metric         Use Hamming distances with Viterbi

Compatibility options:
  --hdlc                Expect HDLC frames instead of MPEG packets
  --packetized          Output 16-bit length prefix (default: as stream)

General options:
  --buf-factor INT      Buffer size factor (default:4)
  --hq                  Maximize sensitivity
                        (Enables all CPU-intensive features)
  --hs                  Maximize throughput (QPSK CR1/2 only)
                        (Disables all preprocessing)

UI options:
  -h                    Display this help message and exit
  -v                    Output debugging info at startup and exit
  -d                    Output debugging info during operation
  --version             Display version and exit
  --fd-pp FDNUM         Dump preprocessed IQ data to file descriptor
  --fd-info FDNUM       Output demodulator status to file descriptor
  --fd-const FDNUM      Output constellation and symbols to file descr
  --fd-spectrum FDNUM   Output spectrum to file descr
  --json                Use JSON syntax
  --gui                 Show constellation and spectrum (X11)
  --duration FLOAT      Width of timeline plot (s, default 60)
  --linger              Keep GUI running after EOF

Testing options:
  --awgn FLOAT          Add white gaussian noise stddev (slow)

Which SDR transmitter works with the leandvb receiver?

Hello, I am trying to transmit an MPEG-TS with gr-dvbs2 as the transmitter and an rtl-sdr + leandvb as the receiver. I get an almost perfect constellation diagram. The MER is approx. 18 dB. But leandvb does not generate a transport stream. Have you tested leandvb yourself with gr-dvbs2tx? Do leandvb_tx and leandvb_rx work together? That doesn't work for me either.
Best regards.

Does lenadvb support CRC for DVB-S2 reception?

First of all, sorry for asking this question in the issues.

Broadcast systems use FEC as error protection. However, if it is important that the data is processed without any error after receipt, CRC error protection should also be used, with which bundle errors are identified with a high degree of probability. As far as I know, there is also CRC error protection in DVB-S2. Does lenadvb support CRC for DVB-S2 reception?

output bb frame

Hi there,

Just a small question, is it possible to output the bb frames directly? What I want to do is to provide a GSE instead of .TS as input and at the output I would like to get the plain bb frames.
Something like:
./leandvb ..... < capture.iq > out_bb_frame

So basically bypass all the MPEG related processing.

Thank you

Run the error performance tests Faild !!!

when i run make leandvb-snr . it run .... but after half hour i got this errer :

== S2_LHBP_32APSK_9/10 ==

2 18 --standard DVB-S2 --pilots --modcod 28 --standard DVB-S2 --sampler rrc --ldpc-helper ./ldpc_tool
../src/apps/leantsgen -c 20000 | ../src/apps/leandvbtx -f 2 --power 18 --agc --standard DVB-S2 --pilots --modcod 28 | ../src/apps/leanchansim --awgn 0 --deterministic | ../src/apps/leandvb --f32 --float-scale .17803893913754448594 -f 2000000 --sr 1000000 --anf 0 --gui --fd-info 2 --standard DVB-S2 --sampler rrc --ldpc-helper ./ldpc_tool 2>&1 > /dev/null
git:67b124f other 2 18.00 0 0 0 0 0
2 17 --standard DVB-S2 --pilots --modcod 28 --standard DVB-S2 --sampler rrc --ldpc-helper ./ldpc_tool
../src/apps/leantsgen -c 20000 | ../src/apps/leandvbtx -f 2 --power 17 --agc --standard DVB-S2 --pilots --modcod 28 | ../src/apps/leanchansim --awgn 0 --deterministic | ../src/apps/leandvb --f32 --float-scale .19976297529666900720 -f 2000000 --sr 1000000 --anf 0 --gui --fd-info 2 --standard DVB-S2 --sampler rrc --ldpc-helper ./ldpc_tool 2>&1 > /dev/null
Results written to leandvb_bench_results.txt.
gnuplot -e 'load "leandvb_bench_S.gnuplot"; pause -1'
"leandvb_bench_S.gnuplot", line 42: warning: Skipping data file with no valid points
"leandvb_bench_S.gnuplot", line 42: warning: Skipping data file with no valid points
"leandvb_bench_S.gnuplot", line 42: warning: Skipping data file with no valid points
"leandvb_bench_S.gnuplot", line 42: warning: Skipping data file with no valid points

set term qt size 2048, 1024
^
"leandvb_bench_S.gnuplot", line 44: unknown or ambiguous terminal type; type just 'set terminal' for a list

Makefile:12: recipe for target 'leandvb-snr' failed
make: *** [leandvb-snr] Error 1
mwk@mwk-desktop:~/leansdr/test$

DVB-C implementation

Hello, First of all I would like to thank you for releasing this nice piece of software, it has been really helpful in my recent tinkering.
I would like to implement a DVB-S2 to DVB-C transmodulator in software. I have been looking around your code, and at both DVB standards, and from what I can see, the signal chain is the same up to the outer interleaver block. In DVB-C there is a differential coding on the two MSBs of the symbols, to make the constellation rotation-invariant.
Since you have already implemented the QAM16, QAM64 and QAM256 constellation LUTs, it would only be a matter of implementing the previously mentioned differential coding, am I right? Can you give me some help on this?

Thank you,
João

Not getting QPSK spectrum

screenshot from 2017-03-24 21-34-31
Bonjour, we are getting a spectrum as attached while transmitting signals with following particulars
sr-125ks/s,,f-98Mhz,,fec-1/2,,gain 7,, output mode QPSKRF, We are transmitting jpeg pictures using rpidatv

Autonotch Loop

Hi Pabr,

I'm Tx'ing using a USRP QPSK 1/2 rate signal at 1M symbol rate - and Rx'ing using a TXCO RTL dongle at 2M sample rate. Followed all advise on your pair pages but I'm in a forever loop in the auto notch filter - any ideas? 73s Chris

Commands:

rtl_sdr -g 40 -f 1.28G -s 2000000 rec.fifo
./leandvb --gui -v -d -f 2000e3 --sr 1000e3 --cr 1/2 --derotate -5000 --anf 2 < ~/rec.fifo > - | mplayer -cache 128 -

Output:

auto_notch: slot 0 new peak 4003 -> 101
auto_notch: slot 1 new peak 3962 -> 3713
auto_notch: slot 0 new peak 101 -> 129
auto_notch: slot 1 new peak 3713 -> 206
auto_notch: slot 0 new peak 129 -> 3696
auto_notch: slot 1 new peak 206 -> 3718
auto_notch: slot 0 new peak 3696 -> 3683
auto_notch: slot 1 new peak 3718 -> 3730
auto_notch: slot 0 new peak 3683 -> 3813
auto_notch: slot 1 new peak 3730 -> 3416

screen shot 2017-09-17 at 12 48 46

leansdr make embedded issue for plutosdr

Hi
I was installing leansdr and I included the binaries for libiio and the make step went through.

But when I do make embedded I get the following error.

$ make embedded
g++ -O3 -I.. -DVERSION="leansdr-1.2.0-27-ge6416aa" -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable -Ilibiio leaniiorx.cc -lfftw3f -lpthread -Llibiio -L. -liio -lpthread -lxml2 -lz -llzma -static -o leaniiorx.x86_64
/usr/bin/ld: cannot find -liio
collect2: error: ld returned 1 exit status
Makefile:83: recipe for target 'leaniiorx.x86_64' failed
make: *** [leaniiorx.x86_64] Error 1

Output of
$ ld -liio --verbose

GNU ld (GNU Binutils for Ubuntu) 2.26.1
Supported emulations:
elf_x86_64
elf32_x86_64
elf_i386
elf_iamcu
i386linux
elf_l1om
elf_k1om
i386pep
i386pe
using internal linker script:

/* Script for -z combreloc: combine and sort reloc sections /
/
Copyright (C) 2014-2015 Free Software Foundation, Inc.
Copying and distribution of this script, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. /
OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64",
"elf64-x86-64")
OUTPUT_ARCH(i386:x86-64)
ENTRY(_start)
SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu"); SEARCH_DIR("=/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/lib/x86_64-linux-gnu"); SEARCH_DIR("=/usr/local/lib64"); SEARCH_DIR("=/lib64"); SEARCH_DIR("=/usr/lib64"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64"); SEARCH_DIR("=/usr/x86_64-linux-gnu/lib");
SECTIONS
{
/
Read-only sections, merged into text segment: /
PROVIDE (_executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS;
.interp : { *(.interp) }
.note.gnu.build-id : { *(.note.gnu.build-id) }
.hash : { *(.hash) }
.gnu.hash : { (.gnu.hash) }
.dynsym : { (.dynsym) }
.dynstr : { (.dynstr) }
.gnu.version : { (.gnu.version) }
.gnu.version_d : { (.gnu.version_d) }
.gnu.version_r : { (.gnu.version_r) }
.rela.dyn :
{
(.rela.init)
(.rela.text .rela.text. .rela.gnu.linkonce.t.
)
(.rela.fini)
(.rela.rodata .rela.rodata. .rela.gnu.linkonce.r.
)
(.rela.data .rela.data. .rela.gnu.linkonce.d.
)
(.rela.tdata .rela.tdata. .rela.gnu.linkonce.td.
)
(.rela.tbss .rela.tbss. .rela.gnu.linkonce.tb.
)
(.rela.ctors)
(.rela.dtors)
(.rela.got)
(.rela.bss .rela.bss. .rela.gnu.linkonce.b.
)
(.rela.ldata .rela.ldata. .rela.gnu.linkonce.l.
)
(.rela.lbss .rela.lbss. .rela.gnu.linkonce.lb.
)
(.rela.lrodata .rela.lrodata. .rela.gnu.linkonce.lr.
)
(.rela.ifunc)
}
.rela.plt :
{
(.rela.plt)
PROVIDE_HIDDEN (__rela_iplt_start = .);
(.rela.iplt)
PROVIDE_HIDDEN (__rela_iplt_end = .);
}
.init :
{
KEEP (
(SORT_NONE(.init)))
}
.plt : { (.plt) (.iplt) }
.plt.got : { (.plt.got) }
.plt.bnd : { (.plt.bnd) }
.text :
{
(.text.unlikely .text._unlikely .text.unlikely.
)
(.text.exit .text.exit.)
(.text.startup .text.startup.)
(.text.hot .text.hot.)
(.text .stub .text. .gnu.linkonce.t.
)
/
.gnu.warning sections are handled specially by elf32.em. /
(.gnu.warning)
}
.fini :
{
KEEP (
(SORT_NONE(.fini)))
}
PROVIDE (__etext = .);
PROVIDE (_etext = .);
PROVIDE (etext = .);
.rodata : { (.rodata .rodata. .gnu.linkonce.r.
) }
.rodata1 : { (.rodata1) }
.eh_frame_hdr : { (.eh_frame_hdr) (.eh_frame_entry .eh_frame_entry.) }
.eh_frame : ONLY_IF_RO { KEEP (
(.eh_frame)) (.eh_frame.) }
.gcc_except_table : ONLY_IF_RO { (.gcc_except_table
.gcc_except_table.
) }
.gnu_extab : ONLY_IF_RO { (.gnu_extab) }
/
These sections are generated by the Sun/Oracle C++ compiler. /
.exception_ranges : ONLY_IF_RO { (.exception_ranges
.exception_ranges
) }
/
Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. /
. = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
/
Exception handling /
.eh_frame : ONLY_IF_RW { KEEP (
(.eh_frame)) (.eh_frame.) }
.gnu_extab : ONLY_IF_RW { (.gnu_extab) }
.gcc_except_table : ONLY_IF_RW { (.gcc_except_table .gcc_except_table.) }
.exception_ranges : ONLY_IF_RW { (.exception_ranges .exception_ranges) }
/
Thread Local Storage sections /
.tdata : { (.tdata .tdata. .gnu.linkonce.td.
) }
.tbss : { (.tbss .tbss. .gnu.linkonce.tb.
) (.tcommon) }
.preinit_array :
{
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (
(.preinit_array))
PROVIDE_HIDDEN (__preinit_array_end = .);
}
.init_array :
{
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (
(SORT_BY_INIT_PRIORITY(.init_array.
) SORT_BY_INIT_PRIORITY(.ctors.
)))
KEEP (
(.init_array EXCLUDE_FILE (crtbegin.o crtbegin?.o crtend.o crtend?.o ) .ctors))
PROVIDE_HIDDEN (__init_array_end = .);
}
.fini_array :
{
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (
(SORT_BY_INIT_PRIORITY(.fini_array.
) SORT_BY_INIT_PRIORITY(.dtors.
)))
KEEP (
(.fini_array EXCLUDE_FILE (*crtbegin.o crtbegin?.o crtend.o crtend?.o ) .dtors))
PROVIDE_HIDDEN (__fini_array_end = .);
}
.ctors :
{
/
gcc uses crtbegin.o to find the start of
the constructors, so we make sure it is
first. Because this is a wildcard, it
doesn't matter if the user does not
actually link against crtbegin.o; the
linker won't look for a file to match a
wildcard. The wildcard also means that it
doesn't matter which directory crtbegin.o
is in. /
KEEP (crtbegin.o(.ctors))
KEEP (crtbegin?.o(.ctors))
/
We don't want to include the .ctor section from
the crtend.o file until after the sorted ctors.
The .ctor section from the crtend file contains the
end of ctors marker and it must be last /
KEEP (
(EXCLUDE_FILE (crtend.o crtend?.o ) .ctors))
KEEP (
(SORT(.ctors.
)))
KEEP (
(.ctors))
}
.dtors :
{
KEEP (crtbegin.o(.dtors))
KEEP (crtbegin?.o(.dtors))
KEEP (
(EXCLUDE_FILE (crtend.o crtend?.o ) .dtors))
KEEP (
(SORT(.dtors.
)))
KEEP (
(.dtors))
}
.jcr : { KEEP (
(.jcr)) }
.data.rel.ro : { (.data.rel.ro.local .gnu.linkonce.d.rel.ro.local.
) (.data.rel.ro .data.rel.ro. .gnu.linkonce.d.rel.ro.
) }
.dynamic : { *(.dynamic) }
.got : { *(.got) *(.igot) }
. = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 24 ? 24 : 0, .);
.got.plt : { *(.got.plt) (.igot.plt) }
.data :
{
(.data .data. .gnu.linkonce.d.
)
SORT(CONSTRUCTORS)
}
.data1 : { (.data1) }
_edata = .; PROVIDE (edata = .);
. = .;
__bss_start = .;
.bss :
{
(.dynbss)
(.bss .bss. .gnu.linkonce.b.
)
(COMMON)
/
Align here to ensure that the .bss section occupies space up to
_end. Align after .bss to ensure correct alignment even if the
.bss section disappears because there are no input sections.
FIXME: Why do we need it? When there is no .bss section, we don't
pad the .data section. /
. = ALIGN(. != 0 ? 64 / 8 : 1);
}
.lbss :
{
(.dynlbss)
(.lbss .lbss. .gnu.linkonce.lb.
)
(LARGE_COMMON)
}
. = ALIGN(64 / 8);
. = SEGMENT_START("ldata-segment", .);
.lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) :
{
(.lrodata .lrodata. .gnu.linkonce.lr.
)
}
.ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) :
{
(.ldata .ldata. .gnu.linkonce.l.
)
. = ALIGN(. != 0 ? 64 / 8 : 1);
}
. = ALIGN(64 / 8);
_end = .; PROVIDE (end = .);
. = DATA_SEGMENT_END (.);
/
Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
.stab.excl 0 : { *(.stab.excl) }
.stab.exclstr 0 : { *(.stab.exclstr) }
.stab.index 0 : { *(.stab.index) }
.stab.indexstr 0 : { *(.stab.indexstr) }
.comment 0 : { (.comment) }
/
DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section so we begin them at 0. /
/
DWARF 1 */
.debug 0 : { *(.debug) }
.line 0 : { (.line) }
/
GNU DWARF 1 extensions */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { (.debug_sfnames) }
/
DWARF 1.1 and DWARF 2 */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { (.debug_pubnames) }
/
DWARF 2 */
.debug_info 0 : { (.debug_info .gnu.linkonce.wi.) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { (.debug_line .debug_line. .debug_line_end ) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { (.debug_macinfo) }
/
SGI/MIPS DWARF 2 extensions */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { (.debug_varnames) }
/
DWARF 3 */
.debug_pubtypes 0 : { *(.debug_pubtypes) }
.debug_ranges 0 : { (.debug_ranges) }
/
DWARF Extension. */
.debug_macro 0 : { (.debug_macro) }
.gnu.attributes 0 : { KEEP (
(.gnu.attributes)) }
/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto
) }
}

==================================================
attempt to open //usr/local/lib/x86_64-linux-gnu/libiio.so failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libiio.a failed
attempt to open //lib/x86_64-linux-gnu/libiio.so failed
attempt to open //lib/x86_64-linux-gnu/libiio.a failed
attempt to open //usr/lib/x86_64-linux-gnu/libiio.so succeeded
-liio (//usr/lib/x86_64-linux-gnu/libiio.so)
librt.so.1 needed by //usr/lib/x86_64-linux-gnu/libiio.so
found librt.so.1 at //lib/x86_64-linux-gnu/librt.so.1
libusb-1.0.so.0 needed by //usr/lib/x86_64-linux-gnu/libiio.so
found libusb-1.0.so.0 at //lib/x86_64-linux-gnu/libusb-1.0.so.0
libxml2.so.2 needed by //usr/lib/x86_64-linux-gnu/libiio.so
found libxml2.so.2 at //usr/lib/x86_64-linux-gnu/libxml2.so.2
libpthread.so.0 needed by //usr/lib/x86_64-linux-gnu/libiio.so
found libpthread.so.0 at //lib/x86_64-linux-gnu/libpthread.so.0
libc.so.6 needed by //usr/lib/x86_64-linux-gnu/libiio.so
found libc.so.6 at //lib/x86_64-linux-gnu/libc.so.6
libudev.so.1 needed by //lib/x86_64-linux-gnu/libusb-1.0.so.0
found libudev.so.1 at //lib/x86_64-linux-gnu/libudev.so.1
libdl.so.2 needed by //usr/lib/x86_64-linux-gnu/libxml2.so.2
found libdl.so.2 at //lib/x86_64-linux-gnu/libdl.so.2
libicuuc.so.55 needed by //usr/lib/x86_64-linux-gnu/libxml2.so.2
found libicuuc.so.55 at //usr/lib/x86_64-linux-gnu/libicuuc.so.55
libz.so.1 needed by //usr/lib/x86_64-linux-gnu/libxml2.so.2
found libz.so.1 at //lib/x86_64-linux-gnu/libz.so.1
liblzma.so.5 needed by //usr/lib/x86_64-linux-gnu/libxml2.so.2
found liblzma.so.5 at //lib/x86_64-linux-gnu/liblzma.so.5
libm.so.6 needed by //usr/lib/x86_64-linux-gnu/libxml2.so.2
found libm.so.6 at //lib/x86_64-linux-gnu/libm.so.6
ld-linux-x86-64.so.2 needed by //lib/x86_64-linux-gnu/libpthread.so.0
found ld-linux-x86-64.so.2 at //lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
libicudata.so.55 needed by //usr/lib/x86_64-linux-gnu/libicuuc.so.55
found libicudata.so.55 at //usr/lib/x86_64-linux-gnu/libicudata.so.55
libstdc++.so.6 needed by //usr/lib/x86_64-linux-gnu/libicuuc.so.55
found libstdc++.so.6 at //usr/lib/x86_64-linux-gnu/libstdc++.so.6
libgcc_s.so.1 needed by //usr/lib/x86_64-linux-gnu/libicuuc.so.55
found libgcc_s.so.1 at //lib/x86_64-linux-gnu/libgcc_s.so.1
ld: warning: cannot find entry symbol _start; not setting start address

Issues transmitting DVB-S2 with leandvbtx

Hello,
I have been trying to transmit DVB-S2 using leandvbtx, but I am running into some problems. I have narrowed it down to leandvbtx's DVB-S2 mode itself by doing some tests:

  • DATV-Express DVB-S2 TX -> SDR Angel DVB-S2 RX - OK
  • DATV-Express DVB-S2 TX -> leandvb DVB-S2 RX - OK
  • DATV-Express DVB-S TX -> SDR Angel DVB-S RX - OK
  • DATV-Express DVB-S TX -> leandvb DVB-S RX - OK
  • leandvbtx DVB-S TX -> SDR Angel DVB-S RX - OK
  • leandvbtx DVB-S TX -> leandvb DVB-S RX - OK
  • leandvbtx DVB-S2 TX -> SDR Angel DVB-S2 RX - NOT WORKING
  • leandvbtx DVB-S2 TX -> leandvb DVB-S2 RX - OK (if piped directly, i.e., software loopback, even with awgn noise added), NOT WORKING (if transmitted to SDR and received again, i.e., analog RF loopback)

I have increased my pipe size, before I did it there were lost samples somewhere, but now there are none, the transmission is continuous.

Did you ever test leandvbtx DVB-S2 mode extensively? I can see an issue where it is reported that the tests do not run correctly, but even then, according to my results, software loopback works, even with white noise added. It stops working once I loop the signal back in the analog domain.

Thank you.

Dependency info in README

Please add some more info in the README about dependencies etc.
Your website is very helpful, but also misses some of this info.
Thx

Some Questions about leansdr in processing DVB-S2 Signal

Hello,
Thank you for your help last time.
Recently, I tried to do some test with leandvb by DekTec DTA-2115 DVB-S2 singnal generator.
Sometimes leandvb may stop processing IQ file and exit before read the end of IQ file.
When I used "--ldpc-helper ldpc_tool" to decode, it may cause problem.

./src/apps/leandvb --inbuf 512000000 --s16 -f 40e6 --sr 20e6 --gui --fd-info 2 --roll-off 0.2 --standard DVB-S2 --sampler rrc --rrc-rej 15 --fastdrift --fastlock --ldpc-helper ldpc_tool --nhelpers 6 -v -d -d < /data/IQREC-08-18-20-10h58m44s85_20M-5s-1f.iq > test.ts

The IQ file link is https://we.tl/t-05cciHMBFp

And ldpc_tool output
decoder failed at converging to a code word in 25 trials
ldpc_tool

Runtime summary is as follow:

.rawiq            : 115M/ 19M      0 writable !, 532512 unread ( 395 3467 395 395 3467 532512 )
.stdin            :  19M/201M 311249598 writable  , 181950423 unread ( 181950423 )
.cnr              :    0/   0      4 writable  ,      0 unread ( 0 )
.spectrum         :    0/   0      4 writable  ,      0 unread ( )
.freq             :    8/   4      3 writable  ,      0 unread ( 0 0 )
.SS               :    8/   4      3 writable  ,      0 unread ( 0 0 )
.MER              :    8/   4      3 writable  ,      0 unread ( 0 0 )
.cstln            : 189k/ 95k 437307 writable  ,    997 unread ( 997 101 )
.PLS cstln        :  96k/ 96k 435942 writable  ,    314 unread ( 314 )
.frame lock       :  158/ 158      2 writable  ,      0 unread ( 0 )
.VBER             :    0/   0      4 writable  ,      0 unread ( )
.lock             :    0/   0      8 writable  ,      0 unread ( 0 )
.locktime         :    0/   0    156 writable  ,      0 unread ( 0 )
.TS packets       :    0/   0    156 writable  ,      0 unread ( 0 0 )
.Bits processed   :    0/   0    156 writable  ,      0 unread ( 0 )
.Bits corrected   :    0/   0    156 writable  ,      0 unread ( 0 )
.VBER             :    0/   0      4 writable  ,      0 unread ( 0 )
.packet counter   :    0/   0    156 writable  ,      0 unread ( 0 )
.PL slots         :  94k/ 95k    336 writable !,   1104 unread ( 1104 )
.BB frames        :    0/   0      4 writable  ,      0 unread ( 0 )
.FEC frames       : 1024/1028      0 writable !,      4 unread ( 4 )
Total buffer memory: 2015908 KiB

When I stopped to decode, it can be run to end normally.

Runtime summary is as follow:

 .rawiq            : 1207M/201M   7375 writable  , 118463 unread ( 354 1378 354 354 1378 118463 )
.stdin            : 201M/201M 311249598 writable  ,      0 unread ( 0 )
.cnr              :    0/   0      4 writable  ,      0 unread ( 0 )
.spectrum         :    0/   5      3 writable  ,      0 unread ( )
.freq             :   92/  46      3 writable  ,      0 unread ( 0 0 )
.SS               :   92/  46      3 writable  ,      0 unread ( 0 0 )
.MER              :   92/  46      3 writable  ,      0 unread ( 0 0 )
.cstln            :   2M/  1M  43928 writable  ,    136 unread ( 136 8 )
.PLS cstln        : 645k/646k 416924 writable  ,    900 unread ( 900 )
.frame lock       : 1906/1906      1 writable  ,      0 unread ( 0 )
.VBER             :    0/   0      4 writable  ,      0 unread ( )
.lock             :    2/   2      6 writable  ,      0 unread ( 0 )
.locktime         :  10k/ 10k     87 writable  ,      0 unread ( 0 )
.TS packets       :  21k/ 10k     87 writable  ,      0 unread ( 0 0 )
.Bits processed   : 6939/6939     34 writable  ,      0 unread ( 0 )
.Bits corrected   : 6939/6939     34 writable  ,      0 unread ( 0 )
.VBER             : 1509/1509      3 writable  ,      0 unread ( 0 )
.packet counter   :  343/ 343    125 writable  ,      0 unread ( 0 )
.PL slots         :   1M/  1M    738 writable  ,      0 unread ( 0 )
.BB frames        : 1367/1367      3 writable  ,      0 unread ( 0 )
.FEC frames       : 6939/6939      2 writable  ,      0 unread ( 0 )
Total buffer memory: 2015686 KiB

Please help me to look into this together. Thanks a lot.

leaniiorx: unknown error

Hi

I ran leaniiorx, then got following error.

% ./leaniiorx -f 2395e6 --bw 2000e3 -v
Setting RF bandwidth 2000 kHz
** IIO: in_voltage_sampling_frequency failed with Unknown error -2

I'm using PlutoSDR v0.27 with libiio 0.15 on openSUSE leap 15 x86-64 machine.

% iio_info -s
Library version: 0.15 (git tag: 6ecff5d)
Compiled with backends: local xml ip usb serial
Available contexts:
        0: Local devices [local:]
        1: 0456:b673 (Analog Devices Inc. PlutoSDR (ADALM-PLUTO)), serial=104400b83991000910001f00040c6539e3 [usb:3.8.5]

add LimeSDR support

probably easyer to use soapysdr to involve the use of a Limesdr

I use my LimeSDR mainly with AngelSDR, gqrx has some back end bug with oscom/gnuRadio

Cannot be used as a library (work branch)

  • Because functions are defined in headers without static (and even then you will get warnings because of the prototypes that are not used -Wunused-function)
  • Because of leansdr::cstln_base::names (work branch)

Basically you can only include the headers in a main but not as part of another library or plugin.

Please consider making it a first class library with associated .cpp

Edit: also exit is unacceptable in a library. Please consider using exceptions instead.

Edit2: I realized that the whole thing pertains to the work branch only so you may have already planned to correct this.

Some Questions about leansdr in processing IQ file

Hello,

Recently,I tried to compile and install leanDVB and finally finish the functional loop tests.
This week I used leanDVB to process a IQ file sampled from a DVB-S2 standard tx card.
But I failed. I think the IQ file format may cause the problem.
CMD :
leandvb --s16 -f 2500000 --sr 1000000 --gui --fd-info 2 --standard DVB-S2 --sampler rrc < IQREC-08-12-20-10h17m40s384.iq > test0812_1.ts
The parameters of the DVB-S2 signal are listed below.
CCM 1Msps 8PSK 3/5 with pilot ShortFrame
The payload is a transport stream.
20200814173058

The IQ file looks well in cooledit, which sample rate is 2.5Msps. (16bits LSB)
20200814172728

The format of IQ file is complex short. I think the parameter of the IQ file is --s16.
There is the IQ file link. https://we.tl/t-Ak52TAHKwx

Many thanks.

libiio -- not found openSSE -- it is installed

probably not your concern

kc7noa@install:/Downloads/leansdr/src/apps> make
libiio not found. Will not build leaniio{rx,tx}.
g++ -O3 -I.. -DVERSION="leansdr-1.2.0-87-g94e30b5" -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable -DLEANSDR_EXTENSIONS leandvbtx.cc -o leandvbtx
g++ -O3 -I.. -DVERSION="leansdr-1.2.0-87-g94e30b5" -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable -DLEANSDR_EXTENSIONS -DGUI leandvb.cc -lX11 -o leandvb
g++ -O3 -I.. -DVERSION="leansdr-1.2.0-87-g94e30b5" -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable -DLEANSDR_EXTENSIONS leansdrscan.cc -o leansdrscan
g++ -O3 -I.. -DVERSION="leansdr-1.2.0-87-g94e30b5" -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable -DLEANSDR_EXTENSIONS leansdrserv.cc -o leansdrserv
g++ -O3 -I.. -DVERSION="leansdr-1.2.0-87-g94e30b5" -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable -DLEANSDR_EXTENSIONS leantsgen.cc -o leantsgen
g++ -O3 -I.. -DVERSION="leansdr-1.2.0-87-g94e30b5" -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable -DLEANSDR_EXTENSIONS leansdrcat.cc -o leansdrcat
g++ -O3 -I.. -DVERSION="leansdr-1.2.0-87-g94e30b5" -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable -DLEANSDR_EXTENSIONS leanchansim.cc -o leanchansim
g++ -O3 -I.. -DVERSION="leansdr-1.2.0-87-g94e30b5" -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable -DLEANSDR_EXTENSIONS leanmlmrx.cc -lfftw3f -lpthread -o leanmlmrx
kc7noa@install:
/Downloads/leansdr/src/apps> sudo make install
[sudo] password for root:
libiio not found. Will not build leaniio{rx,tx}.
make: *** No rule to make target 'install'. Stop.
kc7noa@install:~/Downloads/leansdr/src/apps>

Build failure on openSUSE Leap 42.3

I get errors when attempting to compile , , odd.

g++ -O3 -I.. -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable -DGUI leandvb.cc -lX11 -o leandvb ||
g++ -O3 -I.. -Wall -Wno-sign-compare -Wno-array-bounds -Wno-unused-variable leandvb.cc -o leandvb
/tmp/ccaWZX5A.o:(.rodata._ZTVN7leansdr21viterbi_dec_interfaceIhhiiEE[_ZTVN7leansdr21viterbi_dec_interfaceIhhiiEE]+0x10): undefined reference to leansdr::viterbi_dec_interface<unsigned char, unsigned char, int, int>::update(int*, int*)' /tmp/ccaWZX5A.o:(.rodata._ZTVN7leansdr21viterbi_dec_interfaceIhhiiEE[_ZTVN7leansdr21viterbi_dec_interfaceIhhiiEE]+0x18): undefined reference to leansdr::viterbi_dec_interface<unsigned char, unsigned char, int, int>::update(unsigned char, int, int*)'
collect2: error: ld returned 1 exit status
/tmp/ccU7EsXK.o:(.rodata._ZTVN7leansdr21viterbi_dec_interfaceIhhiiEE[_ZTVN7leansdr21viterbi_dec_interfaceIhhiiEE]+0x10): undefined reference to leansdr::viterbi_dec_interface<unsigned char, unsigned char, int, int>::update(int*, int*)' /tmp/ccU7EsXK.o:(.rodata._ZTVN7leansdr21viterbi_dec_interfaceIhhiiEE[_ZTVN7leansdr21viterbi_dec_interfaceIhhiiEE]+0x18): undefined reference to leansdr::viterbi_dec_interface<unsigned char, unsigned char, int, int>::update(unsigned char, int, int*)'
collect2: error: ld returned 1 exit status
Makefile:14: recipe for target 'leandvb' failed
make: *** [leandvb] Error 1
tim@linux-8m91:~/src/leansdr/src/apps> gcc --version
gcc (SUSE Linux) 4.8.5

leandvb closes unexpectedly after loosing sync

Hello,

I am trying to demodulate a DVBS .iq file (generated in GNUradio from a TS file source and recorded with a USRP). Once I launch leandvb, it exits before the file is finished and it is not able to correctly find the SYNC byte in the TS stream.

I attach the output in the terminal and the GUI.

leandvb_GUI

./leandvb --cr 1/2 --f32 -f 1e6 -d --sr 500e3 --gui < /home/myRecording.iq deconv[0]=0x00000000000003ba 7 taps / 10 bits Output: '_': TS packet received without errors '.': error-corrected TS packet '!': TS packet with remaining errors Locked !!!!(ed)!!!!derandomizer: resynchronizing !!!!(19)!!!!(8f)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(14)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(08)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Unlocked !!!!(72)!!!!!!!!!!!!!!!!Locked !!!!!!!!!!!!!!!!!!!!!!!!(54)!!!!(82)(1f)!!!!derandomizer: resynchronizing !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(0f)(22)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(31)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(ec)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(0d)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(a0)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(9b)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(a2)!!!!!!!!!!!!!!!!!!!!!!!!(bd)!!!!!!!!!!!!!!!!!!!!!!!!(51)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(92)!!!!!!!!!!!!!!!!!!!!!!!! .rawiq : 85M/ 14M 10403 writable , 3037 unread ( 989 3037 989 989 3037 93 ) .stdin : 14M/ 14M 675 writable , 0 unread ( 0 ) .cnr : 0/ 0 4 writable , 0 unread ( ) .spectrum : 0/ 14 2 writable , 0 unread ( ) .freq : 71/ 71 2 writable , 0 unread ( 0 ) .SS : 71/ 71 2 writable , 0 unread ( 0 ) .MER : 71/ 71 2 writable , 0 unread ( 0 ) .cstln : 110k/111k 12489 writable , 823 unread ( 823 ) .PLS cstln : 0/ 0 16384 writable , 0 unread ( ) .frame lock : 0/ 0 4 writable , 0 unread ( ) .VBER : 0/ 0 4 writable , 0 unread ( ) .lock : 0/ 4 4 writable , 0 unread ( ) .locktime : 0/4071 141 writable , 0 unread ( ) .TS packets : 0/ 0 156 writable , 0 unread ( 0 0 ) .Bits processed : 1015/1015 77 writable , 0 unread ( 0 ) .Bits corrected : 1015/1015 77 writable , 0 unread ( 0 ) .VBER : 0/ 126 2 writable , 0 unread ( ) .packet counter : 0/ 0 156 writable , 0 unread ( 0 ) .PSK soft-symbols : 7M/ 7M 3674 writable , 70 unread ( 70 ) .bytes : 891k/891k 868 writable , 184 unread ( 184 ) .mpegbytes : 828k/830k 204 writable !, 2244 unread ( 2244 ) .RS-enc packets : 4060/4060 0 writable !, 0 unread ( 0 ) .rand TS packets : 4060/4060 0 writable !, 0 unread ( 0 ) Total buffer memory: 770 KiB

Thank you in advance!

ISS Ham-TV Sample I/Q File?

Hello! With the news that we are closer to having a Ham-TV transmitter back on the ISS in the (hopefully) near future, it is time for everyone to get familiar with how to decode these signals again.

Is there a known-good I/Q file available online that contains valid video signals from this transmitter when it was active in the past?

Thanks!

-Scott, K4KDR

Inefficiencies with variable MODCOD (VCM)

Hello all,

Today I've tried to take my first steps into leandvb. I was able to run it (using the work branch) to decode a DVB-S2 signal that uses VCM, specifically with two multiplexed MODCOD streams that are associated to two distinct MPEG TS PIDs. Despited success on reception, I noticed there is a substantial jump in CPU usage when the two MODCODs are active. If, in contrast, I disable one MODCOD and leave only one active the CPU usage drops quite substantially.

I haven't had a chance to look at the implementation yet, but I suppose this is related to frame locking and particularly the different lengths of the PLFRAMEs of each MODCOD.

So, before delving into this, I wanted to ask:

  1. What is the cause of the problem? Is it really due to frame locking?
  2. Are there any potential solutions?

I'm interested in contributing with a solution in case you envision one.

Also, related to this, is it possible to run leandvb in DVB-S2 mode with an option to filter the specific MODCOD of interest? I see that the --const and --cr options are not used in DVB-S2 mode, but wanted to double check. It would be interesting in case it was possible to benefit from the lower CPU usage simply by selecting/filtering a single MODCOD to be received (and ignoring all other MODCODs on a VCM stream). Nevertheless, I am aware that if the problem is frame sync, ignoring a MODCOD may not help much.

Many thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.