Files
mestre/README.md
Joakim 2526d5b087 feat: M3 complete — WiFi, BT keyboard and mouse
Bluetooth (RTL8723D USB combo chip):
- GPIO pin 357 (active low) enables WiFi/BT hardware via x6200_gpio_set()
- bluez5_utils 5.64 (downgraded from 5.79 — HID input plugin broken in 5.79)
- rtl8723d_config.bin added to overlay (missing from linux-firmware package)
- S45wifi-bt: GPIO enable + modprobe btusb/uhid/hidp at boot
- S85bt-keyboard: auto-connect loop with scan+connect every 20s

WiFi (RTL8723DU):
- out-of-tree lwfinger/rtw88 driver (RTW88_8723DU not in kernel 6.1 mainline)
- linux-firmware RTL_RTW88 for rtw88/rtw8723d_fw.bin
- regulatory.db for cfg80211
- wpa_supplicant with multi-network config in /etc/wpa_supplicant.conf
- S46wifi: wpa_supplicant + udhcpc at boot

Key findings:
- RTL8723D USB WiFi (0bda:d723) requires out-of-tree rtw88 on kernel 6.1
- BT and WiFi share same USB device, both need GPIO 357 = 0 to power on
- bluez5 5.79 HID input plugin not linked into bluetoothd (build system bug)
2026-05-09 21:02:53 +02:00

120 lines
7.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Mestre
> An open-source control head for software-defined radios — built on the Xiegu X6200.
## What is Mestre?
Mestre turns a [Xiegu X6200](https://www.xiegu.eu/) into a dedicated, tactile remote control head for any networked SDR transceiver, starting with the [Hermes-Lite 2](http://www.hermeslite.com/).
The motivation is simple. Concepts like FlexRadio's Maestro prove that a dedicated piece of hardware — real VFO knob, real buttons, no laptop — gives the operating experience that touchscreens and mouse-driven SDR consoles don't. But Maestro is closed, expensive, and locked to the FlexRadio ecosystem.
Mestre uses a radio you may already own (the X6200) and turns its physical controls into a Maestro-class experience for radios you may already own (HL2, ANAN, anything HPSDR-compatible). Open hardware, open software, open protocol.
```
┌─────────────────────────┐ ┌──────────────────────┐
│ X6200 │ │ Hermes-Lite 2 │
│ ┌───────────────────┐ │ │ │
│ │ Knobs, buttons │ │ │ (or any HPSDR rig) │
│ │ Touchscreen, LCD │ │ │ │
│ └─────────┬─────────┘ │ └──────────┬───────────┘
│ │ │ │
│ ┌─────────▼─────────┐ │ Network (HPSDR) │
│ │ Mestre service │ │ │
│ │ (evdev → MIDI) │ │ │
│ └─────────┬─────────┘ │ │
│ │ │ │
│ ┌─────────▼─────────┐ │ │
│ │ piHPSDR │◄─┼───────────────────────────┘
│ └───────────────────┘ │
└─────────────────────────┘
```
## Mestre vs Virtuoso
The project is **Mestre** — the build system, services, and software stack.
The product name **Virtuoso** is reserved for when (if!) Mestre actually delivers a Maestro-class experience. It must be earned.
## Project Status
🚧 **Early development.** Building the foundation.
| # | Milestone | Status |
|---|----------------------------------------------------------------------|--------|
| 1 | Boot a recent Buildroot LTS on the X6200 (serial console) | ✅ 2026-05-03 |
| 2 | Working audio stack | ✅ 2026-05-06 |
| 3 | WiFi and Bluetooth keyboard and mouse | ✅ 2026-05-09 |
| 4 | Forward-port LCD panel driver — full display output | ✅ 2026-05-03 |
| 5 | piHPSDR running on X6200, controlled by mouse and keyboard | ⚪ Planned |
| 6 | piHPSDR audio — HL2 audio via SoC speaker | ⚪ Planned |
| 7 | `mestre` service: evdev → ALSA virtual MIDI bridge | ⚪ Planned |
| 8 | End-to-end: X6200 controlling Hermes-Lite 2 as a control head | ⚪ Planned |
| 9 | First-boot wizard, settings persistence, polished UX | ⚪ Planned |
| ∞ | Earn the right to call it Virtuoso | ⚪ TBD |
## Architecture
Mestre is built as a Buildroot-based Linux distribution for the X6200. The system runs three cooperating components:
- **piHPSDR** — handles the SDR protocol, audio, waterfall, and overall radio UI on the X6200's LCD. Connects over the network to the actual transceiver hardware (HL2 or other HPSDR rig).
- **mestre service** — a small daemon that reads the X6200's physical knobs and buttons via `/dev/input/eventX` and translates them into MIDI control change messages on a virtual ALSA MIDI port.
- **piHPSDR's MIDI mapper** — already built into piHPSDR. Subscribes to the virtual MIDI port and acts on the controls.
The architecture is deliberately patch-free: piHPSDR is used as-is, and the MIDI protocol is the well-known, stable contract between the two halves.
## Hardware
- **Control head**: [Xiegu X6200](https://www.xiegu.eu/) (Allwinner R16 / sun8i-a33, 480×800 LCD, knobs, buttons, internal speaker)
- **Transceiver**: [Hermes-Lite 2](http://www.hermeslite.com/) (open-hardware HF SDR), or any HPSDR-protocol radio supported by piHPSDR
## Building
> ⚠️ **Pre-1.0**: actively developed. Core build works; some milestones still in progress.
### Prerequisites
A recent Linux host with the [Buildroot prerequisites](https://buildroot.org/downloads/manual/manual.html#requirement) installed. Building inside the provided container is also supported.
### Quickstart
```bash
git clone --recurse-submodules <repo-url> mestre
cd mestre
./scripts/build.sh
```
The resulting `sdcard.img` will appear under `build/images/`. Flash it to a microSD card with `dd` or your tool of choice and boot the X6200 from it.
### Buildroot version
Mestre is pinned to **Buildroot 2025.02 LTS** for stability — the LTS line is supported with security and bugfix updates for three years. Bumping is a deliberate, documented choice, not a continuous treadmill.
## Repository layout
```
mestre/
├── buildroot/ # submodule → Buildroot 2025.02.x
├── br2_external/ # all our Buildroot customisations
│ ├── configs/ # defconfig
│ ├── board/x6200/ # linux config, U-Boot config, DTS, overlay
│ └── package/ # custom packages (mestre service, etc.)
├── docs/ # design notes, hardware notes
├── scripts/ # build wrappers
├── README.md # this file
└── DESIGN.md # architectural decisions
```
## Credits & Prior Art
Mestre stands on the shoulders of others. In particular:
- **[gdyuldin/AetherX6200Buildroot](https://github.com/gdyuldin/AetherX6200Buildroot)** — the Aether project, from which Mestre inherits the X6200 device tree, U-Boot configuration, and LCD panel driver. Aether's project goal (improving the X6200 as a transceiver) differs from Mestre's (using the X6200 as a control head), but Aether's hardware enablement work made Mestre feasible from day one. Vendored files retain their original copyright headers.
- **apritzel** (#linux-sunxi @ OFTC) — device-tree guidance for the X6200, acknowledged in the DTS source.
- **Rui Oliveira** and **Oleg Belousov** — original authors of the Jinglitai JLT4013A panel driver, forward-ported here for use with current mainline kernels.
- **The piHPSDR project** — the SDR console Mestre wraps. Mestre would not exist without piHPSDR's existing MIDI control infrastructure, which lets us avoid patching the console itself.
- **The OpenHPSDR community** and **Steve Haynal (N0EJV / Hermes-Lite 2)** — for keeping open-protocol SDR alive.
## License
GPL-2.0-or-later, matching the kernel-derived components Mestre vendors.
Userland components written specifically for Mestre may be re-licensed (e.g. to MIT) on a per-component basis where doing so doesn't conflict with this overall license; such cases will be marked clearly in the relevant subdirectory.