Giter VIP home page Giter VIP logo

tsl-sdr's Introduction

Software Defined Radio Tools

This is the repository for tools that use the TSL that are meant for software defined radio and signal processing.

Getting the TSL

Please have a look at the TSL repository. The easiest way to do this is to likely build the debian package. You do not need this package for running executables, only for building (everything is statically linked).

Building

Please install CMake. Most repos have a package. As well, you'll likely want at least one of the following RF interface libraries:

  • librtlsdrfor RTL-SDR (known as librtlsdr0 in Debian variants)
  • libuhd for USRP (known as libuhd003 in Debian variants)
  • libdespairspy for Airspy (find it here).

Simply create a directory inside the project, e.g. build, change to that directory and instruct CMake to do its thing. Simply:

git clone https://github.com/pvachon/tsl-sdr
mkdir tsl-sdr/build
cd tsl-sdr/build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
sudo make install

You an optionally skip the make steps and invoke cpack. This will generate a Debian package for your convenience.

Getting Help

Be sure to check the project wiki for use cases, documentation and other details.

If you think you've found a bug (hey, it happens), open a Github issue for the project.

License

The TSL, MultiFM and Resampler (as well as libfilter, etc.) are provided under two licenses - the GPLv2 and the MIT/X license. You can pick whichever license works best for you.

Author

Most of this code was written by Phil Vachon ([email protected]).

tsl-sdr's People

Contributors

pvachon avatar rikiku avatar

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

tsl-sdr's Issues

multi-fm and decoder or multimon-ng and multi-fm

First of all thank you for your work on the project
Not so much an issue but a cry for help.
Please delete if inappropriate and accept my apologies.

I am currently using a Raspberry pi, Rtl-sdr and multimon-ng and rtlfmto decode a pager frequency. It works.

However, I would like to be able to decode further two frequencies simultaneously.
The problem apart from my Linux skills being basic is I am unsure how to send multiple frequencies to be decoded.

Am I better scrapping multimon-ng/rtl-fm and using multi-fm and decoder to achieve this?

The frequencies I am interested in are all 153mhz allocated but one is on 147.800 mhz which is outwith the RTL bandwidth.

Any assistance / advice would be a real help and greatly appreciated.

Thank you

DECODER: PAGER-W-UNKNOWN-BAUD

Finally working on decoder (Thank you docs : https://github.com/pvachon/tsl-sdr/wiki/Using-Decoder) and running into what appears to be a baud-rate issue when trying to decode FLEX.

invoked as: rtl_fm -f 929.212M -s 25000 -p -19 | decoder -m FLEX -i -D 25 -I 16 -F multiFM/resampler_filter.json -S 25000 -f 929212000 /dev/stdin

no decoded output, but seeing baud complaints.

2024-05-22 00:12:52 [tid=42408] %PAGER-I-BAD-BIW, 03/036/A: Skipping - bad checksum (for BIW 00000000) (/usr/src/tsl-sdr/pager/pager_flex.c:1130 in _pager_flex_phase_process)
2024-05-22 00:12:52 [tid=42408] %PAGER-I-BAD-BIW, 03/036/B: Skipping - bad checksum (for BIW 00000000) (/usr/src/tsl-sdr/pager/pager_flex.c:1130 in _pager_flex_phase_process)
2024-05-22 00:12:52 [tid=42408] %PAGER-I-BAD-BIW, 03/036/C: Skipping - bad checksum (for BIW 00000000) (/usr/src/tsl-sdr/pager/pager_flex.c:1130 in _pager_flex_phase_process)
2024-05-22 00:12:52 [tid=42408] %PAGER-I-BAD-BIW, 03/036/D: Skipping (could not correct BIW 30008000) (/usr/src/tsl-sdr/pager/pager_flex.c:1124 in _pager_flex_phase_process)
2024-05-22 00:13:50 [tid=42408] %PAGER-W-UNKNOWN-BAUD, Unknown baud identifier code: aa02028a/82a822aa (/usr/src/tsl-sdr/pager/pager_flex.c:411 in _pager_flex_sync_update)
2024-05-22 00:13:50 [tid=42408] %PAGER-W-UNKNOWN-BAUD, Unknown baud identifier code: aa280aaa/a88aaaaa (/usr/src/tsl-sdr/pager/pager_flex.c:411 in _pager_flex_sync_update)
2024-05-22 00:13:50 [tid=42408] %PAGER-W-UNKNOWN-BAUD, Unknown baud identifier code: a0a28aaa/a8efaaaa (/usr/src/tsl-sdr/pager/pager_flex.c:411 in _pager_flex_sync_update)
2024-05-22 00:13:50 [tid=42408] %PAGER-W-UNKNOWN-BAUD, Unknown baud identifier code: aa2a2a28/2a08882a (/usr/src/tsl-sdr/pager/pager_flex.c:411 in _pager_flex_sync_update)
2024-05-22 00:13:51 [tid=42408] %PAGER-W-UNKNOWN-BAUD, Unknown baud identifier code: 2aaaaaa/222a0aaa (/usr/src/tsl-sdr/pager/pager_flex.c:411 in _pager_flex_sync_update)
2024-05-22 00:13:51 [tid=42408] %PAGER-W-UNKNOWN-BAUD, Unknown baud identifier code: aa8aaaaa/aaaaa4a0 (/usr/src/tsl-sdr/pager/pager_flex.c:411 in _pager_flex_sync_update)
2024-05-22 00:13:51 [tid=42408] %PAGER-W-UNKNOWN-BAUD, Unknown baud identifier code: 822aaaaa/aa2aaaaa (/usr/src/tsl-sdr/pager/pager_flex.c:411 in _pager_flex_sync_update)
2024-05-22 00:13:51 [tid=42408] %PAGER-W-UNKNOWN-BAUD, Unknown baud identifier code: aaaaaaaa/2aaaaaa8 (/usr/src/tsl-sdr/pager/pager_flex.c:411 in _pager_flex_sync_update)
2024-05-22 00:13:51 [tid=42408] %PAGER-W-UNKNOWN-BAUD, Unknown baud identifier code: 2aaaaa28/aaaa8aaa (/usr/src/tsl-sdr/pager/pager_flex.c:411 in _pager_flex_sync_update)
2024-05-22 00:13:52 [tid=42408] %PAGER-W-UNKNOWN-BAUD, Unknown baud identifier code: aaa22aaa/aaaa2022 (/usr/src/tsl-sdr/pager/pager_flex.c:411 in _pager_flex_sync_update)

works great when pushed into multimon-NG as: rtl_fm -F 0 -E dc -M fm -s 22050 -f 929.212M -d 0 | multimon-ng -a FLEX -f alpha -t raw /dev/stdin

known to be: FLEX/3200/4/K/A

Suggestions?

RTL-SDR AGC option

Config:
{ "device" : { "type" : "rtlsdr", "deviceIndex" : 0, "dBGainLNA" : 10 }, "sampleRateHz" : 3200000, "centerFreqHz" : 154473333, "nrSampBufs" : 128, "decimationFactor" : 120, "channels" : [ { "outFifo" : "/etc/radiotape/out/ch118.out", "chanCenterFreq" : 154325000, "dBGain" : 0.0 }, { "outFifo" : "/etc/radiotape/out/ch119.out", "chanCenterFreq" : 154355000, "dBGain" : 0.0 }, { "outFifo" : "/etc/radiotape/out/ch120.out", "chanCenterFreq" : 154740000, "dBGain" : 0.0 } ] }
Shell:
2020-09-06 23:14:37 [tid= 2411] %MULTIFM-I-AUTO-GAIN-CONTROL, Enabling automatic gain control. (/tmp/tsl-sdr/tsl-sdr/multifm/rtl_sdr_if.c:391 in rtl_sdr_worker_thread_new)
It would be nice to disable the AGC. This would help when channels are near a very strong source i.e. a hospital POCSAG systems leaking across the band.

decoder crashes at ../sysdeps/arm/armv6/strlen.S:26

decoder is crashing on both a RasPi2B and a RasPi3B with the same error. Error below is from the 3B. Multifm seems to be operating as desired (using the 1ch example) for now.

(gdb) run -D 25 -I 16 -F etc/resampler_filter.json -S 25000 -f 929937500 /home/tsl/ch0.out
Starting program: /usr/local/bin/decoder -D 25 -I 16 -F etc/resampler_filter.json -S 25000 -f 929937500 /home/tsl/ch0.out
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
[1519267562.927939624] [tid=16423] %DECODER-I-WRITE-TO-STDOUT, Output decoded data is going to stdout. (../decoder/decoder.c:497 in _set_options)
[1519267562.928008114] [tid=16423] %DECODER-I-CONFIG, Resampling: 16/25 from 25000 to 16000.000000 (../decoder/decoder.c:515 in _set_options)
[1519267562.928044415] [tid=16423] %DECODER-I-CONFIG, Loading filter coefficients from 'etc/resampler_filter.json' (../decoder/decoder.c:516 in _set_options)
[1519267562.935338246] [tid=16423] %DECODER-I-PROTOCOL, Using the Motorola FLEX pager protocol. (../decoder/decoder.c:685 in main)
[1519267562.935384965] [tid=16423] %DECODER-I-STARTING, Starting message decoder on frequency 929937500 Hz. (../decoder/decoder.c:695 in main)
[1519267563.389849366] [tid=16423] %PAGER-W-UNKNOWN-BAUD, Unknown baud identifier code: aaa8a8a8/a8aaa8a8 (../pager/pager_flex.c:410 in _pager_flex_sync_update)

Program received signal SIGSEGV, Segmentation fault.
strlen () at ../sysdeps/arm/armv6/strlen.S:26
26      ../sysdeps/arm/armv6/strlen.S: No such file or directory.
(gdb) bt
#0  strlen () at ../sysdeps/arm/armv6/strlen.S:26
#1  0x76dba690 in _IO_vfprintf_internal (s=0x76eb4d50 <_IO_2_1_stdout_>,
    format=0x1d9c8 "{\"proto\":\"flex\",\"type\":\"alphanumeric\",\"timestamp\":\"%04i-%02i-%02i %02i:%02i:%02i UTC\",\"baud\":%i,\"syncLevel\":%i,\"frameNo\":%u,\"cycleNo\":%u,\"phaseNo\":\"%c\",\"capCode\":%lu,\"fragment\":%s,\"maildrop\":%s,\"fragS"...,
    format@entry=0x4c <error: Cannot access memory at address 0x4c>, ap=..., ap@entry=...) at vfprintf.c:1637
#2  0x76dbfaa0 in __fprintf (stream=<optimized out>,
    format=0x1d9c8 "{\"proto\":\"flex\",\"type\":\"alphanumeric\",\"timestamp\":\"%04i-%02i-%02i %02i:%02i:%02i UTC\",\"baud\":%i,\"syncLevel\":%i,\"frameNo\":%u,\"cycleNo\":%u,\"phaseNo\":\"%c\",\"capCode\":%lu,\"fragment\":%s,\"maildrop\":%s,\"fragS"...) at fprintf.c:32
#3  0x00014e1c in _on_flex_alnum_msg (f=f@entry=0x32f40, baud=<optimized out>, phase=phase@entry=255 '\377', cycle_no=<optimized out>,
    frame_no=76 'L', cap_code=[SANITIZED], fragmented=fragmented@entry=false, maildrop=false, maildrop@entry=176, seq_num=3 '\003',
    seq_num@entry=176 '\260', message_bytes=message_bytes@entry=0x3355e "[SANITIZED]", message_len=22) at ../decoder/decoder.c:190
#4  0x00016a3c in _pager_flex_decode_alphanumeric (nr_words=<optimized out>, words=<optimized out>, long_word=<optimized out>, capcode=[SANITIZED],
    phase=<optimized out>, flex=0x32f40) at ../pager/pager_flex.c:675
#5  _pager_flex_decode_vector (base=<optimized out>, nr_vec_words=<optimized out>, vec=<optimized out>, capcode=<optimized out>,
    phase=<optimized out>, flex=0x32f40) at ../pager/pager_flex.c:1007
#6  _pager_flex_phase_process (flex=flex@entry=0x32f40, phase_id=phase_id@entry=0) at ../pager/pager_flex.c:1185
#7  0x00017f14 in _pager_flex_block_update (sample=<optimized out>, flex=0x32f40) at ../pager/pager_flex.c:1295
#8  pager_flex_on_pcm (flex=<optimized out>, pcm_samples=pcm_samples@entry=0x31278 <output_buf>, nr_samples=656) at ../pager/pager_flex.c:1444
#9  0x0001356c in process_samples () at ../decoder/decoder.c:646
#10 main (argc=<optimized out>, argv=<optimized out>) at ../decoder/decoder.c:697

Raspberry Pi B+ Compile-Time Error

Currently running an Rpi B+ Model with diet-pi as OS. I ran the concurrencykit and tsl-sdr kit installation and the concurrency-kit compiled and installed successfully.

However the tsl-sdr installed failed with the archid being not supported. architecture id is armv61.

What would I need to do to get the tsl-sdr kit to compile with my Rpi?

Also including stack trace for added measure.
SDR is NESDr Smart SDR Antenna Kit

Hope to get this fixed so I can start having some SDR fun!

Error Stack Trace:

Traceback (most recent call last):
File "/root/tsl-sdr/.waf-1.8.17-52e615d7ea939578c442d3f827a956ed/waflib/Scripting.py", line 110, in waf_entry_point
run_commands()
File "/root/tsl-sdr/.waf-1.8.17-52e615d7ea939578c442d3f827a956ed/waflib/Scripting.py", line 167, in run_commands
parse_options()
File "/root/tsl-sdr/.waf-1.8.17-52e615d7ea939578c442d3f827a956ed/waflib/Scripting.py", line 140, in parse_options
Context.create_context('options').execute()
File "/root/tsl-sdr/.waf-1.8.17-52e615d7ea939578c442d3f827a956ed/waflib/Options.py", line 146, in execute
super(OptionsContext,self).execute()
File "/root/tsl-sdr/.waf-1.8.17-52e615d7ea939578c442d3f827a956ed/waflib/Context.py", line 93, in execute
self.recurse([os.path.dirname(g_module.root_path)])
File "/root/tsl-sdr/.waf-1.8.17-52e615d7ea939578c442d3f827a956ed/waflib/Context.py", line 134, in recurse
user_function(self)
File "/root/tsl-sdr/wscript", line 54, in options
_loadTools(opt)
File "/root/tsl-sdr/wscript", line 35, in _loadTools
_checkSupportedArch(cpuArch)
File "/root/tsl-sdr/wscript", line 30, in _checkSupportedArch
raise Exception('Unsupported CPU architecture: {}'.format(cpuArchId))
Exception: Unsupported CPU architecture: armv6l

add deb package dependency on libck-dev (https://concurrencykit.org)

Debian/Rasbian/Ubuntu packaging system already supports concurrencykit(libck0 and libck-dev)

We may add sudo apt-get install libck-dev into the wiki page https://github.com/pvachon/tsl-sdr/wiki/Home

# On Debian/Raspbian/Ubuntu
To perform the minimal build:

## Install Build Dependencies from apt:
sudo apt-get install build-essential git librtlsdr-dev libjansson-dev

### Install ConcurrencyKit from apt
sudo apt-get install libck-dev

### Install ConcurrencyKit from source:
git clone https://github.com/concurrencykit/ck.git
cd ck
./configure && make && sudo make install

## Install TSL:
git clone https://github.com/pvachon/tsl.git
cd tsl
./waf configure && ./waf build install

I've created a PR at:
pvachon/tsl#1 f6c09396ecd86a5531fe0deb5c0e97e5d9767987

SSE4a support

`rttest@rttest:~$ multifm /etc/radiotape/rt_home_test.json /etc/radiotape/filter. json
2020-07-14 07:01:36 [tid= 1176] %CPUFEATURE-F-MISSING-CPUID-FEATURE, This applic ation requires SSE 4.2 be present and enabled. (/home/rttest/tsl/app/cpufeatures .c:128 in app_cpufeatures_check_at_init)
The application has PANICked. Reason:
Failed CPU feature checks, aborting. If this is on a 12Sided appliance, please c ontact 12Sided support at [email protected].

Application [version=63178348d85f9afc] terminating at /home/rttest/tsl/app/cpufe atures.c:152 [thread=1176]
Call backtrace:
multifm(panic+0x9c)[0x564857d99388]
multifm(app_cpufeatures_check_at_init+0x3ef)[0x564857d96379]
multifm(app_init+0x73)[0x564857d95ad8]
multifm(main+0x26e)[0x564857d8bf0e]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0x7f982ab870b3]
multifm(_start+0x2e)[0x564857d8c44e]
Aborted (core dumped)`

`rttest@rttest:~$ lscpu

Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
Address sizes: 43 bits physical, 48 bits virtual
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
NUMA node(s): 1
Vendor ID: AuthenticAMD
CPU family: 16
Model: 5
Model name: AMD Athlon(tm) II X3 445 Processor
Stepping: 3
CPU MHz: 3113.984
BogoMIPS: 6227.96
Virtualization: AMD-V
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 64 KiB
L1i cache: 64 KiB
L2 cache: 512 KiB
NUMA node0 CPU(s): 0
Vulnerability Itlb multihit: Not affected
Vulnerability L1tf: Not affected
Vulnerability Mds: Not affected
Vulnerability Meltdown: Not affected
Vulnerability Spec store bypass: Not affected
Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user
pointer sanitization
Vulnerability Spectre v2: Mitigation; Full AMD retpoline, STIBP disabled,
RSB filling
Vulnerability Srbds: Not affected
Vulnerability Tsx async abort: Not affected
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtr
r pge mca cmov pat pse36 clflush mmx fxsr sse s
se2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp l
m 3dnowext 3dnow constant_tsc rep_good nopl tsc
_reliable nonstop_tsc cpuid pni cx16 popcnt hyp
ervisor lahf_lm svm extapic cr8_legacy abm sse4
a misalignsse 3dnowprefetch osvw vmmcall npt sv
m_lock nrip_save overflow_recov succor
rttest@rttest:~$ lscpu | grep sse
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl tsc_reliable nonstop_tsc cpuid pni cx16 popcnt hypervisor lahf_lm svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw vmmcall npt svm_lock nrip_save overflow_recov succor`

Task Manager for Multifm/Depager

Close this when we have a strategy to manage multiple dependent tasks from a single point. Some ideas for this:

  • Status tracking, so users can use a dashboard to track the status and configuration
  • Unified configuration of multifm/depager/other long-running tools
  • Automatic process startup/restart on failure

Debian/Raspbian/Ubuntu Packaging

Close this issue when there is a means to package for Debian, Raspbian and Ubuntu natively. This should include support for packaging on ARMv7, AArch64 and x86_64 at a minimum.

Better Error Messages for Missing Dependencies

:~/tsl-sdr $ python ./waf build
Waf: Entering directory `/home/pi/tsl-sdr/build'
Building version 5de05c2
Pre build...
[ 2/66] Compiling multifm/demod.c
[ 3/66] Compiling multifm/fast_atan2f.c
[ 4/66] Compiling multifm/multifm.c
[ 5/66] Compiling multifm/rtl_sdr_if.c
In file included from /home/pi/tsl-sdr/multifm/rtl_sdr_if.h:4:0,
from ../multifm/rtl_sdr_if.c:23:
/home/pi/tsl-sdr/tsl/worker_thread.h:179:19: fatal error: ck_pr.h: Bestand of ma p bestaat niet
#include <ck_pr.h>
^
compilation terminated.

In file included from /home/pi/tsl-sdr/multifm/demod.h:3:0,
from ../multifm/demod.c:23:
/home/pi/tsl-sdr/tsl/work_queue.h:40:21: fatal error: ck_ring.h: Bestand of map bestaat niet
#include <ck_ring.h>
^
compilation terminated.

In file included from /home/pi/tsl-sdr/multifm/demod.h:3:0,
from ../multifm/fast_atan2f.c:1:
/home/pi/tsl-sdr/tsl/work_queue.h:40:21: fatal error: ck_ring.h: Bestand of map bestaat niet
#include <ck_ring.h>
^
compilation terminated.

In file included from /home/pi/tsl-sdr/multifm/rtl_sdr_if.h:4:0,
from ../multifm/multifm.c:25:
/home/pi/tsl-sdr/tsl/worker_thread.h:179:19: fatal error: ck_pr.h: Bestand of ma p bestaat niet
#include <ck_pr.h>
^
compilation terminated.

Waf: Leaving directory `/home/pi/tsl-sdr/build'
Build failed
-> task in 'multifm' failed (exit status 1):
{task 1986131120: c rtl_sdr_if.c -> rtl_sdr_if.c.2.o}
['/usr/bin/gcc', '-g3', '-gdwarf-4', '-Wall', '-Wundef', '-Wstrict-prototypes', '-Wmissing-prototypes', '-Wno-trigraphs', '-fno-strict-aliasing', '-fno-common', '-Werror-implicit-function-declaration', '-Wno-format-security', '-fno-delete-n ull-pointer-checks', '-Wuninitialized', '-Wmissing-include-dirs', '-Wshadow', '- Wframe-larger-than=2047', '-std=c11', '-g', '-rdynamic', '-O2', '-mcpu=cortex-a7 ', '-mfpu=crypto-neon-fp-armv8', '-mfloat-abi=hard', '-I/home/pi/tsl-sdr/build', '-I/home/pi/tsl-sdr', '-DHAVE_RTLSDR=1', '-D_ATS_IN_TREE', '-D_GNU_SOURCE', '-D SYS_CACHE_LINE_LENGTH=64', '-D_USE_ARM_NEON', '-DNDEBUG', '-DTSL_POINTER_SIZE=8' , '-DCONFIG_DIRECTORY_DEFAULT="/etc/tsl"', '../multifm/rtl_sdr_if.c', '-c', '-o' , '/home/pi/tsl-sdr/build/multifm/rtl_sdr_if.c.2.o']
-> task in 'multifm' failed (exit status 1):
{task 1986132048: c demod.c -> demod.c.2.o}
['/usr/bin/gcc', '-g3', '-gdwarf-4', '-Wall', '-Wundef', '-Wstrict-prototypes', '-Wmissing-prototypes', '-Wno-trigraphs', '-fno-strict-aliasing', '-fno-common', '-Werror-implicit-function-declaration', '-Wno-format-security', '-fno-delete-n ull-pointer-checks', '-Wuninitialized', '-Wmissing-include-dirs', '-Wshadow', '- Wframe-larger-than=2047', '-std=c11', '-g', '-rdynamic', '-O2', '-mcpu=cortex-a7 ', '-mfpu=crypto-neon-fp-armv8', '-mfloat-abi=hard', '-I/home/pi/tsl-sdr/build', '-I/home/pi/tsl-sdr', '-DHAVE_RTLSDR=1', '-D_ATS_IN_TREE', '-D_GNU_SOURCE', '-D SYS_CACHE_LINE_LENGTH=64', '-D_USE_ARM_NEON', '-DNDEBUG', '-DTSL_POINTER_SIZE=8' , '-DCONFIG_DIRECTORY_DEFAULT="/etc/tsl"', '../multifm/demod.c', '-c', '-o', '/h ome/pi/tsl-sdr/build/multifm/demod.c.2.o']
-> task in 'multifm' failed (exit status 1):
{task 1986131184: c fast_atan2f.c -> fast_atan2f.c.2.o}
['/usr/bin/gcc', '-g3', '-gdwarf-4', '-Wall', '-Wundef', '-Wstrict-prototypes', '-Wmissing-prototypes', '-Wno-trigraphs', '-fno-strict-aliasing', '-fno-common', '-Werror-implicit-function-declaration', '-Wno-format-security', '-fno-delete-n ull-pointer-checks', '-Wuninitialized', '-Wmissing-include-dirs', '-Wshadow', '- Wframe-larger-than=2047', '-std=c11', '-g', '-rdynamic', '-O2', '-mcpu=cortex-a7 ', '-mfpu=crypto-neon-fp-armv8', '-mfloat-abi=hard', '-I/home/pi/tsl-sdr/build', '-I/home/pi/tsl-sdr', '-DHAVE_RTLSDR=1', '-D_ATS_IN_TREE', '-D_GNU_SOURCE', '-D SYS_CACHE_LINE_LENGTH=64', '-D_USE_ARM_NEON', '-DNDEBUG', '-DTSL_POINTER_SIZE=8' , '-DCONFIG_DIRECTORY_DEFAULT="/etc/tsl"', '../multifm/fast_atan2f.c', '-c', '-o ', '/home/pi/tsl-sdr/build/multifm/fast_atan2f.c.2.o']
-> task in 'multifm' failed (exit status 1):
{task 1986131056: c multifm.c -> multifm.c.2.o}
['/usr/bin/gcc', '-g3', '-gdwarf-4', '-Wall', '-Wundef', '-Wstrict-prototypes', '-Wmissing-prototypes', '-Wno-trigraphs', '-fno-strict-aliasing', '-fno-common', '-Werror-implicit-function-declaration', '-Wno-format-security', '-fno-delete-n ull-pointer-checks', '-Wuninitialized', '-Wmissing-include-dirs', '-Wshadow', '- Wframe-larger-than=2047', '-std=c11', '-g', '-rdynamic', '-O2', '-mcpu=cortex-a7 ', '-mfpu=crypto-neon-fp-armv8', '-mfloat-abi=hard', '-I/home/pi/tsl-sdr/build', '-I/home/pi/tsl-sdr', '-DHAVE_RTLSDR=1', '-D_ATS_IN_TREE', '-D_GNU_SOURCE', '-D SYS_CACHE_LINE_LENGTH=64', '-D_USE_ARM_NEON', '-DNDEBUG', '-DTSL_POINTER_SIZE=8' , '-DCONFIG_DIRECTORY_DEFAULT="/etc/tsl"', '../multifm/multifm.c', '-c', '-o', ' /home/pi/tsl-sdr/build/multifm/multifm.c.2.o']

Can you help me and give me de command to decode with flex
I do not know what I should do.
preferably in a small manual which step by step is.

Add RTL-SDR serial number support

I have a use case with multiple instances of multiFM with SDRs with different antennas. Would it be possible to allow a configuration line for the serial number?

Build problem in tsl-sdr

Building on a Acer C720 Gallium OS Ubuntu variant. Build fails with this error

Waf: Leaving directory `/root/tsl-sdr/build'
./waf configure && ./waf build failed with the following

-> task in 'test_ais' failed (exit status 1):
{task 140202364006224: cprogram test_ais_demod.c.9.o -> test_ais}
['/usr/bin/gcc', 'ais/test/test_ais_demod.c.9.o', '-o', '/root/tsl-sdr/build/release/test/test_ais', '-Wl,-Bstatic', '-Lrelease/lib', '-lais', '-Wl,-Bdynamic', '-L/usr/local/lib', "-L['/usr/lib/x86_64-linux-gnu']", '-L/usr/local/lib', '-lpthread', '-lrt', '-ljansson', '-ldl', '-lm', '-ltsl', '-ltsltest', '-ltslapp', '-ltslconfig', '-ljansson', '-rdynamic']
-> task in 'test_pager' failed (exit status 1):
{task 140202364005584: cprogram test_mueller_muller.c.7.o,test_pager_flex.c.7.o,test_pager_pocsag.c.7.o -> test_pager}
['/usr/bin/gcc', 'pager/test/test_mueller_muller.c.7.o', 'pager/test/test_pager_flex.c.7.o', 'pager/test/test_pager_pocsag.c.7.o', '-o', '/root/tsl-sdr/build/release/test/test_pager', '-Wl,-Bstatic', '-Lrelease/lib', '-lpager', '-Wl,-Bdynamic', '-L/usr/local/lib', "-L['/usr/lib/x86_64-linux-gnu']", '-L/usr/local/lib', '-lpthread', '-lrt', '-ljansson', '-ldl', '-lm', '-ltsl', '-ltsltest', '-ltslapp', '-ltslconfig', '-ljansson', '-rdynamic']

Development Environment Setup

Close this after we have a script to automate installing required Debian packages to create a development environment for tsl-sdr and related projects.

Unable to Find RTLSDR During Build

Followed instructions to install:

sudo apt-get install build-essential git librtlsdr-dev libjansson-dev

Configure finds RTL-SDR OK but build fails with the below message:

pi@hpi1:~/tsl-sdr $ ./waf configure && ./waf build
Setting top to                           : /home/pi/tsl-sdr
Setting out to                           : /home/pi/tsl-sdr/build
Checking for program 'gcc, cc'           : /usr/bin/gcc
Checking for program 'ar'                : /usr/bin/ar
Checking for RTL-SDR library             : yes
Checking for ConcurrencyKit              : yes
Checking for Jansson (JSON library)      : yes
Checking for DespAirspy                  : not found
Checking for Ettus UHD                   : not found
Building for:                            : armv7l
Build environment                        : $$$$$$$$$$$$$$$$$$$$ RELEASE $$$$$$$$$$$$$$$$$$$$
'configure' finished successfully (2.150s)
Waf: Entering directory `/home/pi/tsl-sdr/build'
Building version 02729c84e854e691
Pre build...
Waf: Leaving directory `/home/pi/tsl-sdr/build'
could not find library 'rtlsdr'

Some versions and install output:

pi@hpi1:~/tsl-sdr $ uname -r
4.9.59-v7+
pi@hpi1:~/tsl-sdr $ sudo apt-get install librtlsdr-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
librtlsdr-dev is already the newest version (0.5.3-11+rpt1).
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

Fix build script for Python 3 and Fix ASM built with `nasm`

Hello I just tried to build tsl/sdr on mz desktop PC (archlinux on Intel Q6600) and got the following error while trying to configure it before building it;
[robby@robquad tsl-sdr]$ ./waf configure Traceback (most recent call last): File "/home/robby/builds/tsl-sdr/.waf3-1.8.17-52e615d7ea939578c442d3f827a956ed/waflib/Scripting.py", line 110, in waf_entry_point run_commands() File "/home/robby/builds/tsl-sdr/.waf3-1.8.17-52e615d7ea939578c442d3f827a956ed/waflib/Scripting.py", line 167, in run_commands parse_options() File "/home/robby/builds/tsl-sdr/.waf3-1.8.17-52e615d7ea939578c442d3f827a956ed/waflib/Scripting.py", line 140, in parse_options Context.create_context('options').execute() File "/home/robby/builds/tsl-sdr/.waf3-1.8.17-52e615d7ea939578c442d3f827a956ed/waflib/Options.py", line 146, in execute super(OptionsContext,self).execute() File "/home/robby/builds/tsl-sdr/.waf3-1.8.17-52e615d7ea939578c442d3f827a956ed/waflib/Context.py", line 93, in execute self.recurse([os.path.dirname(g_module.root_path)]) File "/home/robby/builds/tsl-sdr/.waf3-1.8.17-52e615d7ea939578c442d3f827a956ed/waflib/Context.py", line 134, in recurse user_function(self) File "/home/robby/builds/tsl-sdr/wscript", line 54, in options _loadTools(opt) File "/home/robby/builds/tsl-sdr/wscript", line 35, in _loadTools _checkSupportedArch(cpuArch) File "/home/robby/builds/tsl-sdr/wscript", line 30, in _checkSupportedArch raise Exception('Unsupported CPU architecture: {}'.format(cpuArchId)) Exception: Unsupported CPU architecture: b'x86_64'

x86/64 virtualbox xbuntu - multifm crash when capture

commandline:

multifm multifm_frs_1_7.conf

Crash message:

2019-04-06 19:12:24 [tid= 2741] %APP-W-NO-HUGE-PAGE-SIZE-SPECIFIED, Defaulting huge slab size to 2MB. (../app/app.c:421 in app_allocator_init)
Found Rafael Micro R820T tuner
2019-04-06 19:12:25 [tid= 2741] %MULTIFM-I-DEV-IDX-OPEN, Successfully opened device at index 0 (../multifm/rtl_sdr_if.c:363 in rtl_sdr_worker_thread_new)
2019-04-06 19:12:25 [tid= 2741] %MULTIFM-I-DEV-IDX-OPEN, Device: Generic RTL2832U Tuner: Rafael Micro R820T (../multifm/rtl_sdr_if.c:364 in rtl_sdr_worker_thread_new)
2019-04-06 19:12:25 [tid= 2741] %MULTIFM-I-SAMPLE-RATE, Setting sample rate to 1000000 Hz (../multifm/rtl_sdr_if.c:371 in rtl_sdr_worker_thread_new)
Exact sample rate is: 1000000.026491 Hz
[R82XX] PLL not locked!
2019-04-06 19:12:25 [tid= 2741] %MULTIFM-I-CENTER-FREQ, Setting Center Frequency to 462500000 Hz (../multifm/rtl_sdr_if.c:379 in rtl_sdr_worker_thread_new)
Receiver supports 29 gains: 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
2019-04-06 19:12:26 [tid= 2741] %MULTIFM-I-RECV-GAIN, Setting receive gain to 12.5 dB (../multifm/rtl_sdr_if.c:273 in __rtl_sdr_worker_set_gain)
2019-04-06 19:12:26 [tid= 2741] %MULTIFM-I-FREQ-CORR, Set frequency correction to 0 PPM (../multifm/rtl_sdr_if.c:417 in rtl_sdr_worker_thread_new)
2019-04-06 19:12:26 [tid= 2741] %MULTIFM-I-SAMPLE-RATE, Sample rate is set to 1000000 Hz (../multifm/receiver.c:148 in receiver_init)
2019-04-06 19:12:26 [tid= 2741] %MULTIFM-I-CENTER-FREQ, Center Frequency is 462500000 Hz (../multifm/receiver.c:149 in receiver_init)
2019-04-06 19:12:26 [tid= 2741] %MULTIFM-E-BAD-FILTER-TAPS, Need to provide a baseband filter with at least two filter taps as 'lpfTaps'. (../multifm/receiver.c:176 in receiver_init)
The application has PANICked. Reason:
BUG: ((receiver_init(&thr->rx, cfg, _rtl_sdr_worker_thread, _rtl_sdr_worker_thread_delete, (16 * 32 * 512/2)))) == TRUE

Application [version=33978fd080561658] terminating at ../multifm/rtl_sdr_if.c:457 [thread=2741]
Call backtrace:
multifm(panic+0xaa)[0x55e7bf96561a]
multifm(rtl_sdr_worker_thread_new+0x155d)[0x55e7bf96182d]
multifm(main+0x3fe)[0x55e7bf95c45e]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0x7efde34d3b97]
multifm(_start+0x2a)[0x55e7bf95c80a]
Aborted (core dumped)

config file:

{
"device" : {
"type" : "rtlsdr",
"deviceIndex" : 0,
"dBGainLNA" : 10.0
},
"sampleRateHz" : 1000000,
"centerFreqHz" : 462500000,
"nrSampBufs" : 16,
"decimationFactor" : 80,
"channels" : [
{
"outFifo" : "/home/jkershner/ch7.out",
"chanCenterFreq" : 462712500
},
{
"outFifo" : "/home/jkershner/ch6.out",
"chanCenterFreq" : 462687500
},
{
"outFifo" : "/home/jkershner/ch5.out",
"chanCenterFreq" : 462662500
},
{
"outFifo" : "/home/jkershner/ch4.out",
"chanCenterFreq" : 462637500
},
{
"outFifo" : "/home/jkershner/ch3.out",
"chanCenterFreq" : 462612500
},
{
"outFifo" : "/home/jkershner/ch2.out",
"chanCenterFreq" : 462587500
},
{
"outFifo" : "/home/jkershner/ch1.out",
"chanCenterFreq" : 462562500
}
]
}

depager/resampler require AVX - undocumented

Build on a model name : Intel(R) Celeron(R) CPU N2807 @ 1.58GHz Ubuntu 16.04.3 LTS
system I get the following errors.

It's not documented in the readme that on x86 depager/resampler require AVX?

kyh@sphynx:~/tsl-sdr/build/release/bin$ ./depager
[1513808074.747381210] [tid=13935] %CPUFEATURE-F-MISSING-CPUID-FEATURE, This application requires AVX be present and enabled. (../app/cpufeatures.c:129 in app_cpufeatures_check_at_init)
The application has PANICked. Reason:
Failed CPU feature checks, aborting. If this is on a 12Sided appliance, please contact 12Sided support at [email protected].

Application [version=62f216e1bd908ce4-dirty] terminating at ../app/cpufeatures.c:145 [thread=13935]
Call backtrace:
./depager(panic+0xa3)[0x40c6c3]
./depager[0x405dc0]
./depager(app_init+0x2c)[0x4059fc]
./depager(main+0x33)[0x4030c3]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7fe4222c4830]
./depager(_start+0x29)[0x404589]
Aborted (core dumped)

./resampler
[1513808311.189910093] [tid=16867] %CPUFEATURE-F-MISSING-CPUID-FEATURE, This application requires AVX be present and enabled. (../app/cpufeatures.c:129 in app_cpufeatures_check_at_init)
The application has PANICked. Reason:
Failed CPU feature checks, aborting. If this is on a 12Sided appliance, please contact 12Sided support at [email protected].

Application [version=62f216e1bd908ce4-dirty] terminating at ../app/cpufeatures.c:145 [thread=16867]
Call backtrace:
./resampler(panic+0xa3)[0x406ed3]
./resampler[0x404600]
./resampler(app_init+0x2c)[0x40423c]
./resampler(main+0x2e)[0x402c8e]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f8772550830]
./resampler(_start+0x29)[0x403879]
Aborted (core dumped)

Package despairspy not found

I want to install TSL-SDR to use it with my Airspy Mini. Although I've installed libdespairspy it isn't recognized while running cmake on TSL-SDR.

USER@HOSTNAME:/(***)/tsl-sdr-master/build# cmake -DCMAKE_BUILD_TYPE=Release ..
-- CPU Archiecture is armv7l
-- Enabling NEON, setting CPU Architecture to armv7-a
-- Checking for module 'librtlsdr'
--   No package 'librtlsdr' found
-- Checking for module 'despairspy'
--   No package 'despairspy' found
-- Checking for module 'uhd'
--   No package 'uhd' found
-- Configuring done
-- Generating done
-- Build files have been written to: /(***)/tsl-sdr-master/build

All the airspy commands can be run (after installing libdespairspy). This suggest that the install was completely flawless so I'm unsure why it isn't recognized.

USER@HOSTNAME:/(***)# airspy_info
airspy_lib_version: 1.0.9

Found AirSpy board 1
Board ID Number: 0 (AIRSPY)
Firmware Version: AirSpy MINI v1.0.0-rc10-0-g946184a 2016-09-19
Part ID Number: 0x6906002B 0x00000030
Serial Number: (***)
Supported sample rates:
        6.000000 MSPS
        3.000000 MSPS
Close board 1

When I search for "Airspy" it seems like the library is installed:

USER@HOSTNAME:/(***)# find / -name "*airspy*"
/usr/local/include/libdespairspy
/usr/local/include/libdespairspy/airspy.h
/usr/local/include/libdespairspy/airspy_commands.h
/usr/local/include/libairspy
/usr/local/include/libairspy/airspy.h
/usr/local/include/libairspy/airspy_commands.h
/usr/local/bin/airspy_rx
/usr/local/bin/airspy_spiflash
/usr/local/bin/airspy_r820t
/usr/local/bin/airspy_gpiodir
/usr/local/bin/airspy_gpio
/usr/local/bin/airspy_si5351c
/usr/local/bin/airspy_lib_version
/usr/local/bin/airspy_info
/usr/local/lib/libdespairspy.so
/usr/local/lib/pkgconfig/libdespairspy.pc
/usr/local/lib/pkgconfig/libairspy.pc
/usr/local/lib/libdespairspy.so.1.0.9
/usr/local/lib/libairspy.so.1.0.9
/usr/local/lib/libairspy.so.0
/usr/local/lib/libairspy.so
/usr/local/lib/libairspy.a
/usr/local/lib/libdespairspy.so.0
/etc/udev/rules.d/52-airspy.rules


I've found the issue. First of all the readme at libdespairspy is only for the airspyone_host and NOT for despairspy. To compile these you've to download the libdespairspy manually and can pretty much follow the same steps but you'll have to be in the "libdespairspy" folder.

After this I still had issues because CMAKE for TSL-SDR still didn't see the "despairspy". I have fixed this by changing line 71 in "CMakeLists.txt" to:
pkg_check_modules(DESPAIRSPY libdespairspy)

MultiFM should NOT fail if one end of a pipe disconnects

Close this ticket when MultiFM allows processes to repeatedly open and close pipes without causing the MultiFM task to hang. This should include:

  • Gracefully detecting the pipe disconnection
  • Cleanly acknowledging (but not delivering) data packets when there is no listener
  • Handling the reconnection of the pipe listener after the fact

CSQ & CTCSS Support

The ability to define Carrier Squelch or CTCSS at the FM level would be a great feature that I think would help significantly for anyone who is not trying to collect digital data modes

REQUEST : Example Usage?

[[[ EDIT :: Found the not-immediately-obvious-correct-links - noted at bottom of page :: ]]]

it would be nice to show a couple of sample uses for each tool -- only way I got multiFM capturing correctly was to snag the CLI from a previous ticket reported here (#27) .. now that i'm capturing, not having any luck getting decoder to deal with the output files.

Something like?

MultiFM

needs at least (2) input filters - one describing the frequencies/channels/etc, and the other describing the filter. Example filters are found in the etc folder of the source tree. The files you specify in the first JSON have to already exist, so using the linux "touch" tool, precreate them before you attempt to capture.

example:

touch /home/pi/ch0.out (repeat for ch0.out through ch7.out)

multifm etc/multifm.json etc/flex_25khz_lpf.json
2024-05-21 17:08:56 [tid=32530] %APP-W-NO-HUGE-PAGE-SIZE-SPECIFIED, Defaulting huge slab size to 2MB. (/usr/src/tsl/app/app.c:421 in app_allocator_init)
Found Rafael Micro R828D tuner
2024-05-21 17:08:56 [tid=32530] %MULTIFM-I-DEV-IDX-OPEN, Successfully opened device at index 0 (/usr/src/tsl-sdr/multifm/rtl_sdr_if.c:363 in rtl_sdr_worker_thread_new)
2024-05-21 17:08:56 [tid=32530] %MULTIFM-I-DEV-IDX-OPEN, Device: Generic RTL2832U OEM Tuner: Rafael Micro R828D (/usr/src/tsl-sdr/multifm/rtl_sdr_if.c:364 in rtl_sdr_worker_thread_new)
2024-05-21 17:08:56 [tid=32530] %MULTIFM-W-DEV-UNTESTED, This tuner type is not tested, so the performance could be poor (/usr/src/tsl-sdr/multifm/rtl_sdr_if.c:367 in rtl_sdr_worker_thread_new)
2024-05-21 17:08:56 [tid=32530] %MULTIFM-I-SAMPLE-RATE, Setting sample rate to 1000000 Hz (/usr/src/tsl-sdr/multifm/rtl_sdr_if.c:371 in rtl_sdr_worker_thread_new)
Exact sample rate is: 1000000.026491 Hz
[R82XX] PLL not locked!
2024-05-21 17:08:57 [tid=32530] %MULTIFM-I-CENTER-FREQ, Setting Center Frequency to 929500000 Hz (/usr/src/tsl-sdr/multifm/rtl_sdr_if.c:379 in rtl_sdr_worker_thread_new)
Receiver supports 29 gains: 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
2024-05-21 17:08:57 [tid=32530] %MULTIFM-I-RECV-GAIN, Setting receive gain to 42.1 dB (/usr/src/tsl-sdr/multifm/rtl_sdr_if.c:272 in __rtl_sdr_worker_set_gain)
2024-05-21 17:08:57 [tid=32530] %MULTIFM-I-FREQ-CORR, Set frequency correction to 0 PPM (/usr/src/tsl-sdr/multifm/rtl_sdr_if.c:417 in rtl_sdr_worker_thread_new)
2024-05-21 17:08:57 [tid=32530] %MULTIFM-I-SAMPLE-RATE, Sample rate is set to 1000000 Hz (/usr/src/tsl-sdr/multifm/receiver.c:148 in receiver_init)
2024-05-21 17:08:57 [tid=32530] %MULTIFM-I-CENTER-FREQ, Center Frequency is 929500000 Hz (/usr/src/tsl-sdr/multifm/receiver.c:149 in receiver_init)
2024-05-21 17:08:57 [tid=32530] %MULTIFM-I-CHANNEL, [1]: 929.83800 MHz Gain: 0.000000 dB -> [/home/pi/ch7.out] (/usr/src/tsl-sdr/multifm/receiver.c:240 in receiver_init)
2024-05-21 17:08:57 [tid=32530] %MULTIFM-I-CHANNEL, [2]: 929.53800 MHz Gain: 0.000000 dB -> [/home/pi/ch6.out] (/usr/src/tsl-sdr/multifm/receiver.c:240 in receiver_init)
2024-05-21 17:08:57 [tid=32530] %MULTIFM-I-CHANNEL, [3]: 929.38800 MHz Gain: 0.000000 dB -> [/home/pi/ch5.out] (/usr/src/tsl-sdr/multifm/receiver.c:240 in receiver_init)
2024-05-21 17:08:57 [tid=32530] %MULTIFM-I-CHANNEL, [4]: 929.93800 MHz Gain: 0.000000 dB -> [/home/pi/ch4.out] (/usr/src/tsl-sdr/multifm/receiver.c:240 in receiver_init)
2024-05-21 17:08:57 [tid=32530] %MULTIFM-I-CHANNEL, [5]: 929.36200 MHz Gain: 0.000000 dB -> [/home/pi/ch3.out] (/usr/src/tsl-sdr/multifm/receiver.c:240 in receiver_init)
2024-05-21 17:08:57 [tid=32530] %MULTIFM-I-CHANNEL, [6]: 929.66250 MHz Gain: 0.000000 dB -> [/home/pi/ch2.out] (/usr/src/tsl-sdr/multifm/receiver.c:240 in receiver_init)
2024-05-21 17:08:57 [tid=32530] %MULTIFM-I-CHANNEL, [7]: 929.63800 MHz Gain: 0.000000 dB -> [/home/pi/ch1.out] (/usr/src/tsl-sdr/multifm/receiver.c:240 in receiver_init)
2024-05-21 17:08:57 [tid=32530] %MULTIFM-I-CHANNEL, [8]: 929.61200 MHz Gain: 0.000000 dB -> [/home/pi/ch0.out] (/usr/src/tsl-sdr/multifm/receiver.c:240 in receiver_init)
2024-05-21 17:08:57 [tid=32530] %MULTIFM-I-CAPTURING, Starting capture and demodulation process. (/usr/src/tsl-sdr/multifm/multifm.c:160 in main)
Allocating 15 zero-copy buffers`

Now, using the default "multifm.json" you've created multiple output files in /home/pi, named ch0.out through ch7.out. Those files can then be processed by tools including decoder (see below) or resampler (see below)

Decoder

No idea. Everything I try doesn't work so far.

root@pi154:/home/pi# decoder -f 929.61200 -F /root/multiFM/flex_25khz_lpf.json /home/pi/ch0.out
2024-05-21 00:51:34 [tid= 8891] %DECODER-I-WRITE-TO-STDOUT, Output decoded data is going to stdout. (/usr/src/tsl-sdr/decoder/decoder.c:498 in _set_options)
2024-05-21 00:51:34 [tid= 8891] %DECODER-I-CONFIG, Resampling: 1/1 from 0 to 0.000000 (/usr/src/tsl-sdr/decoder/decoder.c:515 in _set_options)
2024-05-21 00:51:34 [tid= 8891] %DECODER-I-CONFIG, Loading filter coefficients from '/root/multiFM/flex_25khz_lpf.json' (/usr/src/tsl-sdr/decoder/decoder.c:517 in _set_options)
The application has PANICked. Reason:
BUG: ((config_get_float_array(cfg, &filter_coeffs_f, &nr_filter_coeffs, "lpfCoeffs"))) == TRUE

Application [version=5b3bbf5d2c708ed2] terminating at /usr/src/tsl-sdr/decoder/decoder.c:527 [thread=8891]
Call backtrace:
decoder(panic+0x68)[0x5591c6e678]
decoder(main+0x10a4)[0x5591c64824]
/lib/aarch64-linux-gnu/libc.so.6(+0x27780)[0x7f90557780]
/lib/aarch64-linux-gnu/libc.so.6(__libc_start_main+0x98)[0x7f90557858]
decoder(_start+0x30)[0x5591c651f0]
Aborted

Resampler

More data needed

packaging questions

trying these for fun on arch linux for the aur, appears successful 100%, but then doesn't work yet. not sure where i went off track.
-- Install configuration: "Release"
-- Installing: ...tsl-sdr/pkg/tsl-sdr/usr/bin/multifm
-- Installing: ...tsl-sdr/pkg/tsl-sdr/usr/bin/resampler
-- Installing: ...tsl-sdr/pkg/tsl-sdr/usr/bin/decoder
check for --help
$ multifm -h
2021-12-04 18:48:34 [tid= 9549] %CONFIG-F-Parse, Error during JSON load & parse: unable to open -h: No such file or directory (at line -1, source -h) (/tsl/src/tsl/config/engine.c:165 in config_add)
2021-12-04 18:48:34 [tid= 9549] %MULTIFM-F-MALFORMED-CONFIG, Configuration file [-h] is malformed. (/tsl-sdr/src/tsl-sdr/multifm/multifm.c:107 in main)

use example from wiki
$ multifm etc/multifm.json etc/flex_25khz_lpf.json
2021-12-04 18:51:45 [tid= 9585] %CONFIG-F-Parse, Error during JSON load & parse: unable to open etc/multifm.json: No such file or directory (at line -1, source etc/multifm.json) (/tsl/src/tsl/config/engine.c:165 in config_add)
2021-12-04 18:51:45 [tid= 9585] %MULTIFM-F-MALFORMED-CONFIG, Configuration file [etc/multifm.json] is malformed. (/tsl-sdr/src/tsl-sdr/multifm/multifm.c:107 in main)

in my case there were no config files (json files) listed in the install_manifest.txt, nor manually directed, so none for the installed package
navigating back to the src directory (location of json files), i get this:

$ multifm etc/multifm.json etc/flex_25khz_lpf.json
2021-12-04 19:05:06 [tid=12588] %APP-W-NO-HUGE-PAGE-SIZE-SPECIFIED, Defaulting huge slab size to 2MB. (/src/tsl/app/app.c:421 in app_allocator_init)
Found Rafael Micro R820T/2 tuner
2021-12-04 19:05:07 [tid=12588] %MULTIFM-I-DEV-IDX-OPEN, Successfully opened device at index 0 (/src/tsl-sdr/multifm/rtl_sdr_if.c:363 in rtl_sdr_worker_thread_new)
2021-12-04 19:05:07 [tid=12588] %MULTIFM-I-DEV-IDX-OPEN, Device: Generic RTL2832U OEM Tuner: Rafael Micro R820T (/src/tsl-sdr/multifm/rtl_sdr_if.c:364 in rtl_sdr_worker_thread_new)
2021-12-04 19:05:07 [tid=12588] %MULTIFM-I-SAMPLE-RATE, Setting sample rate to 1000000 Hz (/src/tsl-sdr/multifm/rtl_sdr_if.c:371 in rtl_sdr_worker_thread_new)
Exact sample rate is: 1000000.026491 Hz
2021-12-04 19:05:07 [tid=12588] %MULTIFM-I-CENTER-FREQ, Setting Center Frequency to 929500000 Hz (/src/tsl-sdr/multifm/rtl_sdr_if.c:379 in rtl_sdr_worker_thread_new)
Receiver supports 29 gains: 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
2021-12-04 19:05:07 [tid=12588] %MULTIFM-I-RECV-GAIN, Setting receive gain to 20.7 dB (/src/tsl-sdr/multifm/rtl_sdr_if.c:272 in __rtl_sdr_worker_set_gain)
2021-12-04 19:05:07 [tid=12588] %MULTIFM-I-FREQ-CORR, Set frequency correction to 0 PPM (/src/tsl-sdr/multifm/rtl_sdr_if.c:417 in rtl_sdr_worker_thread_new)
2021-12-04 19:05:07 [tid=12588] %MULTIFM-I-SAMPLE-RATE, Sample rate is set to 1000000 Hz (/src/tsl-sdr/multifm/receiver.c:148 in receiver_init)
2021-12-04 19:05:07 [tid=12588] %MULTIFM-I-CENTER-FREQ, Center Frequency is 929500000 Hz (/src/tsl-sdr/multifm/receiver.c:149 in receiver_init)
2021-12-04 19:05:07 [tid=12588] %MULTIFM-F-CANT-OPEN-FIFO, Unable to open output fifo '/ch7.out' (/src/tsl-sdr/multifm/demod.c:333 in demod_thread_new)
2021-12-04 19:05:07 [tid=12588] %MULTIFM-E-FAILED-DEMOD-THREAD, Failed to create demodulator thread, aborting. (/src/tsl-sdr/multifm/receiver.c:232 in receiver_init)
The application has PANICked. Reason:
BUG: ((receiver_init(&thr->rx, cfg, _rtl_sdr_worker_thread, _rtl_sdr_worker_thread_delete, (16 * 32 * 512/2)))) == TRUE

Application [version=e36c5e75b50f66c1] terminating at /src/tsl-sdr/multifm/rtl_sdr_if.c:456 [thread=12588]
Call backtrace:
multifm(panic+0xaf)[0x55695311721f]
multifm(rtl_sdr_worker_thread_new+0x17d1)[0x5569531111f1]
multifm(main+0x418)[0x55695310b4b8]
/usr/lib/libc.so.6(__libc_start_main+0xd5)[0x7f66f958cb25]
multifm(_start+0x2e)[0x55695310b85e]
Aborted (core dumped)

i don't know why it constantly references back to the /src directories
i'm not sure what to try next. anyway, sounds like a cool project. i may have to try on the recommended debian if i can't get this to work.

multifm starts first channel and no data

I'm attempting to get your pager channel example working and having a bit of trouble. Using RTL-SDR, and running the following (separate directory from tsl-sdr) :

multifm ../etc/multifm.json ../etc/flex_25khz_lpf.json

Everything seems to go well, the FIFOs and the SDR get read, but only the first channel in the config get initiated. The last line that is printed is:

[tid=12217] %MULTIFM-I-CHANNEL, [1]: 929.83800 MHz Gain: 0.000000 dB -> [../.ch/ch0.out] (/home/t/tsl-sdr/multifm/receiver.c:240 in receiver_init)

If I check the FIFO it is supposed to be writing to there is no data. Also, in attempt to troubleshoot I have opted to write raw iq to a debug file with iqDumpFile and there is no data in there either. Any ideas for what I need to do to get working? Thank you.

Here is the full command line dump:

2023-01-10 23:31:12 [tid=12217] %APP-W-NO-HUGE-PAGE-SIZE-SPECIFIED, Defaulting huge slab size to 2MB. (/home/t/tsl/app/app.c:421 in app_allocator_init)
Found Rafael Micro R820T tuner
2023-01-10 23:31:13 [tid=12217] %MULTIFM-I-DEV-IDX-OPEN, Successfully opened device at index 0 (/home/t/tsl-sdr/multifm/rtl_sdr_if.c:363 in rtl_sdr_worker_thread_new)
2023-01-10 23:31:13 [tid=12217] %MULTIFM-I-DEV-IDX-OPEN, Device: Generic RTL2832U OEM Tuner: Rafael Micro R820T (/home/t/tsl-sdr/multifm/rtl_sdr_if.c:364 in rtl_sdr_worker_thread_new)
2023-01-10 23:31:13 [tid=12217] %MULTIFM-I-SAMPLE-RATE, Setting sample rate to 1000000 Hz (/home/t/tsl-sdr/multifm/rtl_sdr_if.c:371 in rtl_sdr_worker_thread_new)
Exact sample rate is: 1000000.026491 Hz
[R82XX] PLL not locked!
2023-01-10 23:31:13 [tid=12217] %MULTIFM-I-CENTER-FREQ, Setting Center Frequency to 929500000 Hz (/home/t/tsl-sdr/multifm/rtl_sdr_if.c:379 in rtl_sdr_worker_thread_new)
2023-01-10 23:31:13 [tid=12217] %MULTIFM-I-AUTO-GAIN-CONTROL, Enabling automatic gain control. (/home/t/tsl-sdr/multifm/rtl_sdr_if.c:391 in rtl_sdr_worker_thread_new)
2023-01-10 23:31:13 [tid=12217] %MULTIFM-I-FREQ-CORR, Set frequency correction to 0 PPM (/home/t/tsl-sdr/multifm/rtl_sdr_if.c:417 in rtl_sdr_worker_thread_new)
2023-01-10 23:31:13 [tid=12217] %MULTIFM-I-SAMPLE-RATE, Sample rate is set to 1000000 Hz (/home/t/tsl-sdr/multifm/receiver.c:148 in receiver_init)
2023-01-10 23:31:13 [tid=12217] %MULTIFM-I-CENTER-FREQ, Center Frequency is 929500000 Hz (/home/t/tsl-sdr/multifm/receiver.c:149 in receiver_init)
2023-01-10 23:31:13 [tid=12217] %MULTIFM-I-CHANNEL, [1]: 929.83800 MHz Gain: 0.000000 dB -> [../.ch/ch0.out] (/home/t/tsl-sdr/multifm/receiver.c:240 in receiver_init)

This is experienced on both Ubuntu 22.04 and raspbian x32 lite

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.