First transmission through a real radio path in the project. A 4756-byte JPEG went from transmitter to receiver over two antennas 60 cm apart at 225 MHz and reassembled byte-identical, reproduced across three runs. The cable loopback still needs an SMA male-to-male adapter that has not arrived, so this air run is a track verification, not the controlled measurement: room levels are not held the way a cable holds them. Its purpose was to exercise the device wrapper the models cannot cover. Four defects the software model passed but the hardware exposed, each reproduced and fixed: - a 566 528-sample frame did not fit the 262 144 receive buffer, and the sample stream is not continuous across separate reads, so a frame on the seam was destroyed. Reception now uses one buffer sized to the frame - carrier correction was always applied, but with a shared reference the true offset is near zero and the 80-symbol marker estimate is noise; correcting by it rotated phase along the whole frame, 65% bit errors measured. Ported should_apply_cfo_correction from Lab023 - receiver gain of 20 dB left the signal at 0.0003 of full scale. Levels set by measurement: RX 50 dB, TX -10 dB give zero bit errors with margin - the error-vector metric returned zero on a failed receive, reporting a perfect signal where there was none, the same class of defect as the written-in figures of Lab041. Replaced with an explicit not-computed value The air TX gain ceiling is now derived from the link budget by antenna distance rather than a constant. Three loopback modes: software, cable, air. PROJECT_LOG entry 019 records the run and the defects. Software and cable results stay reproducible; 125 tests pass, gate passes.
993 B
993 B
| 1 | loopback_mode | path_description | antenna_distance_cm | source_image | image_width | image_height | jpeg_quality | jpeg_bytes | fragment_data_size | fragment_count | packet_bytes_max | packet_bytes_min | frame_bits_max | frame_bits_min | symbol_rate | samples_per_symbol | sample_rate_hz | carrier_hz | transmitted_samples | air_time_seconds | frames_received | frames_failed_crc | fragments_recovered | fragment_delivery_fraction | image_reassembled | image_identical | received_image_bytes | transfer_seconds | channel_bitrate_kbps | wall_clock_bitrate_kbps | mean_correlation_score | mean_carrier_offset_hz | mean_error_vector_magnitude | tx_gain_db | rx_gain_db | attenuator_db |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | air | две антенны по воздуху, расстояние 60 см, аттенюатора нет | 60.0 | data/raw/lab011_scene.jpg | 320 | 180 | 30 | 4756 | 512 | 10 | 536 | 172 | 4384 | 1472 | 20000 | 128 | 2560000 | 225000000 | 5292544 | 2.0674 | 10 | 0 | 10 | 1.0 | True | True | 4756 | 16.637855200009653 | 18.40379220276676 | 2.286833221146072 | 0.9995110413728169 | -0.3681907269061185 | 0.00898132918175413 | -10.0 | 50.0 | 0.0 |