EliasOenal / multimon-ng

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

FMSFSK #26

Closed rene-pasemann closed 3 years ago

rene-pasemann commented 9 years ago

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

EliasOenal commented 9 years ago

Could you please attach a sample to test against? The FMSFSK decoder was contributed and I didn't have the opportunity to test it so far. I probably won't find the time to fix the problem, but having an example to reproduce the issue could help those who are interested in working on it.

digitalsi commented 9 years ago

Hi, here is a decoded sample: FMS: 7172822a0000 (6=Feuerwehr c=Saarland Ort 0xe5=229 FZG 10228 Status 2=Bereit Wache 0=FZG->LST 2=III(mit NA,ohneSIGNAL) ) CRC INCORRECT FMS: 9e404a930000 (0=UNKNOWN 4=Berlin Ort 0xfe=254 FZG 39104 Status 0=Notfall 0=FZG->LST 0=I (ohneNA,ohneSIGNAL) ) CRC INCORRECT FMS: 0b53e3570000 (6=Feuerwehr 4=Berlin Ort 0xa3=163 FZG 75314 Status 3=Einsatz Ab 0=FZG->LST 2=III(mit NA,ohneSIGNAL) ) CRC correct FMS: c7059cd00000 (8=ASB d=Bayern 2 Ort 0x72=114 FZG 013129 Status 5=Fahre Wache 1=LST->FZG 0=I (ohneNA,ohneSIGNAL) ) CRC INCORRECT FMS: 4082e8c10000 (6=Feuerwehr d=Bayern 2 Ort 0x68=104 FZG 112814 Status 2=Bereit Wache 0=FZG->LST 0=I (ohneNA,ohneSIGNAL) ) CRC INCORRECT FMS: 4ee88c840000 (0=UNKNOWN a=Rheinland-Pfalz Ort 0x5c=092 FZG 48128 Status 8=Am TranspZiel 0=FZG->LST 1=II (ohneNA,mit SIGNAL) ) CRC INCORRECT FMS: 4ee88c840000 (0=UNKNOWN a=Rheinland-Pfalz Ort 0x5e=094 FZG 48128 Status 8=Am TranspZiel 0=FZG->LST 1=II (ohneNA,mit SIGNAL) ) CRC correct AFTER SWAPPING ONE BIT FMS: 13b353190000 (3=BKA 2=Baden-Wurtemberg Ort 0x5c=092 FZG 9135 Status 3=Einsatz Ab 0=FZG->LST 2=III(mit NA,ohneSIGNAL) ) CRC INCORRECT FMS: a322026f0000 (4=KatS 8=Niedersachsen Ort 0x9c=156 FZG 15620 Status 2=Bereit Wache 0=FZG->LST 0=I (ohneNA,ohneSIGNAL) ) CRC INCORRECT FMS: 9a8d20f10000 (d=Rettungsdienst 0=Sachsen Ort 0x21=033 FZG 11502 Status d=KurzTXT D 1=LST->FZG 1=II (ohneNA,mit SIGNAL) ) CRC INCORRECT FMS: a46d7c270000 (8=ASB 0=Sachsen Ort 0x93=147 FZG 72127 Status d=KurzTXT D 1=LST->FZG 1=II (ohneNA,mit SIGNAL) ) CRC INCORRECT FMS: 841454960000 (8=ASB 9=Nordrhein-Wesfal Ort 0x79=121 FZG 6945 Status 4=Kommen Draht 1=LST->FZG 2=III(mit NA,ohneSIGNAL) ) CRC INCORRECT FMS: 841454960000 (8=ASB 8=Niedersachsen Ort 0x79=121 FZG 6945 Status 4=Kommen Draht 1=LST->FZG 2=III(mit NA,ohneSIGNAL) ) CRC correct AFTER SWAPPING ONE BIT FMS: 7540d0040000 (c=DLRG 1=Bund Ort 0x2e=046 FZG 40013 Status 0=Notfall 0=FZG->LST 0=I (ohneNA,ohneSIGNAL) ) CRC INCORRECT FMS: fb1a87900000 (a=Johanniter 8=Niedersachsen Ort 0x97=151 FZG 0978 Status a=Vorbertg Folge 0=FZG->LST 3=IV (mit NA,mit SIGNAL) ) CRC INCORRECT FMS: c34029500000 (d=Rettungsdienst 8=Niedersachsen Ort 0x1b=027 FZG 0592 Status 0=Notfall 0=FZG->LST 0=I (ohneNA,ohneSIGNAL) ) CRC INCORRECT FMS: dc2388d00000 (c=DLRG e=Sachsen-Anhalt Ort 0x45=069 FZG 01388 Status 3=Einsatz Ab 0=FZG->LST 0=I (ohneNA,ohneSIGNAL) ) CRC INCORRECT FMS: e218b0f10000 (0=UNKNOWN 0=Sachsen Ort 0x9e=158 FZG 115011 Status 8=Am TranspZiel 0=FZG->LST 3=IV (mit NA,mit SIGNAL) ) CRC INCORRECT FMS: 2390c5330000 (8=ASB d=Bayern 2 Ort 0x6c=108 FZG 33512 Status 0=Notfall 0=FZG->LST 2=III(mit NA,ohneSIGNAL) ) CRC INCORRECT FMS: 2390c5330000 (a=Johanniter d=Bayern 2 Ort 0x6c=108 FZG 33512 Status 0=Notfall 0=FZG->LST 2=III(mit NA,ohneSIGNAL) ) CRC correct AFTER SWAPPING ONE BIT FMS: e04a4c4e0000 (4=KatS a=Rheinland-Pfalz Ort 0xd8=216 FZG 144124 Status a=Vorbertg Folge 0=FZG->LST 1=II (ohneNA,mit SIGNAL) ) CRC INCORRECT FMS: d98588100000 (e=ZivilSchutz 3=Bayern 1 Ort 0x85=133 FZG 0188 Status 5=Fahre Wache 1=LST->FZG 0=I (ohneNA,ohneSIGNAL) ) CRC INCORRECT FMS: b4d40e310000 (9=Rotkreuz e=Sachsen-Anhalt Ort 0x45=069 FZG 13140 Status 4=Kommen Draht 1=LST->FZG 2=III(mit NA,ohneSIGNAL) ) CRC INCORRECT FMS: d4bc2f180000 (0=UNKNOWN 4=Berlin Ort 0x5f=095 FZG 81152 Status c=KurzTXT C 1=LST->FZG 3=IV (mit NA,mit SIGNAL) ) CRC INCORRECT FMS: a050db970000 (c=DLRG a=Rheinland-Pfalz Ort 0x 8=008 FZG 791113 Status 0=Notfall 0=FZG->LST 2=III(mit NA,ohneSIGNAL) ) CRC INCORRECT FMS: 907353110000 (2=BGS 7=Hessen Ort 0x49=073 FZG 1135 Status 3=Einsatz Ab 0=FZG->LST 2=III(mit NA,ohneSIGNAL) ) CRC INCORRECT FMS: 0b013aba0000 (0=UNKNOWN 8=Niedersachsen Ort 0x 5=005 FZG 1011103 Status 1=Einbuchen 0=FZG->LST 0=I (ohneNA,ohneSIGNAL) ) CRC INCORRECT FMS: c720500e0000 (c=DLRG b=Schleswig-Holste Ort 0xeb=235 FZG 14005 Status 0=Notfall 0=FZG->LST 0=I (ohneNA,ohneSIGNAL) ) CRC INCORRECT FMS: 8d1e18190000 (8=ASB e=Sachsen-Anhalt Ort 0x5e=094 FZG 9181 Status e=KurzTXT E 1=LST->FZG 3=IV (mit NA,mit SIGNAL) ) CRC INCORRECT FMS: 02a1e4750000 (8=ASB 2=Baden-Wurtemberg Ort 0x9a=154 FZG 57414 Status 1=Einbuchen 0=FZG->LST 0=I (ohneNA,ohneSIGNAL) ) CRC INCORRECT FMS: 44a06c590000 (9=Rotkreuz d=Bayern 2 Ort 0x90=144 FZG 95126 Status 0=Notfall 0=FZG->LST 0=I (ohneNA,ohneSIGNAL) ) CRC INCORRECT

If you need a WAV recording of the stream - let me know.

bboxy commented 8 years ago

The field for FZG has 4 digits in hexadezimal that range from 0-f or 0-15 (not sure if digits > 9 are used though), thus numbers with more than 4 digits can happen. Also, it is not necessary, that a correct checksum guarantees a correct FMS. I would only trust that correct checksum if also the other data looks plausible, like the status is from your station/region and so on. When decoding random noise for a while the results look like what you provide here with sometimes a few false positives in it.

bboxy commented 8 years ago

@rene-pasemann The module in monitord is pretty much doing the same as in multimon, it uses the same algorithm and code, i just compared that a few days ago.

flothi commented 7 years ago

If it's still interesting this might be caused by the use of hexadecimal vehicle-id. I proposed a PR to fix it: #62

EliasOenal commented 6 years ago

Is this still an issue?

ZeroChaos- commented 4 years ago

This appears to be in use in my area. I enabled all the possible decoders and it's pulling a LOT of fms...

Short example included, note, I'm in the USA if it matters.

2020-03-26 15:35:47: FMS: cbec265ee796 (6=Feuerwehr         9=Nordrhein-Wesfal  Ort 0x7e=126    FZG e562    Status c=KurzTXT C      1=LST->FZG  1=II (ohneNA,mit SIGNAL)    ) CRC INCORRECT (2f)
2020-03-26 15:36:38: FMS: ac20fab6fdcc (c=DLRG              c=Saarland          Ort 0xdf=223    FZG 6baf    Status 0=Notfall        0=FZG->LST  0=I  (ohneNA,ohneSIGNAL)    ) CRC INCORRECT (30)
2020-03-26 15:39:34: FMS: 5207ad7505a9 (9=Rotkreuz          a=Rheinland-Pfalz   Ort 0x50=080    FZG 57da    Status 7=Lagemeldung    1=LST->FZG  0=I  (ohneNA,ohneSIGNAL)    ) CRC INCORRECT (8)
2020-03-26 15:39:36: FMS: 879dbcaa794b (b=Malteser          4=Berlin            Ort 0x97=151    FZG aacb    Status d=KurzTXT D      1=LST->FZG  3=IV (mit NA,mit SIGNAL)    ) CRC INCORRECT (1e)
2020-03-26 15:44:36: FMS: 6105e3436651 (1=POLIZEI           5=Bremen            Ort 0x66=102    FZG 343e    Status 5=Fahre Wache    1=LST->FZG  0=I  (ohneNA,ohneSIGNAL)    ) CRC INCORRECT (4)
2020-03-26 15:51:12: FMS: eebca967a54f (f=FernWirk          4=Berlin            Ort 0x5a=090    FZG 769a    Status c=KurzTXT C      1=LST->FZG  3=IV (mit NA,mit SIGNAL)    ) CRC INCORRECT (3a)
2020-03-26 15:51:12: FMS: eebca967a547 (7=THW               4=Berlin            Ort 0x5a=090    FZG 769a    Status c=KurzTXT C      1=LST->FZG  3=IV (mit NA,mit SIGNAL)    ) CRC correct AFTER SWAPPING ONE BIT
2020-03-26 15:57:52: FMS: a1bb2964bbc9 (9=Rotkreuz          c=Saarland          Ort 0xbb=187    FZG 4692    Status b=Beendig  Folge 0=FZG->LST  3=IV (mit NA,mit SIGNAL)    ) CRC INCORRECT (6)
2020-03-26 16:01:15: FMS: ece7ac3e2909 (9=Rotkreuz          0=Sachsen           Ort 0x92=146    FZG e3ca    Status 7=Lagemeldung    1=LST->FZG  0=I  (ohneNA,ohneSIGNAL)    ) CRC INCORRECT (33)
2020-03-26 16:10:36: FMS: 251cf48e05d3 (3=BKA               d=Bayern 2          Ort 0x50=080    FZG e84f    Status c=KurzTXT C      1=LST->FZG  3=IV (mit NA,mit SIGNAL)    ) CRC INCORRECT (14)
2020-03-26 16:15:28: FMS: 8ace5a866e58 (8=ASB               5=Bremen            Ort 0xe6=230    FZG 68a5    Status e=KurzTXT E      1=LST->FZG  1=II (ohneNA,mit SIGNAL)    ) CRC INCORRECT (2b)
dj7lc commented 3 years ago

multimon-ng is a rolling correlation decoder. It works by pattern matching, it knows what segments of valid packets should look like and tries to find them in the audio signal. This also means that it tries to find packets in static noise. In all provided examples, the crc is wrong. Whatever you are decoding, it is probably not FMS, but the decoder desperately tries to find valid packets. I have attached a wavefile (zipped because git does not allow wave upload) that contains four messages with valid CRC, the payload is1234567890; 0123456789; 9012345678; 8901234567.

fms.zip