eliasoenal / multimon-ng Goto Github PK
View Code? Open in Web Editor NEWLicense: GNU General Public License v2.0
License: GNU General Public License v2.0
Not sure if you're wanting bugs reports yet for your recently introduced morse demod mode, but in case you are I get a seg fault when I try to decode my raw file. I get the following
/multimon-ng -t raw -a MORSE_CW vo52_cw_raw.dat
multimon-ng (C) 1996/1997 by Tom Sailer HB9JNX/AE4WA
(C) 2012/2013 by Elias Oenal
available demodulators: POCSAG512 POCSAG1200 POCSAG2400 EAS UFSK1200 CLIPFSK AFSK1200 AFSK2400 AFSK2400_2 AFSK2400_3 HAPN4800 FSK9600 DTMF ZVEI1 ZVEI2 ZVEI3 DZVEI PZVEI EEA EIA CCIR MORSE_CW SCOPE
Enabled demodulators: MORSE_CW
IE IEI<._....._> I <...__...__...><........_...>L<......._.........>Segmentation fault
If I use gdb & add a line of debug to unixinput.c:
void process_buffer(float *float_buf, short *short_buf, unsigned int len)
{
for (unsigned int i = 0; i < NUMDEMOD; i++) {
printf("i %d, M(i) %d, demd %d num %d len %d\n", i, MASK_ISSET(i), -1, NUMDEMOD, len);
if (MASK_ISSET(i) && dem[i]->demod)
{
buffer_t buffer = {short_buf, float_buf};
dem[i]->demod(dem_st+i, buffer, len);
}
}
}
I get the following output:
i 20, M(i) 0, demd -1 num 23 len 8192
i 21, M(i) 2097152, demd -1 num 23 len 8192
i 22, M(i) 0, demd -1 num 23 len 8192
i 0, M(i) 0, demd -1 num 23 len 8192
i 1, M(i) 0, demd -1 num 23 len 8192
i 2, M(i) 0, demd -1 num 23 len 8192
i 3, M(i) 0, demd -1 num 23 len 8192
i 4, M(i) 0, demd -1 num 23 len 8192
i 5, M(i) 0, demd -1 num 23 len 8192
i 6, M(i) 0, demd -1 num 23 len 8192
i 7, M(i) 0, demd -1 num 23 len 8192
i 8, M(i) 0, demd -1 num 23 len 8192
i 9, M(i) 0, demd -1 num 23 len 8192
i 10, M(i) 0, demd -1 num 23 len 8192
i 11, M(i) 0, demd -1 num 23 len 8192
i 12, M(i) 0, demd -1 num 23 len 8192
i 13, M(i) 0, demd -1 num 23 len 8192
i 14, M(i) 0, demd -1 num 23 len 8192
i 15, M(i) 0, demd -1 num 23 len 8192
i 16, M(i) 0, demd -1 num 23 len 8192
i 17, M(i) 0, demd -1 num 23 len 8192
i 18, M(i) 0, demd -1 num 23 len 8192
i 19, M(i) 0, demd -1 num 23 len 8192
i 20, M(i) 0, demd -1 num 23 len 8192
i 21, M(i) 2097152, demd -1 num 23 len 8192
<......._.........>i 4075055, M(i) 0, demd -1 num 23 len 8192
i 4075056, M(i) 0, demd -1 num 23 len 8192
i 4075057, M(i) 0, demd -1 num 23 len 8192
i 4075058, M(i) 0, demd -1 num 23 len 8192
i 4075059, M(i) 0, demd -1 num 23 len 8192
i 4075060, M(i) 0, demd -1 num 23 len 8192
i 4075061, M(i) 2097152, demd -1 num 23 len 8192
Program received signal SIGSEGV, Segmentation fault.
0x0000000000402bc6 in process_buffer (float_buf=float_buf@entry=0x7ffffffee5e0, short_buf=short_buf@entry=0x7ffffffea5e0,
len=len@entry=8192) at ../unixinput.c:116
116 if (MASK_ISSET(i) && dem[i]->demod)
As you can see the value of 'i' jumps way out of range - so something in dem[i]->demod() is trashing memory. I'll probably continue to have a look at the issue, but I expect you'll be able to fix it much faster than I will!
Thanks for adding CW decoding!
Matt
Probably just my not knowing how to set everything up right but I keep ever getting NUL at the end on messages received or Ä instead of [ and Ü instead of ] any ideas.
I'm running on a raspberry pi with rtl_fm input
command
rtl_fm -f 148.9125M -s 22050 | multimon-ng -t raw -a POCSAG512 -f alpha /dev/stdin
Case:
Approx 20 till 30 times a day I will see a timeout in de debug dump (-v 3).
In the same second the message LOCKED appears.
Example:
See attachment p2000dump line 622
2017-09-10 21:46:12: FLEX: Timeout
2017-09-10 21:46:12: FLEX: Locked
Attachment
See below radio.raw
See below p2000dump.txt (Line 622)
Capture command
rtl_fm -f 169.65M -M fm -s 22050 -p -1 -g 40 -F 0 | tee radio.raw| multimon-ng -a FLEX -t raw /dev/stdin -v 3 --timestamp > /home/pi/p2000/output/p2000dump.txt
Configuration
Raspberry 3 Model B with RTLSDR RTL2832U DVB-T Tuner.
Very good signal, transmitter and receiver nearby
PPM and gain is calibrated and stable.
No errors or corruptions
Questions
I will appreciate any advice and explaination .
ATTACHMENTS
p2000dump.txt
Radio file, 70 MB (available 7 days with wetransfer)
https://we.tl/Gj6C2b1KU8 or the same file https://wetransfer.com/downloads/c3e8683bb7ad3ba67e0231952e37774c20170910201018/2be4a1
Great job!!!!
Was wondering about the possibility of adding Marine Digital Selective Calling (DSC) support in the future. As far as I know, there is no Linux software for decoding DSC, only Windows applications.
CASE
Approx 1% of the group messages there is no split-up because there is a timeout in the short instruction frame.
@Zanoroy Can you please reply? I would appreciate.
TESTSCENARIO/EXAMPLE
radio.20171008123001-multimondump-WITHbug.txt
In cycleno 9 and frameno 115 you can see a timeout. The next frame is a group message and split up does NOT take place.
EXTRA INFORMATION
When I see a timeout this has always happened in a short instruction frame.
TESTSCENARIO (see attached radio file) and I have comment out line 1100
See below the files in zip attachment file.
When I comment out line 1100 the split up takes place correctly!
/*Time out after 50 periods with no zero crossing*/
flex->Demodulator.timeout++;
if (flex->Demodulator.timeout>50) {
verbprintf(1, "FLEX: Timeout\n");
/*flex->Demodulator.locked = 0;*/
}
radio.20171008123001-multimondump-WITHworkaround.txt
SOLUTION SUGGESTION
Change if (flex->Demodulator.timeout>50) {
to if (flex->Demodulator.timeout>60) {
I'm not sure the value 60 is high enough. In the testfile radio.20171008123001-multimondump-WITHworkaround.txt you can see the timeout message is 6 times displays. So the minumum value is 50 + 6. At the moment my test is running to see what is the right timeout value
Note: I think when there are a lot of short instructions in the frame the value 50 is too low.
ATTACHED SOURCE FILES IN TIMEOUTBUG.ZIP
ZIP File contains:
Original file: demod_flexWITHbug.c
Updated file: demod_flexWITHworkaround-commentline1100.c (comment out line 1100)
Testfile: radio.20171008123001.raw
I've got multimon working almost perfectly. Only when decoding a FLEX group message, the actual message contents is missing the last 2 or 3 characters.
I use a discriminator tap wich is split into 2 (seperatly amplified) outputs with level control.
The first goes into a Windows machine running PDW, the second to a Linux Ubuntu 14.04 running Multimon.
These are the logs from both MultiMon and PDW.
Note the missing characters in the last line of MultiMon.
Log from MultiMon:
FLEX: 2016-01-22 14:23:58 1600/2/A 06.006 [001220619] UNK 00000000
FLEX: 2016-01-22 14:23:58 1600/2/A 06.006 [001220499] UNK 00000000
FLEX: 2016-01-22 14:24:00 1600/2/A 06.007 [3746629632] ALN 0wTest fijne dienst 20
Log from PDW:
15:24:14 22-01-16 06/007 GROUP-1 Test fijne dienst 20120
1220619 MKA Midden- en West-Brabant (Ambu 20-119)
1220499 MKA Midden- en West-Brabant (Monitorcode)
Any thought on this ?
Best regards,
Hi, I just installed multimon-ng on my mac and it doesn't seem to be working. I'm wondering if I've set up anything wrong?
I've run Win7 in VM with SDR# + PDW with a known pager frequency, it was working pretty well and I think it’s FLEX(since it's showing FLEX all the time in the PDW window), but I’m looking for a native mac solution.
so I downloaded & set up sox, gqrx with macports and compiled multimon-ng following the README using qmake(tried both qt5 & qt4).
I setup the GQRX to stream on 7355 UDP port, played some FM radio and used sox to record to wav file, so that part i know is working for sure, but when I turn to the pager frequency and ran the following command, nothing shows up yet I can see the pager signals being transmitted clearly in GQRX.
Here is the command I put in, did I type anything wrong?
nc -l -u 7355 | sox -t raw -e signed-integer -b 16 -c 1 -r 48000 - -e signed-integer -b 16 -r 22050 -t raw - | multimon-ng -t raw -a FLEX -a POCSAG512 -a POCSAG1200 -a POCSAG2400 -f alpha -
I've also tried the without including any of the POCSAG demodulator.
thanks
It would be great to have a timestamp in every line which is encoded.
I needed 2 days of playing till i got Messages, but now it works very fine with Pocsag512 and Pocsag1200.
Hey, after people recommended I try this cause PDW isn't decoding a fairly strong signal, I am now unable to figure out how to set the input to a certain audio device. The -? information is quite lacking and I couldn't find anymore documentation sadly.
As the German TR-BOS specify a special siren-tone which I could not find in the sources: Is there a way to decode a ZVEI-tone for sirens? (e.g. http://www.pfa.nrw.de/PTI_Internet/pti-intern.dhpol.local/Funk/Regelungen/Geraete-Funkalarmierung/Analoge_Funkalarmierung.pdf)
A 7 Sirenenauslösung
Zur Auslösung der Sirenen muß einheitlich der Doppelton 4 und 7 bzw. 4 und 5 (Dauerruf Gruppe
M) 5 s ± 250 ms lang im Anschluß an die Wiederholung der Fünftonfolge gesendet werden
können.
Ziffer 4 = fs4 = 675 Hz + 0,5 Hz bei normalen, ± 3 Hz bei extremen Betriebsbedingungen,
Ziffer 7 = fs7 = 1240 Hz + 1 Hz bei normalen, ± 5 Hz bei extremen Betriebsbedingungen (A 13).
@Zanoroy Can you please have a look at this issue?
@EliasOenal
Case:
Bug in multimon-ng flex.
When there is more than 1 group message in THE SAME frame, no message is displayed for the second group message.
Extra information.
The case is 100% reproducable and this scenario results in 100% message loss (when there is more than 1 group message in the same frame).
My configuration and commandline statement:
Raspberry PI model 3B
rtl_fm -f 169.65M -M fm -s 22050 -p -1 -g 30 -F 0 | multimon-ng -a FLEX -t raw /dev/stdin -v 3 --timestamp >> p2000dump.txt
Attachment see below
Illustration in the attachment of the case
See Line 517 and 519.
Line 517: 2017-09-04 14:52:50: FLEX: Found Short Instruction, Group bit: 1 capcodes in group so far 1, adding Capcode: [001420999]
Line 519: 2017-09-04 14:52:50: FLEX: Found Short Instruction, Group bit: 1 capcodes in group so far 2, adding Capcode: [001420059]
There is no output for capcode 1420999 and capcode 1420059, also there is no group capcode output as well [0020295xx].
I found this bug only when there is more than 1 group message in the same frame.
A few extra examples:
Line 1141 and 1143.
Line 1271 and 1273.
Line 1518 and 1520.
Line 2281 and 2283.
Is there a fix available?
Is there a workaround?
I am available for extra information or for testing a fix.
Thanks for your reply / fix in advance.
Best regards,
Bert from Holland,
Please create some tags with version numbers.
This would make packaging much easier.
Hello everyone,
I just wanted to make a feature request here and say that I am already working on this feature. I am trying to currently integrate SDL 2 as a hardware audio input into multimon-ng. You can see the progress at my GitHub fork (https://github.com/czenzel/multimon-ng).
I will create a pull request when it is ready. I will assign this issue to myself and let everyone know when its ready for a pull request. If you want to test the live action code please feel free to use my repository above.
Thanks,
Chris Zenzel (@czenzel)
Hello,
since I own a Icom Dstar handset that is not capable of sending APRS packets, I was hoping to set up a simple APRS/DPRS gateway on my Raspberry Pi. However, the only software I know which is able to decode both APRS and DPRS data is APRX [1]. Unfortunately, APRX is huge, with a vast amount of features and pretty hard to configure, and, furthermore, appears to be not actively developed anymore. I never got it work though, neither with my SDR (not even sure if SDRs are supported in APRX) nor with direwolf (which itself is, again, somewhat hard to configure). Since the DPRS specs are published [2] and already implemented elsewhere (e.g. APRX), it would be amazing to add DPRS to multimon-ng. And, yes, of course I'm aware that DPRS position beacons shouldn't be transmitted on the APRS beaconing frequency. I do however think that there are several use cases where it would make sense to be able to decode both the APRS and the DPRS position beacons on the same frequency and with one device.
Maybe it is possible to somehow incorporate the DPRS-part from APRX[3] into pymultimon and thus make it truely "multimonitor"? :-)
Thank you in advance!
Chris
[1]http://thelifeofkenneth.com/aprx/ and https://github.com/PhirePhly/aprx
[2]http://www.aprs-is.net/downloads/DStar/D-PRS.pdf
[3]https://github.com/PhirePhly/aprx/blob/master/dprsgw.c
please , is there support DT-AS single detect with fsk?
First, thanks for updating my favorite decoding tool. Especially the EAS addition.
I hope you'll consider trying to figure out the Rino format, it's typically for position reporting, here is probably the best break down I have read:
http://www.radio-active.net.au/web3/APRS/Resources/RINO
And again, Thanks!
Hi!
How can i uninstall multimon-ng?
I've tryed sudo make uninstall but i get this:
Would it be possible to add RTTY support to your great program? I mainly come across RTTY when decoding the telemetry from high latitude balloons - at various baud rates, number of bits, etc. At the moment I have to use dl-fldigi but that doesn't work how I'd like it to work, I'd much rather go via a pipe with raw data than via pulse audio.
Thanks again for maintaining this program (I see you've recently added CW which I'll be trying out shortly),
Matt
I actually want to decode FMS and wondered why i only receive the ack from the control center, not the status send from the vehicle to the control center. I then tracked down things and started to record the received data. It turned out that when i cut out one handshake without much noise in the beginning, that multimon-ng would suddenly decode teh two messages, as soon as there is however some preceeding oise, teh first message is not recognized and decoded. I can provide respective samples for that.
I have a problem:
(Stick is E4000 and kal worked ok)
rtl_fm -f 144800000 -s 22050 -p 18 -g 42.0 - | multimon-ng -a AFSK1200 -A -t raw -
does not produce any output
but same USB stick works good with
rtl_tcp -a local IP
and
SDR# on 144.800 Mhz
what could be wrong?
Just wondering if this is a bug, or meant to be or something i'm missing...
Output is displaying square brackets [ ] as Ä Ü
POCSAG512: Address: 571040 Function: 0 Alpha: @@ALERT F140802273 BORO3 INCIC1 DORSET RD BORONIA /AEC ARC //LUPTON WAY M 64 K9 (492082) CBORO ÄBOROÜ
this is how it should be (and how pdw would display's the message), note the [ ] at the end;
POCSAG512: Address: 571040 Function: 0 Alpha: @@ALERT F140802273 BORO3 INCIC1 DORSET RD BORONIA /AEC ARC //LUPTON WAY M 64 K9 (492082) CBORO [BORO]
I installed pulseaudio
from mac ports. Created a build
directory and used cmake
(couldn't find qmake) but I get this error:
[100%] Linking C executable multimon-ng ld: library not found for -lpulse-simple clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *** [multimon-ng] Error 1 make[1]: *** [CMakeFiles/multimon-ng.dir/all] Error 2 make: *** [all] Error 2
How about implementing FFSK (Fast Frequency Shift Keying) (also called MSK) demodulator and decoding of BIIS 1200 SDT?
An audio sample of BIIS 1200
sigidwiki.com entry
A Perl script to decode BIIS 1200 messages demodulated
A C source containing a MSK demod implementation
Hello!
There is an failure at decoding - how is it possible to get an CRC correct when the value of FZG is an String of 5 digits? It have to be 4. So the message can´t be correct, even in CRC?
Maybe its possible to use the decodemodule from monitord 2.0 as an alternative module (FMSBOS)?
This is not really an "issue" but hopefully it helps ...
In following a thread on how to deal with doppler on satellite data I ended up at https://libraries.io/github/cubehub/multimon-ng which explains as follows:
"Currently this fork only exists because it seems that multimon-ng is quite picky about fsk9600 symbol rate. There is slight error in demod if input stream is converted to 22050 sps output stream. With this little error multimon-ng was unable to decode fsk9600 stream.
Anyway branch 48k-demod-fsk96 adds 48000 sps input stream support to fsk9600."
Is it not desirable to integrate the work done on this fork? Or maybe it is already done?
Just downloaded and built from multimon-ng-1.1.0.zip on Macbook Air / El Capitan.
Chris-MacBookAir:build chrisbridges$ ./multimon-ng -a DUMPCSV -t wav ../example/x10rf.wav
multimon-ng (C) 1996/1997 by Tom Sailer HB9JNX/AE4WA
(C) 2012-2014 by Elias Oenal
available demodulators: POCSAG512 POCSAG1200 POCSAG2400 FLEX EAS UFSK1200 CLIPFSK FMSFSK AFSK1200 AFSK2400 AFSK2400_2 AFSK2400_3 HAPN4800 FSK9600 DTMF ZVEI1 ZVEI2 ZVEI3 DZVEI PZVEI EEA EIA CCIR MORSE_CW DUMPCSV
Enabled demodulators: DUMPCSV
execlp: No such file or directory
Chris-MacBookAir:build chrisbridges$
My qmake is:
Chris-MacBookAir:build chrisbridges$ qmake -v
QMake version 2.01a
Using Qt version 4.8.6 in /usr/local/Cellar/qt/4.8.6/lib
Chris-MacBookAir:build chrisbridges$
Any pointers to these two issues?
A lot of Flex invalid Offsets in group messages
SCENARIO:
rtl_fm -f 169.65M -M fm -s 22050 -p -1 -g 30 -F 0 > example-rtlfm-5min.out
multimon-ng -a FLEX -t raw example-rtlfm-5min.out -v 3 –timestamp
PROBLEM:
11x “FLEX: Invalid Offsets” in 5 minute sample file
CONFIGURATION:
Raspberry PI 3 Model B
uname –a
Linux prd 4.9.35-v7+ #1014 SMP Fri Jun 30 14:47:43 BST 2017 armv7l GNU/Linux
RTL_FM dongle is: RTL-SDR brand R820T2 RTL2832U 1PPM TCXO SMA V3 Dongle
Version multimon_ng V1.1.2 (Latest commit c3d44ce /23-8-2017 EliasOenal)
EXTRA INFORMATION:
Rtl_fm ppm is calibrated and stable. Gain is also optimised.
Error is repreducable (10 till 30 procent of the group messages has an invalid offset and is not split up).
NETWORK:
Tetra Flex network in Holland for emergency services (FSK 1600/2)
EXTRA TEST INFORMATION:
Test with piping sox buffering (1MB or 10 MB) has the same results.
Test with an higher sample rate (ie rtl_fm 25000) and then downsample it to with sox 22050 rate has the same results.
There are no corrupted or fixed blocks. Synchronisation status is 100%. The Flex signal is 100% and the antenna is near the transmitter (good reception).
Questions:
@Zanoroy Can you reply also, I would appreciate.
Best Regards,
Bert.
Attached files:
In flex.zip:
example-rtlfm-5min.out
example-rtlfm-5min-processed.txt
flex.zip
I have converted your code to C# to use with SDRShape.
I found a problem in your code that results in sections of messages being missed and a false report of 'Invalid Offset'.
In the 'demod_flex.c' you have:
`
int mw2 = mw1+len;
...
if (mw1 > 87 || mw2 > 87){
verbprintf(3, "FLEX: Invalid Offsets\n");
continue; // Invalid offsets
}
if (is_alphanumeric_page(flex))
parse_alphanumeric(flex, phaseptr, PhaseNo, mw1, mw2-1, j);
`
You are getting the message length from the VIW and adding it to the start position, but the start position is the first word, there for the length needs to be reduced by 1, which you are doing when calling the parse_alphanumeric, unfortunately you have the if statement above it checking that mw1 and mw2 fall within the buffer range (which with split messages they do not, your logic always results in mw2 being 88).
Change the code to the following and it works: (I have not tested with numeric or tone only messages)
`
int mw2 = mw1+len - 1;
...
if (mw1 > 87 || mw2 > 87){
verbprintf(3, "FLEX: Invalid Offsets\n");
continue; // Invalid offsets
}
if (is_alphanumeric_page(flex))
parse_alphanumeric(flex, phaseptr, PhaseNo, mw1, mw2, j);
`
I hope that made sense.
I got this error during compiling:
/usr/bin/ld: unixinput.o: undefined reference to symbol 'pa_strerror@@PULSE_0'
Adding "-lpulse" onto the final link command (the one producing the multimonNG executable) fixes the problem. It seems linking against only pulse-simple isn't enough. I ran 'qmake multimonNG.pro && make'.
Hey @Zanoroy and @EliasOenal - I was watching multimon-ng running against PDW and I noticed that PDW was showing up messages as "Short Tone" with a numeric body but multimon-ng was not picking these up. I had a look at the source in demod_flex and compared it with PDW and it appears that multimon is treating all tone messages as tone messages whereas PDW correctly checks if it has numeric content.
I had a look at the flex paging spec and it actually calls it "Short Message" rather than tone...
manca tutta la libreria di pulse audio nel file simple.h
Hi,
I have been using multimon-ng with Gqrx and GNURadio - I am working on a script to decode multiple POCSAG channels in parallel.
I have found a very strange issue where I have to either pipe the audio samples through sox, or a named pipe otherwise multimon-ng doesn't work. This is really weird to me, even more so since I checked the code and it doesn't seem to be doing anything magical that seems likely to cause an issue.. The 'SCOPE' display definitely looks different between the two cases as well.
For testing I made a gnu radio script which output 22050Hz audio to UDP (like Gqrx but at the correct frequency). I found that this would work..
nc -l -u 7355 | sox -t raw -esigned-integer -b16 -r 22050 - -esigned-integer -b16 -r 22050 -t raw - | ./multimon-ng -t raw -a POCSAG512 -a POCSAG1200 -a POCSAG2400 -a SCOPE -f alpha --timestamp -
but this does not
nc -l -u 7355 | ./multimon-ng -t raw -a POCSAG512 -a POCSAG1200 -a POCSAG2400 -a SCOPE -f alpha --timestamp -
i.e. this is a 'null' conversion..
This doesn't work either..
nc -l -u 7355 | cat | ./multimon-ng -t raw -a POCSAG512 -a POCSAG1200 -a POCSAG2400 -a SCOPE -f alpha --timestamp -
Even more oddly..
mkfifo test
nc -l -u 7355 >test &
./multimon-ng -t raw -a POCSAG512 -a POCSAG1200 -a POCSAG2400 -a SCOPE -f alpha --timestamp - <test
does work.
Has anyone seen this issue before?
Also I tried changing my python script to call multimon-ng with subprocess.popen, and pipe the output to it (by using the file descriptor sink) but it behaves the same way.
It appears that it's currently impossible to raise the verbosity above 1 due to this line in multimon-ng.pro:
DEFINES += MAX_VERBOSE_LEVEL=1
Not sure if it's there for a reason.
I don't have PulseAudio on any of my systems, and I'm not familiar with qmake. What do I need to do to disable PulseAudio support at build time?
Recently came across this project and very happy to see somebody taking up the challenge of getting multimon modernized. Was able to start it right up on my 64bit Mint machine with PulseAudio (so already worlds better than its predecessor).
Was wondering about the possibility of adding FLEX support in the future. As far as I know, there is no Linux software for decoding FLEX, only Windows applications like PDW. Would be nice not to have to run PDW in WINE all the time.
When decoding FLEX I'm missing the CAPCODES...
Trying to decode pager transmissions, using rtl_fm and multimon-ng on a Raspberry Pi. This is what I've assembled from various sources, and it almost works...
rtl_fm -A fast -f 929.620M -M fm -E dc -s 22050 -F 0 | multimon-ng -n -p -t raw -a POCSAG512 -a POCSAG1200 -a POCSAG2400 -a FLEX -i -p -v 3 -f alpha /dev/stdin
I see messages from the FLEX decoder, mostly these:
FLEX: Synchronisation Lost
FLEX: Locked
FLEX: Synchronisation Lost
FLEX: Locked
but periodically, I get:
FLEX: Locked
FLEX: SyncInfoWord: sync_code=0xd6a0 baud=3200 levels=4 polarity=NEG zero=0.013193 envelope=0.195820 symrate=1601.396648
FLEX: State: FIW
FLEX: Synchronisation Lost
FLEX: State: SYNC1
FLEX: Locked
FLEX: SyncInfoWord: sync_code=0xdea0 baud=3200 levels=4 polarity=NEG zero=0.017672 envelope=0.191791 symrate=1600.031621
FLEX: State: FIW
FLEX: Phase F Data corruption - Unable to fix errors.
FLEX: Unable to decode FIW, too much data corruption
FLEX: State: SYNC1
FLEX: Synchronisation Lost
and a few of these:
FLEX: State: FIW
FLEX: Phase F Fixed 2 errors @ 0x00084000 (0x7ffef99e -> 0x7ff6b99e)
FLEX: Bad Checksum 0x2
which seems to suggest that multimon-ng is detecting the FLEX format, and decoding some of it, but never completely successfully.
I've played with the gain, antennas, and so on, and the results are always some variation on what you see here.
Any ideas how I might further debug this, and hopefully get it working?
Hey guys,
Not sure if this is best place for it, but seems pretty active lately so figured it was worth a shot. :)
Has anyone had any luck with piping rtl_fm through sox before multimon? When using SDR# -> PDW I've found a bandwidth of 12050hz works perfectly, so was going to try upsampling from that to 22050 for multimon. Tried the following with no luck:
rtl_fm -d 0101 -g 100 -E dc -F 0 -l 15 -A lut -f 148.5875M -s12050 - | \
sox -traw -r12050 -es -b16 -c1 -v1 - -traw -es -b16 -c1 -r 22050 - | \
multimon-ng -q -cp -a POCSAG512 -f alpha -t raw /dev/stdin
Dropping sox and running at 22050 works, but still not capturing as much data as PDW:
rtl_fm -d 0101 -g 100 -E dc -F 0 -l 15 -A lut -f 148.5875M -s22050 - |\
multimon-ng -q -cp -a POCSAG512 -f alpha -t raw /dev/stdin
Fwiw, I'm working on a nodejs app that will take and parse the multimon output into a DB and present the data with pretty capcode matching etc. Will be sure to keep you guys in the loop there. :)
Thanks!
Dave
It seems that there is an error in FMS-decoding:
A location which should be set to 90 is given as 0x09.
Somewhere about in FMS.c, l. 261
loc_id = (message >> 24) & 0xFF;
The two bits should be flipped in my opinion...
Hi!
I'm using the following to bring in 48kHz raw data via a fifo from gnuradio but I only see numbers. Any ideas of what I'm doing wrong? The dah is 150 ms, and dits are 50 ms.
sox -t raw -e floating-point -b32 -r 48k file.raw -esigned-integer -b16 -r 22050 -t raw - | ./multimon-ng -t raw - -a MORSE_CW
19854.376953,21298
19854.421875,17237
19854.468750,13287
19854.513672,9331
19854.558594,5545
19854.603516,1857
19854.648438,-1603
19854.695312,-4875
19854.740234,-7866
19854.785156,-10597
19854.830078,-13007
19854.875000,-15103
73s Chris
I have a slight problem and I can't figure it out. For some reason multimon-ng is outputting the input samples in plain text to stdout. How can I turn this off?
Example output:
Enabled demodulators: POCSAG512 POCSAG1200 POCSAG2400 FLEX EAS UFSK1200 CLIPFSK FMSFSK AFSK1200 AFSK2400 AFSK2400_2 AFSK2400_3 HAPN4800 FSK9600 DTMF ZVEI1 ZVEI2 ZVEI3 DZVEI PZVEI EEA EIA CCIR MORSE_CW DUMPCSV SCOPE
[0x00][0x00][0x00][0x00]j
[0x95]
[0x00][0x00]j
[0x95]
[0x00][0x95]
[0x00][0x99]
[0x00][0x00]f
[0x99]
[0x00][0x00][0x00][0x00]0.000000,0
0.045351,-1
0.090703,3
0.136054,-6
0.181406,8
0.226757,-7
0.272109,-4
0.317460,37
0.362812,-563
0.408163,-1301
0.453515,-1438
0.498866,-1121
0.544218,-376
0.589569,514
0.634921,1221
0.680272,1482
0.725624,1218
0.770975,475
0.816327,-496
0.861678,-1209
0.907030,-1476
0.952381,-1225
0.997732,-599
1.043084,300
1.088435,1226
1.133787,1527
1.179138,1204
1.224490,503
1.269841,-423
1.315193,-1129
1.360544,-1442
1.405896,-1289
1.451247,-692
1.496599,310
1.541950,1104
1.587302,1450
1.632653,1384
1.678005,646
1.723356,-291
1.768708,-1007
1.814059,-1389
1.859411,-1293
1.904762,-779
1.950113,46
1.995465,1108
2.040816,1662
2.086168,1440
2.131519,786
2.176871,-225
Please recognize the PREFIX variable in multimon-ng.pro like described here:
http://stackoverflow.com/a/7106823/1234176
got the following error:
:~/multimon-ng/build$ make gcc -c -m64 -pipe -std=gnu99 -g -O2 -Wall -W -DMAX_VERBOSE_LEVEL=3 -DPULSE_AUDIO -DCHARSET_UTF8 -I/usr/share/qt4/mkspecs/linux-g++-64 -I../../multimon-ng -I../../multimon-ng -I. -o unixinput.o ../unixinput.c ../unixinput.c:47:26: fatal error: pulse/simple.h: Datei oder Verzeichnis nicht gefunden #include <pulse/simple.h> ^ compilation terminated. Makefile:258: die Regel für Ziel „unixinput.o“ scheiterte make: *** [unixinput.o] Fehler 1
First things first thanks for making a program that can decode FLEX so i can decode using a raspberry pi.
one slight problem is fragmented messages are not handled.
when a message is sent using FLEX and gets broken up along the way the bitrate changes from 1600 to 1601 if fragmented once and goes up depending on fragmented amount.
in PDW this bitrate change is picked up.
below is output from PDW
CAPCODE TIME DATE BITRATE MESSGAE
1931416 02:06:43 20-09-16 1600 MFS: *CFSRES INC0003 20/09/16 02:06 RESPOND PRIVATE ALARM, ALARM LEVEL: 1, : @Smithfield
- MFS Elizabeth Station -
1931416 02:06:45 20-09-16 1601 PLAINS HIGH SCHOOL 1 BEAUMONT RD SMITHFIELD PLAINS,MAP:ADL 42 B13,TG C163 T183, :ELZ331 ELZ339 SAL321 :
- MFS Elizabeth Station -
as you can see the second one as a bitrate of 1601 (pager gets this as one message)
here is the output from multimon
Date Time CAPCODE BITRATE MESSAGE
2016-09-20 02:06:45 [001931416] 1600/2/A PLAINS HIGH SCHOOL 1 BEAUMONT RD SMITHFIELD PLAINS,MAP:ADL 42 B13,TG C163 T183, :ELZ331 ELZ339 SAL321 :
as you can see the first part of message is missing as its not a 1600 bitrate
full logs available if required
Hello, Geetings from hfaero.com (Michael here in New Zealand). Is there any plans for you excellent programme to decode the ICAO SELCAL tones. I am searching everywhere for a Linux based decoder and so far my MultiPISK under Wine doesn't do a very good job with PulseAudio streams and AirNav SELCAL Decoder doesn't even find an audio source!
Thanks, and keep up the good work Elias!
Dear Friend,
We have an issue as we are unable to decode particular DTMF signals using the multimon-ng tool.
Please find the attached sample files,
Please give us support on how this issue can be sorted out.
[me@hypersquij:multimon-ng ]$ git describe --tags --long
1.0.0-57-gcbca5fc
[me@hypersquij:multimon-ng ]$ cd build/
[me@hypersquij:build ]$ qmake ../multimon-ng.pro
[me@hypersquij:build ]$ make
gcc -c -m64 -pipe -std=gnu99 -g -O2 -Wall -W -DMAX_VERBOSE_LEVEL=3 -DPULSE_AUDIO -DCHARSET_UTF8 -I/usr/share/qt4/mkspecs/linux-g++-64 -I../../multimon-ng -I../../multimon-ng -I. -o unixinput.o ../unixinput.c
../unixinput.c:542:3: error: expected expression before ‘<<’ token
<<<<<<< HEAD
^
../unixinput.c: In function ‘main’:
../unixinput.c:600:1: error: expected expression before ‘<<’ token
<<<<<<< HEAD
^
../unixinput.c:600:1: warning: statement with no effect [-Wunused-value]
../unixinput.c:605:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = 0; i < NUMDEMOD; i++)
^
../unixinput.c:609:1: error: expected expression before ‘==’ token
=======
^
../unixinput.c:609:1: warning: statement with no effect [-Wunused-value]
../unixinput.c:810:53: error: ‘pocsag_database’ undeclared (first use in this function)
fprintf(stdout, "Writing POCSAG messages to %s\n", pocsag_database);
^
../unixinput.c:810:53: note: each undeclared identifier is reported only once for each function it appears in
../unixinput.c:864:1: error: expected declaration or statement at end of input
}
^
../unixinput.c:596:9: warning: unused variable ‘mask_first’ [-Wunused-variable]
int mask_first = 1;
^
../unixinput.c:595:12: warning: unused variable ‘itype’ [-Wunused-variable]
char **itype;
^
../unixinput.c:592:9: warning: unused variable ‘errflg’ [-Wunused-variable]
int errflg = 0;
^
../unixinput.c: At top level:
../unixinput.c:63:20: warning: ‘allowed_types’ defined but not used [-Wunused-variable]
static const char *allowed_types[] = {
^
make: *** [unixinput.o] Error 1
Hello!
I am setting up a MFSK1200 (APRS) reciever using multimon-ng, but I have a problem. I have installed the "lite" version as I don't need the graphical part.
I can make it work with a RTL-SDR USB stick (with only multimon), but I need to be able to process audio from the mic input, and as I understand it, I then need multimon-ng
These are the steps I am trying:
mkdir ~/src
cd ~/src
git clone https://github.com/EliasOenal/multimonNG.git
cd ~/src/multimonNG
mkdir build
cd build
qmake ../multimon-ng.pro <--- PROBLEM
make
sudo make install
When I try to runt qmake, I get the following:
qmake: could not find a Qt installation of ''
Do I need QT installed or can I install it any other way? I want to keep this Pi as slim as possible.
Thanks in advance!
Hi,
I see quite a few messages of this format:
POCSAG512: Address: 3200 Function: 0 Alpha: )&)E51ASNPPEB8491098000100008000&Q0200&Q0201&Q0202&Q0203&Q0204&Q0205&Q0206&Q0207&Q0208&Q0209&Q02
0:&Q020;&Q020<&Q020=&Q020>&Q020?&Q0210&Q0211&Q0212&Q0213&Q0214&P16000019?::8103000000001&P160100088;=8103000000001&P160200088;80103000000001&P160300088;?0103
000000001&P160400088<50103000000001&&36
I am using the following multimon-ng paramaters:
multimon-ng -t raw -a POCSAG512 -f alpha /dev/stdin
The interesting thing is a particular alpha page I was expecting to see at the time did not get decoded.
Any ideas?
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.