EliasOenal / multimon-ng

GNU General Public License v2.0
919 stars 206 forks source link

FLEX decode and rtl_fm Settings?????????????? #115

Open ScanCaster opened 5 years ago

ScanCaster commented 5 years ago

I use multimon-ng for POCSAG1200 decoding, works great, runs in the background and does what I want...

I need to add a FLEX monitor... so I've got the the latest FLEX version (sans the 07/18 update which is nothing but a non code license update)....

I've tried every setting I can think of to get Flex decoding as 100% as POCSAG... and no joy.

Same PC (not a PI!) Dual core D525TUN.. it runs sdrtrunk to decode P25 CC's just fine... PPM set based on sdrtrunks value... and POCSAG1200 works great! Will decode P25 audio fine...

So Flex shouldn't bet that big of a jump.......but....

Flex, is sporadic at best...

I've tried my external antennas (tuned), inside antennas direct on the generic dongles, I've tried RTL-SDR Blog V3 0-1PPM dongles... 100% the same results on 2 generic asian and the RTL_SDR V3's...sporadic at best decoding.....

What is the secret recipe to get RTL_FM to spit out data that multimon-ng will like for Flex??????

I used -A fast, -A lut, -E dc -F 0 -o 4

I lowered gain, upped gain, even let it use auto gain....no -g option.. and same sporadic at best...

Using the antenna connected to it right now, for the POCSAG1200 is the WRONG BAND, and it works 100% -A lut -o 4 -p 50 -g 49.6 100% decodes that run on another EXACT SAME PC.... tuned to a external antenna, correct band.... with generic asian dongles 50-70ppm error...

Monitor on a radio, and I can hear the Flex signal... it comes in strong.. external and antenna inside.....

This is a Rafael Micro R820T tuner, not the FIC's... I've had no success using the batch of FIC's I got by mistake (seller issues...) I use them for non decode setups... and one in EAS/SAME mode decode which does seem to work....

I've looked at various posts here in issues and searches to get their rtl_fm options, and tried pretty much all of them... and still just sporadic at best... I get what are "test page " pages pretty regularly, but thats it... the rest is nothing but errors, and garbled half pages, missing pages.... which points to similar results with PPM issues on POCSAG.. I've went up and down from the 50PPM sdtrunk uses in decimal amounts, and it really doesn't change much...same errors errors and more errors?

So what is the magic rtl_fm settings for flex????? These are 929MHz GS paging where as the POCSAG is my own private network on VHF....

I tried the samples listed in an issues here: https://onedrive.live.com/?id=CE93060699F49335%21147&cid=CE93060699F49335

Those seem to work.. I am not sure I know what to compare it to for accuracy.... but multimon decodes them....

I've run rtl_test -p and used that PPM and that differs WIDELY from what works in sdrtrunk and with POCSAG decding. Failure... Upped it from that to the one that works in POCSAG mode and sdrtrunk, still nothing.....

So after pretty much a days worth of futzing with this up down, shake it all around......

Any one have hints on WORKING Flex decoding with multimon-ng ????

below is pretty much what I get with the occasional garbled page that does some how decode.... LEX: Phase F Fixed 1 errors @ 0x01000000 (0x177e773f -> 0x167e773f) FLEX: FrameInfoWord: cycleno=03 frameno=119 fix3=0x3c time=15:43 FLEX: State: SYNC2 FLEX: State: DATA FLEX: Timeout FLEX: State: SYNC1 FLEX: Locked FLEX: SyncInfoWord: sync_code=0xb068 baud=1600 levels=4 polarity=POS zero=0.076685 envelope=0.211989 symrate=1602.018163 FLEX: State: FIW FLEX: FrameInfoWord: cycleno=03 frameno=119 fix3=0x00 time=15:43 FLEX: State: SYNC2 FLEX: State: DATA FLEX: Timeout FLEX: State: SYNC1 FLEX: Locked FLEX: SyncInfoWord: sync_code=0xb068 baud=1600 levels=4 polarity=POS zero=0.055916 envelope=0.213103 symrate=1599.705882 FLEX: State: FIW FLEX: FrameInfoWord: cycleno=03 frameno=120 fix3=0x00 time=15:45 FLEX: State: SYNC2 FLEX: State: DATA FLEX: Phase A Fixed 1 errors @ 0x00000001 (0x46f529c4 -> 0x46f529c5) FLEX: Phase A Fixed 2 errors @ 0x02080000 (0x79de2945 -> 0x7bd62945) FLEX: Phase A Fixed 2 errors @ 0x00400001 (0x562d9ba0 -> 0x566d9ba1) FLEX: Phase A Data corruption - Unable to fix errors. FLEX: Garbled message at block 42 FLEX: Phase B Fixed 2 errors @ 0x00200080 (0x6d60048b -> 0x6d40040b) FLEX: Phase B Fixed 1 errors @ 0x00080000 (0x00080000 -> 0x00000000) FLEX: Phase B Data corruption - Unable to fix errors. FLEX: Garbled message at block 2 FLEX: State: SYNC1 FLEX: SyncInfoWord: sync_code=0xdea0 baud=3200 levels=4 polarity=NEG zero=0.010384 envelope=0.278784 symrate=1596.390817 FLEX: State: FIW FLEX: Phase F Fixed 1 errors @ 0x00000020 (0x71f67a14 -> 0x71f67a34) FLEX: FrameInfoWord: cycleno=03 frameno=122 fix3=0x2c time=15:48 FLEX: State: SYNC2 FLEX: State: DATA FLEX: Phase A Data corruption - Unable to fix errors. FLEX: Garbled message at block 1 FLEX: Phase B Fixed 1 errors @ 0x00002000 (0x00002000 -> 0x00000000) FLEX: Phase B Data corruption - Unable to fix errors. FLEX: Garbled message at block 1 FLEX: Phase C Data corruption - Unable to fix errors. FLEX: Garbled message at block 0 FLEX: Phase D Data corruption - Unable to fix errors. FLEX: Garbled message at block 0 FLEX: State: SYNC1 FLEX: SyncInfoWord: sync_code=0xdaa0 baud=3200 levels=4 polarity=NEG zero=0.028525 envelope=0.278633 symrate=2100.604505 FLEX: State: FIW FLEX: Phase F Fixed 2 errors @ 0x00000801 (0x63df7b1d -> 0x63df731c) FLEX: Bad Checksum 0x7 FLEX: State: SYNC1 FLEX: SyncInfoWord: sync_code=0xdea0 baud=3200 levels=4 polarity=NEG zero=0.011530 envelope=0.277801 symrate=1973.960374 FLEX: State: FIW FLEX: Phase F Fixed 1 errors @ 0x00000200 (0x225c7e3c -> 0x225c7c3c) FLEX: FrameInfoWord: cycleno=03 frameno=124 fix3=0x38 time=15:52 FLEX: State: SYNC2 FLEX: State: DATA FLEX: Timeout FLEX: State: SYNC1 FLEX: Locked FLEX: SyncInfoWord: sync_code=0xdea0 baud=3200 levels=4 polarity=NEG zero=-0.000052 envelope=0.272021 symrate=1598.460775 FLEX: State: FIW FLEX: FrameInfoWord: cycleno=03 frameno=125 fix3=0x38 time=15:54 FLEX: State: SYNC2 FLEX: State: DATA FLEX: Timeout FLEX: State: SYNC1 FLEX: Locked FLEX: SyncInfoWord: sync_code=0xdea0 baud=3200 levels=4 polarity=NEG zero=-0.009385 envelope=0.272017 symrate=1593.712871 FLEX: State: FIW FLEX: Phase F Fixed 1 errors @ 0x10000000 (0x7fdc7e3a -> 0x6fdc7e3a) FLEX: FrameInfoWord: cycleno=03 frameno=126 fix3=0x38 time=15:56 FLEX: State: SYNC2 FLEX: State: DATA FLEX: Timeout FLEX: State: SYNC1 FLEX: Locked FLEX: Timeout FLEX: Locked FLEX: Timeout FLEX: Locked FLEX: SyncInfoWord: sync_code=0xdea0 baud=3200 levels=4 polarity=NEG zero=0.047657 envelope=0.271265 symrate=1602.925532 FLEX: State: FIW FLEX: FrameInfoWord: cycleno=04 frameno=006 fix3=0x3c time=16:11 FLEX: State: SYNC2 FLEX: State: DATA FLEX: Timeout FLEX: State: SYNC1 FLEX: Locked FLEX: Timeout FLEX: Locked FLEX: SyncInfoWord: sync_code=0xdea0 baud=3200 levels=4 polarity=NEG zero=0.055968 envelope=0.269750 symrate=1596.875000 FLEX: State: FIW FLEX: Phase F Fixed 1 errors @ 0x00000004 (0x42be0840 -> 0x42be0844) FLEX: FrameInfoWord: cycleno=04 frameno=008 fix3=0x3c time=16:15 FLEX: State: SYNC2 FLEX: State: DATA FLEX: Phase A Data corruption - Unable to fix errors. FLEX: Garbled message at block 1 FLEX: Phase B Fixed 1 errors @ 0x00000002 (0x00000002 -> 0x00000000) FLEX: Phase B Fixed 2 errors @ 0x00000480 (0x57bc2ad5 -> 0x57bc2e55) FLEX: Phase B Data corruption - Unable to fix errors. FLEX: Garbled message at block 4 FLEX: Phase C Fixed 2 errors @ 0x01000010 (0x593fff91 -> 0x583fff81) FLEX: Phase C Data corruption - Unable to fix errors. FLEX: Garbled message at block 2 FLEX: Phase D Data corruption - Unable to fix errors. FLEX: Garbled message at block 0 FLEX: State: SYNC1 FLEX: SyncInfoWord: sync_code=0xdea0 baud=3200 levels=4 polarity=NEG zero=0.032044 envelope=0.272203 symrate=3086.927109 FLEX: State: FIW FLEX: FrameInfoWord: cycleno=04 frameno=009 fix3=0x3c time=16:16 FLEX: State: SYNC2 FLEX: State: DATA FLEX: Phase A Data corruption - Unable to fix errors. FLEX: Garbled message at block 0 FLEX: Phase B Fixed 1 errors @ 0x00000800 (0x00000800 -> 0x00000000) FLEX: Phase B Fixed 2 errors @ 0x00000048 (0x58a0096a -> 0x58a00922) FLEX: Phase B Fixed 2 errors @ 0x00800002 (0x54328290 -> 0x54b28292) FLEX: Phase B Data corruption - Unable to fix errors. FLEX: Garbled message at block 4 FLEX: Phase C Fixed 1 errors @ 0x00000080 (0x4bec6a97 -> 0x4bec6a17) FLEX: Phase C Fixed 1 errors @ 0x00000004 (0x583fff85 -> 0x583fff81) FLEX: Phase C Fixed 1 errors @ 0x00010000 (0x2ec982d0 -> 0x2ec882d0) FLEX: Phase C Fixed 1 errors @ 0x00000800 (0x24000a35 -> 0x24000235) FLEX: Phase C Fixed 1 errors @ 0x00000010 (0x5e397ad7 -> 0x5e397ac7) FLEX: Phase C Fixed 2 errors @ 0x00200004 (0x66eeba77 -> 0x66ceba73) FLEX: Phase C Fixed 2 errors @ 0x00280000 (0x7ea00625 -> 0x7e880625) FLEX: Phase C Fixed 2 errors @ 0x00000012 (0x2dde5073 -> 0x2dde5061) FLEX: Phase C Data corruption - Unable to fix errors. FLEX: Garbled message at block 9 FLEX: Phase D Fixed 2 errors @ 0x00009000 (0x0a204a94 -> 0x0a20da94) FLEX: Phase D Fixed 1 errors @ 0x40000000 (0x183fff81 -> 0x583fff81) FLEX: Phase D Fixed 1 errors @ 0x04000000 (0x20000235 -> 0x24000235) FLEX: Phase D Data corruption - Unable to fix errors. FLEX: Garbled message at block 4 FLEX: State: SYNC1 FLEX: Timeout FLEX: Locked FLEX: SyncInfoWord: sync_code=0xdea0 baud=3200 levels=4 polarity=NEG zero=0.023369 envelope=0.279507 symrate=1594.528585 FLEX: State: FIW FLEX: Phase F Fixed 1 errors @ 0x10000000 (0x7ebe0c40 -> 0x6ebe0c40) FLEX: FrameInfoWord: cycleno=04 frameno=012 fix3=0x3c time=16:22 FLEX: State: SYNC2 FLEX: State: DATA FLEX: Phase A Fixed 2 errors @ 0x00600000 (0x0800140b -> 0x0860140b) FLEX: Phase A Data corruption - Unable to fix errors. FLEX: Garbled message at block 1 FLEX: Phase B Fixed 2 errors @ 0x00802000 (0x00802000 -> 0x00000000) FLEX: Phase B Fixed 2 errors @ 0x00000210 (0x78000000 -> 0x78000210) FLEX: Phase B Data corruption - Unable to fix errors. FLEX: Garbled message at block 2 FLEX: Phase C Data corruption - Unable to fix errors. FLEX: Garbled message at block 0 FLEX: Phase D Fixed 2 errors @ 0x00000030 (0x00000030 -> 0x00000000) FLEX: Phase D Fixed 2 errors @ 0x00100004 (0x337af7ab -> 0x336af7af) FLEX: Phase D Fixed 2 errors @ 0x01010000 (0x2b222b9e -> 0x2a232b9e) FLEX: Phase D Fixed 1 errors @ 0x01000000 (0x01000000 -> 0x00000000) FLEX: Phase D Fixed 2 errors @ 0x08000100 (0x3ff5362b -> 0x37f5372b) FLEX: Phase D Fixed 2 errors @ 0x00005000 (0x11000004 -> 0x11005004) FLEX: Phase D Fixed 1 errors @ 0x00100000 (0x00100000 -> 0x00000000) FLEX: Phase D Fixed 2 errors @ 0x00a00000 (0x00a00000 -> 0x00000000) FLEX: Phase D Data corruption - Unable to fix errors. FLEX: Garbled message at block 9 FLEX: State: SYNC1 FLEX: SyncInfoWord: sync_code=0x9ea0 baud=3200 levels=4 polarity=NEG zero=0.000125 envelope=0.278918 symrate=2560.212151 FLEX: State: FIW FLEX: Phase F Fixed 1 errors @ 0x00000200 (0x321e0f4f -> 0x321e0d4f) FLEX: FrameInfoWord: cycleno=04 frameno=013 fix3=0x3c time=16:24 FLEX: State: SYNC2 FLEX: State: DATA FLEX: Phase A Fixed 2 errors @ 0x10004000 (0x5ff269eb -> 0x4ff229eb) FLEX: Phase A Data corruption - Unable to fix errors. FLEX: Garbled message at block 1 FLEX: Phase B Fixed 2 errors @ 0x0000000a (0x50802000 -> 0x5080200a) FLEX: Phase B Data corruption - Unable to fix errors. FLEX: Garbled message at block 1 FLEX: Phase C Fixed 1 errors @ 0x00000040 (0x73e0083c -> 0x73e0087c) FLEX: Phase C Fixed 2 errors @ 0x04002000 (0x2caf22d1 -> 0x28af02d1) FLEX: Phase C Fixed 2 errors @ 0x0000000c (0x1ff01f4f -> 0x1ff01f43) FLEX: Phase C Fixed 2 errors @ 0x20001000 (0x27372bdf -> 0x07373bdf) FLEX: Phase C Fixed 2 errors @ 0x02000800 (0x56096dcd -> 0x540965cd) FLEX: Phase C Fixed 2 errors @ 0x22000000 (0x7ee00691 -> 0x5ce00691) FLEX: Phase C Data corruption - Unable to fix errors. FLEX: Garbled message at block 8 FLEX: Phase D Fixed 2 errors @ 0x00200200 (0x01403048 -> 0x01603248) FLEX: Phase D Fixed 2 errors @ 0x00001010 (0x017da148 -> 0x017db158) FLEX: Phase D Data corruption - Unable to fix errors. FLEX: Garbled message at block 2 FLEX: State: SYNC1 FLEX: SyncInfoWord: sync_code=0xb068 baud=1600 levels=4 polarity=POS zero=-0.042682 envelope=0.235873 symrate=2337.173232 FLEX: State: FIW FLEX: FrameInfoWord: cycleno=04 frameno=015 fix3=0x00 time=16:28 FLEX: State: SYNC2 FLEX: State: DATA FLEX: Timeout FLEX: State: SYNC1 FLEX: Locked FLEX: SyncInfoWord: sync_code=0xdea0 baud=3200 levels=4 polarity=POS zero=-0.197583 envelope=0.198227 symrate=1600.049702 FLEX: State: FIW FLEX: FrameInfoWord: cycleno=04 frameno=016 fix3=0x3c time=16:30 FLEX: State: SYNC2 FLEX: State: DATA FLEX: Phase A Data corruption - Unable to fix errors. FLEX: Garbled message at block 0 FLEX: Phase B Data corruption - Unable to fix errors. FLEX: Garbled message at block 0 FLEX: Phase C Fixed 1 errors @ 0x00004000 (0x00004000 -> 0x00000000) FLEX: Phase C Fixed 2 errors @ 0x04008000 (0x04008000 -> 0x00000000) FLEX: Phase C Fixed 1 errors @ 0x20000000 (0x20000000 -> 0x00000000) FLEX: Phase C Fixed 2 errors @ 0x00020200 (0x00020200 -> 0x00000000) FLEX: Phase C Fixed 2 errors @ 0x00800004 (0x00800004 -> 0x00000000) FLEX: Phase C Fixed 1 errors @ 0x00002000 (0x00002000 -> 0x00000000) FLEX: Phase C Data corruption - Unable to fix errors. FLEX: Garbled message at block 73 FLEX: Phase D Data corruption - Unable to fix errors. FLEX: Garbled message at block 0 FLEX: State: SYNC1 FLEX: SyncInfoWord: sync_code=0xcea1 baud=3200 levels=4 polarity=POS zero=-0.043730 envelope=0.273448 symrate=1895.543820 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: Timeout FLEX: Locked FLEX: Timeout FLEX: Locked FLEX: Timeout FLEX: Locked FLEX: SyncInfoWord: sync_code=0xdea0 baud=3200 levels=4 polarity=NEG zero=0.015440 envelope=0.269566 symrate=1595.292369 FLEX: State: FIW FLEX: FrameInfoWord: cycleno=04 frameno=029 fix3=0x38 time=16:54 FLEX: State: SYNC2 FLEX: State: DATA FLEX: Timeout FLEX: State: SYNC1 FLEX: Locked FLEX: SyncInfoWord: sync_code=0xdea0 baud=3200 l

Zanoroy commented 5 years ago

When I open it in a Audicity I can see the preamble but the data is very very fast there after the 3200 bps its possible that its not being split into Symbols correctly which is why the output is dumping a lot of "Data corruption - Unable to fix errors" errror.

I'll have a play in a week or so once I'm off my holidays and see if I can confirm the issue.

Cheers

rob0101 commented 5 years ago

Here's an example for calling rtf_fm with multimon-ng

rtl_fm -f 148812500 -s22050 | multimon-ng -a FLEX -f alpha -t raw -

148812500 is my local frequency of 148.8125MHz.

Make sure your SDR works in the frequency range you're listening to. Some have wider ranges than others.

ScanCaster commented 5 years ago

Here's an example for calling rtf_fm with multimon-ng

rtl_fm -f 148812500 -s22050 | multimon-ng -a FLEX -f alpha -t raw -

148812500 is my local frequency of 148.8125MHz.

Make sure your SDR works in the frequency range you're listening to. Some have wider ranges than others.

Receiving is not the issue.. SDR works for other protocols POCSAG1200, P25 PI 9600 CC, NBFM etc..

The issue is getting the right commands to rtl_fm

Your generic rtl_fm won't work even on my POCSAG1200 signals. Needs a PPM to start with the generic dongles. Example

tl_fm -d 1 -p 70 -g 49.6 -o 4 -A lut -s 22050 -M fm -f

That runs my POCSAG1200 instance which spits out nearly 99.99% perfect decodes, on VHF...

changing to FLEX with the above ie change from -a POCSAG1200 to -a FLEX, is nothing but the garbage I posted above. Its pretty characteristic of what I got when I first did the POCSAG1200 setup, until used an external antenna...AND had the PPM AND -A lut options in there... Which I've done and am using on this Flex setup. I use only commercial LMR antennas on everything.. most of its surplus of the same stuff that is on the actual systems in general...

Play with gain, up, down, shake it all around, going lower, it gets to the point it won't decode even the garbage till its up to what it needs, as it should. Thats expected behavior...

Maybe more higher end SDR's work better with Flex.. but for now I don't have some $1000+ SDR.. If I still had my Flex test seutp I'd just run a signal my self and futz, but I don't have that any more.

Surely some one has some of the generic asian dongles or a V3 dongle working with flex reliably... 6400 4 Level flex should not be an issue if it will decode P25 9600 CC's and P25 audio. Even a Pi3 will do that with OP25.. which I run on similar dongles, and setups using the same antenna inputs.

Same antenna gets a 700MHz P25 PII system 20 miles away... I am just right on the fringe of getting that with the omni... The yagi for 700Mhz is lower and pointed at another system right now. BUT OP25 chugs along at it with sporadic issues with CC data and voice decodes... The site closet to me for that is NIS yet.

So what are others using with rtl_fm to get good decodes on Flex???

Thanks.,

davidmckenzie commented 5 years ago

I use this for POCSAG: rtl_fm -d 0101 -E dc -F 0 -l 15 -A fast -f 148.5875M -s22050.

Have you checked that the same settings (gain, sample rate, frequency, etc.) all work in a visual SDR program like SDRSharp? Set it all up in there, tune until good, then compare the visual waterfall and the actual audio to a "known good" FLEX signal like here: https://www.sigidwiki.com/wiki/FLEX

Then use your tuned settings in rtl_fm, but instead of piping to multimon, send it audio output (either a file or speakers), and again compare the audio. Does it sound exactly the same? If the signal sounds exactly the same and you still don't get good decoding, then it might be a bug with multimon, otherwise it's a problem further up the chain.

Keep in mind that the PPM can vary greatly on the cheap dongles - it depends greatly on the heat of the dongle, and the frequency you're tuned to. Visually locating the signal in a waterfall after the unit has heated up a bit is the easiest way to confirm PPM offset.

rob0101 commented 5 years ago

I see good results from various cheap dongles on the SAGRN signal in South Australia. Our signal is FLEX 1600.

I have a cheap dongle right now inside a steel shed (cheap 6" antenna that came with it dangling outside). The outside temp is 38 celsius (100F).. The shed is in full sunlight and will be baking hot inside.

The Pi v1 cpu is at 54C and it's seeing 100% of the messages.

I've also run a Pi + cheap dongle inside a closed cupboard, inside my house.

I do find some dead-spots inside my house. These things won't work everywhere.

===

Update: we hit 47c in the shade here today (record for the area) and the Pi_1 + cheap dongle didn't miss a beat. Both were inside a steel shed. The temperature immediately around the Pi was 55c. The external temp of the Pi case was 59c, dongle case was 67c, the Pi cpu temp was 68.1c.

Until today I was working under the impression that heat ruins reception with the (cheap) dongles. I'm no longer convinced ambient temperature is a concern for me.

Zanoroy commented 3 years ago

@ScanCaster Could you please close this ticket now.

ScanCaster commented 3 years ago

Still waiting for something that resolves FLEX decoding using rtl_fm

Nothing has changed.... compiled on a new build, using a local 929MHz FLEX and decodes are still the same garbage, 99% garbage.

I've used various SDR's junky ones that have crappy PPM and the V3 ones which have a decent PPM -1 or -2 in most cases that I've got... AirSpy or HackRF lack any interface to rtl_fm or similar that I am aware to pipe to multimon-ng.

So if there is something that is air_fm or hack_fm that can pipe to multimon I am game to try... but FLEX decoding v. other stuff is not working with rtl_fm.

Zanoroy commented 3 years ago

@ScanCaster Ok, could you please record some raw audio for me to test with? Something you know contains at least a couple of messages and I can check what is happening.

ScanCaster commented 3 years ago

Sure how would you like that recorded???

Note: This is LINUX only on my end, so something that will take rtl_fm > whatever format you want?? the 22.05Khz sample rate I guess for multimon....

Zanoroy commented 3 years ago

Use what ever settings you are currently using with rtl_fm and pipe it to a file.

Disregard my last edit.. I miss read a previous post.

EliasOenal commented 3 years ago

So if there is something that is air_fm or hack_fm that can pipe to multimon I am game to try... but FLEX decoding v. other stuff is not working with rtl_fm.

I just had a quick Google search: rx_fm: https://github.com/rxseger/rx_tools demod: https://www.rtl-sdr.com/linux-command-line-based-doppler-correction-and-demodulation-tools/ fm_radio_rx: https://github.com/mossmann/hackrf/wiki/Getting-Started-with-HackRF-and-GNU-Radio MultiFM: https://github.com/pvachon/tsl-sdr

Zanoroy commented 3 years ago

Rtl_fm does work, but it's not the cleanest rtl receiver and the OP is trying to decode 4 level flex (looking at the supplied logs) 4 level flex needs a fairly clean signal to decode correctly plus the OP has the added stress of the high frequency. I have used a HackRF transceiver to pull 900 mhz reasonably well and pipe to multimon-ng using an early version of SDR and routing to software cables (which creates fake audio card interfaces that can be piped)

If the OP can get some raw audio out of Rtl_fm for me I can check the 4 level decoding and possibly help tune his system or if needed work on the demode_flex.c. Either way I need some real life recording or I cannot do anything.