| 50 | | == Mailing List == |
| 51 | | There is a public mailing list regarding development of this project, you can |
| 52 | | visit the subscription page at https://lists.osmocom.org/mailman/listinfo/tetra |
| 53 | | |
| 54 | | This list is '''for discussion between software developers''' who intend to improve the |
| 55 | | Osmocom TETRA software. It is not a forum for individuals asking how they can tap |
| 56 | | into police radio (which is encrypted anyway). |
| 57 | | |
| 58 | | == FAQ == |
| 59 | | We now have a [wiki:FAQ] (Frequently asked Questions) page! |
| 60 | | |
| 61 | | == Demodulator == |
| 62 | | |
| 63 | | {{{src/demod/python/cpsk.py}}} |
| 64 | | * contains a gnuradio based pi4/DQPSK demodulator, courtesy of KA1RBI |
| 65 | | {{{src/demod/python/tetra-demod.py}}} |
| 66 | | * call demodulator on a 'cfile' containing complex baseband samples |
| 67 | | {{{src/demod/python/usrp1-tetra_demod.py}}} |
| 68 | | * use demodulator in realtime with a USRP1 SDR |
| 69 | | {{{src/demod/python/usrp2-tetra_demod.py}}} |
| 70 | | * use demodulator in realtime with a USRP2 SDR |
| 71 | | {{{src/demod/python/fcdp-tetra_demod.py}}} |
| 72 | | * use demodulator in realtime with a [wiki:Funcube_Dongle]. This may also be used with other Softrock-type receivers by downconverting the intermediate frequency of a radio scanner to the complex baseband. |
| 73 | | |
| 74 | | The output of the demodulator is a file containing one float value for each symbol, |
| 75 | | containing the phase shift (in units of pi/4) relative to the previous symbol. |
| 76 | | |
| 77 | | You can use the "float_to_bits" program to convert the float values to unpacked |
| 78 | | bits, i.e. 1-bit-per-byte |
| 79 | | |
| 80 | | |
| 81 | | == PHY/MAC layer == |
| 82 | | |
| 83 | | === library code === |
| 84 | | |
| 85 | | Specifically, it implements: |
| 86 | | |
| 87 | | {{{lower_mac/crc_simple.[ch]}}} |
| 88 | | * CRC16-CCITT (currently defunct/broken as we need it for |
| 89 | | non-octet-aligned bitfields) |
| 90 | | {{{lower_mac/tetra_conv_enc.[ch]}}} |
| 91 | | * 16-state Rate-Compatible Punctured Convolutional (RCPC) coder |
| 92 | | {{{lower_mac/tetra_interleave.[ch]}}} |
| 93 | | * Block interleaving (over a single block only) |
| 94 | | {{{lower_mac/tetra_rm3014.[ch]}}} |
| 95 | | * (30, 14) Reed-Muller code for the ACCH (broadcast block of |
| 96 | | each downlink burst) |
| 97 | | {{{lower_mac/tetra_scramb.[ch]}}} |
| 98 | | * Scrambling |
| 99 | | {{{lower_mac/viterbi*.[ch]}}} |
| 100 | | * Convolutional decoder for signalling and voice channels |
| 101 | | {{{phy/tetra_burst.[ch]}}} |
| 102 | | * Routines to encode continuous normal and sync bursts |
| 103 | | {{{phy/tetra_burst_sync.[ch]}}} |
| 104 | | |
| 105 | | |
| 106 | | === Receiver Program === |
| 107 | | |
| 108 | | The main receiver program {{{tetra-rx}}} expects an input file containing a |
| 109 | | stream of unpacked bits, i.e. 1-bit-per-byte. |
| 110 | | |
| 111 | | |
| 112 | | === Transmitter Program === |
| 113 | | |
| 114 | | The main program {{{conv_enc_test.c}}} generates a single continuous downlink sync |
| 115 | | burst (SB), contining: |
| 116 | | * a SYNC-PDU as block 1 |
| 117 | | * a ACCESS-ASSIGN PDU as broadcast block |
| 118 | | * a SYSINFO-PDU as block 2 |
| 119 | | |
| 120 | | Scrambling is set to 0 (no scrambling) for all elements of the burst. |
| 121 | | |
| 122 | | It does not actually modulate and/or transmit yet. |
| 123 | | |
| 124 | | |
| 125 | | == Quick example == |
| 126 | | |
| 127 | | assuming you have generated a file samples.cfile at a sample rate of 195.312kHz (100MHz/512 == USRP2 at decimation 512) |
| 128 | | |
| 129 | | {{{ |
| 130 | | ./src/demod/python/tetra-demod.py -i /tmp/samples.cfile -o /tmp/out.float -s 195312 -c 0 |
| 131 | | ./src/float_to_bits /tmp/out.float /tmp/out.bits |
| 132 | | ./src/tetra-rx /tmp/out.bits |
| 133 | | }}} |
| 134 | | |
| 135 | | For a complete list of local wiki pages, see TitleIndex. |
| | 39 | = Further Reading = |
| | 40 | * [wiki:FAQ] - Our Frequently Asked Questions |
| | 41 | * [wiki:Funcube_Dongle] - A small receiver that can be used with [wiki:osmo-tetra] |
| | 42 | * [wiki:Dimetra_EBTS] - Information on the Motorola Dimetra EBTS |