# Alpha UHF bidirectional keyboard QSO recipe

Lab frequency **431.200 MHz**. Licensed operators only. bladeRF `txvga2` ≤ 10.
`--execute` requires `--fpga hostedx115-latest.rbf` on bladeRF.

## Proven 2026-08-11 (post-reboot)

Independent stations:

| Station | Radio | Result |
| --- | --- | --- |
| VE6SLP-1 | bladeRF TX + HackRF RX | radiated 1, received VA6GA-2 text |
| VA6GA-2 | USRP B210 | radiated 1, received VE6SLP-1 text |

Artifact: `run-artifacts/alpha-uhf-qso/qso-manifest.json` and modem logs.

## Commands

Terminal A:

```bash
python tools/mosaic_modem.py \
  --callsign VE6SLP --ssid 1 --peer VA6GA-2 \
  --radio bladerf-hackrf --profile uhf \
  --frequency-hz 431200000 \
  --fpga hostedx115-latest.rbf --txvga2-db 10 \
  --listen-port 8101 \
  --execute --enable-tx --human-events \
  --send "VA6GA-2 DE VE6SLP-1 ALPHA QSO K" \
  --cycles 6
```

Terminal B:

```bash
python tools/mosaic_modem.py \
  --callsign VA6GA --ssid 2 --peer VE6SLP-1 \
  --radio usrp --usrp-device-args type=b200 \
  --usrp-rx-gain-db 52 \
  --profile uhf --frequency-hz 431200000 \
  --listen-port 8102 \
  --execute --enable-tx --human-events \
  --send "VE6SLP-1 DE VA6GA-2 QSL ALPHA K" \
  --cycles 6
```

Interactive alternative: drop `--send`/`--cycles`, add `--operator-stdin`, then
`/tx on`, type lines, `/tx off`.

**Important:** `--execute` alone enables receive only. Transmit needs
`--enable-tx` or `/tx on`.
