OP25 OP25 - Empty Voice channels

MTL_Emergencies

Member++
Database Admin
Joined
Sep 6, 2019
Messages
147
Location
Quebec, Canada
Hello,
I am running OP25 on Ubuntu 22.04 and when I run my local P25 Phase II system, empty voice channels appear when synced to a P25 Phase II patch talkgroup. I can confirm that the voice channels are not part of the system/site. I managed to record how these voice channels appear.
I was wondering if anyone had experienced the same issue and why do these voice channels appear?
Thanks.
Here is the video:

Code:
03/29/24 09:52:33.925107 [SERAM] VF expire: tgid: 60181, freq: 772.006250, slot: 1, ts: 03/29/24 09:52:32.598336
03/29/24 09:52:33.951561 [0] process_mac_pdu: opcode 4 offset 7 len 18
03/29/24 09:52:33.951627 [0] MAC_ACTIVE: mco=1/02(0x42), len=9, mco=2/35(0xb5), len=5, mco=0/00(0x00), len=3, rs_errs=1
03/29/24 09:52:33.953261 [SERAM] set tgid=60151, srcaddr=0
03/29/24 09:52:33.953344 [SERAM] VF ts ph2: tgid: 60151, freq: 772.006250, slot: 1
03/29/24 09:52:33.953395 [SERAM] set tgid=60171, srcaddr=0
03/29/24 09:52:33.953432 [SERAM] VF ts ph2: tgid: 60171, freq: 770.706250, slot: 0
03/29/24 09:52:33.953467 [0] tsbk(0x02) grp_v_ch_grant_up: ch1: 772.006250 ga1: 60151 ch2: 770.706250 ga2: 60171
03/29/24 09:52:33.953764 [SERAM] needs control channel receiver
03/29/24 09:52:33.953813 [SERAM] receiver[0] not idle
03/29/24 09:52:33.953849 [SERAM] has no idle receivers for control channel monitoring
03/29/24 09:52:33.953934 [0] tdma(0x05) grp_v_ch_grant_up: f1: 769.681250 ga1: 0 f2: 769.006250 ga2: 0 f3: 769.006250 ga3: 0
03/29/24 09:52:33.953984 [SERAM] set tgid=0, srcaddr=0
03/29/24 09:52:33.954024 [SERAM] new tgid=0  prio 3
03/29/24 09:52:33.954082 [SERAM] new freq=769.681250
03/29/24 09:52:33.954117 [SERAM] VF ts ph1: tgid: 0, freq: 769.681250
03/29/24 09:52:33.954156 [SERAM] set tgid=0, srcaddr=0
03/29/24 09:52:33.954200 [SERAM] new freq=769.006250
03/29/24 09:52:33.954232 [SERAM] VF change: tgid: 0, prev_freq: 769.681250, prev_slot: None, new_freq: 769.006250, new_slot: None
03/29/24 09:52:33.954268 [SERAM] VF ts ph1: tgid: 0, freq: 769.006250
03/29/24 09:52:33.954332 [SERAM] set tgid=0, srcaddr=0
03/29/24 09:52:33.954369 [SERAM] VF ts ph1: tgid: 0, freq: 769.006250
03/29/24 09:52:33.954467 [SERAM] needs control channel receiver
03/29/24 09:52:33.954498 [SERAM] receiver[0] not idle
03/29/24 09:52:33.954528 [SERAM] has no idle receivers for control channel monitoring
03/29/24 09:52:34.004492 [0] process_mac_pdu: opcode 4 offset 7 len 18
03/29/24 09:52:34.004540 [0] MAC_ACTIVE: mco=1/02(0x42), len=9, mco=2/35(0xb5), len=5, mco=0/00(0x00), len=3, rs_errs=0
03/29/24 09:52:34.007529 [SERAM] set tgid=60151, srcaddr=0
03/29/24 09:52:34.007633 [SERAM] VF ts ph2: tgid: 60151, freq: 772.006250, slot: 1
03/29/24 09:52:34.007699 [SERAM] set tgid=60171, srcaddr=0
03/29/24 09:52:34.007946 [SERAM] VF ts ph2: tgid: 60171, freq: 770.706250, slot: 0
03/29/24 09:52:34.008016 [0] tsbk(0x02) grp_v_ch_grant_up: ch1: 772.006250 ga1: 60151 ch2: 770.706250 ga2: 60171
03/29/24 09:52:34.008159 [SERAM] needs control channel receiver
03/29/24 09:52:34.008190 [SERAM] receiver[0] not idle
03/29/24 09:52:34.008219 [SERAM] has no idle receivers for control channel monitoring
03/29/24 09:52:34.008317 [0] tdma(0x05) grp_v_ch_grant_up: f1: 769.706250 ga1: 0 f2: 769.006250 ga2: 0 f3: 769.006250 ga3: 0
03/29/24 09:52:34.008363 [SERAM] set tgid=0, srcaddr=0
03/29/24 09:52:34.008420 [SERAM] new freq=769.706250
03/29/24 09:52:34.008450 [SERAM] VF change: tgid: 0, prev_freq: 769.006250, prev_slot: None, new_freq: 769.706250, new_slot: None
03/29/24 09:52:34.008484 [SERAM] VF ts ph1: tgid: 0, freq: 769.706250
03/29/24 09:52:34.008523 [SERAM] set tgid=0, srcaddr=0
03/29/24 09:52:34.008554 [SERAM] VF change: tgid: 0, prev_freq: 769.706250, prev_slot: None, new_freq: 769.006250, new_slot: None
03/29/24 09:52:34.008585 [SERAM] VF ts ph1: tgid: 0, freq: 769.006250
03/29/24 09:52:34.008620 [SERAM] set tgid=0, srcaddr=0
03/29/24 09:52:34.008650 [SERAM] VF ts ph1: tgid: 0, freq: 769.006250
03/29/24 09:52:34.008733 [SERAM] needs control channel receiver
03/29/24 09:52:34.008758 [SERAM] receiver[0] not idle
03/29/24 09:52:34.008782 [SERAM] has no idle receivers for control channel monitoring
03/29/24 09:52:34.111127 [0] process_mac_pdu: opcode 4 offset 7 len 21
03/29/24 09:52:34.111192 [0] MAC_ACTIVE: mco=1/02(0x42), len=9, mco=2/35(0xb5), len=5, mco=0/00(0x00), len=6, rs_errs=0
03/29/24 09:52:34.113293 [0] process_mac_pdu: opcode 1 offset 1 len 18
03/29/24 09:52:34.113316 [0] MAC_PTT: srcaddr=700012, grpaddr=50002, TDMA slot ID=0, algid=80, keyid=0, mi=00 00 00 00 00 00 00 00 00, rs_errs=0
03/29/24 09:52:34.114708 [SERAM] set tgid=60151, srcaddr=0
03/29/24 09:52:34.114809 [SERAM] VF ts ph2: tgid: 60151, freq: 772.006250, slot: 1
03/29/24 09:52:34.114861 [SERAM] set tgid=60171, srcaddr=0
03/29/24 09:52:34.114900 [SERAM] VF ts ph2: tgid: 60171, freq: 770.706250, slot: 0
03/29/24 09:52:34.114935 [0] tsbk(0x02) grp_v_ch_grant_up: ch1: 772.006250 ga1: 60151 ch2: 770.706250 ga2: 60171
03/29/24 09:52:34.115074 [SERAM] needs control channel receiver
03/29/24 09:52:34.115107 [SERAM] receiver[0] not idle
03/29/24 09:52:34.115138 [SERAM] has no idle receivers for control channel monitoring
03/29/24 09:52:34.115218 [0] tdma(0x05) grp_v_ch_grant_up: f1: 769.743750 ga1: 0 f2: 769.006250 ga2: 0 f3: 769.006250 ga3: 0
03/29/24 09:52:34.115265 [SERAM] set tgid=0, srcaddr=0
03/29/24 09:52:34.115326 [SERAM] new freq=769.743750
03/29/24 09:52:34.115361 [SERAM] VF change: tgid: 0, prev_freq: 769.006250, prev_slot: None, new_freq: 769.743750, new_slot: None
03/29/24 09:52:34.115397 [SERAM] VF ts ph1: tgid: 0, freq: 769.743750
03/29/24 09:52:34.115438 [SERAM] set tgid=0, srcaddr=0
03/29/24 09:52:34.115472 [SERAM] VF change: tgid: 0, prev_freq: 769.743750, prev_slot: None, new_freq: 769.006250, new_slot: None
03/29/24 09:52:34.115507 [SERAM] VF ts ph1: tgid: 0, freq: 769.006250
03/29/24 09:52:34.115544 [SERAM] set tgid=0, srcaddr=0
03/29/24 09:52:34.115578 [SERAM] VF ts ph1: tgid: 0, freq: 769.006250
03/29/24 09:52:34.115675 [SERAM] needs control channel receiver
03/29/24 09:52:34.115706 [SERAM] receiver[0] not idle
03/29/24 09:52:34.115736 [SERAM] has no idle receivers for control channel monitoring
03/29/24 09:52:34.115838 [0] mac_ptt: mi: 0 algid: 80 keyid:0 ga: 50002 sa: 700012
03/29/24 09:52:34.168389 [0] process_mac_pdu: opcode 1 offset 0 len 18
03/29/24 09:52:34.168477 [0] MAC_PTT: srcaddr=700012, grpaddr=50002, TDMA slot ID=2, algid=80, keyid=0, mi=00 00 00 00 00 00 00 00 00, rs_errs=0
03/29/24 09:52:34.177026 [0] mac_ptt: mi: 0 algid: 80 keyid:0 ga: 50002 sa: 700012
03/29/24 09:52:34.221716 [0] 4V_BURST(0) TDMA slot ID=4 ESS: (partial)
03/29/24 09:52:34.221801 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 61.506700
03/29/24 09:52:34.222535 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.000734
03/29/24 09:52:34.223356 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.000821
03/29/24 09:52:34.224214 [0] AMBE 98 02 b9 4f a4 d3 80 errs 0 err_rate 0.000000, dt 0.000858
03/29/24 09:52:34.330023 [0] 4V_BURST(1) TDMA slot ID=6 ESS: (partial)
03/29/24 09:52:34.330160 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.105946
03/29/24 09:52:34.330853 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.000693
03/29/24 09:52:34.331441 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.000588
03/29/24 09:52:34.331588 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.000147
03/29/24 09:52:34.385050 [0] 4V_BURST(2) TDMA slot ID=8 ESS: (partial)
03/29/24 09:52:34.385277 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.053689
03/29/24 09:52:34.385820 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.000543
03/29/24 09:52:34.386805 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.000985
03/29/24 09:52:34.387303 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.000498
03/29/24 09:52:34.418293 [SERAM] VF expire: tgid: 60192, freq: 770.706250, slot: 1, ts: 03/29/24 09:52:33.186660
03/29/24 09:52:34.418453 [SERAM] VF expire: tgid: 60164, freq: 770.756250, slot: 1, ts: 03/29/24 09:52:33.186589
03/29/24 09:52:34.440357 [0] process_mac_pdu: opcode 4 offset 2 len 21
03/29/24 09:52:34.440411 [0] MAC_ACTIVE: mco=1/02(0x42), len=9, mco=2/35(0xb5), len=5, mco=0/00(0x00), len=6, rs_errs=0
03/29/24 09:52:34.446944 [SERAM] set tgid=60151, srcaddr=0
03/29/24 09:52:34.447011 [SERAM] VF ts ph2: tgid: 60151, freq: 772.006250, slot: 1
03/29/24 09:52:34.447024 [SERAM] set tgid=60171, srcaddr=0
03/29/24 09:52:34.447032 [SERAM] VF ts ph2: tgid: 60171, freq: 770.706250, slot: 0
03/29/24 09:52:34.447040 [0] tsbk(0x02) grp_v_ch_grant_up: ch1: 772.006250 ga1: 60151 ch2: 770.706250 ga2: 60171
03/29/24 09:52:34.447079 [SERAM] needs control channel receiver
03/29/24 09:52:34.447087 [SERAM] receiver[0] not idle
03/29/24 09:52:34.447093 [SERAM] has no idle receivers for control channel monitoring
03/29/24 09:52:34.447115 [0] tdma(0x05) grp_v_ch_grant_up: f1: 769.893750 ga1: 0 f2: 769.006250 ga2: 0 f3: 769.006250 ga3: 0
03/29/24 09:52:34.447129 [SERAM] set tgid=0, srcaddr=0
03/29/24 09:52:34.447146 [SERAM] new freq=769.893750
03/29/24 09:52:34.447154 [SERAM] VF change: tgid: 0, prev_freq: 769.006250, prev_slot: None, new_freq: 769.893750, new_slot: None
03/29/24 09:52:34.447162 [SERAM] VF ts ph1: tgid: 0, freq: 769.893750
03/29/24 09:52:34.447171 [SERAM] set tgid=0, srcaddr=0
03/29/24 09:52:34.447179 [SERAM] VF change: tgid: 0, prev_freq: 769.893750, prev_slot: None, new_freq: 769.006250, new_slot: None
03/29/24 09:52:34.447186 [SERAM] VF ts ph1: tgid: 0, freq: 769.006250
03/29/24 09:52:34.447194 [SERAM] set tgid=0, srcaddr=0
03/29/24 09:52:34.447201 [SERAM] VF ts ph1: tgid: 0, freq: 769.006250
03/29/24 09:52:34.447224 [SERAM] needs control channel receiver
03/29/24 09:52:34.447231 [SERAM] receiver[0] not idle
03/29/24 09:52:34.447237 [SERAM] has no idle receivers for control channel monitoring
03/29/24 09:52:34.493208 [0] 4V_BURST(3) TDMA slot ID=0 ESS: (partial)
03/29/24 09:52:34.493243 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.105940
03/29/24 09:52:34.493620 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.000377
03/29/24 09:52:34.493758 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.000138
03/29/24 09:52:34.494131 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.000373
03/29/24 09:52:34.549053 [0] 2V_BURST(4) TDMA slot ID=2 ESS: algid=80, keyid=0, mi=00 00 00 00 00 00 00 00 00, rs_errs=0
03/29/24 09:52:34.549121 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.054990
03/29/24 09:52:34.549712 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.000591
03/29/24 09:52:34.559413 [0] encrypt info: tg=60052, algid=0x80, keyid=0x0
03/29/24 09:52:34.603973 [0] 4V_BURST(0) TDMA slot ID=4 ESS: (partial)
03/29/24 09:52:34.604021 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.054309
03/29/24 09:52:34.604691 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.000670
03/29/24 09:52:34.606644 [0] AMBE f8 01 a9 9f 8c e0 80 errs 0 err_rate 0.000000, dt 0.001953
03/29/24 09:52:34.607914 [0] AMBE ee b1 21 8f 8f 3d 80 errs 0 err_rate 0.000000, dt 0.001270
03/29/24 09:52:34.662578 [0] 4V_BURST(1) TDMA slot ID=6 ESS: (partial)
03/29/24 09:52:34.665961 [0] AMBE aa db c0 48 46 10 80 errs 0 err_rate 0.000000, dt 0.058047
03/29/24 09:52:34.667449 [0] AMBE 58 59 66 50 88 35 80 errs 0 err_rate 0.000000, dt 0.001488
03/29/24 09:52:34.668414 [0] AMBE 58 39 94 13 a0 2b 00 errs 0 err_rate 0.000000, dt 0.000965
03/29/24 09:52:34.669303 [0] AMBE 98 2d 93 05 00 87 00 errs 0 err_rate 0.000000, dt 0.000889
03/29/24 09:52:34.713563 [0] 4V_BURST(2) TDMA slot ID=8 ESS: (partial)
03/29/24 09:52:34.713622 [0] AMBE 98 25 72 5f e8 8d 00 errs 0 err_rate 0.000000, dt 0.044319
03/29/24 09:52:34.714327 [0] AMBE 98 22 29 97 80 7e 80 errs 0 err_rate 0.000000, dt 0.000705
03/29/24 09:52:34.714995 [0] AMBE a8 20 67 3e 0d 61 80 errs 0 err_rate 0.000000, dt 0.000668
03/29/24 09:52:34.715626 [0] AMBE 78 39 f2 0b a2 3e 80 errs 0 err_rate 0.000000, dt 0.000631
03/29/24 09:52:34.722129 [SERAM] VF expire: tgid: 50002, freq: 770.756250, slot: 0, ts: 03/29/24 09:52:33.354953
03/29/24 09:52:34.825074 [0] process_mac_pdu: opcode 4 offset 2 len 21
03/29/24 09:52:34.825267 [0] MAC_ACTIVE: mco=1/02(0x42), len=9, mco=2/35(0xb5), len=5, mco=0/00(0x00), len=6, rs_errs=0
03/29/24 09:52:34.827772 [0] 4V_BURST(3) TDMA slot ID=0 ESS: (partial)
03/29/24 09:52:34.827858 [0] AMBE 68 23 54 69 af 1f 80 errs 0 err_rate 0.000000, dt 0.112232
03/29/24 09:52:34.828939 [0] AMBE 68 38 fd c7 a7 8b 00 errs 0 err_rate 0.000000, dt 0.001081
03/29/24 09:52:34.829816 [0] AMBE 68 33 52 0c 67 a6 00 errs 0 err_rate 0.000000, dt 0.000877
03/29/24 09:52:34.830765 [SERAM] set tgid=60151, srcaddr=0
03/29/24 09:52:34.830882 [SERAM] VF ts ph2: tgid: 60151, freq: 772.006250, slot: 1
03/29/24 09:52:34.830935 [SERAM] set tgid=60171, srcaddr=0
03/29/24 09:52:34.830956 [0] AMBE 88 35 70 02 23 77 80 errs 0 err_rate 0.000000, dt 0.001140
03/29/24 09:52:34.831931 [SERAM] VF ts ph2: tgid: 60171, freq: 770.706250, slot: 0
03/29/24 09:52:34.832139 [0] tsbk(0x02) grp_v_ch_grant_up: ch1: 772.006250 ga1: 60151 ch2: 770.706250 ga2: 60171
03/29/24 09:52:34.832293 [SERAM] needs control channel receiver
03/29/24 09:52:34.832329 [SERAM] receiver[0] not idle
03/29/24 09:52:34.832361 [SERAM] has no idle receivers for control channel monitoring
03/29/24 09:52:34.832445 [0] tdma(0x05) grp_v_ch_grant_up: f1: 770.043750 ga1: 0 f2: 769.006250 ga2: 0 f3: 769.006250 ga3: 0
03/29/24 09:52:34.832493 [SERAM] set tgid=0, srcaddr=0
03/29/24 09:52:34.832556 [SERAM] new freq=770.043750
03/29/24 09:52:34.833006 [SERAM] VF change: tgid: 0, prev_freq: 769.006250, prev_slot: None, new_freq: 770.043750, new_slot: None
03/29/24 09:52:34.833050 [SERAM] VF ts ph1: tgid: 0, freq: 770.043750
03/29/24 09:52:34.833097 [SERAM] set tgid=0, srcaddr=0
03/29/24 09:52:34.833134 [SERAM] VF change: tgid: 0, prev_freq: 770.043750, prev_slot: None, new_freq: 769.006250, new_slot: None
03/29/24 09:52:34.833169 [SERAM] VF ts ph1: tgid: 0, freq: 769.006250
03/29/24 09:52:34.833208 [SERAM] set tgid=0, srcaddr=0
03/29/24 09:52:34.833242 [SERAM] VF ts ph1: tgid: 0, freq: 769.006250
03/29/24 09:52:34.833341 [SERAM] needs control channel receiver
03/29/24 09:52:34.833585 [SERAM] receiver[0] not idle
03/29/24 09:52:34.833633 [SERAM] has no idle receivers for control channel monitoring
 

MTL_Emergencies

Member++
Database Admin
Joined
Sep 6, 2019
Messages
147
Location
Quebec, Canada
Code:
{
    "channels": [
        {
            "name": "SERAM Public Safety",
            "device": "sdr0",
            "trunking_sysname": "SERAM",
            "meta_stream_name": "metastream_0",
            "demod_type": "cqpsk",
            "cqpsk_tracking": true,
            "tracking_threshold": 30,
            "tracking_feedback": 0.85,
            "destination": "udp://127.0.0.1:23466",
            "excess_bw": 0.2,
            "filter_type": "rc",
            "frequency": 770506250,
            "if_rate": 24000,
            "plot": "",
            "symbol_rate": 4800,
            "enable_analog": "off",
            "blacklist": "",
            "whitelist": "seram.wlist"
        }
    ],
    "devices": [
        {
            "args": "rtl=0",
            "gains": "LNA:39",
            "gain_mode": false,
            "name": "sdr0",
            "offset": 0,
            "ppm": 0.0,
            "rate": 2400000,
            "usable_bw_pct": 0.85,
            "tunable": true
        }
    ],
    "trunking": {
        "module": "tk_p25.py",
        "chans": [
            {
                "nac": "0xcf1",
                "sysname": "SERAM",
                "control_channel_list": "770.50625, 772.00625, 770.95625, 770.75625, 770.70625, 770.45625, 770.20625",
                "whitelist": "seram.wlist",
                "blacklist": "",
                "tgid_tags_file": "montreal.tsv",
                "rid_tags_file": "mtl-rid.tsv",
                "tdma_cc": false,
                "crypt_behavior": 0
            }
        ]
    },
    "audio": {
        "module": "sockaudio.py",
        "instances": [
            {
                "instance_name": "audio0",
                "device_name": "default",
                "udp_port": 23466,
                "audio_gain": 1.0,
                "number_channels": 1
            }
        ]
    },
    "terminal": {
        "module": "terminal.py",
        "terminal_type": "curses",
        "terminal_type": "http:0.0.0.0:8080",
        "curses_plot_interval": 0.1,
        "http_plot_interval": 1.0,
        "http_plot_directory": "../www/images",
        "tuning_step_large": 1200,
        "tuning_step_small": 100
    }
}
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,030
Location
NE Wisconsin
An SDR's usable bandwidth is never as great as the sampling rate whereby there is a roll off in sensitivity as your approach the lower and
upper ends of the sampled spectrum.

The frequency error observed in your video capture appears excessive! I would suggest dropping the sample rate to 1000000 in that the
SDR is tuned back and forth between the control channel and the voice service channels in following a trunk call.

Utilize the mixer plot and frequency error display to aid in adjusting the ppm value as necessary to reduce the frequency error.
Change the "usable_bw_pct" to 65 to insure the SDR is retuned as necessary to maintain maximum sensitivity while avoiding
decoding of samples in the roll off regions.

"devices": [
{
"args": "rtl=0",
"gains": "LNA:39",
"gain_mode": false,
"name": "sdr0",
"offset": 0,
"ppm": 0.0,
"rate": 1000000, "
"usable_bw_pct": 0.65,
"tunable": true
 
Last edited:

MTL_Emergencies

Member++
Database Admin
Joined
Sep 6, 2019
Messages
147
Location
Quebec, Canada
Yeah I can confirm adjusting the sample rate and bw did help as well as ppm correction which was -0.8 ppm for a v3 dongle. I do still have those empty voice channels. They do seem to appear only when synced on a Phase II patch communication (not on phase I).

1711734718091.png
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,412
Location
Talbot Co, MD
MTL,

I'm not understanding what it is I'm supposed to be seeing in the video. Please can you describe the problem so I can try to correlate your description with the log file you supplied.

Thanks!
Graham
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,030
Location
NE Wisconsin
To be clear, what are exactly do you mean by "Empty Voice Channels? Enable logging verbose (-v 11) to capture additional details
to post with your problem description.
 

MTL_Emergencies

Member++
Database Admin
Joined
Sep 6, 2019
Messages
147
Location
Quebec, Canada
Basically when the program syncs to a P25 Phase II patch talkgroup a lot of new frequencies appear even though there isn't a talkgroup activity (voice/data) on them. They all seem to be 12.5 kHz spaced. That makes the frequency table very big (over a hundred frequencies) even though there is at max 18 frequencies. I could try to record IQ data or baseband so you can recreate the process on your computer. Please tell me which format you would like.

1711735353649.png
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,412
Location
Talbot Co, MD
Basically when the program syncs to a P25 Phase II patch talkgroup a lot of new frequencies appear even though there isn't a talkgroup activity (voice/data) on them. They all seem to be 12.5 kHz spaced. That makes the frequency table very big (over a hundred frequencies) even though there is at max 18 frequencies. I could try to record IQ data or baseband so you can recreate the process on your computer. Please tell me which format you would like.

View attachment 159201
Could be an error in the decoding alg? Basically a freq gets added to the list when there is activity on it. The last column in the table shows the count for how many times that freq has been used. The small numbers are probably the "bad" decodes.

If you can capture a symbol file I can replay it here and see if I can figure out what's going on.
Do you know whether this is a Moto or Harris system?
Lastly, have you confirmed you are running the latest code? There were some changes made to decode recently.
 

MTL_Emergencies

Member++
Database Admin
Joined
Sep 6, 2019
Messages
147
Location
Quebec, Canada
Sure here is the link sent via WeTransfer: OP25 Capture. I used the capture button on the web interface to make the capture.
The system (MFID) shows as Airbus DS Communications when decoded with Unitrunker but the radios are Motorola.
Also I did rebuild OP25 with the latest changes and the issue persists.
Thank you
 

boatbod

Member
Joined
Mar 3, 2007
Messages
3,412
Location
Talbot Co, MD
When I replay your capture file I only see 2 frequencies. (See screenshot)

Can you re-run the capture from app startup through whenever you see some bad data, and then send that along with a -v 11 log file of the same period of activity.
To capture from startup, simply add "raw_output" and a file name in the channels section of your cfg.json.
 

Attachments

  • Screenshot from 2024-03-31 13-47-47.png
    Screenshot from 2024-03-31 13-47-47.png
    197.9 KB · Views: 4

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,297
Location
Lafayette County, FL
Any chance you've got any custom modifications to the source code causing that frequency enumeration issue? Just out of curiosity, does it occur if you have a stock Boatbod OP25 in another folder built and running the same configuration?

Any changes to the source code can be viewed by using:

git diff or git diff > changes.patch to have it dump all the changes to a file for inspection.
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,297
Location
Lafayette County, FL
If I'm reading that correctly, it looks like you either have commited changed locally that aren't pushed upstream, or you have staged changes that haven't been commited yet, or both.

To see any local changes that are staged, but not commited, you can use:
git diff --cached

and to see detailed changes on things committed, you can use
git log -p

Maybe one of those things will help you trace down the issue, assuming that this behavior doesn't occur on the main or gr310 branch, but do occur for you locally. Then again, it could be a gr310 branch issue.
 

lwvmobile

DSD-FME
Joined
Apr 26, 2020
Messages
1,297
Location
Lafayette County, FL
BTW, just as a personal note, not sure what your coding flow looks like, but I've found in the past year or so that since switching to VSCode / VSCodium, my work has improved significantly thanks to the help of some built in tools to help visualize changes made in real time, its very handy when making changes and needed to double check work and so on, making sure test code items don't get left in later on, and just helping to jog the memory of what you've done so far. This has been pretty invaluable to me as far as keeping me on task and finding issues during testing.

Screenshot from 2024-04-01 09-54-49.png
 

MTL_Emergencies

Member++
Database Admin
Joined
Sep 6, 2019
Messages
147
Location
Quebec, Canada
git diff -- cached gives me this:
Code:
diff --git a/op25/gr-op25_repeater/apps/tk_p25.py b/op25/gr-op25_repeater/apps/tk_p25.py
index 4b5f67e..5dd7e47 100644
--- a/op25/gr-op25_repeater/apps/tk_p25.py
+++ b/op25/gr-op25_repeater/apps/tk_p25.py
@@ -37,7 +37,7 @@ import gnuradio.op25_repeater as op25_repeater
 CC_TIMEOUT_RETRIES = 3   # Number of control channel framing timeouts before hunting
 VC_TIMEOUT_RETRIES = 3   # Number of voice channel framing timeouts before expiry
 TGID_DEFAULT_PRIO = 3    # Default tgid priority when unassigned
-TGID_HOLD_TIME = 2.0     # Number of seconds to give previously active tgid exclusive channel access
+TGID_HOLD_TIME = 0.0     # Number of seconds to give previously active tgid exclusive channel access
 TGID_SKIP_TIME = 4.0     # Number of seconds to blacklist a previously skipped tgid
 TGID_EXPIRY_TIME = 1.0   # Number of seconds to allow tgid to remain active with no updates received
 FREQ_EXPIRY_TIME = 1.2   # Number of seconds to allow freq to remain active with no updates received
@@ -1996,7 +1996,7 @@ class p25_receiver(object):
 
     def get_status(self):
         _tgid = self.hold_tgid if self.hold_tgid is not None else self.current_tgid
-        cc_tag = "Control Channel" if self.system.has_cc(self.msgq_id) else None
+        cc_tag = "Scanning" if self.system.has_cc(self.msgq_id) else None
         d = {}
         d['freq'] = self.tuned_frequency
         d['tdma'] = self.current_slot
diff --git a/op25/gr-op25_repeater/www/www-static/index.html b/op25/gr-op25_repeater/www/www-static/index.html
index b30cae1..33b018c 100644
--- a/op25/gr-op25_repeater/www/www-static/index.html
+++ b/op25/gr-op25_repeater/www/www-static/index.html
@@ -164,12 +164,12 @@
             <div class="s2_cell_h" id="s2_ch_cap" style="display:none;"><input type="button" class="cap-button" id="cap_bn" name="c_cap" value="start capture" title="Capture" onclick="javascript:f_cap_button(0);"></div>
             </div>
             <div class="s2_row">
-            <div class="s2_cell_a"><span class="label">Group Addr:</span></div>
+            <div class="s2_cell_a"><span class="label">Group:</span></div>
             <div class="s2_cell_b2" id="s2_grp">&nbsp</div>
             <div class="s2_cell_h" id="s2_ch_trk" style="display:none;"><input type="button" class="cap-button" id="trk_bn" name="c_trk" value="tracking" title="Tracking" onclick="javascript:f_trk_button(-1);"></div>
             </div>
             <div class="s2_row">
-            <div class="s2_cell_a"><span class="label">Source Addr:</span></div>
+            <div class="s2_cell_a"><span class="label">Source:</span></div>
             <div class="s2_cell_b" id="s2_src">&nbsp</div>
             </div>
     </div> <!-- end table -->
diff --git a/op25/gr-op25_repeater/www/www-static/main.js b/op25/gr-op25_repeater/www/www-static/main.js
index ee3959b..0b035dc 100644
--- a/op25/gr-op25_repeater/www/www-static/main.js
+++ b/op25/gr-op25_repeater/www/www-static/main.js
@@ -369,12 +369,18 @@ function channel_status() {
     }
 
     html = "";
-    if (c_tag != null) {
+    if (c_tag != 0) {
         html += "<span class=\"value\">" + c_tag + "</span>";
         if ((current_tgid != null) && (c_encrypted)) {
             html += "<span class=\"label\">[ENCRYPTED]</span>";
         }
     }
+    else if (current_tgid != null) {
+        html += "<span class=\"value\">" + current_tgid + "</span>";
+        if (hold_tgid != 0) {
+            html += "<span class=\"value\"> [HOLD]</span>";
+        }
+    }
     else
     {
         html += "<span class=\"value\">&nbsp;</span>";
@@ -402,7 +408,7 @@ function channel_status() {
         if (c_srctag != "")
             html += "<span class=\"value\">" + c_srctag + "</span>";
         else
-            html += "<span class=\"value\">" + c_srcaddr + "</span>";
+            html += "<span class=\"value\">ID: " + c_srcaddr + "</span>";
     s2_src.innerHTML = html;
 
     if (capture_active)

and git log -p gives me this:
Code:
commit 9b532eba55e29a6e20bae5a989ff3dc7fb948130 (HEAD -> gr310)
Author: Your Name <you@example.com>
Date:   Fri Mar 29 09:39:50 2024 -0400

    git pull

diff --git a/op25/gr-op25_repeater/apps/sockaudio.py b/op25/gr-op25_repeater/apps/sockaudio.py
index 63ba12e..a2d9e62 100644
--- a/op25/gr-op25_repeater/apps/sockaudio.py
+++ b/op25/gr-op25_repeater/apps/sockaudio.py
@@ -483,7 +483,7 @@ class socket_audio(object):
     def scale(self, data):  # crude amplitude scaler (volume) for S16_LE samples
         arr = np.array(np.frombuffer(data, dtype=np.int16), dtype=np.float32)
         result = np.zeros(len(arr), dtype=np.int16)
-        arr = np.clip(arr*self.audio_gain, -32767, 32766, out=result)
+        arr = np.clip(arr*self.audio_gain, -32767, 32766, out=result, casting='unsafe')
         return result.tobytes('C')
 
     def interleave(self, data_a, data_b):

commit 2184b167af62d085cbea929359438eb15ecedef2
Author: Your Name <you@example.com>
Date:   Sun Mar 24 18:29:37 2024 -0400

    my changes

diff --git a/op25/gr-op25_repeater/apps/index.html b/op25/gr-op25_repeater/apps/index.html
new file mode 100644
index 0000000..3efef1c
--- /dev/null
+++ b/op25/gr-op25_repeater/apps/index.html
@@ -0,0 +1,213 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+
+       <title>OP25</title>
+       <link rel="stylesheet" type="text/css" href="main.css">
+       <script src="main.js"></script>
+       <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+</head>
+
+<body onload="javascript:do_onload();">
+
:












































commit 9b532eba55e29a6e20bae5a989ff3dc7fb948130 (HEAD -> gr310)
Author: Your Name <you@example.com>
Date:   Fri Mar 29 09:39:50 2024 -0400

    git pull

diff --git a/op25/gr-op25_repeater/apps/sockaudio.py b/op25/gr-op25_repeater/apps/sockaudio.py
index 63ba12e..a2d9e62 100644
--- a/op25/gr-op25_repeater/apps/sockaudio.py
+++ b/op25/gr-op25_repeater/apps/sockaudio.py
@@ -483,7 +483,7 @@ class socket_audio(object):
     def scale(self, data):  # crude amplitude scaler (volume) for S16_LE samples
         arr = np.array(np.frombuffer(data, dtype=np.int16), dtype=np.float32)
         result = np.zeros(len(arr), dtype=np.int16)
-        arr = np.clip(arr*self.audio_gain, -32767, 32766, out=result)
+        arr = np.clip(arr*self.audio_gain, -32767, 32766, out=result, casting='unsafe')
         return result.tobytes('C')
 
     def interleave(self, data_a, data_b):

commit 2184b167af62d085cbea929359438eb15ecedef2
Author: Your Name <you@example.com>
Date:   Sun Mar 24 18:29:37 2024 -0400

    my changes

diff --git a/op25/gr-op25_repeater/apps/index.html b/op25/gr-op25_repeater/apps/index.html
new file mode 100644
index 0000000..3efef1c
--- /dev/null
+++ b/op25/gr-op25_repeater/apps/index.html
@@ -0,0 +1,213 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+
+       <title>OP25</title>
+       <link rel="stylesheet" type="text/css" href="main.css">
+       <script src="main.js"></script>
+       <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
+</head>
+
:
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,030
Location
NE Wisconsin
@MTL_Emergencies,

I downloaded and ran your raw symbols dump on GR-3.8 (Master Branch) and on GR-310 (GR-310 Branch) but was unable to duplicate
the empty voice channels. Perhaps the symbols dump was terminated before the problem you describe occurred as there were only
a little over 2K tsbks captured?

GR-3.8

SERAM GR-3.8.png
GR-3.10

SERAM GR-3.10.png
 

MTL_Emergencies

Member++
Database Admin
Joined
Sep 6, 2019
Messages
147
Location
Quebec, Canada
That's strange... Have you tuned to TGs 50001/50002/50003/50004 because they are patches and they're the one causing the issues on my end?
 

wgbecks

Active Member
Joined
Jan 17, 2005
Messages
1,030
Location
NE Wisconsin
That's strange... Have you tuned to TGs 50001/50002/50003/50004 because they are patches and they're the one causing the issues on my end?

I simply used your JSON in loading seram-capture.bin without use of any talkgroup filters. I did quickly script a tag file for
use in identifying the captured talkgroup activity. I even received a transmission (French) during my playback.

Are you certain the raw symbols dump posted were captured while you observed the multiple empty voice channels?
Try playing back the raw symbols file posted as verification.

JSON:
{
    "channels": [
        {
            "name": "SERAM Public Safety",
            "device": "sdr0",
            "trunking_sysname": "SERAM",
            "meta_stream_name": "",
            "demod_type": "cqpsk",
            "cqpsk_tracking": true,
            "tracking_threshold": 30,
            "tracking_feedback": 0.85,
            "destination": "udp://127.0.0.1:23450",
            "excess_bw": 0.2,
            "filter_type": "rc",
            "frequency": 770506250,
            "if_rate": 24000,
            "plot": "",
            "symbol_rate": 4800,
            "raw_output": "",
            "raw_input": "seram-capture.bin",
            "raw_seek": 0,
            "enable_analog": "off",
            "blacklist": "",
            "whitelist": ""
        }
 
Top