|
| 1 | +# RADE Integration Verification Report |
| 2 | + |
| 3 | +## Application Under Test |
| 4 | + |
| 5 | +| Field | Value | |
| 6 | +|---|---| |
| 7 | +| Application name | freedv-ka9q | |
| 8 | +| Application version / git hash | [44f80b3](https://github.com/tmiw/freedv-integrations/pull/15/commits/44f80b3dcbfaae9b0f2ceb8459e1f73cbee1f307) | |
| 9 | +| Platform (OS + version) | Linux (Fedora 44) - kernel 7.0.12-201.fc44.x86_64 | |
| 10 | +| Tester name / callsign | @tmiw | |
| 11 | +| Date | 2026-07-27 | |
| 12 | +| radae repo commit hash | 25d58fe | |
| 13 | +| rade_c repo commit hash | a36161b | |
| 14 | + |
| 15 | +## Signal Path Declaration |
| 16 | + |
| 17 | +- [x] No additional signal processing (AGC, noise gate, resampler, EQ, |
| 18 | + compression) between WAV file input and RADE encoder input during |
| 19 | + this verification test |
| 20 | + |
| 21 | +## Baseline Loss (Step 1) |
| 22 | + |
| 23 | +Re-run with the current repository version before filling in this section. |
| 24 | + |
| 25 | +| Field | Value | |
| 26 | +|---|---| |
| 27 | +| Baseline loss | 0.081 | |
| 28 | +| 10% tolerance window | baseline ± 0.0081 | |
| 29 | + |
| 30 | +Command used: |
| 31 | + |
| 32 | +``` |
| 33 | +mooneer@fedora:~/radae$ ./build/src/lpcnet_demo -features wav/all.wav features_in.f32 |
| 34 | +mooneer@fedora:~/radae$ python3 tx2.py 250725/checkpoints/checkpoint_epoch_200.pth features_in.f32 tx.f32 |
| 35 | +... |
| 36 | +mooneer@fedora:~/radae$ python3 rx2.py 250725/checkpoints/checkpoint_epoch_200.pth 250725a_ml_sync tx.f32 features_rx.f32 --quiet |
| 37 | +... |
| 38 | +mooneer@fedora:~/radae$ python3 loss.py features_in.f32 features_rx.f32 --clip_start 100 --clip_end 300 |
| 39 | +Loss between features_in.f32 and features_rx.f32 |
| 40 | + loss: 0.081 start: 224 acq_time: 1.24 s |
| 41 | +``` |
| 42 | + |
| 43 | +## Level 1 — Software Loopback (mandatory) |
| 44 | + |
| 45 | +- [x] Pass (loss within ±10% of baseline) |
| 46 | + |
| 47 | +| Field | Value | |
| 48 | +|---|---| |
| 49 | +| Loss result | 0.083 | |
| 50 | + |
| 51 | +Command used / reproduction notes: |
| 52 | + |
| 53 | +``` |
| 54 | +mooneer@fedora:~/radae$ python3 f32toint16.py --real --scale 16384 < tx.f32 | sox -t s16 -r 8000 -c 1 - tx_real.wav |
| 55 | +mooneer@fedora:~/radae$ cd ~/freedv-integrations/build |
| 56 | +mooneer@fedora:~/freedv-integrations/build$ sox ~/radae/tx_real.wav -t s16 -r 8000 -c 1 - | ./src/ka9q/freedv-ka9q --rx-features rxfeatures.f32 >/dev/null |
| 57 | +mooneer@fedora:~/freedv-integrations/build$ cd ~/radae |
| 58 | +mooneer@fedora:~/radae$ python3 loss.py features_in.f32 ~/freedv-integrations/build/rxfeatures.f32 --clip_start 100 --clip_end 300 |
| 59 | +``` |
| 60 | + |
| 61 | +(Note: freedv-ka9q is RX only.) |
| 62 | + |
| 63 | +## Level 2 — OTAC: Over The Audio Cable (mandatory for hardware integrations) |
| 64 | + |
| 65 | +- [ ] Pass (loss within ±10% of baseline) |
| 66 | +- [ ] N/A (software-only integration) |
| 67 | + |
| 68 | +| Field | Value | |
| 69 | +|---|---| |
| 70 | +| Loss result | 0.091 | |
| 71 | +| Sound card (Tx) | GeneralPlus USB Audio Device | |
| 72 | +| Sound card (Rx) | GeneralPlus USB Audio Device | |
| 73 | +| Cable description | 3.5mm audio cable, approx. 1m length | |
| 74 | + |
| 75 | +Photo of test setup: |
| 76 | + |
| 77 | + |
| 78 | +Reproduction notes: |
| 79 | + |
| 80 | +``` |
| 81 | +# Use wpctl status to get correct target IDs for pw-record/pw-play |
| 82 | +
|
| 83 | +mooneer@fedora:~/freedv-integrations/build$ pw-record --target 75 --rate 8000 --channels 1 - | ./src/ka9q/freedv-ka9q --rx-features rxfeatures.f32 >/dev/null & |
| 84 | +mooneer@fedora:~/freedv-integrations/build$ pw-play --target 73 ~/radae/tx_real.wav |
| 85 | +
|
| 86 | +# Needed to flush rest of audio through pipewire |
| 87 | +mooneer@fedora:~/freedv-integrations/build$ sox -n silence.wav trim 0 10 |
| 88 | +mooneer@fedora:~/freedv-integrations/build$ pw-play --target 73 silence.wav |
| 89 | +
|
| 90 | +# Needed to write out feature file and exit freedv-ka9q |
| 91 | +mooneer@fedora:~/freedv-integrations/build$ killall pw-record |
| 92 | +``` |
| 93 | + |
| 94 | +## Level 3 — OTC: Over The Coax (optional) |
| 95 | + |
| 96 | +- [ ] Pass (loss within ±10% of baseline) |
| 97 | +- [x] Not performed |
| 98 | + |
| 99 | +| Field | Value | |
| 100 | +|---|---| |
| 101 | +| Loss result | | |
| 102 | +| Tx radio | | |
| 103 | +| Rx radio | | |
| 104 | +| Attenuator(s) | | |
| 105 | + |
| 106 | +Photo of test setup: |
| 107 | +_(attach or link)_ |
| 108 | + |
| 109 | +Reproduction notes: |
| 110 | +``` |
| 111 | +(paste notes here) |
| 112 | +``` |
| 113 | + |
| 114 | +## Summary |
| 115 | + |
| 116 | +| Level | Result | |
| 117 | +|---|---| |
| 118 | +| Level 1 — Software loopback | PASS | |
| 119 | +| Level 2 — OTAC | FAIL | |
| 120 | +| Level 3 — OTC | N/A | |
| 121 | + |
| 122 | +Additional notes: |
0 commit comments