Voice Burst Decoding Work

This commit is contained in:
Cort Buffington 2016-08-10 08:48:26 -05:00
parent 2e916c68ee
commit 49a3e24a49
3 changed files with 151 additions and 29 deletions

View File

@ -7,4 +7,4 @@ voice_3 = '\x80\x00\x04\xbf\xfd\x08\x2f\x7c\xca\x00\x00\x02\x02\x00\x00\x30\xac\
voice_4 = '\x80\x00\x04\xbf\xfd\x08\x2f\x7c\xca\x00\x00\x02\x02\x00\x00\x30\xac\x20\x80\x5d\x3b\x07\x3b\xeb\x48\x20\x00\x00\x00\x00\x8a\x19\x06\x98\x02\xb9\x4f\xa4\xd3\xbb\xb7\x96\xc7\x83\xd8\xee\x81\x19\x41\xe4\x4a\x68\x0f\x05\x06\x0f\x16'
voice_5 = '\x80\x00\x04\xbf\xfd\x08\x2f\x7c\xca\x00\x00\x02\x02\x00\x00\x30\xac\x20\x80\x5d\x3b\x08\x3b\xeb\x4a\x00\x00\x00\x00\x00\x8a\x22\x16\xe8\x1a\x62\xd6\x8c\x6b\xba\x06\x3d\x0d\xeb\x04\xe9\x81\xdd\xf1\x04\x86\xc8\x00\x0a\x0a\x0c\x00\x00\x00\x00\x00\x02\x2f\x7c\xca\x14'
voice_6 = '\x80\x00\x04\xbf\xfd\x08\x2f\x7c\xca\x00\x00\x02\x02\x00\x00\x30\xac\x20\x80\x5d\x3b\x09\x3b\xeb\x4b\xe0\x00\x00\x00\x00\x8a\x19\x06\x98\x22\xd3\xd9\x00\xb4\xa6\x05\x6d\x29\xa2\x17\xa8\x82\x75\x14\xf8\x10\x08\x00\x00\x00\x00\x10'
voice_t = '\x80\x00\x04\xbf\xfd\x08\x2f\x7c\xca\x00\x00\x02\x02\x00\x00\x30\xac\x60\x80\x5e\x3e\x76\x3b\xf1\xb8\x40\x00\x00\x00\x00\x02\x80\x00\x0a\x80\x0a\x00\x60\x00\x00\x00\x00\x00\x02\x2f\x7c\xca\x9d\xa0\x7f\x00\x12\x35\x35'
voice_t = '\x80\x00\x04\xbf\xfd\x08\x2f\x7c\xca\x00\x00\x02\x02\x00\x00\x30\xac\x60\x80\x5e\x3e\x76\x3b\xf1\xb8\x40\x00\x00\x00\x00\x02\x80\x00\x0a\x80\x0a\x00\x60\x00\x00\x00\x00\x00\x02\x2f\x7c\xca\x9d\xa0\x7f\x00\x12\x35\x35'

150
voice_burst_decoding.md Normal file
View File

@ -0,0 +1,150 @@
VOICE HEADER 1: 80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 **00.00.30.ac** 20 | 80.dd 3b.01 3b.eb.3c.e0 00.00.00.00 | 01 **80000a800a0060000000** 00.00.02 2f.7c.ca **92af7000113532**
VOICE HEADER 2: 80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 **00.00.30.ac** 20 | 80.5d 3b.02 3b.eb.3e.c0 00.00.00.00 | 01 **80000a800a0060000000** 00.00.02 2f.7c.ca **92af7000113530**
VOICE HEADER 3: 80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 **00.00.30.ac** 20 | 80.5d 3b.03 3b.eb.40.a0 00.00.00.00 | 01 **80000a800a0060000000** 00.00.02 2f.7c.ca **92af7000113531**
VOICE BURST A: 80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 **00.00.30.ac** 20 | 80.5d 3b.04 3b.eb.42.80 00.00.00.00 | 8a 14 **40** f8.01.a9.9f.8c.e0.be.00.6a.67.e3.38.2f.80.1a.99.f8.ce.08
VOICE BURST B: 80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 **00.00.30.ac** 20 | 80.5d 3b.05 3b.eb.44.60 00.00.00.00 | 8a 19 **06** f8.01.a9.9f.8c.e0.be.00.6a.67.e3.38.2f.80.1a.99.f8.ce.08 **0505060612**
VOICE BURST C: 80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 **00.00.30.ac** 20 | 80.5d 3b.06 3b.eb.46.40 00.00.00.00 | 8a 19 **06** f8.01.a9.9f.8c.e0.be.00.6a.67.e3.38.2f.80.1a.99.f8.ce.08 **0905060516**
VOICE BURST D: 80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 **00.00.30.ac** 20 | 80.5d 3b.07 3b.eb.48.20 00.00.00.00 | 8a 19 **06** 98.02.b9.4f.a4.d3.bb.b7.96.c7.83.d8.ee.81.19.41.e4.4a.68 **0f05060f16**
VOICE BURST E: 80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 **00.00.30.ac** 20 | 80.5d 3b.08 3b.eb.4a.00 00.00.00.00 | 8a 22 **16** e8.1a.62.d6.8c.6b.ba.06.3d.0d.eb.04.e9.81.dd.f1.04.86.c8 **000a0a0c000000** 00.00.02 2f.7c.ca **14**
VOICE BURST F: 80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 **00.00.30.ac** 20 | 80.5d 3b.09 3b.eb.4b.e0 00.00.00.00 | 8a 19 **06** 98.22.d3.d9.00.b4.a6.05.6d.29.a2.17.a8.82.75.14.f8.10.08 **0000000010**
VOICE TERMINATOR: 80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 **00.00.30.ac** 60 | 80.5e 3e.76 3b.f1.b8.40 00.00.00.00 | 02 80 00.0a 80 0a 00.60 00 00 00 00.00.02 2f.7c.ca **9da07f00123535**
VOICE HEADER: 54 Bytes (0-53) (sent 3 times, see notes):
IPSC:
PACKET_TYPE[0]
PEER_ID[1-4]
IPSC_SEQ[5]
SRC_SUB[6-9]
DST_SUB[9-11]
CALL_TYPE[12]
CALL_CONTROL[13-16] (use a random number)
CALL_INFO[17]
RTP:
RTP_HEAD[18-19]
RTP_SEQ[20-21]
RTP_TIMESTMP[22-25]
RTP_SSID[26-29]
RTP PAYLOAD:
BURST_TYPE[30]
???[31-40]
VOICE_PDU_DST[41-43]
VOICE_PDU_SRC[44-46]
???[46-53]
VOICE BURST A: 52 Bytes (0-51):
IPSC:
PACKET_TYPE[0]
PEER_ID[1-4]
IPSC_SEQ[5]
SRC_SUB[6-9]
DST_SUB[9-11]
CALL_TYPE[12]
CALL_CONTROL[13-16] (use a random number)
CALL_INFO[17]
RTP:
RTP_HEAD[18-19]
RTP_SEQ[20-21]
RTP_TIMESTMP[22-25]
RTP_SSID[26-29]
RTP PAYLOAD:
BURST_TYPE[30]
LENGTH[31] (bytes left after this one)
???[32]
AMBE_DATA[33-51]
VOICE BURST B-D and maybe F: 57 Bytes (0-56):
IPSC:
PACKET_TYPE[0]
PEER_ID[1-4]
IPSC_SEQ[5]
SRC_SUB[6-9]
DST_SUB[9-11]
CALL_TYPE[12]
CALL_CONTROL[13-16] (use a random number)
CALL_INFO[17]
RTP:
RTP_HEAD[18-19]
RTP_SEQ[20-21]
RTP_TIMESTMP[22-25]
RTP_SSID[26-29]
RTP PAYLOAD:
BURST_TYPE[30]
LENGTH[31] (bytes left after this one)
???[32]
AMBE_DATA[33-51]
???[52-56]
VOICE BURST E: 66 Bytes (0-65):
IPSC:
PACKET_TYPE[0]
PEER_ID[1-4]
IPSC_SEQ[5]
SRC_SUB[6-9]
DST_SUB[9-11]
CALL_TYPE[12]
CALL_CONTROL[13-16] (use a random number)
CALL_INFO[17]
RTP:
RTP_HEAD[18-19]
RTP_SEQ[20-21]
RTP_TIMESTMP[22-25]
RTP_SSID[26-29]
RTP PAYLOAD:
BURST_TYPE[30]
LENGTH[31] (bytes left after this one)
???[32]
AMBE_DATA[33-51]
???[52-64]
VOICE_PDU_DST[59-61]
VOICE_PDU_SRC[62-64]
???[65]
VOICE BURST F, Same as B-D???: 57 Bytes (0-56):
VOICE TERMINATOR: 54 Bytes (0-53)
IPSC:
PACKET_TYPE[0]
PEER_ID[1-4]
IPSC_SEQ[5]
SRC_SUB[6-9]
DST_SUB[9-11]
CALL_TYPE[12]
CALL_CONTROL[13-16] (use a random number)
CALL_INFO[17]
RTP:
RTP_HEAD[18-19]
RTP_SEQ[20-21]
RTP_TIMESTMP[22-25]
RTP_SSID[26-29]
RTP PAYLOAD:
BURST_TYPE[30]
RSSI_THRESH_PARITY[31]
LENGTH_TO_FOLLOW[32-33]
RSSI_STATUS[34]
SLOT_TYPE_SYNC[35]
DATA_SIZE[36-37]
IPSC_DATA { [38] to (LENGTH_TO_FOLLOW *2)-4 }
FULL_LC_BYTE1[38]
FULL_LC_FID[39]
VOICE_PDU_SVC_OPT[40]
VOICE_PDU_DST[41-43]
VOICE_PDU_SRC[44-46]
???[47-53]
A is a sync burst
B,C,D are the ame
E has extra data -- EMB?
F is the same length as B,C,D, but has a lot of zeros near the end.
Send a wakeup before starting a call (type 0x85)
IPSC Sequence Number - incremented with each call made
RTP Header - Marker set for 1st voide header - 0x80DD, not for anything else 0x805D except terminator 0x80DE, which is the payload type and use is proprietary.
I've decoded the bits in the RTP header, it's going to be ok to use this recipe. Nothing else is going on.
RTP Sequence number -- increment with each packet
RTP timestamp - assumed currently to be 32 bit fixed point number 16bit.16bit seconds. Which would place these packets at 4.8ms apart... seems wrong.

View File

@ -1,28 +0,0 @@
v_hed_1 = '80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 00.00.30.ac 20 80.dd 3b.01 3b.eb.3c.e0 00.00.00.00 01 80000a800a0060000000000002 2f.7c.ca 92af7000113532'
v_hed_2 = '80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 00.00.30.ac 20 80.5d 3b.02 3b.eb.3e.c0 00.00.00.00 01 80000a800a0060000000000002 2f.7c.ca 92af7000113530'
v_hed_3 = '80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 00.00.30.ac 20 80.5d 3b.03 3b.eb.40.a0 00.00.00.00 01 80000a800a0060000000000002 2f.7c.ca 92af7000113531'
voice_A = '80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 00.00.30.ac 20 80.5d 3b.04 3b.eb.42.80 00.00.00.00 8a 1440f801a99f8ce0be006a67e3382f801a99f8ce08'
voice_B = '80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 00.00.30.ac 20 80.5d 3b.05 3b.eb.44.60 00.00.00.00 8a 1906f801a99f8ce0be006a67e3382f801a99f8ce080505060612'
voice_C = '80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 00.00.30.ac 20 80.5d 3b.06 3b.eb.46.40 00.00.00.00 8a 1906f801a99f8ce0be006a67e3382f801a99f8ce080905060516'
voice_D = '80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 00.00.30.ac 20 80.5d 3b.07 3b.eb.48.20 00.00.00.00 8a 19069802b94fa4d3bbb796c783d8ee811941e44a680f05060f16'
voice_E = '80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 00.00.30.ac 20 80.5d 3b.08 3b.eb.4a.00 00.00.00.00 8a 2216e81a62d68c6bba063d0deb04e981ddf10486c8000a0a0c000000000002 2f.7c.ca.14'
voice_F = '80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 00.00.30.ac 20 80.5d 3b.09 3b.eb.4b.e0 00.00.00.00 8a 19069822d3d900b4a6056d29a217a8827514f810080000000010'
voice_T = '80 00.04.bf.fd 08 2f.7c.ca 00.00.02 02 00.00.30.ac 60 80.5e 3e.76 3b.f1.b8.40 00.00.00.00 02 80000a800a0060000000000002 2f.7c.ca 9da07f00123535'
TP PEER_ID IPSC_SEQ SRC_SUB DST_SUB TYPE unknown INFO RTP RTP_SEQ RTP_TIMESTMP RTP_SSID | BURST
A is a sync burst
B,C,D are the ame
E has extra data -- EMB?
F is the same length as B,C,D, but has a lot of zeros near the end.
Send a wakeup before starting a call (type 0x85)
IPSC Sequence Number - incremented with each call made
RTP Header - Marker set for 1st voide header - 0x80DD, not for anything else 0x805D except terminator 0x80DE, which is the payload type and use is proprietary.
I've decoded the bits in the RTP header, it's going to be ok to use this recipe. Nothing else is going on.
RTP Sequence number -- increment with each packet
RTP timestamp - assumed currently to be 32 bit fixed point number 16bit.16bit seconds. Which would place these packets at 4.8ms apart... seems wrong.