Git Product home page Git Product logo

multimon-ng's People

Contributors

arekinath avatar asdil12 avatar chzchzchz avatar craigshelley avatar dj7lc avatar eliasoenal avatar evilpete avatar flothi avatar g0wfv avatar ge0rg avatar girst avatar j-dickinson avatar jklnz avatar joachimth avatar kevans91 avatar kripton avatar lassebm avatar lt-holman avatar patvog avatar pinkavaj avatar pvachon avatar r4d10n avatar rene-pasemann avatar rfarley3 avatar schrolli91 avatar silentbuteo2 avatar slocomptech avatar stoepf avatar v-rzh avatar zanoroy 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  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

multimon-ng's Issues

Integrate the cubehub fork?

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?

Flex Tone Messages

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...

A lot of Flex invalid Offsets in group messages

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:

  • Is this a bug in multimon-ng software?
  • Can you reproduce this error?
  • Do you have an advice how to workaround / solution for this problem?

@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

Problem building on both Debian 8.3 "Jessie" and Raspbian "Jessie"

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!

Make Error in file unixinput.c

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

Fails to build on OS X El Capitan (library not found for -lpulse-simple)

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

Multimon-ng outputting samples to stdout

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

Problem: decoding APRS

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?

Flex Group messge decoding

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,

Feature request: Please add support for DPRS packages!

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

Windows Parameters

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.

Timestamp

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.

FLEX fragmented messages

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

square brackets

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]

Bug in flex: When >1 group message in THE SAME frame, no message is displayed for the second group message

@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.

p2000dump.txt

Best regards,
Bert from Holland,

Found a problem in the Decode function

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.

ZVEI: Siren-tone

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).

FLEX Timeout approx 20 till 30 times a day

@Zanoroy

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

  • Why is the Timeout message displayed 20 till 30 times a day and signal is locked in the same second.
  • Is it possible to tune the multimon-ng software ?
  • Or is it possible to tune other (rtl_fm) parameters?

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

FMSFSK

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)?

Make use of tags

Please create some tags with version numbers.
This would make packaging much easier.

No SCOPE option & 'execlp' dir?

Just downloaded and built from multimon-ng-1.1.0.zip on Macbook Air / El Capitan.

  1. I cannot find the SCOPE option.
  2. On startup of the example, I get:
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?

pa_strerror undefined when linking

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'.

make fails Linux Mint 17.3

[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



Multimon-ng tool couldn't decode DTMF

Dear Friend,

outputrecording
audacitysample
testhere.wav.zip

We have an issue as we are unable to decode particular DTMF signals using the multimon-ng tool.

Please find the attached sample files,

  1. screenshot of the output using the multimon-ng tool.
  2. wave file.
  3. screenshot of the audacity tool showing the DTMF signal shown.

Please give us support on how this issue can be sorted out.

ICAO SELCAL Decoder

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!

Rtl_fm | sox | multimon

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

Marine GMDSS DSC Support

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.

Decoding errors

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

MORSE_CW Output?

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

Not showing anything

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

SEGV trying to decode morse

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

Can't read directly from a pipe

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.

FLEX decoding...almost - always loses synch

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?

FMS: Error in Location

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...

FMSFSK not in sync/missing messages?

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.

FLEX Support?

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.

Integration of SDL2 Hardware Audio

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)

Strange message format

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?

RTTY support

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

FLEX bug group message is not always correct split up (timeout setting is too low)

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

timeoutbug.zip

Build Without Pulse

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?

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.