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)
120 lines
7.6 KiB
Markdown
120 lines
7.6 KiB
Markdown
# 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. |