Nick,
I'm having a minor issue with a local 3.0 signal. I have two signals near me running 3.0 with an extremely robust BPS PLP (PLP16) and they behave very differently.
16: sfi=0 mod=qpsk cod=2/15 layer=core ti=cti lls=0 lock=1
-> Required SNR: AWGN -6.23 to -5.55 dB, Rayleigh -5.72 to -5.06 dB
-> PLP Bitrate: 0.033 Mbps
WHUT, I can lock all three PLPs without issue, and I get some BPS packets out of it.
WBFF, by contrast, if I try to lock all three PLPs, the tuner flips out as if it's swapping rapidly between the two, and this continues until I change the channel.
As an alternative, I tried to lock just PLP16, which takes 5 seconds to lock and then dies after 10 seconds with an empty file resulting. WHUT behaves the same way (though it took like 6 or 7 seconds to lock before dying at 10 seconds), so this specific issue is probably the low data rate rather than whatever's wrong with WBFF.
Any ideas?
- Trip
BPS PLP Issue (3.0)?
Re: BPS PLP Issue (3.0)?
This is just a guess, but I think some of these PLP 16 configurations are out of spec. Specifically, when there are two PLPs in a subframe using the CTI interleaver.
If you look at section 7.1.1 of A/322, it talks about what interleavers can be used. Unless you're using LDM, if there are multiple PLPs you have to use the HTI interleaver (or no interleaver).
There's more discussion in section 4.2.11.1 in A/327.
If you look at section 7.1.1 of A/322, it talks about what interleavers can be used. Unless you're using LDM, if there are multiple PLPs you have to use the HTI interleaver (or no interleaver).
There's more discussion in section 4.2.11.1 in A/327.
Re: BPS PLP Issue (3.0)?
Good observation. I note, with a closer look, that WHUT and WNUV differ in the interleaver used.drmpeg wrote: Wed Oct 15, 2025 12:08 pm This is just a guess, but I think some of these PLP 16 configurations are out of spec. Specifically, when there are two PLPs in a subframe using the CTI interleaver.
If you look at section 7.1.1 of A/322, it talks about what interleavers can be used. Unless you're using LDM, if there are multiple PLPs you have to use the HTI interleaver (or no interleaver).
There's more discussion in section 4.2.11.1 in A/327.
I've written to WNUV to see if someone can check into it.
- Trip
Re: BPS PLP Issue (3.0)?
Some additional info. I can't even test multiple PLPs with CTI on my open source ATSC 3.0 transmitter. When I implemented multiple PLPs with TDM and FDM, I didn't include the CTI interleaver in the frame mapper. There were no multiple PLP test configurations from ATSC with CTI (there are 22 configurations with HTI and 3 with no interleaver), so I came to the conclusion that CTI was illegal.
Re: BPS PLP Issue (3.0)?
So I got an answer back from someone involved in WNUV:
"CTI can be used in multi-PLP TDM operations as long as any given CDP only utilizes a single core PLP. In this case, we have a CDP, BPS, that utilizes just PLP 16, another set of CDPs for the mobile/BEST services which utilize just PLP0 (core layer of LDM), and a third set of CDPs for the fixed services which utilize PLP0+PLP1 (acceptable because PLP1 is LDM, which allows tuning multiple PLPs as long as they share one core PLP). Because TV sets do not need PLP16 to process any CDP, we're able to maintain the efficiencies of CTI.
It makes sense given the configuration that tuning all PLPs on WNUV would cause it to struggle, since then you’re effectively trying to tune as if the CDP spanned all three PLPs. The best approach there, since it has the two 3.0 tuners in it, would probably be to tune 0/1 on one tuner and 16 on the second tuner when analyzing WNUV, which should work fine to tune based on the HDHRs I have running at home."
Assuming this is all accurate, and I see no reason to doubt it, my problem remains that PLP16 won't tune or provide any packets on its own without another PLP connected.
(And it would be really nice if it were possible to get plpinfo and/or l1detail through the web interface. A friend has given me limited access to some of his tuners but only the web side, so I can capture debug files but not PLP information.)
- Trip
"CTI can be used in multi-PLP TDM operations as long as any given CDP only utilizes a single core PLP. In this case, we have a CDP, BPS, that utilizes just PLP 16, another set of CDPs for the mobile/BEST services which utilize just PLP0 (core layer of LDM), and a third set of CDPs for the fixed services which utilize PLP0+PLP1 (acceptable because PLP1 is LDM, which allows tuning multiple PLPs as long as they share one core PLP). Because TV sets do not need PLP16 to process any CDP, we're able to maintain the efficiencies of CTI.
It makes sense given the configuration that tuning all PLPs on WNUV would cause it to struggle, since then you’re effectively trying to tune as if the CDP spanned all three PLPs. The best approach there, since it has the two 3.0 tuners in it, would probably be to tune 0/1 on one tuner and 16 on the second tuner when analyzing WNUV, which should work fine to tune based on the HDHRs I have running at home."
Assuming this is all accurate, and I see no reason to doubt it, my problem remains that PLP16 won't tune or provide any packets on its own without another PLP connected.
(And it would be really nice if it were possible to get plpinfo and/or l1detail through the web interface. A friend has given me limited access to some of his tuners but only the web side, so I can capture debug files but not PLP information.)
- Trip
Re: BPS PLP Issue (3.0)?
I think the Sony demodulator is just sensitive to CTI configurations. I bet if they switched to HTI, it would all work. They're not using all the cells in their frame as it is (they're leaving 51257 cells unused), so the "we're able to maintain the efficiencies of CTI" argument is weak.
Re: BPS PLP Issue (3.0)?
WNUV could use a 36 (PLP0 and 1) + 1 (PLP16) block HTI configuration and use more cells (and have a higher bitrate on PLP0 and 1) than they are with the CTI configuration.
Re: BPS PLP Issue (3.0)?
I've added CTI to my open source ATSC 3.0 transmitter so that I could run some experiments. I've set up a flow that's similar to the WNUV configuration, but just TDM (not LDM+TDM). But I have used the same parameters for the low bitrate BPS PLP.
The low rate PLP works fine. The data comes out in bursts every 10 seconds. I'm sending a Transport Stream, and even VLC can decode it one frame every once in a while.
The "Signal Quality" meter on hdhomerun_config_gui does bounce between 0 and 100% (mostly at 0%), but the stream is still working.

The red packets in Wireshark are one of the data bursts from the HDHomeRun.

The configuration:
The low rate PLP works fine. The data comes out in bursts every 10 seconds. I'm sending a Transport Stream, and even VLC can decode it one frame every once in a while.
The "Signal Quality" meter on hdhomerun_config_gui does bounce between 0 and 100% (mostly at 0%), but the stream is still working.

The red packets in Wireshark are one of the data bursts from the HDHomeRun.

The configuration:
Code: Select all
L1B_version = 0
L1B_mimo_scattered_pilot_encoding = Walsh-Hadamard pilots or no MIMO subframes
L1B_lls_flag = No LLS in current frame
L1B_time_info_flag = Time information is not included in the current frame
L1B_return_channel_flag = 0
L1B_papr_reduction = No PAPR reduction used
L1B_frame_length_mode = symbol-aligned
L1B_time_offset = 2304
L1B_additional samples = 0
L1B_num_subframes = 1
L1B_preamble_num_symbols = 2
L1B_preamble_reduced_carriers = 5.832 MHz
L1B_L1_Detail_content_tag = 0
L1B_L1_Detail_size_bytes = 38
L1B_L1_Detail_fec_type = Mode 1
L1B_L1_additional_parity_mode = K=0 (No additional parity used)
L1B_L1_Detail_total_cells = 3417
L1B_first_sub_mimo = No MIMO
L1B_first_sub_miso = No MISO
L1B_first_sub_fft_size = 8K
L1B_first_sub_reduced_carriers = 5.832 MHz
L1B_first_sub_guard_interval = GI5_1024
L1B_first_sub_num_ofdm_symbols = 150
L1B_first_sub_scattered_pilot_pattern = SP3_4
L1B_first_sub_scattered_pilot_boost = 1.660
L1B_first_sub_sbs_first = not present
L1B_first_sub_sbs_last = present
L1B_crc = 0x00000000
L1D_version = 1
L1D_num_rf = No Channel Bonding
******** subframe = 0 ********
L1D_frequency_interleaver = All Symbols
L1D_sbs_null_cells = 3026
L1D_num_plp = 2
********** plp = 0 **********
L1D_plp0_id = 0
L1D_plp0_lls_flag = 0
L1D_plp0_layer = Core
L1D_plp0_start = 0
L1D_plp0_size = 907229
L1D_plp0_scrambler_type = PRBS
L1D_plp0_fec_type = BCH + 64K LDPC
L1D_plp0_mod = 16QAM
L1D_plp0_cod = 9/15
L1D_plp0_TI_mode = Convolutional time interleaving
L1D_plp0_CTI_fec_block_start = 342556
L1D_plp0_type = non-dispersed
L1D_plp0_CTI_depth = 1024
L1D_plp0_CTI_start_row = 804
frame time = 204.666667 ms
Available PLP cells = 939629
TS bitrate = 10581602.090
PLP bitrate = 10585980.080
********** plp = 1 **********
L1D_plp1_id = 1
L1D_plp1_lls_flag = 0
L1D_plp1_layer = Core
L1D_plp1_start = 907229
L1D_plp1_size = 32400
L1D_plp1_scrambler_type = PRBS
L1D_plp1_fec_type = BCH + 16K LDPC
L1D_plp1_mod = QPSK
L1D_plp1_cod = 2/15
L1D_plp1_TI_mode = Convolutional time interleaving
L1D_plp1_CTI_fec_block_start = 163840
L1D_plp1_type = non-dispersed
L1D_plp1_TI_extended_interleaving = disabled
L1D_plp1_CTI_depth = 512
L1D_plp1_CTI_start_row = 320
frame time = 204.666667 ms
Available PLP cells = 939629
TS bitrate = 38618.893
PLP bitrate = 38931.596
L1D_bsid = 0x8086
L1D_crc = 0x1e95bb94
Re: BPS PLP Issue (3.0)?
So in my closet I have an HDHR Connect 4K, and just yesterday I got an HDHR Flex 4K. Both are running the newest Dev firmware, both are unable to lock plp16 for more than 10 seconds and the resulting file is 0 bytes. How are you getting the capture from the HDHR to work?drmpeg wrote: Sat Oct 25, 2025 10:35 pm The "Signal Quality" meter on hdhomerun_config_gui does bounce between 0 and 100% (mostly at 0%), but the stream is still working.
- Trip
Re: BPS PLP Issue (3.0)?
I'm probably not emulating WNUV close enough. Especially using Transport Streams instead of IP packets. I'll guess the processing path for TS is quite a bit different than IP in the HDHomeRun.
Also, I don't have a universal frame mapper. I can't do the 3 PLP LDM+TDM WNUV configuration. I can only do:
1) Single PLP
2) Two PLP TDM
3) Two PLP FDM
4) Two PLP LDM
5) Two subframes with a single PLP each
So the best I could do was use two PLP TDM with the second PLP matching all the parameters of the WNUV PLP 16.
It's weird that it's losing lock. At some point you may want consider acquiring a SDR that can capture at 6.912 Msps. Then you can send Nick K. IQ capture files that he can replay in his lab with a transmit capable SDR (which I know he has for sure).