Thank you for your interest in Open Apollo! Whether you have an Apollo interface collecting dust on Linux, or you want to dive into driver code, there's a way for you to help.
- Tier 1: Test on Linux — load the driver on your hardware and submit a report
- Tier 2: Capture device data — help us build routing tables for untested models
- Code contributions — fix bugs, add features, improve documentation
This is the most valuable contribution right now. Every device report helps us understand what works and what needs fixing across the Apollo product line.
-
Clone the repo and check dependencies (common to both connection types):
git clone https://github.com/rolotrealanis98/open-apollo.git cd open-apollo ./scripts/check-deps.shIf you are unsure which connection type your Apollo uses, see Installation.
-
Apollo powered off, run the installer from the repo root; power the Apollo on when the installer prompts:
sudo bash ./scripts/install.sh
-
From the repo root, run the device probe script:
sudo ./tools/contribute/device-probe.sh
The probe writes a JSON report and offers to upload it. The probe currently expects the Thunderbolt
ua_apollokernel module and useslspci— it is not compatible with USB Apollos. -
Submit the probe output as a Device Report issue.
-
Apollo plugged into a USB 3.0 port and powered on, run:
sudo bash ./scripts/install-usb.sh
The USB installer generates
/tmp/open-apollo-usb-install-report.jsonand offers to upload it on completion. -
Submit that report (plus any audio test notes — playback working? capture attempts? PipeWire output?) as a Device Report issue. Do not run
tools/contribute/device-probe.shon USB — it only supports the Thunderbolt driver path and will error out.
Even if nothing works, the probe output tells us what we need to know about your hardware revision. Negative results are still valuable.
For Apollo models we don't have routing tables for yet, we need register-level captures from a working macOS system using DTrace. See the Device Capture (macOS) guide for instructions. The capture script is read-only — it observes driver behavior without modifying anything.
Note: Captures contain only hardware register values — no personal data, no audio content, no account information.
- Fork the repository
- Create a feature branch:
git checkout -b feat/my-feature - Make your changes
- Submit a pull request
We use conventional commits:
feat:— new featurefix:— bug fixdocs:— documentation changesrefactor:— code restructuring without behavior changetest:— adding or updating testschore:— maintenance tasks
feat: add Apollo x8 routing table
fix: correct DMA buffer alignment for 96kHz sample rates
docs: update supported devices table
- C (driver): Linux kernel coding style (
scripts/checkpatch.plcompatible) - Python (mixer daemon): PEP 8
- TypeScript (console UI): Standard ES6+ conventions
- File size: Keep files under 200 lines where practical — split into focused modules
Please include:
- Apollo model and generation
- Linux distribution and kernel version (
uname -r) - Driver version / commit hash
- Steps to reproduce
- Relevant
dmesgoutput
Open an issue describing what you'd like to see and why. If it involves hardware behavior, include any references or observations that might help with implementation.