Lab066: validate 500 ksymbol/s full-packet OTA reception

This commit is contained in:
LittleSam129
2026-09-15 15:51:57 +03:00
parent dacf04f2d0
commit b27a5cf00e
14 changed files with 6597 additions and 0 deletions

View File

@@ -0,0 +1,224 @@
{
"lab": "Lab066",
"stage": "SINGLE_RF_CAPTURE",
"passed": true,
"rf_tx_count": 1,
"automatic_tx_repeats": 0,
"point": {
"frequency_hz": 1400000000,
"physical_path": "MASTER TX near window -> LOS indoor -> SLAVE RX on desk",
"path_confirmed": true,
"tx_antenna": "existing 1400 MHz antenna near window",
"rx_antenna": "existing 1400 MHz antenna on desk",
"distance_m": 1.2,
"orientation": "same polarization; fixed during preflight and RF session",
"visibility": "LOS indoor"
},
"parameters": {
"rf_frequency_hz": 1400000000,
"sample_rate_hz": 8000000,
"symbol_rate": 500000,
"samples_per_symbol": 16,
"digital_carrier_hz": 50000.0,
"packets": 16,
"payload_bytes": 256,
"tx_vga_db": 20,
"rx_lna_db": 24,
"rx_vga_db": 24,
"rf_amplifier": false,
"bias_tee": false,
"geometry": {
"frequency_hz": 1400000000,
"physical_path": "MASTER TX near window -> LOS indoor -> SLAVE RX on desk",
"path_confirmed": true,
"tx_antenna": "existing 1400 MHz antenna near window",
"rx_antenna": "existing 1400 MHz antenna on desk",
"distance_m": 1.2,
"orientation": "same polarization; fixed during preflight and RF session",
"visibility": "LOS indoor"
},
"geometry_unchanged": true,
"clock_path": "10 MHz TCXO -> MASTER -> MASTER CLKOUT -> SLAVE CLKIN"
},
"tx_sha256": "621b0bb8ec72bba4f522c79a5c77669c850740ea481270c4dcc2a7317819f199",
"process_before": {
"state": "CLEAR",
"attempts": [
{
"state": "CLEAR",
"mechanism": "psutil",
"matches": [],
"inspected": 300,
"errors": []
}
]
},
"inventory": {
"passed": true,
"serials": [
"000000000000000097c063dc2e5327d3",
"000000000000000097c063dc323b97d3"
],
"master_serial": "000000000000000097c063dc323b97d3",
"slave_serial": "000000000000000097c063dc2e5327d3",
"raw_output": "hackrf_info version: 2024.02.1\nlibhackrf version: 2024.02.1 (0.9)\nFound HackRF\nIndex: 0\nSerial number: 000000000000000097c063dc323b97d3\nBoard ID Number: 4 (HackRF One)\nFirmware Version: 2024.02.1 (API:1.08)\nPart ID Number: 0xa000cb3c 0x00744f5a\nHardware Revision: r9\nHardware does not appear to have been manufactured by Great Scott Gadgets.\nHardware supported by installed firmware:\n HackRF One\n\nFound HackRF\nIndex: 1\nSerial number: 000000000000000097c063dc2e5327d3\nBoard ID Number: 4 (HackRF One)\nFirmware Version: 2024.02.1 (API:1.08)\nPart ID Number: 0xa000cb3c 0xbc4b4739\nHardware Revision: r9\nHardware does not appear to have been manufactured by Great Scott Gadgets.\nHardware supported by installed firmware:\n HackRF One"
},
"clock": {
"passed": true,
"master_reg29": 38,
"slave_reg29": 38,
"slave_clkin_status": "DETECTED",
"slave_clock_wait": {
"state": "DETECTED",
"queries": 2,
"time_to_detect_ms": 131.2907999381423,
"elapsed_ms": 131.2907999381423,
"polls": [
{
"query": 1,
"start_ms": 50.125200068578124,
"end_ms": 66.83470006100833,
"raw": "CLKIN status: no clock signal detected",
"state": "NOT_DETECTED",
"exit_code": 0
},
{
"query": 2,
"start_ms": 116.86519999057055,
"end_ms": 131.2907999381423,
"raw": "CLKIN status: clock signal detected",
"state": "DETECTED",
"exit_code": 0
}
]
},
"master_serial": "000000000000000097c063dc323b97d3",
"slave_serial": "000000000000000097c063dc2e5327d3"
},
"rx_level_before_tx": {
"samples": 65536,
"mean_i": 0.952423095703125,
"mean_q": 1.83642578125,
"power_code2": 5.656829833984375,
"ac_power_code2": 1.377260430715979,
"rms_code": 2.3784090972716143,
"peak_magnitude_code": 5.385164807134504,
"max_abs_i": 4.0,
"max_abs_q": 5.0,
"papr_db": 7.0982488319834305,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"saturation_detected": false,
"analog_compression": "UNKNOWN_WITHOUT_CALIBRATION",
"ac_rms_code": 1.173567395046394,
"unexpected_strong_signal": false
},
"tx_process": {
"returncode": 0,
"stdout_file": "tx_stdout.txt",
"stderr_file": "tx_stderr.txt"
},
"tx_counter_summary": {
"expected_kind": "underrun",
"observations": [
{
"count": 0,
"role": "UNKNOWN",
"kind": "underrun",
"text": "0 underruns",
"character_offset": 336
},
{
"count": 0,
"role": "UNKNOWN",
"kind": "underrun",
"text": "0 underruns",
"character_offset": 506
}
],
"selected_counts": [
0,
0
],
"final_count": 0,
"maximum_count": 0,
"unparsed_loss_text": false,
"clean": true
},
"rx_counter_summary": {
"expected_kind": "overrun",
"observations": [
{
"count": 0,
"role": "UNKNOWN",
"kind": "overrun",
"text": "0 overruns",
"character_offset": 337
},
{
"count": 0,
"role": "UNKNOWN",
"kind": "overrun",
"text": "0 overruns",
"character_offset": 459
},
{
"count": 0,
"role": "UNKNOWN",
"kind": "overrun",
"text": "0 overruns",
"character_offset": 580
},
{
"count": 0,
"role": "UNKNOWN",
"kind": "overrun",
"text": "0 overruns",
"character_offset": 751
}
],
"selected_counts": [
0,
0,
0,
0
],
"final_count": 0,
"maximum_count": 0,
"unparsed_loss_text": false,
"clean": true
},
"rx_samples": 16000000,
"rx_sha256": "72ff7ddd8b30baa4a5c066361ca1f8dfa664f1da37f65c0c373b211ce6cf00f0",
"rx_level": {
"samples": 16000000,
"mean_i": 0.9510684375,
"mean_q": 1.844211625,
"power_code2": 5.0153848125,
"ac_power_code2": 0.7097371219061666,
"rms_code": 2.239505483918269,
"peak_magnitude_code": 5.830951894845301,
"max_abs_i": 4.0,
"max_abs_q": 5.0,
"papr_db": 8.311746565484663,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.000250769240625,
"saturation_detected": false,
"analog_compression": "UNKNOWN_WITHOUT_CALIBRATION"
},
"rx_clipping": false,
"process_after": {
"state": "CLEAR",
"attempts": [
{
"state": "CLEAR",
"mechanism": "psutil",
"matches": [],
"inspected": 300,
"errors": []
}
]
},
"cleanup_errors": []
}

View File

@@ -0,0 +1,17 @@
packet_index,legacy_header,legacy_fec,legacy_crc,legacy_packet_output,t2_header,t2_fec,t2_crc,t2_packet_output
1,False,False,False,False,False,False,False,False
2,False,False,False,False,False,False,False,False
3,False,False,False,False,False,False,False,False
4,True,True,True,True,True,True,True,True
5,True,True,True,True,True,True,True,True
6,True,True,True,True,True,True,True,True
7,True,True,True,True,True,True,True,True
8,True,True,True,True,True,True,True,True
9,False,False,False,False,False,False,False,False
10,True,True,True,True,True,True,True,True
11,True,True,True,True,True,True,True,True
12,True,True,True,True,True,True,True,True
13,True,True,True,True,True,True,True,True
14,True,True,True,True,True,True,True,True
15,False,False,False,False,False,False,False,False
16,False,False,False,False,False,False,False,False
1 packet_index legacy_header legacy_fec legacy_crc legacy_packet_output t2_header t2_fec t2_crc t2_packet_output
2 1 False False False False False False False False
3 2 False False False False False False False False
4 3 False False False False False False False False
5 4 True True True True True True True True
6 5 True True True True True True True True
7 6 True True True True True True True True
8 7 True True True True True True True True
9 8 True True True True True True True True
10 9 False False False False False False False False
11 10 True True True True True True True True
12 11 True True True True True True True True
13 12 True True True True True True True True
14 13 True True True True True True True True
15 14 True True True True True True True True
16 15 False False False False False False False False
17 16 False False False False False False False False

View File

@@ -0,0 +1,164 @@
{
"lab": "Lab066",
"stage": "RX_ONLY_PREFLIGHT",
"passed": true,
"rf_tx_count": 0,
"point": {
"frequency_hz": 1400000000,
"physical_path": "MASTER TX near window -> LOS indoor -> SLAVE RX on desk",
"path_confirmed": true,
"tx_antenna": "existing 1400 MHz antenna near window",
"rx_antenna": "existing 1400 MHz antenna on desk",
"distance_m": 1.2,
"orientation": "same polarization; fixed during preflight and RF session",
"visibility": "LOS indoor"
},
"parameters": {
"rf_frequency_hz": 1400000000,
"sample_rate_hz": 8000000,
"symbol_rate": 500000,
"samples_per_symbol": 16,
"digital_carrier_hz": 50000.0,
"packets": 16,
"payload_bytes": 256,
"tx_vga_db": 20,
"rx_lna_db": 24,
"rx_vga_db": 24,
"rf_amplifier": false,
"bias_tee": false,
"geometry": {
"frequency_hz": 1400000000,
"physical_path": "MASTER TX near window -> LOS indoor -> SLAVE RX on desk",
"path_confirmed": true,
"tx_antenna": "existing 1400 MHz antenna near window",
"rx_antenna": "existing 1400 MHz antenna on desk",
"distance_m": 1.2,
"orientation": "same polarization; fixed during preflight and RF session",
"visibility": "LOS indoor"
},
"geometry_unchanged": true,
"clock_path": "10 MHz TCXO -> MASTER -> MASTER CLKOUT -> SLAVE CLKIN"
},
"tx_sha256": "621b0bb8ec72bba4f522c79a5c77669c850740ea481270c4dcc2a7317819f199",
"stop_before_tx": true,
"process_before": {
"state": "CLEAR",
"attempts": [
{
"state": "CLEAR",
"mechanism": "psutil",
"matches": [],
"inspected": 294,
"errors": []
}
]
},
"inventory": {
"passed": true,
"serials": [
"000000000000000097c063dc2e5327d3",
"000000000000000097c063dc323b97d3"
],
"master_serial": "000000000000000097c063dc323b97d3",
"slave_serial": "000000000000000097c063dc2e5327d3",
"raw_output": "hackrf_info version: 2024.02.1\nlibhackrf version: 2024.02.1 (0.9)\nFound HackRF\nIndex: 0\nSerial number: 000000000000000097c063dc323b97d3\nBoard ID Number: 4 (HackRF One)\nFirmware Version: 2024.02.1 (API:1.08)\nPart ID Number: 0xa000cb3c 0x00744f5a\nHardware Revision: r9\nHardware does not appear to have been manufactured by Great Scott Gadgets.\nHardware supported by installed firmware:\n HackRF One\n\nFound HackRF\nIndex: 1\nSerial number: 000000000000000097c063dc2e5327d3\nBoard ID Number: 4 (HackRF One)\nFirmware Version: 2024.02.1 (API:1.08)\nPart ID Number: 0xa000cb3c 0xbc4b4739\nHardware Revision: r9\nHardware does not appear to have been manufactured by Great Scott Gadgets.\nHardware supported by installed firmware:\n HackRF One"
},
"clock": {
"passed": true,
"master_reg29": 38,
"slave_reg29": 38,
"slave_clkin_status": "DETECTED",
"slave_clock_wait": {
"state": "DETECTED",
"queries": 2,
"time_to_detect_ms": 132.11270002648234,
"elapsed_ms": 132.11270002648234,
"polls": [
{
"query": 1,
"start_ms": 50.09360006079078,
"end_ms": 66.02549995295703,
"raw": "CLKIN status: no clock signal detected",
"state": "NOT_DETECTED",
"exit_code": 0
},
{
"query": 2,
"start_ms": 116.46570009179413,
"end_ms": 132.11270002648234,
"raw": "CLKIN status: clock signal detected",
"state": "DETECTED",
"exit_code": 0
}
]
},
"master_serial": "000000000000000097c063dc323b97d3",
"slave_serial": "000000000000000097c063dc2e5327d3"
},
"rx_process": {
"returncode": 0,
"stdout": "",
"stderr": "call hackrf_set_sample_rate(8000000 Hz/8.000 MHz)\ncall hackrf_set_hw_sync_mode(0)\ncall hackrf_set_freq(1400000000 Hz/1400.000 MHz)\ncall hackrf_set_amp_enable(0)\ncall hackrf_set_antenna_enable(0)\nsamples_to_xfer 800000/0Mio\nStop with Ctrl-C\n 1.8 MiB / 0.115 sec = 15.9 MiB/second, average power -35.2 dBfs, 11712 bytes free in buffer, 0 overruns, longest 0 bytes\n\nExiting...\nTotal time: 0.11546 s\nhackrf_stop_rx() done\nTransfer statistics:\n1850016 bytes transferred by M0\n1835008 bytes transferred by M4\n0 overruns, longest 0 bytes\nhackrf_close() done\nhackrf_exit() done\nfclose() done\nexit\n"
},
"rx_counter_summary": {
"expected_kind": "overrun",
"observations": [
{
"count": 0,
"role": "UNKNOWN",
"kind": "overrun",
"text": "0 overruns",
"character_offset": 334
},
{
"count": 0,
"role": "UNKNOWN",
"kind": "overrun",
"text": "0 overruns",
"character_offset": 503
}
],
"selected_counts": [
0,
0
],
"final_count": 0,
"maximum_count": 0,
"unparsed_loss_text": false,
"clean": true
},
"rx_level": {
"samples": 800000,
"mean_i": 0.94753,
"mean_q": 1.83594125,
"power_code2": 4.95347625,
"ac_power_code2": 0.6849828756484371,
"rms_code": 2.2256406381084974,
"peak_magnitude_code": 5.385164807134504,
"max_abs_i": 4.0,
"max_abs_q": 5.0,
"papr_db": 7.674879128392212,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"saturation_detected": false,
"analog_compression": "UNKNOWN_WITHOUT_CALIBRATION",
"symbol_energy": "NOT_APPLICABLE_TO_BACKGROUND",
"ac_rms_code": 0.8276369225985735,
"unexpected_strong_signal": false
},
"rx_sha256": "ff817582e6a8fc03b489bf89f46322a9db8a9493335a4360a1b0f9bedad7c4d5",
"rx_overruns": 0,
"process_after": {
"state": "CLEAR",
"attempts": [
{
"state": "CLEAR",
"mechanism": "psutil",
"matches": [],
"inspected": 294,
"errors": []
}
]
},
"cleanup_errors": []
}

View File

@@ -0,0 +1,217 @@
{
"lab": "Lab066",
"stage": "PREPARATION_ONLY",
"rf_tx_count": 0,
"head": "dacf04f2d0a15c0c1b56a7fb527db61fc2e38462",
"parameters": {
"rf_frequency_hz": 1400000000,
"sample_rate_hz": 8000000,
"symbol_rate": 500000,
"samples_per_symbol": 16,
"digital_carrier_hz": 50000.0,
"packets": 16,
"payload_bytes": 256,
"tx_vga_db": 20,
"rx_lna_db": 24,
"rx_vga_db": 24,
"rf_amplifier": false,
"bias_tee": false,
"geometry": {
"frequency_hz": 1400000000,
"physical_path": "MASTER TX near window -> LOS indoor -> SLAVE RX on desk",
"path_confirmed": true,
"tx_antenna": "existing 1400 MHz antenna near window",
"rx_antenna": "existing 1400 MHz antenna on desk",
"distance_m": 1.2,
"orientation": "same polarization; fixed during preflight and RF session",
"visibility": "LOS indoor"
},
"geometry_unchanged": true,
"clock_path": "10 MHz TCXO -> MASTER -> MASTER CLKOUT -> SLAVE CLKIN"
},
"packet_samples": 92256,
"inter_packet_gap_seconds": 0.005,
"inter_packet_gap_samples": 40000,
"number_of_gaps": 15,
"zero_guard_before_samples": 800000,
"zero_guard_after_samples": 800000,
"base_tx_samples": 2076096,
"expected_tx_samples": 3676096,
"tx_samples": 3676096,
"tx_bytes": 7352192,
"tx_duration_seconds": 0.459512,
"tx_sha256": "621b0bb8ec72bba4f522c79a5c77669c850740ea481270c4dcc2a7317819f199",
"layout": [
{
"packet_index": 1,
"start_sample": 800000,
"samples": 92256,
"payload_sha256": "414dee46d0555da2caabe0d4e446eb52d22be2f380ed4529fd7f192420d06465",
"following_gap_start_sample": 892256,
"following_gap_samples": 40000
},
{
"packet_index": 2,
"start_sample": 932256,
"samples": 92256,
"payload_sha256": "f5304773cc626858c4ad1cfe509bfe40418cfee6d9c65718c7c271c664465f2d",
"following_gap_start_sample": 1024512,
"following_gap_samples": 40000
},
{
"packet_index": 3,
"start_sample": 1064512,
"samples": 92256,
"payload_sha256": "e5604108e4a0a0441b962cf65822838d817a228d5df899dfd64dab958f32a59c",
"following_gap_start_sample": 1156768,
"following_gap_samples": 40000
},
{
"packet_index": 4,
"start_sample": 1196768,
"samples": 92256,
"payload_sha256": "43a7b5866bcf826920aae650830abfd2fa75b6e5460078c1bbde3ec7b461703f",
"following_gap_start_sample": 1289024,
"following_gap_samples": 40000
},
{
"packet_index": 5,
"start_sample": 1329024,
"samples": 92256,
"payload_sha256": "46836a613f080ddeba9c1b23bc8d8dd981db24975115074fa01b31699099efb8",
"following_gap_start_sample": 1421280,
"following_gap_samples": 40000
},
{
"packet_index": 6,
"start_sample": 1461280,
"samples": 92256,
"payload_sha256": "6ff8c9b941d37c39834f8cc5be3fdf563b3e55c51fc0c7d7344d4e046a15d13c",
"following_gap_start_sample": 1553536,
"following_gap_samples": 40000
},
{
"packet_index": 7,
"start_sample": 1593536,
"samples": 92256,
"payload_sha256": "273543a396d7499a1e1b325415b38555c72bb2665a227cd88aff5b797e18875d",
"following_gap_start_sample": 1685792,
"following_gap_samples": 40000
},
{
"packet_index": 8,
"start_sample": 1725792,
"samples": 92256,
"payload_sha256": "20051b24e17274d3b0cf3c170ea09559409c18ff429a3020ff28cb83d9b7bb3b",
"following_gap_start_sample": 1818048,
"following_gap_samples": 40000
},
{
"packet_index": 9,
"start_sample": 1858048,
"samples": 92256,
"payload_sha256": "9239a9fdb3fc94354cc8372dfa06867a18500ad13f867ea3a4cd4468e76bb9f0",
"following_gap_start_sample": 1950304,
"following_gap_samples": 40000
},
{
"packet_index": 10,
"start_sample": 1990304,
"samples": 92256,
"payload_sha256": "997be4e3b7a26708a48afd8ac0932460dbb34d67a359f1770dd76214f810e658",
"following_gap_start_sample": 2082560,
"following_gap_samples": 40000
},
{
"packet_index": 11,
"start_sample": 2122560,
"samples": 92256,
"payload_sha256": "fb1d718a4c2fa358f24ba34197b3100384b0df4229efae846944949894526903",
"following_gap_start_sample": 2214816,
"following_gap_samples": 40000
},
{
"packet_index": 12,
"start_sample": 2254816,
"samples": 92256,
"payload_sha256": "778de948620ddcf8c70f639f72ed042f97915234a57055421af9cbeb16c47e1f",
"following_gap_start_sample": 2347072,
"following_gap_samples": 40000
},
{
"packet_index": 13,
"start_sample": 2387072,
"samples": 92256,
"payload_sha256": "cabcd273073d70d686900e180be3c59e970cb3633bb370ba2198e64540727190",
"following_gap_start_sample": 2479328,
"following_gap_samples": 40000
},
{
"packet_index": 14,
"start_sample": 2519328,
"samples": 92256,
"payload_sha256": "3d6fda80bdd274d781399b1d1831cb4cb4a7c17bcd69930330564bf0ed6eb125",
"following_gap_start_sample": 2611584,
"following_gap_samples": 40000
},
{
"packet_index": 15,
"start_sample": 2651584,
"samples": 92256,
"payload_sha256": "ece74586bedf93fc3f5e07f41f64eea4383425d43424fe209ca30d911279c6ff",
"following_gap_start_sample": 2743840,
"following_gap_samples": 40000
},
{
"packet_index": 16,
"start_sample": 2783840,
"samples": 92256,
"payload_sha256": "bba4133aea193e327938abc18d2a0215f1df0e821d378d530dc0b47498af9a5c"
}
],
"rx_samples": 16000000,
"rx_duration_seconds": 2,
"automatic_retry": false,
"tx_command_prepared_not_run": [
"C:\\Users\\user\\Tools\\HackRF\\Library\\bin\\hackrf_transfer.exe",
"-d",
"000000000000000097c063dc323b97d3",
"-t",
"C:\\Users\\user\\Desktop\\projects\\SDR_Rover\\data\\raw\\lab066\\tx_stream.cs8",
"-f",
"1400000000",
"-s",
"8000000",
"-n",
"3676096",
"-x",
"20",
"-a",
"0",
"-p",
"0",
"-B"
],
"rx_command_prepared_not_run": [
"C:\\Users\\user\\Tools\\HackRF\\Library\\bin\\hackrf_transfer.exe",
"-d",
"000000000000000097c063dc2e5327d3",
"-r",
"C:\\Users\\user\\Desktop\\projects\\SDR_Rover\\data\\raw\\lab066\\rx_stream.cs8",
"-f",
"1400000000",
"-s",
"8000000",
"-n",
"16000000",
"-l",
"24",
"-g",
"24",
"-a",
"0",
"-p",
"0",
"-B"
]
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,382 @@
{
"lab": "Lab066",
"capture_valid": true,
"legacy": {
"candidates": 145,
"header_pass": 10,
"fec_started": 10,
"fec_pass": 10,
"crc_started": 10,
"crc_pass": 10,
"packet_output": 10,
"exact_payload_match": 10,
"packet_indexes": [
4,
5,
6,
7,
8,
10,
11,
12,
13,
14
]
},
"t2": {
"candidates": 145,
"header_pass": 10,
"fec_started": 10,
"fec_pass": 10,
"crc_started": 10,
"crc_pass": 10,
"packet_output": 10,
"exact_payload_match": 10,
"packet_indexes": [
4,
5,
6,
7,
8,
10,
11,
12,
13,
14
]
},
"passed_by_both": [
4,
5,
6,
7,
8,
10,
11,
12,
13,
14
],
"passed_only_by_legacy": [],
"passed_only_by_t2": [],
"failed_by_both": [
1,
2,
3,
9,
15,
16
],
"packet_rows": [
{
"packet_index": 1,
"legacy": {
"candidate_at_expected_packet": true,
"header": false,
"fec": false,
"crc": false,
"packet_output": false
},
"t2": {
"candidate_at_expected_packet": true,
"header": false,
"fec": false,
"crc": false,
"packet_output": false
}
},
{
"packet_index": 2,
"legacy": {
"candidate_at_expected_packet": true,
"header": false,
"fec": false,
"crc": false,
"packet_output": false
},
"t2": {
"candidate_at_expected_packet": true,
"header": false,
"fec": false,
"crc": false,
"packet_output": false
}
},
{
"packet_index": 3,
"legacy": {
"candidate_at_expected_packet": true,
"header": false,
"fec": false,
"crc": false,
"packet_output": false
},
"t2": {
"candidate_at_expected_packet": true,
"header": false,
"fec": false,
"crc": false,
"packet_output": false
}
},
{
"packet_index": 4,
"legacy": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
},
"t2": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
}
},
{
"packet_index": 5,
"legacy": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
},
"t2": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
}
},
{
"packet_index": 6,
"legacy": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
},
"t2": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
}
},
{
"packet_index": 7,
"legacy": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
},
"t2": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
}
},
{
"packet_index": 8,
"legacy": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
},
"t2": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
}
},
{
"packet_index": 9,
"legacy": {
"candidate_at_expected_packet": true,
"header": false,
"fec": false,
"crc": false,
"packet_output": false
},
"t2": {
"candidate_at_expected_packet": true,
"header": false,
"fec": false,
"crc": false,
"packet_output": false
}
},
{
"packet_index": 10,
"legacy": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
},
"t2": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
}
},
{
"packet_index": 11,
"legacy": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
},
"t2": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
}
},
{
"packet_index": 12,
"legacy": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
},
"t2": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
}
},
{
"packet_index": 13,
"legacy": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
},
"t2": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
}
},
{
"packet_index": 14,
"legacy": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
},
"t2": {
"candidate_at_expected_packet": true,
"header": true,
"fec": true,
"crc": true,
"packet_output": true
}
},
{
"packet_index": 15,
"legacy": {
"candidate_at_expected_packet": true,
"header": false,
"fec": false,
"crc": false,
"packet_output": false
},
"t2": {
"candidate_at_expected_packet": true,
"header": false,
"fec": false,
"crc": false,
"packet_output": false
}
},
{
"packet_index": 16,
"legacy": {
"candidate_at_expected_packet": true,
"header": false,
"fec": false,
"crc": false,
"packet_output": false
},
"t2": {
"candidate_at_expected_packet": true,
"header": false,
"fec": false,
"crc": false,
"packet_output": false
}
}
],
"physical": {
"symbol_error_rate": 0.011046635434412266,
"rms_symbol_deviation": 0.5283737542111951,
"matched_component_power": 8.359397909690596,
"residual_power": 2.333261015636848,
"matched_residual_db": 5.542116733950265,
"band_gain_nonuniformity_p95_p05_db_median": 2.8700698316435833,
"band_gain_nonuniformity_p95_p05_db_min": 2.7249057267348604,
"band_gain_nonuniformity_p95_p05_db_max": 3.1116789732634516
},
"lab056_B": {
"symbol_error_rate": 0.03495896464646465,
"rms_symbol_deviation": 0.8453497751219741,
"matched_residual_db": 1.4648455366051558,
"band_gain_nonuniformity_db": 5.471381501203027
},
"difference_from_lab056_B": {
"symbol_error_rate_absolute": -0.023912329212052382,
"rms_symbol_deviation_absolute": -0.3169760209107789,
"matched_residual_db": 4.077271197345109,
"band_gain_nonuniformity_db": -2.6013116695594434
},
"lab062": {
"symbol_error_rate": 0.0992866269165247,
"rms_symbol_deviation": 1.2204009809742542,
"matched_residual_db": -1.7300509612417754,
"band_gain_nonuniformity_db": 6.660340655081576,
"capture_status": "RF_SESSION_INVALID_TX_UNDERRUN"
},
"difference_from_lab062": {
"symbol_error_rate_absolute": -0.08823999148211244,
"rms_symbol_deviation_absolute": -0.6920272267630591,
"matched_residual_db": 7.27216769519204,
"band_gain_nonuniformity_db": -3.790270823437993
},
"classification": "PARTIAL_PACKET_RECOVERY_NO_T2_GAIN",
"primary_result": "Аппаратно валидный Lab066 дал одинаковые 10/16 точных пакетов в legacy и T2; физическое качество лучше Lab056 B и невалидной Lab062.",
"recommended_next_single_step": "Отдельно разрешить офлайн-сравнение header-ошибок пакетов 1-3, 9, 15-16 с принятыми пакетами по сохранённому RX; новый TX не нужен."
}

View File

@@ -0,0 +1,507 @@
{
"lab": "Lab066",
"stage": "SOFTWARE_GATE",
"rf_tx_count": 0,
"tx_sha256": "621b0bb8ec72bba4f522c79a5c77669c850740ea481270c4dcc2a7317819f199",
"legacy": {
"mode": "legacy",
"candidates": 16,
"header_pass": 16,
"fec_started": 16,
"fec_pass": 16,
"crc_started": 16,
"crc_pass": 16,
"packet_output": 16,
"exact_payload_match": 16,
"packet_indexes": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
],
"exact_ordered_payloads": true,
"t2_state_scope": "NOT_APPLICABLE",
"fallback_between_modes": false,
"passed": true,
"rows": [
{
"absolute_refined": 800000,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 1,
"t2_tracking_runs_for_candidate": 0
},
{
"absolute_refined": 932256,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 2,
"t2_tracking_runs_for_candidate": 0
},
{
"absolute_refined": 1064512,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 3,
"t2_tracking_runs_for_candidate": 0
},
{
"absolute_refined": 1196768,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 4,
"t2_tracking_runs_for_candidate": 0
},
{
"absolute_refined": 1329024,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 5,
"t2_tracking_runs_for_candidate": 0
},
{
"absolute_refined": 1461280,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 6,
"t2_tracking_runs_for_candidate": 0
},
{
"absolute_refined": 1593536,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 7,
"t2_tracking_runs_for_candidate": 0
},
{
"absolute_refined": 1725792,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 8,
"t2_tracking_runs_for_candidate": 0
},
{
"absolute_refined": 1858048,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 9,
"t2_tracking_runs_for_candidate": 0
},
{
"absolute_refined": 1990304,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 10,
"t2_tracking_runs_for_candidate": 0
},
{
"absolute_refined": 2122560,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 11,
"t2_tracking_runs_for_candidate": 0
},
{
"absolute_refined": 2254816,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 12,
"t2_tracking_runs_for_candidate": 0
},
{
"absolute_refined": 2387072,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 13,
"t2_tracking_runs_for_candidate": 0
},
{
"absolute_refined": 2519328,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 14,
"t2_tracking_runs_for_candidate": 0
},
{
"absolute_refined": 2651584,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 15,
"t2_tracking_runs_for_candidate": 0
},
{
"absolute_refined": 2783840,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 16,
"t2_tracking_runs_for_candidate": 0
}
],
"detector_statistics": {
"total_local_peaks": 80004,
"first_stage_candidates": 21193,
"cheap_stage_checked": 21193,
"cheap_stage_rejected": 20800,
"clusters": 37,
"representative_checks": 16,
"inside_accepted_frame": 377
},
"candidate_overflow": 0
},
"t2": {
"mode": "t2",
"candidates": 16,
"header_pass": 16,
"fec_started": 16,
"fec_pass": 16,
"crc_started": 16,
"crc_pass": 16,
"packet_output": 16,
"exact_payload_match": 16,
"packet_indexes": [
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16
],
"exact_ordered_payloads": true,
"t2_state_scope": "NEW_PREAMBLE_ESTIMATE_PER_PACKET",
"fallback_between_modes": false,
"passed": true,
"rows": [
{
"absolute_refined": 800000,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 1,
"t2_tracking_runs_for_candidate": 2
},
{
"absolute_refined": 932256,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 2,
"t2_tracking_runs_for_candidate": 2
},
{
"absolute_refined": 1064512,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 3,
"t2_tracking_runs_for_candidate": 2
},
{
"absolute_refined": 1196768,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 4,
"t2_tracking_runs_for_candidate": 2
},
{
"absolute_refined": 1329024,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 5,
"t2_tracking_runs_for_candidate": 2
},
{
"absolute_refined": 1461280,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 6,
"t2_tracking_runs_for_candidate": 2
},
{
"absolute_refined": 1593536,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 7,
"t2_tracking_runs_for_candidate": 2
},
{
"absolute_refined": 1725792,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 8,
"t2_tracking_runs_for_candidate": 2
},
{
"absolute_refined": 1858048,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 9,
"t2_tracking_runs_for_candidate": 2
},
{
"absolute_refined": 1990304,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 10,
"t2_tracking_runs_for_candidate": 2
},
{
"absolute_refined": 2122560,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 11,
"t2_tracking_runs_for_candidate": 2
},
{
"absolute_refined": 2254816,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 12,
"t2_tracking_runs_for_candidate": 2
},
{
"absolute_refined": 2387072,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 13,
"t2_tracking_runs_for_candidate": 2
},
{
"absolute_refined": 2519328,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 14,
"t2_tracking_runs_for_candidate": 2
},
{
"absolute_refined": 2651584,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 15,
"t2_tracking_runs_for_candidate": 2
},
{
"absolute_refined": 2783840,
"reason": "CRC_PASS",
"header": true,
"fec_started": true,
"fec": true,
"crc_started": true,
"crc": true,
"packet_output": true,
"packet_index_after_verdict": 16,
"t2_tracking_runs_for_candidate": 2
}
],
"detector_statistics": {
"total_local_peaks": 80004,
"first_stage_candidates": 21193,
"cheap_stage_checked": 21193,
"cheap_stage_rejected": 20800,
"clusters": 37,
"representative_checks": 16,
"inside_accepted_frame": 377
},
"candidate_overflow": 0,
"t2_state_reset_evidence": {
"estimate_source": "each candidate's own preamble",
"context_scope": "new PacketMeasure context for every candidate",
"tracking_runs_per_accepted_packet": [
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2,
2
],
"all_accepted_packets_have_fresh_tracking_runs": true,
"persistent_tracking_state_in_packet_processor": false
}
},
"gaps_verified_zero": true,
"t2_state_reset_verified_by_fresh_preamble_per_packet": true,
"passed": true
}