first commit

This commit is contained in:
Joakim
2026-05-02 22:12:59 +02:00
commit 0348a3fb57
18 changed files with 2512 additions and 0 deletions

117
README.md Normal file
View File

@@ -0,0 +1,117 @@
# 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) | 🟡 In progress |
| 2 | Forward-port LCD panel driver — full display output | ⚪ Planned |
| 3 | piHPSDR running on X6200 with working audio | ⚪ Planned |
| 4 | `mestre` service: evdev → ALSA virtual MIDI bridge | ⚪ Planned |
| 5 | End-to-end: X6200 controlling Hermes-Lite 2 as a control head | ⚪ Planned |
| 6 | 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**: build instructions are aspirational while milestone 1 is 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.