EliasOenal / multimon-ng

GNU General Public License v2.0
947 stars 210 forks source link

rtl_airband + multimon-ng = Multi frequency pager decoder? #165

Closed geelongmicrosoldering closed 2 years ago

geelongmicrosoldering commented 3 years ago

Less of an issue and more a cry for help from someone experienced with multimon-ng.

I'm trying to implement multimon-ng to decode multiple pager frequencies with a single rtl-sdr dongle. I know i can do this with multiple dongles using rtl_fm, and piping it into multimon-ng.

In theory, this could be done with rtl_airband, and I could potentially monitor a bunch of frequencies in the same band. The problem is i just cant seem to get this working. i can output all of the streams to either a raw IQ file, wav file, or pulse audio sink. i can then have a script for multimon-ng to load a file, or pipe the audio from the sink into it.

I've tried all approaches but i just can't seem to get multimon-ng to decode anything. Is anyone able to get this working? I potentially want to monitor 4 or 5 POCSAG frequencies in the same band, and it seems wasteful to have a separate dongle for each freq. If someone were to get this working, it would be super useful for many, and i would probably kiss your feet or give you a puppy.

Many thanks if anyone has some free time to look into this

DanielO commented 3 years ago

Have a look at https://github.com/DanielO/multimon-ng/blob/master/example/multipager.py

ivkowalenko commented 3 years ago

Have a look at https://github.com/DanielO/multimon-ng/blob/master/example/multipager.py

How do I take advantage of that? I tried firing it up on my system and got an error about a missing module. I poked about and couldn't find any documentation.

DanielO commented 3 years ago

What missing module?

Also, I wrote it for Python 2.7 and haven't tried upgrading it yet, what version of Python are you using?

It was written so I could get some experience with GNURadio Python blocks, not as a released product, hence the lack of documentation.

geelongmicrosoldering commented 2 years ago

Have a look at https://github.com/DanielO/multimon-ng/blob/master/example/multipager.py

I only just noticed this today. Copied the script, installed some dependencies, got it working straight away.

Love your work!

That saves me so much time. Now just need to play with your script to block numeric pages, the channels i am not interested in etc.

I asked for 4 or 5 channels, you gave me "all the channels".

Thanks a bunch. If we ever meet, I will definitely find you a puppy

geelongmicrosoldering commented 2 years ago

Have a look at https://github.com/DanielO/multimon-ng/blob/master/example/multipager.py

How do I take advantage of that? I tried firing it up on my system and got an error about a missing module. I poked about and couldn't find any documentation.

just install the missing modules. I already had gnuradio, python2.7.

I just had to replace /usr/local/bin/ with /usr/bin/ in a few places, and install python-daemon and trollius with pip: pip install trollius pip install python-daemon

DanielO commented 2 years ago

Great, glad it works. It does "all channels" because that's just easier but you could disable some with some more hacking. Also pretty easy to filter them out in the DB.

geelongmicrosoldering commented 2 years ago

Great, glad it works. It does "all channels" because that's just easier but you could disable some with some more hacking. Also pretty easy to filter them out in the DB.

oh i wasn't complaining, i was just showing you went above and beyond :)

ill have a play, might do an array of block channels to iterate or something. not really sure how i will approach it yet.

if i do anything cool that may be useful for anyone ill fork it or post here

geelongmicrosoldering commented 2 years ago

Ok, I've done this in a really hacky way.. I'd like to redo it oneday, but better...

I wont fork it because I've bastardized it, and its somewhat embarrasing. However, when people do things and then never present the result its always frustrating for the next guy. So, here's what i ended up with:

Usage: -U MyServer or --pmuuid MyServer (UUID for sending messages to Pagermon Instance (Optional, If you don't provide it, this will be the devices MAC))

Example Usage: ./multipager.py -a rtl -f 148762500 -c 12 -r 65 -b blocklist.txt -u "http://127.0.0.1/api/messages" -k ABCD1234 -S sources.txt -U MyServer

Or in my case (because I expect it to break now that i've touched it): cd ~/multipager && while true; do ./multipager.py -a rtl -f 148762500 -c 12 -r 65 -b blocklist.txt -u "http://127.0.0.1/api/messages" -k ABCD1234 -S sources.txt -U MyServer;sleep 5;done (set cwd to wherever script is, run it, and then do it again indefinitely any time it crashes after a 5 second delay

This seems to be working for me in intial testing, but i'll run it for a while to be sure. If I ever get around to redoing it, but better, I'll fork your one.

Thanks for your code @DanielO !!

I'll leave this open for a little while, then close

New Script: multipager_new.py.txt

(edited this a few times because i suck at code block formatting)

geelongmicrosoldering commented 2 years ago

Closing because i was able to get this working successfully, although it could use some work

bertonumber1 commented 2 years ago

Ok, I've done this in a really hacky way.. I'd like to redo it oneday, but better...

I wont fork it because I've bastardized it, and its somewhat embarrasing. However, when people do things and then never present the result its always frustrating for the next guy. So, here's what i ended up with:

Hi there.,

I stumbled across this and don't know how to proceed. My Linux skills are basic. I am using a Raspberry pi 3b+ and have the pager frequency 153.050 decoding nicely.

I would like to add 147.8, 153.025, 153.350 to be simultaneously decoded by multimon.

I installed the pip dependencies mentioned but don't know what to do with the script or how to edit it/ run it.

Could you help me out please? I'm really stuck.

Thanks in advance.

Kind Regards

DanielO commented 2 years ago

You can't add frequencies to it per se - you set a centre frequency and a number of evenly spaced channels and it decodes those channels in parallel.

Unfortunately it's more of a proof of concept rather than a completed application so it's not very user friendly.

bertonumber1 commented 2 years ago

Hi Daniel thanks for your response.

OK I understand. I had been playing with RTL_airband on the hope I could get it to work. I may go back to Openear/PDW on windows pc and just feed multiple pipes from SDRUno.

The idea of multimon-ng and the rpi / dongle was the fact it was compact and not too bulky, it could also be left on without having to worry about a large pc.

I will keep searching around for another way to achieve this, again thanks for your response

dm-o commented 1 year ago

Hey guys, is it somehow possible to use the multipager option together with boswatch https://github.com/Schrolli91/BOSWatch by Schrolli91?

Right now I use Boswatch and have 2 RTL-Dongles running. I really would like to add more, but my raspberry does not handle more than 2. And it would really be nice to free up one of the rtl-dongles for other projects. multipager would be a perfect solution for this.

geelongmicrosoldering commented 1 year ago

Hey guys, is it somehow possible to use the multipager option together with boswatch https://github.com/Schrolli91/BOSWatch by Schrolli91?

My German is rusty, but i think i got the gist of how BOSWatch works. You probably could, but it doesn't look like doing so would be very user friendly, given how the script works.

I feel like pagermon would be a better fit if you are primarily decoding pocsag/flex/multimon-ng supported protocols. The modifications i wrote above will feed a pagermon server directly. You can monitor a bunch of adjacent channels with 1 rtl-sdr. It also uses multimon-ng to decode, much like BOSWatch.

The issue you may run into, and it looks like someone above would have had, is that the channels have to be adjacent. You can block out ones you arent using, but if they are 5mhz apart, its not going to be achievable with an cheap rtl-sdr. So it really depends on the 2 frequencies you wish to monitor, how far apart they are, and if the space between them is divisible by the channel bandwidth (12.5?25khz?)

It will take some time to get working. Youll probably have to install some dependencies, mess around with different python versions, or change some source code to suit your needs. But once its working, it can take the place of 12 seperate dongles/antennas, so its worth persisting with.

If you had a wider bandwidth SDR, you could probably monitor a huge number of channels. Your only limit is hardware/resources.

dm-o commented 1 year ago

Thank you for your informations. I will have a look at pagermon. The Main goals are decoding the messages and forward them to an alarm-server which than alarms via push messages.

The frequencies are in a range of 3,13MHz from deepest to highest frequency. Two of them are 0,24MHz apart - so these two should be fine with any SDR.

I have several noelec-RTL-SDR, some NEW-GEN-RTL-Dongles and an Airspy-HF+ Right now a Raspberry 3b takes both SDRs. I would get a Pi5 with 8 GB RAM wich could be powerful enaugh. Or I can setup an Intel PC with an older i5 - quadcore.

geelongmicrosoldering commented 1 year ago

The frequencies are in a range of 3,13MHz from deepest to highest frequency. Two of them are 0,24MHz apart - so these two should be fine with any SDR.

It sounds like both of those things will be an issue. 10mhz apart means a single sdr would need more than 10mhz bandwidth, so you would have to use multiple sdrs

0.24mhz might be within the scope of a single sdr, but its not an evenly spaced channel arrangement. If there were 0.225/0.25mhz apart it would be ok, but if you used this script with a centre frequency right between the two 0.24mhz channels, both channels would be misaligned. It may still work, but it might not work very well