From bba1df0cc1ed022befb9bb9527dfdca7f1060d1f Mon Sep 17 00:00:00 2001 From: josh Date: Mon, 3 Jun 2024 17:52:54 -0400 Subject: [PATCH] Fully working RX chain! --- .../RX/Meshtastic_EU_125KHz_RTLSDR.grc | 124 ++--- .../RX/Meshtastic_EU_250KHz_RTLSDR.grc | 310 ++++------- .../RX/Meshtastic_EU_62KHz_RTLSDR.grc | 62 +-- .../RX/Meshtastic_EU_allPresets_RTLSDR.grc | 496 +++++++----------- .../RX/Meshtastic_US_125KHz_RTLSDR.grc | 124 ++--- .../RX/Meshtastic_US_250KHz_RTLSDR.grc | 310 ++++------- .../RX/Meshtastic_US_62KHz_RTLSDR.grc | 62 +-- .../RX/Meshtastic_US_allPresets.grc | 496 +++++++----------- python scripts/meshtastic_gnuradio_decoder.py | 181 +++++++ 9 files changed, 917 insertions(+), 1248 deletions(-) create mode 100644 python scripts/meshtastic_gnuradio_decoder.py diff --git a/gnuradio scripts/RX/Meshtastic_EU_125KHz_RTLSDR.grc b/gnuradio scripts/RX/Meshtastic_EU_125KHz_RTLSDR.grc index a5ff40c..8d67a94 100644 --- a/gnuradio scripts/RX/Meshtastic_EU_125KHz_RTLSDR.grc +++ b/gnuradio scripts/RX/Meshtastic_EU_125KHz_RTLSDR.grc @@ -178,44 +178,6 @@ blocks: coordinate: [872, 8.0] rotation: 0 state: enabled -- name: blocks_tag_gate_0_3 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1488, 360.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_4 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1488, 544.0] - rotation: 0 - state: enabled - name: blocks_throttle2_0 id: blocks_throttle2 parameters: @@ -558,42 +520,6 @@ blocks: coordinate: [944, 568.0] rotation: 0 state: enabled -- name: network_tcp_sink_0_3 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: LongModerate - mode: '2' - port: '20005' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1656, 360.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_4 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: LongSlow - mode: '2' - port: '20006' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1656, 544.0] - rotation: 0 - state: enabled - name: note_0_0_0 id: note parameters: @@ -966,15 +892,57 @@ blocks: coordinate: [72, 284.0] rotation: 0 state: enabled +- name: zeromq_pub_sink_0_0_2 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20005 + affinity: '' + alias: '' + bind: 'True' + comment: LongModerate + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1496, 336.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_0 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20006 + affinity: '' + alias: '' + bind: 'True' + comment: LongSlow + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1488, 520.0] + rotation: 0 + state: enabled connections: -- [blocks_tag_gate_0_3, '0', network_tcp_sink_0_3, '0'] -- [blocks_tag_gate_0_4, '0', network_tcp_sink_0_4, '0'] - [blocks_throttle2_0, '0', freq_xlating_fir_filter_xxx_0_0, '0'] - [freq_xlating_fir_filter_xxx_0_0, '0', lora_sdr_frame_sync_0_3, '0'] - [freq_xlating_fir_filter_xxx_0_0, '0', lora_sdr_frame_sync_0_4, '0'] -- [lora_sdr_crc_verif_0_3, '0', blocks_tag_gate_0_3, '0'] -- [lora_sdr_crc_verif_0_4, '0', blocks_tag_gate_0_4, '0'] +- [lora_sdr_crc_verif_0_3, '0', zeromq_pub_sink_0_0_2, '0'] +- [lora_sdr_crc_verif_0_4, '0', zeromq_pub_sink_0_0_2_0, '0'] - [lora_sdr_deinterleaver_0_3, '0', lora_sdr_hamming_dec_0_3, '0'] - [lora_sdr_deinterleaver_0_4, '0', lora_sdr_hamming_dec_0_4, '0'] - [lora_sdr_dewhitening_0_3, '0', lora_sdr_crc_verif_0_3, '0'] diff --git a/gnuradio scripts/RX/Meshtastic_EU_250KHz_RTLSDR.grc b/gnuradio scripts/RX/Meshtastic_EU_250KHz_RTLSDR.grc index dda745e..18ded8b 100644 --- a/gnuradio scripts/RX/Meshtastic_EU_250KHz_RTLSDR.grc +++ b/gnuradio scripts/RX/Meshtastic_EU_250KHz_RTLSDR.grc @@ -178,101 +178,6 @@ blocks: coordinate: [880, 8.0] rotation: 0 state: enabled -- name: blocks_tag_gate_0 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1512, 288.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_0 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1512, 488.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_1 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1512, 688.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_2 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1512, 880.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_2_0 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1512, 1072.0] - rotation: 0 - state: enabled - name: blocks_throttle2_0 id: blocks_throttle2 parameters: @@ -1044,96 +949,6 @@ blocks: coordinate: [968, 1096.0] rotation: 0 state: enabled -- name: network_tcp_sink_0 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: ShortFast - mode: '2' - port: '20000' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1680, 288.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_0 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: ShortSlow - mode: '2' - port: '20001' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1680, 488.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_1 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: MediumFast - mode: '2' - port: '20002' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1680, 688.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_2 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: MediumSlow - mode: '2' - port: '20003' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1680, 880.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_2_0 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: LongFast - mode: '2' - port: '20004' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1680, 1072.0] - rotation: 0 - state: enabled - name: note_0_0_0 id: note parameters: @@ -1506,24 +1321,129 @@ blocks: coordinate: [72, 508.0] rotation: 0 state: enabled +- name: zeromq_pub_sink_0_0_2 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20000 + affinity: '' + alias: '' + bind: 'True' + comment: ShortFast + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1512, 264.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_0 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20001 + affinity: '' + alias: '' + bind: 'True' + comment: ShortSlow + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1512, 464.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_1 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20002 + affinity: '' + alias: '' + bind: 'True' + comment: MediumFast + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1512, 664.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_2 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20003 + affinity: '' + alias: '' + bind: 'True' + comment: MediumSlow + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1512, 856.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_3 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20004 + affinity: '' + alias: '' + bind: 'True' + comment: LongFast + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1512, 1048.0] + rotation: 0 + state: enabled connections: -- [blocks_tag_gate_0, '0', network_tcp_sink_0, '0'] -- [blocks_tag_gate_0_0, '0', network_tcp_sink_0_0, '0'] -- [blocks_tag_gate_0_1, '0', network_tcp_sink_0_1, '0'] -- [blocks_tag_gate_0_2, '0', network_tcp_sink_0_2, '0'] -- [blocks_tag_gate_0_2_0, '0', network_tcp_sink_0_2_0, '0'] - [blocks_throttle2_0, '0', freq_xlating_fir_filter_xxx_0, '0'] - [freq_xlating_fir_filter_xxx_0, '0', lora_sdr_frame_sync_0, '0'] - [freq_xlating_fir_filter_xxx_0, '0', lora_sdr_frame_sync_0_0, '0'] - [freq_xlating_fir_filter_xxx_0, '0', lora_sdr_frame_sync_0_1, '0'] - [freq_xlating_fir_filter_xxx_0, '0', lora_sdr_frame_sync_0_2, '0'] - [freq_xlating_fir_filter_xxx_0, '0', lora_sdr_frame_sync_0_2_0, '0'] -- [lora_sdr_crc_verif_0, '0', blocks_tag_gate_0, '0'] -- [lora_sdr_crc_verif_0_0, '0', blocks_tag_gate_0_0, '0'] -- [lora_sdr_crc_verif_0_1, '0', blocks_tag_gate_0_1, '0'] -- [lora_sdr_crc_verif_0_2, '0', blocks_tag_gate_0_2, '0'] -- [lora_sdr_crc_verif_0_2_0, '0', blocks_tag_gate_0_2_0, '0'] +- [lora_sdr_crc_verif_0, '0', zeromq_pub_sink_0_0_2, '0'] +- [lora_sdr_crc_verif_0_0, '0', zeromq_pub_sink_0_0_2_0, '0'] +- [lora_sdr_crc_verif_0_1, '0', zeromq_pub_sink_0_0_2_1, '0'] +- [lora_sdr_crc_verif_0_2, '0', zeromq_pub_sink_0_0_2_2, '0'] +- [lora_sdr_crc_verif_0_2_0, '0', zeromq_pub_sink_0_0_2_3, '0'] - [lora_sdr_deinterleaver_0, '0', lora_sdr_hamming_dec_0, '0'] - [lora_sdr_deinterleaver_0_0, '0', lora_sdr_hamming_dec_0_0, '0'] - [lora_sdr_deinterleaver_0_1, '0', lora_sdr_hamming_dec_0_1, '0'] diff --git a/gnuradio scripts/RX/Meshtastic_EU_62KHz_RTLSDR.grc b/gnuradio scripts/RX/Meshtastic_EU_62KHz_RTLSDR.grc index 764701e..aa73feb 100644 --- a/gnuradio scripts/RX/Meshtastic_EU_62KHz_RTLSDR.grc +++ b/gnuradio scripts/RX/Meshtastic_EU_62KHz_RTLSDR.grc @@ -178,25 +178,6 @@ blocks: coordinate: [864, 8.0] rotation: 0 state: enabled -- name: blocks_tag_gate_0_4_0 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1464, 456.0] - rotation: 0 - state: enabled - name: blocks_throttle2_0 id: blocks_throttle2 parameters: @@ -396,24 +377,6 @@ blocks: coordinate: [920, 480.0] rotation: 0 state: enabled -- name: network_tcp_sink_0_4_0 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: VeryLongSlow - mode: '2' - port: '20007' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1632, 456.0] - rotation: 0 - state: enabled - name: note_0_0_0 id: note parameters: @@ -786,12 +749,33 @@ blocks: coordinate: [64, 276.0] rotation: 0 state: enabled +- name: zeromq_pub_sink_0_0_2 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20007 + affinity: '' + alias: '' + bind: 'True' + comment: VeryLongSlow + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1464, 432.0] + rotation: 0 + state: enabled connections: -- [blocks_tag_gate_0_4_0, '0', network_tcp_sink_0_4_0, '0'] - [blocks_throttle2_0, '0', freq_xlating_fir_filter_xxx_0_0_0, '0'] - [freq_xlating_fir_filter_xxx_0_0_0, '0', lora_sdr_frame_sync_0_4_0, '0'] -- [lora_sdr_crc_verif_0_4_0, '0', blocks_tag_gate_0_4_0, '0'] +- [lora_sdr_crc_verif_0_4_0, '0', zeromq_pub_sink_0_0_2, '0'] - [lora_sdr_deinterleaver_0_4_0, '0', lora_sdr_hamming_dec_0_4_0, '0'] - [lora_sdr_dewhitening_0_4_0, '0', lora_sdr_crc_verif_0_4_0, '0'] - [lora_sdr_fft_demod_0_4_0, '0', lora_sdr_gray_mapping_0_4_0, '0'] diff --git a/gnuradio scripts/RX/Meshtastic_EU_allPresets_RTLSDR.grc b/gnuradio scripts/RX/Meshtastic_EU_allPresets_RTLSDR.grc index 964a89c..55e3c1f 100644 --- a/gnuradio scripts/RX/Meshtastic_EU_allPresets_RTLSDR.grc +++ b/gnuradio scripts/RX/Meshtastic_EU_allPresets_RTLSDR.grc @@ -290,158 +290,6 @@ blocks: coordinate: [928, 80.0] rotation: 0 state: enabled -- name: blocks_tag_gate_0 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1440, 464.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_0 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1440, 664.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_1 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1440, 864.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_2 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1440, 1056.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_2_0 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1440, 1248.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_3 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1440, 1440.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_4 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1440, 1624.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_4_0 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1440, 1808.0] - rotation: 0 - state: enabled - name: blocks_throttle2_0 id: blocks_throttle2 parameters: @@ -1686,150 +1534,6 @@ blocks: coordinate: [896, 1832.0] rotation: 0 state: enabled -- name: network_tcp_sink_0 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: ShortFast - mode: '2' - port: '20000' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1608, 464.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_0 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: ShortSlow - mode: '2' - port: '20001' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1608, 664.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_1 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: MediumFast - mode: '2' - port: '20002' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1608, 864.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_2 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: MediumSlow - mode: '2' - port: '20003' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1608, 1056.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_2_0 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: LongFast - mode: '2' - port: '20004' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1608, 1248.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_3 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: LongModerate - mode: '2' - port: '20005' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1608, 1440.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_4 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: LongSlow - mode: '2' - port: '20006' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1608, 1624.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_4_0 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: VeryLongSlow - mode: '2' - port: '20007' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1608, 1808.0] - rotation: 0 - state: enabled - name: note_0_0 id: note parameters: @@ -1887,16 +1591,184 @@ blocks: coordinate: [32, 360.0] rotation: 0 state: enabled +- name: zeromq_pub_sink_0_0_2_0 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20000 + affinity: '' + alias: '' + bind: 'True' + comment: ShortFast + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1440, 440.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_0_0 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20001 + affinity: '' + alias: '' + bind: 'True' + comment: ShortSlow + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1440, 640.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_1 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20002 + affinity: '' + alias: '' + bind: 'True' + comment: MediumFast + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1440, 840.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_2 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20003 + affinity: '' + alias: '' + bind: 'True' + comment: MediumSlow + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1440, 1032.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_3 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20004 + affinity: '' + alias: '' + bind: 'True' + comment: LongFast + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1440, 1224.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_3_0 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20005 + affinity: '' + alias: '' + bind: 'True' + comment: LongModerate + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1440, 1416.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_3_1 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20006 + affinity: '' + alias: '' + bind: 'True' + comment: LongSlow + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1440, 1600.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_3_2 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20007 + affinity: '' + alias: '' + bind: 'True' + comment: VeryLongSlow + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1448, 1784.0] + rotation: 0 + state: enabled connections: -- [blocks_tag_gate_0, '0', network_tcp_sink_0, '0'] -- [blocks_tag_gate_0_0, '0', network_tcp_sink_0_0, '0'] -- [blocks_tag_gate_0_1, '0', network_tcp_sink_0_1, '0'] -- [blocks_tag_gate_0_2, '0', network_tcp_sink_0_2, '0'] -- [blocks_tag_gate_0_2_0, '0', network_tcp_sink_0_2_0, '0'] -- [blocks_tag_gate_0_3, '0', network_tcp_sink_0_3, '0'] -- [blocks_tag_gate_0_4, '0', network_tcp_sink_0_4, '0'] -- [blocks_tag_gate_0_4_0, '0', network_tcp_sink_0_4_0, '0'] - [blocks_throttle2_0, '0', freq_xlating_fir_filter_xxx_0, '0'] - [blocks_throttle2_0, '0', freq_xlating_fir_filter_xxx_0_0, '0'] - [blocks_throttle2_0, '0', freq_xlating_fir_filter_xxx_0_0_0, '0'] @@ -1908,14 +1780,14 @@ connections: - [freq_xlating_fir_filter_xxx_0_0, '0', lora_sdr_frame_sync_0_3, '0'] - [freq_xlating_fir_filter_xxx_0_0, '0', lora_sdr_frame_sync_0_4, '0'] - [freq_xlating_fir_filter_xxx_0_0_0, '0', lora_sdr_frame_sync_0_4_0, '0'] -- [lora_sdr_crc_verif_0, '0', blocks_tag_gate_0, '0'] -- [lora_sdr_crc_verif_0_0, '0', blocks_tag_gate_0_0, '0'] -- [lora_sdr_crc_verif_0_1, '0', blocks_tag_gate_0_1, '0'] -- [lora_sdr_crc_verif_0_2, '0', blocks_tag_gate_0_2, '0'] -- [lora_sdr_crc_verif_0_2_0, '0', blocks_tag_gate_0_2_0, '0'] -- [lora_sdr_crc_verif_0_3, '0', blocks_tag_gate_0_3, '0'] -- [lora_sdr_crc_verif_0_4, '0', blocks_tag_gate_0_4, '0'] -- [lora_sdr_crc_verif_0_4_0, '0', blocks_tag_gate_0_4_0, '0'] +- [lora_sdr_crc_verif_0, '0', zeromq_pub_sink_0_0_2_0, '0'] +- [lora_sdr_crc_verif_0_0, '0', zeromq_pub_sink_0_0_2_0_0, '0'] +- [lora_sdr_crc_verif_0_1, '0', zeromq_pub_sink_0_0_2_1, '0'] +- [lora_sdr_crc_verif_0_2, '0', zeromq_pub_sink_0_0_2_2, '0'] +- [lora_sdr_crc_verif_0_2_0, '0', zeromq_pub_sink_0_0_2_3, '0'] +- [lora_sdr_crc_verif_0_3, '0', zeromq_pub_sink_0_0_2_3_0, '0'] +- [lora_sdr_crc_verif_0_4, '0', zeromq_pub_sink_0_0_2_3_1, '0'] +- [lora_sdr_crc_verif_0_4_0, '0', zeromq_pub_sink_0_0_2_3_2, '0'] - [lora_sdr_deinterleaver_0, '0', lora_sdr_hamming_dec_0, '0'] - [lora_sdr_deinterleaver_0_0, '0', lora_sdr_hamming_dec_0_0, '0'] - [lora_sdr_deinterleaver_0_1, '0', lora_sdr_hamming_dec_0_1, '0'] diff --git a/gnuradio scripts/RX/Meshtastic_US_125KHz_RTLSDR.grc b/gnuradio scripts/RX/Meshtastic_US_125KHz_RTLSDR.grc index be1ac0f..b00d2e2 100644 --- a/gnuradio scripts/RX/Meshtastic_US_125KHz_RTLSDR.grc +++ b/gnuradio scripts/RX/Meshtastic_US_125KHz_RTLSDR.grc @@ -178,44 +178,6 @@ blocks: coordinate: [872, 8.0] rotation: 0 state: enabled -- name: blocks_tag_gate_0_3 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1488, 360.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_4 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1488, 544.0] - rotation: 0 - state: enabled - name: blocks_throttle2_0 id: blocks_throttle2 parameters: @@ -558,42 +520,6 @@ blocks: coordinate: [944, 568.0] rotation: 0 state: enabled -- name: network_tcp_sink_0_3 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: LongModerate - mode: '2' - port: '20005' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1656, 360.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_4 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: LongSlow - mode: '2' - port: '20006' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1656, 544.0] - rotation: 0 - state: enabled - name: note_0_0_0 id: note parameters: @@ -966,15 +892,57 @@ blocks: coordinate: [72, 284.0] rotation: 0 state: enabled +- name: zeromq_pub_sink_0_0_2_3_0 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20005 + affinity: '' + alias: '' + bind: 'True' + comment: LongModerate + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1488, 336.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_3_1 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20006 + affinity: '' + alias: '' + bind: 'True' + comment: LongSlow + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1488, 520.0] + rotation: 0 + state: enabled connections: -- [blocks_tag_gate_0_3, '0', network_tcp_sink_0_3, '0'] -- [blocks_tag_gate_0_4, '0', network_tcp_sink_0_4, '0'] - [blocks_throttle2_0, '0', freq_xlating_fir_filter_xxx_0_0, '0'] - [freq_xlating_fir_filter_xxx_0_0, '0', lora_sdr_frame_sync_0_3, '0'] - [freq_xlating_fir_filter_xxx_0_0, '0', lora_sdr_frame_sync_0_4, '0'] -- [lora_sdr_crc_verif_0_3, '0', blocks_tag_gate_0_3, '0'] -- [lora_sdr_crc_verif_0_4, '0', blocks_tag_gate_0_4, '0'] +- [lora_sdr_crc_verif_0_3, '0', zeromq_pub_sink_0_0_2_3_0, '0'] +- [lora_sdr_crc_verif_0_4, '0', zeromq_pub_sink_0_0_2_3_1, '0'] - [lora_sdr_deinterleaver_0_3, '0', lora_sdr_hamming_dec_0_3, '0'] - [lora_sdr_deinterleaver_0_4, '0', lora_sdr_hamming_dec_0_4, '0'] - [lora_sdr_dewhitening_0_3, '0', lora_sdr_crc_verif_0_3, '0'] diff --git a/gnuradio scripts/RX/Meshtastic_US_250KHz_RTLSDR.grc b/gnuradio scripts/RX/Meshtastic_US_250KHz_RTLSDR.grc index 5bf0e1a..3bd59fe 100644 --- a/gnuradio scripts/RX/Meshtastic_US_250KHz_RTLSDR.grc +++ b/gnuradio scripts/RX/Meshtastic_US_250KHz_RTLSDR.grc @@ -178,101 +178,6 @@ blocks: coordinate: [880, 8.0] rotation: 0 state: enabled -- name: blocks_tag_gate_0 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1512, 288.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_0 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1512, 488.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_1 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1512, 688.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_2 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1512, 880.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_2_0 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1512, 1072.0] - rotation: 0 - state: enabled - name: blocks_throttle2_0 id: blocks_throttle2 parameters: @@ -1044,96 +949,6 @@ blocks: coordinate: [968, 1096.0] rotation: 0 state: enabled -- name: network_tcp_sink_0 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: ShortFast - mode: '2' - port: '20000' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1680, 288.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_0 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: ShortSlow - mode: '2' - port: '20001' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1680, 488.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_1 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: MediumFast - mode: '2' - port: '20002' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1680, 688.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_2 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: MediumSlow - mode: '2' - port: '20003' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1680, 880.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_2_0 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: LongFast - mode: '2' - port: '20004' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1680, 1072.0] - rotation: 0 - state: enabled - name: note_0_0_0 id: note parameters: @@ -1506,24 +1321,129 @@ blocks: coordinate: [72, 508.0] rotation: 0 state: enabled +- name: zeromq_pub_sink_0 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20004 + affinity: '' + alias: '' + bind: 'True' + comment: LongFast + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1512, 1048.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20003 + affinity: '' + alias: '' + bind: 'True' + comment: MediumSlow + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1512, 856.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_0 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20002 + affinity: '' + alias: '' + bind: 'True' + comment: MediumFast + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1512, 664.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_1 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20001 + affinity: '' + alias: '' + bind: 'True' + comment: ShortSlow + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1512, 464.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20000 + affinity: '' + alias: '' + bind: 'True' + comment: ShortFast + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1504, 264.0] + rotation: 0 + state: enabled connections: -- [blocks_tag_gate_0, '0', network_tcp_sink_0, '0'] -- [blocks_tag_gate_0_0, '0', network_tcp_sink_0_0, '0'] -- [blocks_tag_gate_0_1, '0', network_tcp_sink_0_1, '0'] -- [blocks_tag_gate_0_2, '0', network_tcp_sink_0_2, '0'] -- [blocks_tag_gate_0_2_0, '0', network_tcp_sink_0_2_0, '0'] - [blocks_throttle2_0, '0', freq_xlating_fir_filter_xxx_0, '0'] - [freq_xlating_fir_filter_xxx_0, '0', lora_sdr_frame_sync_0, '0'] - [freq_xlating_fir_filter_xxx_0, '0', lora_sdr_frame_sync_0_0, '0'] - [freq_xlating_fir_filter_xxx_0, '0', lora_sdr_frame_sync_0_1, '0'] - [freq_xlating_fir_filter_xxx_0, '0', lora_sdr_frame_sync_0_2, '0'] - [freq_xlating_fir_filter_xxx_0, '0', lora_sdr_frame_sync_0_2_0, '0'] -- [lora_sdr_crc_verif_0, '0', blocks_tag_gate_0, '0'] -- [lora_sdr_crc_verif_0_0, '0', blocks_tag_gate_0_0, '0'] -- [lora_sdr_crc_verif_0_1, '0', blocks_tag_gate_0_1, '0'] -- [lora_sdr_crc_verif_0_2, '0', blocks_tag_gate_0_2, '0'] -- [lora_sdr_crc_verif_0_2_0, '0', blocks_tag_gate_0_2_0, '0'] +- [lora_sdr_crc_verif_0, '0', zeromq_pub_sink_0_0_2, '0'] +- [lora_sdr_crc_verif_0_0, '0', zeromq_pub_sink_0_0_1, '0'] +- [lora_sdr_crc_verif_0_1, '0', zeromq_pub_sink_0_0_0, '0'] +- [lora_sdr_crc_verif_0_2, '0', zeromq_pub_sink_0_0, '0'] +- [lora_sdr_crc_verif_0_2_0, '0', zeromq_pub_sink_0, '0'] - [lora_sdr_deinterleaver_0, '0', lora_sdr_hamming_dec_0, '0'] - [lora_sdr_deinterleaver_0_0, '0', lora_sdr_hamming_dec_0_0, '0'] - [lora_sdr_deinterleaver_0_1, '0', lora_sdr_hamming_dec_0_1, '0'] diff --git a/gnuradio scripts/RX/Meshtastic_US_62KHz_RTLSDR.grc b/gnuradio scripts/RX/Meshtastic_US_62KHz_RTLSDR.grc index bbf4410..d1f4469 100644 --- a/gnuradio scripts/RX/Meshtastic_US_62KHz_RTLSDR.grc +++ b/gnuradio scripts/RX/Meshtastic_US_62KHz_RTLSDR.grc @@ -178,25 +178,6 @@ blocks: coordinate: [864, 8.0] rotation: 0 state: enabled -- name: blocks_tag_gate_0_4_0 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1464, 456.0] - rotation: 0 - state: enabled - name: blocks_throttle2_0 id: blocks_throttle2 parameters: @@ -396,24 +377,6 @@ blocks: coordinate: [920, 480.0] rotation: 0 state: enabled -- name: network_tcp_sink_0_4_0 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: VeryLongSlow - mode: '2' - port: '20007' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1632, 456.0] - rotation: 0 - state: enabled - name: note_0_0_0 id: note parameters: @@ -786,12 +749,33 @@ blocks: coordinate: [64, 276.0] rotation: 0 state: enabled +- name: zeromq_pub_sink_0_0_2_3_2 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20007 + affinity: '' + alias: '' + bind: 'True' + comment: VeryLongSlow + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1464, 432.0] + rotation: 0 + state: enabled connections: -- [blocks_tag_gate_0_4_0, '0', network_tcp_sink_0_4_0, '0'] - [blocks_throttle2_0, '0', freq_xlating_fir_filter_xxx_0_0_0, '0'] - [freq_xlating_fir_filter_xxx_0_0_0, '0', lora_sdr_frame_sync_0_4_0, '0'] -- [lora_sdr_crc_verif_0_4_0, '0', blocks_tag_gate_0_4_0, '0'] +- [lora_sdr_crc_verif_0_4_0, '0', zeromq_pub_sink_0_0_2_3_2, '0'] - [lora_sdr_deinterleaver_0_4_0, '0', lora_sdr_hamming_dec_0_4_0, '0'] - [lora_sdr_dewhitening_0_4_0, '0', lora_sdr_crc_verif_0_4_0, '0'] - [lora_sdr_fft_demod_0_4_0, '0', lora_sdr_gray_mapping_0_4_0, '0'] diff --git a/gnuradio scripts/RX/Meshtastic_US_allPresets.grc b/gnuradio scripts/RX/Meshtastic_US_allPresets.grc index 9592be6..c199ac2 100644 --- a/gnuradio scripts/RX/Meshtastic_US_allPresets.grc +++ b/gnuradio scripts/RX/Meshtastic_US_allPresets.grc @@ -290,158 +290,6 @@ blocks: coordinate: [928, 80.0] rotation: 0 state: enabled -- name: blocks_tag_gate_0 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1440, 464.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_0 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1440, 664.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_1 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1440, 864.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_2 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1440, 1056.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_2_0 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1440, 1248.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_3 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1440, 1440.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_4 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1440, 1624.0] - rotation: 0 - state: enabled -- name: blocks_tag_gate_0_4_0 - id: blocks_tag_gate - parameters: - affinity: '' - alias: '' - comment: '' - maxoutbuf: '0' - minoutbuf: '0' - propagate_tags: 'False' - single_key: '""' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1440, 1808.0] - rotation: 0 - state: enabled - name: blocks_throttle2_0 id: blocks_throttle2 parameters: @@ -1686,150 +1534,6 @@ blocks: coordinate: [896, 1832.0] rotation: 0 state: enabled -- name: network_tcp_sink_0 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: ShortFast - mode: '2' - port: '20000' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1608, 464.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_0 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: ShortSlow - mode: '2' - port: '20001' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1608, 664.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_1 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: MediumFast - mode: '2' - port: '20002' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1608, 864.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_2 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: MediumSlow - mode: '2' - port: '20003' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1608, 1056.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_2_0 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: LongFast - mode: '2' - port: '20004' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1608, 1248.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_3 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: LongModerate - mode: '2' - port: '20005' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1608, 1440.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_4 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: LongSlow - mode: '2' - port: '20006' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1608, 1624.0] - rotation: 0 - state: enabled -- name: network_tcp_sink_0_4_0 - id: network_tcp_sink - parameters: - addr: 0.0.0.0 - affinity: '' - alias: '' - comment: VeryLongSlow - mode: '2' - port: '20007' - type: byte - vlen: '1' - states: - bus_sink: false - bus_source: false - bus_structure: null - coordinate: [1608, 1808.0] - rotation: 0 - state: enabled - name: note_0_0 id: note parameters: @@ -1888,16 +1592,184 @@ blocks: coordinate: [64, 368.0] rotation: 0 state: enabled +- name: zeromq_pub_sink_0_0_2_0 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20000 + affinity: '' + alias: '' + bind: 'True' + comment: ShortFast + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1448, 440.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_0_0 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20001 + affinity: '' + alias: '' + bind: 'True' + comment: ShortSlow + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1448, 640.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_1 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20002 + affinity: '' + alias: '' + bind: 'True' + comment: MediumFast + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1448, 840.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_2 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20003 + affinity: '' + alias: '' + bind: 'True' + comment: MediumSlow + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1448, 1032.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_3 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20004 + affinity: '' + alias: '' + bind: 'True' + comment: LongFast + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1448, 1224.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_3_0 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20005 + affinity: '' + alias: '' + bind: 'True' + comment: LongModerate + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1448, 1416.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_3_1 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20006 + affinity: '' + alias: '' + bind: 'True' + comment: LongSlow + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1448, 1600.0] + rotation: 0 + state: enabled +- name: zeromq_pub_sink_0_0_2_3_2 + id: zeromq_pub_sink + parameters: + address: tcp://0.0.0.0:20007 + affinity: '' + alias: '' + bind: 'True' + comment: VeryLongSlow + drop_on_hwm: 'True' + hwm: '-1' + key: '' + pass_tags: 'False' + timeout: '100' + type: byte + vlen: '1' + states: + bus_sink: false + bus_source: false + bus_structure: null + coordinate: [1448, 1784.0] + rotation: 0 + state: enabled connections: -- [blocks_tag_gate_0, '0', network_tcp_sink_0, '0'] -- [blocks_tag_gate_0_0, '0', network_tcp_sink_0_0, '0'] -- [blocks_tag_gate_0_1, '0', network_tcp_sink_0_1, '0'] -- [blocks_tag_gate_0_2, '0', network_tcp_sink_0_2, '0'] -- [blocks_tag_gate_0_2_0, '0', network_tcp_sink_0_2_0, '0'] -- [blocks_tag_gate_0_3, '0', network_tcp_sink_0_3, '0'] -- [blocks_tag_gate_0_4, '0', network_tcp_sink_0_4, '0'] -- [blocks_tag_gate_0_4_0, '0', network_tcp_sink_0_4_0, '0'] - [blocks_throttle2_0, '0', freq_xlating_fir_filter_xxx_0, '0'] - [blocks_throttle2_0, '0', freq_xlating_fir_filter_xxx_0_0, '0'] - [blocks_throttle2_0, '0', freq_xlating_fir_filter_xxx_0_0_0, '0'] @@ -1909,14 +1781,14 @@ connections: - [freq_xlating_fir_filter_xxx_0_0, '0', lora_sdr_frame_sync_0_3, '0'] - [freq_xlating_fir_filter_xxx_0_0, '0', lora_sdr_frame_sync_0_4, '0'] - [freq_xlating_fir_filter_xxx_0_0_0, '0', lora_sdr_frame_sync_0_4_0, '0'] -- [lora_sdr_crc_verif_0, '0', blocks_tag_gate_0, '0'] -- [lora_sdr_crc_verif_0_0, '0', blocks_tag_gate_0_0, '0'] -- [lora_sdr_crc_verif_0_1, '0', blocks_tag_gate_0_1, '0'] -- [lora_sdr_crc_verif_0_2, '0', blocks_tag_gate_0_2, '0'] -- [lora_sdr_crc_verif_0_2_0, '0', blocks_tag_gate_0_2_0, '0'] -- [lora_sdr_crc_verif_0_3, '0', blocks_tag_gate_0_3, '0'] -- [lora_sdr_crc_verif_0_4, '0', blocks_tag_gate_0_4, '0'] -- [lora_sdr_crc_verif_0_4_0, '0', blocks_tag_gate_0_4_0, '0'] +- [lora_sdr_crc_verif_0, '0', zeromq_pub_sink_0_0_2_0, '0'] +- [lora_sdr_crc_verif_0_0, '0', zeromq_pub_sink_0_0_2_0_0, '0'] +- [lora_sdr_crc_verif_0_1, '0', zeromq_pub_sink_0_0_2_1, '0'] +- [lora_sdr_crc_verif_0_2, '0', zeromq_pub_sink_0_0_2_2, '0'] +- [lora_sdr_crc_verif_0_2_0, '0', zeromq_pub_sink_0_0_2_3, '0'] +- [lora_sdr_crc_verif_0_3, '0', zeromq_pub_sink_0_0_2_3_0, '0'] +- [lora_sdr_crc_verif_0_4, '0', zeromq_pub_sink_0_0_2_3_1, '0'] +- [lora_sdr_crc_verif_0_4_0, '0', zeromq_pub_sink_0_0_2_3_2, '0'] - [lora_sdr_deinterleaver_0, '0', lora_sdr_hamming_dec_0, '0'] - [lora_sdr_deinterleaver_0_0, '0', lora_sdr_hamming_dec_0_0, '0'] - [lora_sdr_deinterleaver_0_1, '0', lora_sdr_hamming_dec_0_1, '0'] diff --git a/python scripts/meshtastic_gnuradio_decoder.py b/python scripts/meshtastic_gnuradio_decoder.py new file mode 100644 index 0000000..a5ebcf1 --- /dev/null +++ b/python scripts/meshtastic_gnuradio_decoder.py @@ -0,0 +1,181 @@ +# Joint copyright of Josh Conway and discord user:winter_soldier#1984 +# License is GPL3 (Gnu public license version 3) + + +import sys +import os +import time +import argparse +import base64 +import socket +import zmq +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes +from cryptography.hazmat.backends import default_backend + + +# SDR output example data: ffffffffb45463dab971aa8c6308000078aacf76587a5a4cf4a20e2c1d0349ab3f72 +# Use default key. Result should be: b'\x08\x01\x12\x0eTestingCLU1234' + +##### START FUNCTIONS BLOCK ##### + +# Takes in a string encoded as hex, and emits them as a bytes encoded of the same hex representation + +def hexStringToBinary(hexString): + binString = bytes.fromhex(hexString) + return binString + +def bytesToHexString(byteString): + hexString = byteString.hex() + return hexString + +##### END FUNCTIONS BLOCK ##### + + + +##### START PARSE COMMANDLINE INPUT ##### + +parser = argparse.ArgumentParser(description='Process incoming command parmeters') +parser.add_argument('-i', '--input', action='store', dest='input', help='SDR capture of the full Meshtastic LoRa string') +parser.add_argument('-k', '--key', action='store',dest='key', help='AES key override in Base64') +parser.add_argument('-n', '--net', action='store',dest='net', help='Network TCP in ip or DNS. ZeroMQ protocol.') +parser.add_argument('-p', '--port', action='store',dest='port', help='Network port') +args = parser.parse_args() + + + +##### END PARSE COMMANDLINE INPUT ##### + + + +##### START AES KEY ASSIGNMENT BLOCK ##### + +def parseAESKey(aesKey): + + # We look if there's a "NOKEY" declaration, a key provided, or an absence of key. We do the right thing depending on each choice. + # The "NOKEY" is basically ham mode. You're forbidden from using encryption. + # If you dont provide a key, we use the default one. We try to make it easy on our users! + # Note this format is in Base64 + + try: + if args.key == "0" or args.key == "NOKEY" or args.key == "nokey" or args.key == "NONE" or args.key == "none" or args.key == "HAM" or args.key == "ham": + meshtasticFullKeyBase64 = "AAAAAAAAAAAAAAAAAAAAAA==" + elif ( len(args.key) > 0 ): + meshtasticFullKeyBase64 = args.key + except: + meshtasticFullKeyBase64 = "1PG7OiApB1nwvP+rz05pAQ==" + + + + # Validate the key is 128bit/32byte or 256bit/64byte long. Fail if not. + + aesKeyLength = len(base64.b64decode(meshtasticFullKeyBase64).hex()) + if (aesKeyLength == 32 or aesKeyLength == 64): + pass + else: + print("The included AES key appears to be invalid. The key length is" , aesKeyLength , "and is not the key length of 128 or 256 bits.") + sys.exit() + + + # Convert the key FROM Base64 TO hexadecimal. + return base64.b64decode(meshtasticFullKeyBase64.encode('ascii')) + +##### END AES KEY ASSIGNMENT BLOCK ##### + + + +##### START DATA EXTRACTION BLOCK ##### + +def dataExtractor(data): + + # Now we split the data into the appropriate meshtastic packet structure using https://meshtastic.org/docs/overview/mesh-algo/ + # NOTE: The data coming out of GnuRadio is MSB or big endian. We have to reverse byte order after this step. + + # destination : 4 bytes + # sender : 4 bytes + # packetID : 4 bytes + # flags : 1 byte + # channelHash : 1 byte + # reserved : 2 bytes + # data : 0-237 bytes + + meshPacketHex = { + 'dest' : hexStringToBinary(data[0:8]), + 'sender' : hexStringToBinary(data[8:16]), + 'packetID' : hexStringToBinary(data[16:24]), + 'flags' : hexStringToBinary(data[24:26]), + 'channelHash' : hexStringToBinary(data[26:28]), + 'reserved' : hexStringToBinary(data[28:32]), + 'data' : hexStringToBinary(data[32:len(data)]) + } + return meshPacketHex + +##### END DATA EXTRACTION BLOCK ##### + + + +##### START DECRYPTION PROCESS ##### + +def dataDecryptor(meshPacketHex, aesKey): + + # Build the nonce. This is (packetID)+(00000000)+(sender)+(00000000) for a total of 128bit + # Even though sender is a 32 bit number, internally its used as a 64 bit number. + # Needs to be a bytes array for AES function. + + aesNonce = meshPacketHex['packetID'] + b'\x00\x00\x00\x00' + meshPacketHex['sender'] + b'\x00\x00\x00\x00' + + # print("Nonce binary is:", aesNonce) + # print("Nonce length is:", len(aesNonce) ) + + + # Initialize the cipher + cipher = Cipher(algorithms.AES(meshtasticFullKeyHex), modes.CTR(aesNonce), backend=default_backend()) + decryptor = cipher.decryptor() + + # Do the decryption. Note, that this cipher is reversible, so running the cipher on encrypted gives decrypted, and running the cipher on decrypted gives encrypted. + decryptedOutput = decryptor.update(meshPacketHex['data']) + decryptor.finalize() + return decryptedOutput + +##### END DECRYPTION PROCESS ##### + +##### START OPTIONAL NETWORK PROCESS ##### + +def networkParse(ipAddr, port, aesKey): + + context = zmq.Context() + socket = context.socket(zmq.SUB) + socket.connect("tcp://" + ipAddr + ":" + port) # connect, not bind, the PUB will bind, only 1 can bind + socket.setsockopt(zmq.SUBSCRIBE, b'') # subscribe to topic of all (needed or else it won't work) + + while True: + if socket.poll(10) != 0: # check if there is a message on the socket + msg = socket.recv() # grab the message + extractedData = dataExtractor(msg.hex()) + decryptedData = dataDecryptor(extractedData, aesKey) + print(decryptedData) + else: + time.sleep(0.1) # wait 100ms and try again + +##### START OPTIONAL NETWORK PROCESS ##### + + + + + +if __name__ == "__main__": + meshtasticFullKeyHex = parseAESKey(args.key) + + # Network branch. Doesnt exit, so we need IP Port and AES key + try: + print("do we have ip and port?") + if len(args.net) > 0 and len(args.port) > 0: + print(args.net, args.port) + networkParse(args.net, args.port, meshtasticFullKeyHex) + except: + # If we get a payload on commandline, decrypt and exit. + meshPacketHex = dataExtractor(args.input) + decryptedData = dataDecryptor(meshPacketHex, meshtasticFullKeyHex) + print(decryptedData) + + + +