cubehub / doppler Goto Github PK
View Code? Open in Web Editor NEWCommand line utility that takes IQ data stream as input and produces doppler corrected output stream based on TLE
License: MIT License
Command line utility that takes IQ data stream as input and produces doppler corrected output stream based on TLE
License: MIT License
I'll give the solution first, always nice to have a fix before knowing the problem:
I added "#include <stdint.h>
" to the top of demod.c and it now compiles without any errors.
The problem was when compiling on ARM architecture I got the following:
root@bananapi ~/src/demod/build (git)-[master] # make
Scanning dependencies of target demod
[100%] Building C object CMakeFiles/demod.dir/demod.c.o
/root/src/demod/demod.c: In function ‘main’:
/root/src/demod/demod.c:190:2: error: unknown type name ‘uint8_t’
uint8_t iq_buffer[INPUT_BUF_SIZE];
^
/root/src/demod/demod.c:241:13: error: ‘uint8_t’ undeclared (first use in this function)
fwrite((uint8_t_)dem_out, 1, resampler_output_count_4, stdout);
^
/root/src/demod/demod.c:241:13: note: each undeclared identifier is reported only once for each function it appears in
/root/src/demod/demod.c:241:21: error: expected expression before ‘)’ token
fwrite((uint8_t_)dem_out, 1, resampler_output_count_4, stdout);
^
/root/src/demod/demod.c:241:5: error: too few arguments to function ‘fwrite’
fwrite((uint8_t_)dem_out, 1, resampler_output_count_4, stdout);
^
/root/src/demod/demod.c:257:21: error: expected expression before ‘)’ token
fwrite((uint8_t_)dem_out, 1, resampler_output_count_2, stdout);
^
/root/src/demod/demod.c:257:5: error: too few arguments to function ‘fwrite’
fwrite((uint8_t_)dem_out, 1, resampler_output_count_2, stdout);
^
CMakeFiles/demod.dir/build.make:54: recipe for target 'CMakeFiles/demod.dir/demo d.c.o' failed
make[2]: *** [CMakeFiles/demod.dir/demod.c.o] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/demod.dir/all' failed
make[1]: *** [CMakeFiles/demod.dir/all] Error 2
Makefile:117: recipe for target 'all' failed
make: *** [all] Error 2
root@bananapi ~/src/demod/build (git)-[master] #
Currently it does not work on 32 bit machines.
Hi Could please help
I am compiling on Ubuntu 16.04
sudo cargo build --release
Compiling doppler v1.1.9 (file:///home/anton/Downloads/doppler)
warning: unnecessary parentheses around function argument
--> src/main.rs:91:88
|
91 | let slice = unsafe {slice::from_raw_parts(output.as_ptr() as *const _, (output.len() * 8))};
| ^^^^^^^^^^^^^^^^^^ help: remove these parentheses
|
= note: #[warn(unused_parens)] on by default
Finished release [optimized] target(s) in 1.42 secs
Hello, I'm testing your software for NOAA signal recording.
I don't understand what happen with the location that software interptrets. I write the command of your example:
rtl_fm -f 437.5M -s 1024000 -g 20 -M raw - | doppler track -s 1024000 -i i16 --tlefile cubesat.txt --tlename 'ESTCUBE 1' --location lat=58.26541,lon=26.46667,alt=90 --frequency 437505000 --offset 5000 > zero.iq
and I recive:
2016-11-27T12:26:32.290 [INFO doppler 129] location : Location { lat: 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000287, lon: 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013, alt: 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000445 }
Whaever location I want, software interprets alt=0,long=0,alt=0.
Also, I always recive doppler correction =-0.00Hz.
If you know what is happening, I would apreciate your helful.
Thanks you.
I've recently downloaded and successfully compiled Doppler however when I execute it, the program stops with the message that just says Killed. I was able to get the following from strace when I attempted to execute the program. I'm trying to figure out why this is happening. Any help would be greatly appreciated:
$strace /usr/local/bin/doppler -h
execve("/usr/local/bin/doppler", ["/usr/local/bin/doppler", "-h"], [/* 49 vars /]) = 0
brk(0) = 0xe1c6e555d90
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6653bb182000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=273529, ...}) = 0
mmap(NULL, 273529, PROT_READ, MAP_PRIVATE, 3, 0) = 0x6653bb13f000
close(3) = 0
open("/lib64/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@U\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1050592, ...}) = 0
mmap(NULL, 3145832, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x6653bac65000
mprotect(0x6653bad65000, 2093056, PROT_NONE) = 0
mmap(0x6653baf64000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xff000) = 0x6653baf64000
close(3) = 0
open("/usr/local/lib64/libgpredict.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000(\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=73572, ...}) = 0
mmap(NULL, 2162728, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x6653baa54000
mprotect(0x6653baa64000, 2093056, PROT_NONE) = 0
mmap(0x6653bac63000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xf000) = 0x6653bac63000
close(3) = 0
open("/lib64/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 #\0\0\0\0\0\0"..., 832) = 832
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6653bb13e000
fstat(3, {st_mode=S_IFREG|0755, st_size=31056, ...}) = 0
mmap(NULL, 2128408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x6653ba84c000
mprotect(0x6653ba853000, 2093056, PROT_NONE) = 0
mmap(0x6653baa52000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x6653baa52000
close(3) = 0
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\274\37\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1692984, ...}) = 0
mmap(NULL, 3800728, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x6653ba4ac000
mprotect(0x6653ba643000, 2093056, PROT_NONE) = 0
mmap(0x6653ba842000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x196000) = 0x6653ba842000
mmap(0x6653ba848000, 16024, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x6653ba848000
close(3) = 0
open("/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\16\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=14296, ...}) = 0
mmap(NULL, 2109584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x6653ba2a8000
mprotect(0x6653ba2aa000, 2097152, PROT_NONE) = 0
mmap(0x6653ba4aa000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x6653ba4aa000
close(3) = 0
open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\327p\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=96936, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6653bb13d000
mmap(NULL, 2208304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x6653ba08c000
mprotect(0x6653ba0a3000, 2093056, PROT_NONE) = 0
mmap(0x6653ba2a2000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x6653ba2a2000
mmap(0x6653ba2a4000, 12848, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x6653ba2a4000
close(3) = 0
open("/usr/lib/gcc/x86_64-pc-linux-gnu/4.8.5/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=87776, ...}) = 0
mmap(NULL, 2183840, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x6653b9e76000
mprotect(0x6653b9e8a000, 2097152, PROT_NONE) = 0
mmap(0x6653ba08a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x6653ba08a000
close(3) = 0
open("/usr/lib64/libglib-2.0.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\252\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1228128, ...}) = 0
mmap(NULL, 3325856, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x6653b9b4a000
mprotect(0x6653b9c74000, 2097152, PROT_NONE) = 0
mmap(0x6653b9e74000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12a000) = 0x6653b9e74000
close(3) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6653bb13c000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6653bb13b000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x6653bb139000
arch_prctl(ARCH_SET_FS, 0x6653bb139800) = 0
mprotect(0x6653ba842000, 16384, PROT_READ) = 0
mprotect(0x6653ba2a2000, 4096, PROT_READ) = 0
mprotect(0x6653b9e74000, 4096, PROT_READ) = 0
mprotect(0x6653ba08a000, 4096, PROT_READ) = 0
mprotect(0x6653ba4aa000, 4096, PROT_READ) = 0
mprotect(0x6653baa52000, 4096, PROT_READ) = 0
+++ killed by SIGKILL +++
Killed
Hi,
At the step ' Compiling rustc-serialize v0.3.18'
There is an error:
error[E0642]: patterns aren't allowed in methods without bodies
--> /home/mark/.cargo/registry/src/github.com-1ecc6299db9ec823/rustc-serialize-0.3.18/src/serialize.rs:145:45
|
145 | &f_name: &str,
| ^^^^^^^
With a bit of research, it turns out that if you update rustc-serialize with this line:
cargo update -p rustc-serialize
And then run the compile instruction, the error goes away and everything compiles fine.
Mark
It would be convenient to use it like this:
--tlefile https://www.celestrak.com/NORAD/elements/noaa.txt
Hallo im trying to compile doppler but i still get an issue.
Compiling liquid_dsp v0.3.0 (https://github.com/cubehub/rust-liquid-dsp.git#343bf9bd)
error: linking withcc
failed: exit code: 1
liquid-dsp was successfully installed
Something you can help with??
Im running
Operating System: Debian GNU/Linux 9 (stretch)
Kernel: Linux 4.9.0-6-amd64
Architecture: x86-64
I'm trying to use doppler on GQRX's raw files like this:
cat gqrx_20220804_154702_137100000_80000_fc.raw | doppler track --frequency 137100000 -i f32 -o f32 -s 80000 --time 2022-08-04T15:47:02 --tlefile weather-tle.txt --tlename 'NOAA 19' --location lat=x,lon=x,alt=x > fixed.raw
But resulting file is neither playable in GQRX nor SDR++
I tried to convert resulting file to i16 format using sox
:
sox -t raw -e floating-point -b 32 -c 2 -r 80000 fixed.wav -t raw -e signed-integer -b 16 -c 2 -r 80000 fixed_i16.raw
and i got:
sox WARN dither: dither clipped 34814543 samples; decrease volume?
sox WARN sox: `dop.wav' input clipped 39521951 samples
while before the doppler shift there was no problem with this command
As I know GQRX records raw file in little endian float 32 bit, 2 channel IQ file (one for I and one for Q)
What is the problem?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.