Lab065: validate OTA gain improvement at TX VGA 20 dB

This commit is contained in:
LittleSam129
2026-09-15 13:42:08 +03:00
parent cff226e0bf
commit dacf04f2d0
12 changed files with 2305 additions and 0 deletions

View File

@@ -0,0 +1,232 @@
{
"lab": "Lab065",
"stage": "SINGLE_RF_LEVEL_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": 20000,
"samples_per_symbol": 400,
"digital_carrier_hz": 50000,
"rrc_rolloff": 0.35,
"rrc_span_symbols": 10,
"prbs": "PRBS7 x^7+x^6+1, deterministic initial state",
"full_phy_packet": false,
"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"
},
"clock_path": "10 MHz TCXO -> MASTER -> MASTER CLKOUT -> SLAVE CLKIN",
"levels_db_relative_nominal": [
-18.0,
-12.0,
-6.0,
0.0
],
"geometry_unchanged_from_lab064": true,
"waveform_source": "Lab064 exact CS8 copy"
},
"tx_sha256": "fa260719659b2984fe29588238415622cd75c6daefec6cc9130ba1bf851bd3f9",
"process_before": {
"state": "CLEAR",
"attempts": [
{
"state": "CLEAR",
"mechanism": "psutil",
"matches": [],
"inspected": 292,
"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": 136.89709990285337,
"elapsed_ms": 136.89709990285337,
"polls": [
{
"query": 1,
"start_ms": 50.08170008659363,
"end_ms": 67.4550998955965,
"raw": "CLKIN status: no clock signal detected",
"state": "NOT_DETECTED",
"exit_code": 0
},
{
"query": 2,
"start_ms": 117.92290001176298,
"end_ms": 136.89709990285337,
"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.9449310302734375,
"mean_q": 1.8423919677734375,
"power_code2": 4.87310791015625,
"ac_power_code2": 0.5858050952665499,
"rms_code": 2.2075117010236323,
"peak_magnitude_code": 4.47213595499958,
"max_abs_i": 3.0,
"max_abs_q": 4.0,
"papr_db": 6.132239671543243,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"saturation_detected": false,
"analog_compression": "UNKNOWN_WITHOUT_CALIBRATION"
},
"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": 337
},
{
"count": 0,
"role": "UNKNOWN",
"kind": "underrun",
"text": "0 underruns",
"character_offset": 509
}
],
"selected_counts": [
0,
0
],
"final_count": 0,
"maximum_count": 0,
"unparsed_loss_text": false,
"clean": true
},
"rx_samples": 16000000,
"rx_bytes": 32000000,
"rx_duration_seconds": 2.0,
"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": 581
},
{
"count": 0,
"role": "UNKNOWN",
"kind": "overrun",
"text": "0 overruns",
"character_offset": 752
}
],
"selected_counts": [
0,
0,
0,
0
],
"final_count": 0,
"maximum_count": 0,
"unparsed_loss_text": false,
"clean": true
},
"rx_sha256": "845d7b7dcaef70e179ab69e6ba0041601859630786d2f4d51c16a8c1c7869d7e",
"rx_level": {
"samples": 16000000,
"mean_i": 0.942780625,
"mean_q": 1.8349653125,
"power_code2": 5.6163274375,
"ac_power_code2": 1.3603944325463857,
"rms_code": 2.3698792031451728,
"peak_magnitude_code": 10.816653826391969,
"max_abs_i": 10.0,
"max_abs_q": 10.0,
"papr_db": 13.187334420841685,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"saturation_detected": false,
"analog_compression": "UNKNOWN_WITHOUT_CALIBRATION"
},
"rx_clipping": false,
"process_after": {
"state": "CLEAR",
"attempts": [
{
"state": "CLEAR",
"mechanism": "psutil",
"matches": [],
"inspected": 292,
"errors": []
}
]
},
"cleanup_errors": []
}

View File

@@ -0,0 +1,181 @@
{
"lab": "Lab065",
"stage": "COMMON_CLOCK_AND_RX_ONLY_PREFLIGHT",
"passed": true,
"rf_tx_count": 0,
"stop_before_tx": true,
"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": 20000,
"samples_per_symbol": 400,
"digital_carrier_hz": 50000,
"rrc_rolloff": 0.35,
"rrc_span_symbols": 10,
"prbs": "PRBS7 x^7+x^6+1, deterministic initial state",
"full_phy_packet": false,
"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"
},
"clock_path": "10 MHz TCXO -> MASTER -> MASTER CLKOUT -> SLAVE CLKIN",
"levels_db_relative_nominal": [
-18.0,
-12.0,
-6.0,
0.0
],
"geometry_unchanged_from_lab064": true,
"waveform_source": "Lab064 exact CS8 copy"
},
"tx_sha256": "fa260719659b2984fe29588238415622cd75c6daefec6cc9130ba1bf851bd3f9",
"process_before": {
"state": "CLEAR",
"attempts": [
{
"state": "CLEAR",
"mechanism": "psutil",
"matches": [],
"inspected": 289,
"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": 3,
"time_to_detect_ms": 201.98559993878007,
"elapsed_ms": 201.98559993878007,
"polls": [
{
"query": 1,
"start_ms": 50.617999862879515,
"end_ms": 66.89479993656278,
"raw": "CLKIN status: no clock signal detected",
"state": "NOT_DETECTED",
"exit_code": 0
},
{
"query": 2,
"start_ms": 117.23309988155961,
"end_ms": 136.1208998132497,
"raw": "CLKIN status: no clock signal detected",
"state": "NOT_DETECTED",
"exit_code": 0
},
{
"query": 3,
"start_ms": 187.1324998792261,
"end_ms": 201.98559993878007,
"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.116 sec = 15.9 MiB/second, average power -34.8 dBfs, 9024 bytes free in buffer, 0 overruns, longest 0 bytes\n\nExiting...\nTotal time: 0.11556 s\nhackrf_stop_rx() done\nTransfer statistics:\n1847520 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": 333
},
{
"count": 0,
"role": "UNKNOWN",
"kind": "overrun",
"text": "0 overruns",
"character_offset": 502
}
],
"selected_counts": [
0,
0
],
"final_count": 0,
"maximum_count": 0,
"unparsed_loss_text": false,
"clean": true
},
"rx_level": {
"samples": 800000,
"mean_i": 0.94889625,
"mean_q": 1.85107375,
"power_code2": 5.4432075,
"ac_power_code2": 1.1163293787968742,
"rms_code": 2.333068258752838,
"peak_magnitude_code": 8.06225774829855,
"max_abs_i": 6.0,
"max_abs_q": 8.0,
"papr_db": 10.770584663112091,
"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": 1.0565648956864289,
"unexpected_strong_signal": false
},
"rx_sha256": "be3c61dfa1bc40d1a9f6777689026804a1ccfc340b82680d3ec5304ddd68f78c",
"rx_overruns": 0,
"process_after": {
"state": "CLEAR",
"attempts": [
{
"state": "CLEAR",
"mechanism": "psutil",
"matches": [],
"inspected": 289,
"errors": []
}
]
},
"cleanup_errors": []
}

View File

@@ -0,0 +1,219 @@
{
"lab": "Lab065",
"stage": "PREPARATION_ONLY",
"rf_tx_count": 0,
"head": "cff226e0bf9e36a627829ea11a4ca3292ae20953",
"parameters": {
"rf_frequency_hz": 1400000000,
"sample_rate_hz": 8000000,
"symbol_rate": 20000,
"samples_per_symbol": 400,
"digital_carrier_hz": 50000,
"rrc_rolloff": 0.35,
"rrc_span_symbols": 10,
"prbs": "PRBS7 x^7+x^6+1, deterministic initial state",
"full_phy_packet": false,
"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"
},
"clock_path": "10 MHz TCXO -> MASTER -> MASTER CLKOUT -> SLAVE CLKIN",
"levels_db_relative_nominal": [
-18.0,
-12.0,
-6.0,
0.0
],
"geometry_unchanged_from_lab064": true,
"waveform_source": "Lab064 exact CS8 copy"
},
"segments": [
{
"label": "L0",
"level_db": -18.0,
"start_sample": 800000,
"samples": 800000,
"duration_seconds": 0.1,
"analysis_start_sample": 808400,
"analysis_samples": 783200,
"metrics": {
"samples": 800000,
"mean_i": -9.625e-05,
"mean_q": 2.75e-05,
"power_code2": 30.87065625,
"ac_power_code2": 30.870656239979688,
"rms_code": 5.556136809870686,
"peak_magnitude_code": 9.219544457292887,
"max_abs_i": 9.0,
"max_abs_q": 9.0,
"papr_db": 4.398730638796093,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.0015435328125,
"requested_relative_power_db": -18.0,
"tx_rms_code": 5.556136809870686,
"tx_peak_abs_i_code": 9.0,
"tx_peak_abs_q_code": 9.0,
"tx_peak_magnitude_code": 9.219544457292887,
"digital_clipping": false,
"actual_relative_power_db": -17.97368512020099
}
},
{
"label": "L1",
"level_db": -12.0,
"start_sample": 2000000,
"samples": 800000,
"duration_seconds": 0.1,
"analysis_start_sample": 2008400,
"analysis_samples": 783200,
"metrics": {
"samples": 800000,
"mean_i": -5e-05,
"mean_q": 5e-05,
"power_code2": 122.2567675,
"ac_power_code2": 122.25676749499999,
"rms_code": 11.056978226441435,
"peak_magnitude_code": 17.804493814764857,
"max_abs_i": 17.0,
"max_abs_q": 17.0,
"papr_db": 4.1378635346865025,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.006112838375,
"requested_relative_power_db": -12.0,
"tx_rms_code": 11.056978226441435,
"tx_peak_abs_i_code": 17.0,
"tx_peak_abs_q_code": 17.0,
"tx_peak_magnitude_code": 17.804493814764857,
"digital_clipping": false,
"actual_relative_power_db": -11.99641465105681
},
"tx_input_difference_from_previous_db": 5.9772704691441785
},
{
"label": "L2",
"level_db": -6.0,
"start_sample": 3200000,
"samples": 800000,
"duration_seconds": 0.1,
"analysis_start_sample": 3208400,
"analysis_samples": 783200,
"metrics": {
"samples": 800000,
"mean_i": 5.625e-05,
"mean_q": 2.625e-05,
"power_code2": 486.5064875,
"ac_power_code2": 486.50648749614686,
"rms_code": 22.05689206347984,
"peak_magnitude_code": 35.12833614050059,
"max_abs_i": 34.0,
"max_abs_q": 35.0,
"papr_db": 4.0422652379446395,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.024325324375,
"requested_relative_power_db": -6.0,
"tx_rms_code": 22.05689206347984,
"tx_peak_abs_i_code": 34.0,
"tx_peak_abs_q_code": 35.0,
"tx_peak_magnitude_code": 35.12833614050059,
"digital_clipping": false,
"actual_relative_power_db": -5.998257379520232
},
"tx_input_difference_from_previous_db": 5.998157271536577
},
{
"label": "L3",
"level_db": 0.0,
"start_sample": 4400000,
"samples": 800000,
"duration_seconds": 0.1,
"analysis_start_sample": 4408400,
"analysis_samples": 783200,
"metrics": {
"samples": 800000,
"mean_i": 8.25e-05,
"mean_q": 0.00011125,
"power_code2": 1936.04021375,
"ac_power_code2": 1936.0402137308172,
"rms_code": 44.00045697205883,
"peak_magnitude_code": 69.6419413859206,
"max_abs_i": 69.0,
"max_abs_q": 69.0,
"papr_db": 3.9882736474748155,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.0968020106875,
"requested_relative_power_db": 0.0,
"tx_rms_code": 44.00045697205883,
"tx_peak_abs_i_code": 69.0,
"tx_peak_abs_q_code": 69.0,
"tx_peak_magnitude_code": 69.6419413859206,
"digital_clipping": false,
"actual_relative_power_db": 0.0
},
"tx_input_difference_from_previous_db": 5.998257379520232
}
],
"tx_samples": 6000000,
"tx_bytes": 12000000,
"tx_duration_seconds": 0.75,
"tx_sha256": "fa260719659b2984fe29588238415622cd75c6daefec6cc9130ba1bf851bd3f9",
"source_tx_sha256": "fa260719659b2984fe29588238415622cd75c6daefec6cc9130ba1bf851bd3f9",
"waveform_unchanged_from_lab064": true,
"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\\lab065\\tx_level_staircase.cs8",
"-f",
"1400000000",
"-s",
"8000000",
"-n",
"6000000",
"-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\\lab065\\rx_stream.cs8",
"-f",
"1400000000",
"-s",
"8000000",
"-n",
"16000000",
"-l",
"24",
"-g",
"24",
"-a",
"0",
"-p",
"0",
"-B"
]
}

View File

@@ -0,0 +1,515 @@
{
"lab": "Lab065",
"stage": "OFFLINE_RF_LEVEL_LINEARITY_ANALYSIS",
"packet_receiver_used": false,
"location": {
"start_sample": 4217216,
"correlation": 0.28566040369708917,
"coarse_cfo_hz": 0.0,
"stride": 32
},
"rows": [
{
"label": "L0",
"level_db": -18.0,
"rx_start_sample": 5017215,
"alignment_adjustment_samples": -1,
"full_iq": {
"samples": 800000,
"mean_i": 0.9456825,
"mean_q": 1.849345,
"power_code2": 5.91858,
"ac_power_code2": 1.6041876801687494,
"rms_code": 2.4328131864160882,
"peak_magnitude_code": 7.280109889280518,
"max_abs_i": 6.0,
"max_abs_q": 7.0,
"papr_db": 9.520583473606806,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.000295929,
"ac_rms_code": 1.2665653082919766
},
"background_label": "INITIAL_GUARD",
"background": {
"samples": 160000,
"mean_i": 0.9375625,
"mean_q": 1.83864375,
"power_code2": 4.84290625,
"ac_power_code2": 0.5832719691796884,
"rms_code": 2.200660412239926,
"peak_magnitude_code": 4.47213595499958,
"max_abs_i": 3.0,
"max_abs_q": 4.0,
"papr_db": 6.1592393370019245,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.00024214531250000003,
"ac_rms_code": 0.7637224425009969
},
"matched_signal_power": 0.009849829325472823,
"residual_power": 1.147671646182205,
"matched_to_residual_db": -20.663889470509574,
"complex_gain_h": {
"real": -0.0069147093491316635,
"imag": 0.016278708105995708,
"phase_rad_at_active_start": 1.9724722764994853
},
"gain_abs": 0.01768642256034779,
"gain_power_abs_h_squared": 0.00031280954298317925,
"cfo_hz": 0.051385857393477286,
"residual_spectrum": {
"residual_band_h1_power_code2": 0.005700729949335216,
"residual_band_h2_power_code2": 0.004639110794845057,
"residual_band_h3_power_code2": 0.003007515042889266,
"interpretation": "Diagnostic residual bands at 50/100/150 kHz; not calibrated RF harmonic power"
}
},
{
"label": "L1",
"level_db": -12.0,
"rx_start_sample": 6217220,
"alignment_adjustment_samples": 4,
"full_iq": {
"samples": 800000,
"mean_i": 0.943035,
"mean_q": 1.84948125,
"power_code2": 5.45620125,
"ac_power_code2": 1.1463053446734381,
"rms_code": 2.335851290215197,
"peak_magnitude_code": 7.810249675906654,
"max_abs_i": 7.0,
"max_abs_q": 7.0,
"papr_db": 10.48439454272797,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.00027281006250000003,
"ac_rms_code": 1.0706565017191265
},
"background_label": "GAP_L0_L1",
"background": {
"samples": 160000,
"mean_i": 0.94049375,
"mean_q": 1.8457,
"power_code2": 4.89708125,
"ac_power_code2": 0.6059442662109387,
"rms_code": 2.2129349854887286,
"peak_magnitude_code": 5.0990195135927845,
"max_abs_i": 4.0,
"max_abs_q": 5.0,
"papr_db": 7.250360382891476,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.0002448540625,
"ac_rms_code": 0.7784242199539648
},
"matched_signal_power": 0.038319468321711674,
"residual_power": 0.6202840436902609,
"matched_to_residual_db": -12.091711347697867,
"complex_gain_h": {
"real": -0.010179637303215595,
"imag": 0.014270629544800722,
"phase_rad_at_active_start": 2.1904112551609387
},
"gain_abs": 0.017529286443833295,
"gain_power_abs_h_squared": 0.00030727588322995773,
"cfo_hz": -0.015456037277818255,
"residual_spectrum": {
"residual_band_h1_power_code2": 0.0075272705585461884,
"residual_band_h2_power_code2": 0.005178438128918921,
"residual_band_h3_power_code2": 0.0030044589971250603,
"interpretation": "Diagnostic residual bands at 50/100/150 kHz; not calibrated RF harmonic power"
}
},
{
"label": "L2",
"level_db": -6.0,
"rx_start_sample": 7417219,
"alignment_adjustment_samples": 3,
"full_iq": {
"samples": 800000,
"mean_i": 0.94256,
"mean_q": 1.85174125,
"power_code2": 5.55749625,
"ac_power_code2": 1.2401312394484378,
"rms_code": 2.3574342514691686,
"peak_magnitude_code": 7.280109889280518,
"max_abs_i": 6.0,
"max_abs_q": 7.0,
"papr_db": 9.793966912760688,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.0002778748125,
"ac_rms_code": 1.1136117992588073
},
"background_label": "GAP_L1_L2",
"background": {
"samples": 160000,
"mean_i": 0.94511875,
"mean_q": 1.8435375,
"power_code2": 4.89561875,
"ac_power_code2": 0.6037387844921858,
"rms_code": 2.2126045173053406,
"peak_magnitude_code": 8.06225774829855,
"max_abs_i": 7.0,
"max_abs_q": 7.0,
"papr_db": 11.231057671986083,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.0002447809375,
"ac_rms_code": 0.7770062963015073
},
"matched_signal_power": 0.15371936701352645,
"residual_power": 0.7099975700355287,
"matched_to_residual_db": -6.645282748943733,
"complex_gain_h": {
"real": -0.00913356439809709,
"imag": 0.015044605957089683,
"phase_rad_at_active_start": 2.1164192954656
},
"gain_abs": 0.01760006156291179,
"gain_power_abs_h_squared": 0.000309762167018285,
"cfo_hz": -0.02238057704898943,
"residual_spectrum": {
"residual_band_h1_power_code2": 0.016197144376941752,
"residual_band_h2_power_code2": 0.007835153285271243,
"residual_band_h3_power_code2": 0.003956469302302745,
"interpretation": "Diagnostic residual bands at 50/100/150 kHz; not calibrated RF harmonic power"
}
},
{
"label": "L3",
"level_db": 0.0,
"rx_start_sample": 8617220,
"alignment_adjustment_samples": 4,
"full_iq": {
"samples": 800000,
"mean_i": 0.941795,
"mean_q": 1.85647375,
"power_code2": 6.38914875,
"ac_power_code2": 2.055676143535938,
"rms_code": 2.52767655169723,
"peak_magnitude_code": 8.602325267042627,
"max_abs_i": 7.0,
"max_abs_q": 8.0,
"papr_db": 10.637887203839098,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.00031945743750000003,
"ac_rms_code": 1.4337629314276255
},
"background_label": "GAP_L2_L3",
"background": {
"samples": 160000,
"mean_i": 0.9481,
"mean_q": 1.8589625,
"power_code2": 4.9655625,
"ac_power_code2": 0.6109273135937494,
"rms_code": 2.228354213315289,
"peak_magnitude_code": 6.324555320336759,
"max_abs_i": 5.0,
"max_abs_q": 6.0,
"papr_db": 9.060915387364618,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.000248278125,
"ac_rms_code": 0.7816183938430246
},
"matched_signal_power": 0.609773488771332,
"residual_power": 1.8217771923731447,
"matched_to_residual_db": -4.753267221075902,
"complex_gain_h": {
"real": -0.009107358713761582,
"imag": 0.015027742846344474,
"phase_rad_at_active_start": 2.1156425161969685
},
"gain_abs": 0.017572052748526183,
"gain_power_abs_h_squared": 0.0003087770377969866,
"cfo_hz": -0.006443832004222744,
"residual_spectrum": {
"residual_band_h1_power_code2": 0.05148134451389538,
"residual_band_h2_power_code2": 0.019651663054535452,
"residual_band_h3_power_code2": 0.008610269373925542,
"interpretation": "Diagnostic residual bands at 50/100/150 kHz; not calibrated RF harmonic power"
}
}
],
"background_windows": [
{
"label": "INITIAL_GUARD",
"tx_relative_start_sample": 320000,
"samples": 160000,
"duration_seconds": 0.02,
"rx_start_sample": 4537216,
"metrics": {
"samples": 160000,
"mean_i": 0.9375625,
"mean_q": 1.83864375,
"power_code2": 4.84290625,
"ac_power_code2": 0.5832719691796884,
"rms_code": 2.200660412239926,
"peak_magnitude_code": 4.47213595499958,
"max_abs_i": 3.0,
"max_abs_q": 4.0,
"papr_db": 6.1592393370019245,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.00024214531250000003,
"ac_rms_code": 0.7637224425009969
}
},
{
"label": "GAP_L0_L1",
"tx_relative_start_sample": 1760000,
"samples": 160000,
"duration_seconds": 0.02,
"rx_start_sample": 5977216,
"metrics": {
"samples": 160000,
"mean_i": 0.94049375,
"mean_q": 1.8457,
"power_code2": 4.89708125,
"ac_power_code2": 0.6059442662109387,
"rms_code": 2.2129349854887286,
"peak_magnitude_code": 5.0990195135927845,
"max_abs_i": 4.0,
"max_abs_q": 5.0,
"papr_db": 7.250360382891476,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.0002448540625,
"ac_rms_code": 0.7784242199539648
}
},
{
"label": "GAP_L1_L2",
"tx_relative_start_sample": 2960000,
"samples": 160000,
"duration_seconds": 0.02,
"rx_start_sample": 7177216,
"metrics": {
"samples": 160000,
"mean_i": 0.94511875,
"mean_q": 1.8435375,
"power_code2": 4.89561875,
"ac_power_code2": 0.6037387844921858,
"rms_code": 2.2126045173053406,
"peak_magnitude_code": 8.06225774829855,
"max_abs_i": 7.0,
"max_abs_q": 7.0,
"papr_db": 11.231057671986083,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.0002447809375,
"ac_rms_code": 0.7770062963015073
}
},
{
"label": "GAP_L2_L3",
"tx_relative_start_sample": 4160000,
"samples": 160000,
"duration_seconds": 0.02,
"rx_start_sample": 8377216,
"metrics": {
"samples": 160000,
"mean_i": 0.9481,
"mean_q": 1.8589625,
"power_code2": 4.9655625,
"ac_power_code2": 0.6109273135937494,
"rms_code": 2.228354213315289,
"peak_magnitude_code": 6.324555320336759,
"max_abs_i": 5.0,
"max_abs_q": 6.0,
"papr_db": 9.060915387364618,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.000248278125,
"ac_rms_code": 0.7816183938430246
}
},
{
"label": "FINAL_GUARD",
"tx_relative_start_sample": 5440000,
"samples": 160000,
"duration_seconds": 0.02,
"rx_start_sample": 9657216,
"metrics": {
"samples": 160000,
"mean_i": 0.94553125,
"mean_q": 1.8361,
"power_code2": 5.00006875,
"ac_power_code2": 0.7347761952734375,
"rms_code": 2.2360833504142907,
"peak_magnitude_code": 9.486832980505138,
"max_abs_i": 9.0,
"max_abs_q": 9.0,
"papr_db": 12.55266533595234,
"clipped_components_fraction": 0.0,
"clipped_samples_fraction": 0.0,
"symbol_energy_code2_seconds": 0.0002500034375,
"ac_rms_code": 0.8571908744692966
}
}
],
"background_summary": {
"ac_power_min_code2": 0.5832719691796884,
"ac_power_max_code2": 0.7347761952734375,
"ac_rms_min_code": 0.7637224425009969,
"ac_rms_max_code": 0.8571908744692966,
"maximum_to_minimum_ac_power_db": 1.0028397226073626,
"stability_rule_db": 3.0,
"stable": true
},
"comparisons": [
{
"comparison": "L1/L0",
"tx_input_difference_db": 5.9772704691441785,
"rx_matched_power_difference_db": 5.899907694072936,
"linearity_error_db": -0.07736277507124267
},
{
"comparison": "L2/L1",
"tx_input_difference_db": 5.998157271536577,
"rx_matched_power_difference_db": 6.033091127942342,
"linearity_error_db": 0.03493385640576463
},
{
"comparison": "L3/L2",
"tx_input_difference_db": 5.998257379520232,
"rx_matched_power_difference_db": 5.9843995108689985,
"linearity_error_db": -0.013857868651233396
}
],
"capture_valid": true,
"capture_invalid_reasons": [],
"tx_underruns_maximum": 0,
"rx_overruns_maximum": 0,
"rx_clipping": false,
"lab064_to_lab065": {
"rows": [
{
"label": "L0",
"tx_vga_nominal_difference_db": 10.0,
"rx_matched_power_difference_db": 11.179327767173566,
"gain_power_abs_h_squared_difference_db": 11.179327767173568,
"residual_power_difference_db": -0.24327621738947727,
"matched_to_residual_improvement_db": 11.422603984563047,
"complex_gain_h_old": {
"real": 0.0018760642981310563,
"imag": -0.0045080629571906915,
"phase_rad_at_active_start": -1.1764391150184978
},
"complex_gain_h_new": {
"real": -0.0069147093491316635,
"imag": 0.016278708105995708,
"phase_rad_at_active_start": 1.9724722764994853
},
"complex_gain_phase_change_degrees": -179.5806672053524,
"residual_spectral_band_difference_db": {
"h1_50000_hz": 2.869745130254167,
"h2_100000_hz": 2.6545689216728405,
"h3_150000_hz": 2.25865088789477
}
},
{
"label": "L1",
"tx_vga_nominal_difference_db": 10.0,
"rx_matched_power_difference_db": 11.119465772157373,
"gain_power_abs_h_squared_difference_db": 11.119465772157373,
"residual_power_difference_db": -2.3662859353114283,
"matched_to_residual_improvement_db": 13.4857517074688,
"complex_gain_h_old": {
"real": 0.004471119012843702,
"imag": -0.001937685853593986,
"phase_rad_at_active_start": -0.40894566669212534
},
"complex_gain_h_new": {
"real": -0.010179637303215595,
"imag": 0.014270629544800722,
"phase_rad_at_active_start": 2.1904112551609387
},
"complex_gain_phase_change_degrees": 148.9321810702975,
"residual_spectral_band_difference_db": {
"h1_50000_hz": 3.0326799855695237,
"h2_100000_hz": 2.378560725133286,
"h3_150000_hz": 1.3007160057992286
}
},
{
"label": "L2",
"tx_vga_nominal_difference_db": 10.0,
"rx_matched_power_difference_db": 11.323669836462136,
"gain_power_abs_h_squared_difference_db": 11.323669836462136,
"residual_power_difference_db": 1.2772838599246652,
"matched_to_residual_improvement_db": 10.046385976537472,
"complex_gain_h_old": {
"real": 0.0032772531007889995,
"imag": -0.003478187284280655,
"phase_rad_at_active_start": -0.8151334504253348
},
"complex_gain_h_new": {
"real": -0.00913356439809709,
"imag": 0.015044605957089683,
"phase_rad_at_active_start": 2.1164192954656
},
"complex_gain_phase_change_degrees": 167.96559975953804,
"residual_spectral_band_difference_db": {
"h1_50000_hz": 5.594944314904455,
"h2_100000_hz": 4.091263491385863,
"h3_150000_hz": 2.888396722883724
}
},
{
"label": "L3",
"tx_vga_nominal_difference_db": 10.0,
"rx_matched_power_difference_db": 11.287649575482401,
"gain_power_abs_h_squared_difference_db": 11.287649575482403,
"residual_power_difference_db": 3.907580735290519,
"matched_to_residual_improvement_db": 7.380068840191884,
"complex_gain_h_old": {
"real": 0.003384387504328541,
"imag": -0.003391322182689881,
"phase_rad_at_active_start": -0.7864216245934512
},
"complex_gain_h_new": {
"real": -0.009107358713761582,
"imag": 0.015027742846344474,
"phase_rad_at_active_start": 2.1156425161969685
},
"complex_gain_phase_change_degrees": 166.2760271435506,
"residual_spectral_band_difference_db": {
"h1_50000_hz": 7.304592641009381,
"h2_100000_hz": 6.432280867349566,
"h3_150000_hz": 4.996231985221501
}
}
],
"rules_fixed_before_rf": {
"internal_linear_max_abs_error_db": 1.0,
"compression_upper_step_error_at_most_db": -1.5,
"meaningful_matched_gain_median_at_least_db": 3.0,
"meaningful_ratio_improvement_median_at_least_db": 3.0,
"maximum_level_to_level_gain_spread_db": 3.0,
"residual_tracks_if_within_matched_gain_db": 3.0
}
},
"classification": {
"case": "LINEAR_GAIN_IMPROVEMENT",
"summary": {
"median_matched_gain_db": 11.233488671327983,
"median_residual_gain_db": 0.5170038212675939,
"median_matched_to_residual_improvement_db": 10.73449498055026,
"matched_gain_level_spread_db": 0.20420406430476312,
"maximum_internal_linearity_error_db": 0.07736277507124267,
"upper_step_linearity_error_db": -0.013857868651233396
},
"rules_fixed_before_rf": {
"internal_linear_max_abs_error_db": 1.0,
"compression_upper_step_error_at_most_db": -1.5,
"meaningful_matched_gain_median_at_least_db": 3.0,
"meaningful_ratio_improvement_median_at_least_db": 3.0,
"maximum_level_to_level_gain_spread_db": 3.0,
"residual_tracks_if_within_matched_gain_db": 3.0
}
}
}

View File

@@ -0,0 +1,17 @@
{
"lab": "Lab065",
"stage": "SOFTWARE_GATE",
"rf_tx_count": 0,
"passed": true,
"tx_sha256": "fa260719659b2984fe29588238415622cd75c6daefec6cc9130ba1bf851bd3f9",
"waveform_unchanged_from_lab064": true,
"lab064_baseline_classification": "LINEAR_BUT_WEAK",
"classification_rules": {
"internal_linear_max_abs_error_db": 1.0,
"compression_upper_step_error_at_most_db": -1.5,
"meaningful_matched_gain_median_at_least_db": 3.0,
"meaningful_ratio_improvement_median_at_least_db": 3.0,
"maximum_level_to_level_gain_spread_db": 3.0,
"residual_tracks_if_within_matched_gain_db": 3.0
}
}