op1-sdk
Build anything on your OP-1. New synth engines, effects, step sequencers, chord keyboards, quantizers, screen overlays — whatever you can imagine, in C or assembly.
- Custom firmware
- Stable
- Medium brick risk
- Reversible
This project hasn't been claimed by its maintainer yet, so its details come from the community. Is it yours? Claim it
op1-sdk v0.1.0 — first public release
Everything needed to add your own synth engines, effects, sequencer tools and other features to the Teenage Engineering OP-1 (stock firmware R246): a hook-based build pipeline, a C/asm SDK with simulator test benches, and a feature library.
This release contains no firmware binaries. The SDK never ships TE firmware or anything derived
from it — you supply your own copy of op1_246.op1 and build images locally.
Feature library (the op1plus recipe)
recipes/op1plus.json composes these into one image:
| feature | version | what |
|---|---|---|
| chordplus | 0.3 | chord keyboard (shift + insert) |
| lofi | 0.7 | chiptune waves + bytebeat synth engine |
| wheel | 0.7 | tonewheel organ engine |
| warp | 0.1 | 8 waves x 16 warps engine |
| trio | 0.1 | SID-style 3-oscillator engine |
| reso | 0.3 | tuned-string resonator effect |
| shimmer | 0.2 | pitch-shifting reverb effect |
| fxpack | 0.4 | seven effects behind one FX slot ("fx mix") |
| drumroll | 0.8 | drum step sequencer |
| requantize | 3.2 | take quantizer + piano roll |
| engine_plus | 2.0 | extra parameters for TE's engines |
plus shared libraries (enginehost, quantcore) and debug/demo features (key_probe, midi_filter,
fxdiag). Details: docs/features.md and each features/<name>/README.md.
Build the op1plus firmware yourself
-
Get the stock firmware. Download
op1_246.op1(R246) from Teenage Engineering's official support/download page and verify it:shasum -a 256 op1_246.op1 # c5315218f825f143b415ca554516541898abee843d3a236df0b54c04e1fb13a9The build tools check this hash and refuse any other image.
-
Build the bfin-elf toolchain (binutils 2.43.1, GCC 14.2.0, GDB 16.3) — exact
configure/makecommands are indocs/toolchain.md. -
Compose the image:
python3 tools/compose.py recipes/op1plus.json /path/to/op1_246.op1 # -> build/apps/op1plus/build/op1plus.op1Reference: the maintainer's build of this tag (macOS arm64, toolchain per README) is SHA-256
eca94ada9cb2e2a487d00f82ff59fb5ac1cae0d978fe6d83946625085699f4c0. -
Flash. OP-1 off → hold COM while switching on → choose Firmware Upload, then:
python3 tools/flash.py build/apps/op1plus/build/op1plus.op1 --ejectRestoring stock works the same way with the original
op1_246.op1(te-boot is never modified).
Full test suite: python3 tools/test_all.py.
Make your own feature and share it
- Scaffold:
python3 tools/features.py new my_feature --prefix mf_ --author "Your Name" - Start from
examples/(minimal asm/C hooks) or copy the layout of anyfeatures/<name>/. - Share as a .zip:
python3 tools/features.py pack my_feature; others install it withfeatures.py install my_feature.zip(standard:docs/feature-package.md). - Or open a pull request to add it to the library for every SDK user (
CONTRIBUTING.md).
Notes
- Images you build contain TE's firmware and are for your own device — do not redistribute
.op1/.ldrfiles. - Not affiliated with or endorsed by Teenage Engineering. Flashing firmware carries a risk; proceed at your own responsibility.
Before you start
- How hard is it?
- HardUses the command line or developer tools.
- What you need
- Comfort with the command line
- A computer
- Can it break my device?
- Small chance of trouble, with a way to recover.
- Can I undo it?
- Yes. You can go back to the official software.
Did it work for you?
Did op1-sdk v0.1.0 work on your Teenage Engineering OP-1?
No reports yet for v0.1.0.
One-tap reports from owners. Bricked reports are checked before they count.
Compatibility
Devices: Teenage Engineering OP-1.
No compatibility information yet.
Getting started
From the project's README ("Get it on your OP-1"):
You need an original OP-1, a Mac, and your own copy of the official firmware file op1246.op1 (R246, from Teenage Engineering's support page). The tools verify its SHA-256 (c5315218…13a9) and refuse to work on anything else. One-time setup: ./setuptoolchain.sh builds the toolchain.
compose the op1plus image from your copy of the firmware python3 tools/compose.py recipes/op1plus.json /path/to/op1246.op1
OP-1 off → hold COM while switching on → choose "Firmware Upload", then: python3 tools/flash.py build/apps/op1plus/build/op1plus.op1 --eject
The OP-1 shows Found firmware package... → Done! Restart and play.
Changed your mind? Flash your original op1246.op1 the same way and you are back to stock — te-boot (the bootloader) is never touched, so restoring always works.
Risk and recovery
- Brick risk
- Medium
- Reversible
- Yes
- Requires opening the device
- No
From the project's README ("Get it on your OP-1"):
You need an original OP-1, a Mac, and your own copy of the official firmware file op1246.op1 (R246, from Teenage Engineering's support page). The tools verify its SHA-256 (c5315218…13a9) and refuse to work on anything else. One-time setup: ./setuptoolchain.sh builds the toolchain.
compose the op1plus image from your copy of the firmware python3 tools/compose.py recipes/op1plus.json /path/to/op1246.op1
OP-1 off → hold COM while switching on → choose "Firmware Upload", then: python3 tools/flash.py build/apps/op1plus/build/op1plus.op1 --eject
The OP-1 shows Found firmware package... → Done! Restart and play.
Changed your mind? Flash your original op1246.op1 the same way and you are back to stock — te-boot (the bootloader) is never touched, so restoring always works.
Releases
| Version | Name | Released |
|---|---|---|
| v0.1.0 | v0.1.0 — first public releaseLatest | 15 October 2026 |
Credits, license and support
- License
- MIT