Firmware

Fire standalone CFW

Hype: cold · 44

Custom firmware that turns the Fire into a standalone step sequencer.

forAkai Professional Fire·by@jamisonx-dev

Unclaimed. Is this yours? Sign in with GitHub as @jamisonx-dev to claim it.

Get the source

No release files yet. Build from source.

No license: reuse rights unclear· jamisonx-dev/fire-cfw-standalone-public·downloads come from the creator’s GitHub releases

8 commits and 0 releases in the last year

Akai Fire: Custom Firmware Project

Never came up with a snappy name for this one, but it's exactly what I wanted this device to be in the first place

The Akai Fire is now a standalone step sequencer and includes:

-internal clock with clock out and external sync

-patterns, assignments, and settings saved internally to the device memory

-step sequencer with 32 tracks: 24 drum (single note and/or cc per step) and 8 melodic tracks (expands capability to 3 notes per step)

-each individual sequencer track can be of any length from 1 to 128 steps and can be changed on the fly by pressing alt+the desired last step for that row. Tracks can stretch up to 8 pages in length if needed.

-accents,probability & ratchets: hold a step, then add or adjust the likelihood that it will sound and/or whether any ratcheting occurs and how much. accents can be adjusted by pressing shift+step and cycles between strong, soft, and normal.

-32 patterns, autosaved after 3 sec as you write them. if a new pattern is selected, the change happens at the end of the bar, regardless of how many steps a given sequencer track may contain.

-song mode, where you can string the patterns together however you wish

-note mode, where the notes are laid out like the fretboard of a bass guitar

-drum mode with four 16 pad grids side-by-side, each independently assignable, and a 16 Levels mode to get around the velocity limitations of the fire

-fader mode, which reimagines the pad grid as a display of horizontal faders that can be scrolled through, each with 16-step resolution

-host mode, where the firmware steps aside and allows an attached device dictate the layout and behavior

-generally informative context on the oled

-4 banks of the four encoder knobs for each of the main modes you're in, assignable in the menu to whatever you want them to send

-button LED/pad lighting

-send & receive MIDI over USB to anything that is capable of speaking the language

A note here about some of the things one might find in addition: My personal copy of this firmware gets updated pretty often at this point and some of the features I put in for myself will leak into the public release. For example, pressing the DRUM key twice now goes into MPC mode, which is a map of my MPC1000 face buttons. It's a thing specific to me that I'm leaving until/unless this gets enough outside traction to make it worth removing. Another example is ORC mode, a menu option that brings up a surface specific to the ORC project. Poke around and you will find neat things, such as all the pretty visuals in lights mode.

I am genuinely proud of this and I hope that other people will find this helpful in some way.

Everything after this was generated by Claude. I may go in and make edits where needed, but it has otherwise not been touched by human hands.

Start here:

DocumentFor
fw/fireseq/USER_GUIDE.mdPlaying the sequencer: every control
FIRE_HARDWARE_MAP.mdThe Fire's chip, pins, buttons, LEDs, knobs, screen, boot process
fw/DEVELOPER.mdBuilding, flashing, recovery, code layout, storage format, tests
fw/VELOCITY_NOTES.mdThe unsolved pad-velocity investigation: what was tried, best next leads

Status (2026-10-24)

  • Running on the Fire: v0.29 (ORCBUILD=a4aa41a0). Since v0.17: the ORC surface (the ORC paints the pads, SysEx pad events), knob banks + BROWSER pages, multi-mute, track volume faders (STEP again), tap tempo (ALT + STEP), a pad release hold-off against double hits, an MPC1000 remote (DRUM again), MIDI clock as CIN 0xF packets (USB hosts that dropped it now pass it), and in v0.29: 32 tracks (T17-T24), CC tracks, undo / redo (SHIFT + REC), a roller / looper (hold KNOB MODE + pads), 16 levels in DRUM mode, and knob banks per section (STEP / NOTE / DRUM / MPC remote). Every control: fw/fireseq/USER_GUIDE.md; code + tests: fw/DEVELOPER.md.
  • No crash since the v0.17e watchpoint build (the 2026-10-13 one stays open, USER_GUIDE "Crashes").

Status (2026-10-14)

  • Running on the Fire: v0.17b (ORCBUILD=9e1e92d5): the sequencer + the BROWSER menu, light shows on the pads (the ORC's shows ported, TRACKS, PI VU bars from the Pi's audio, scrolling TEXT), picture-style OLED screens, a SysEx host protocol (F0 7D 'ORC' ..., commands 00-07, USER_GUIDE), a crash recorder that restarts the Fire itself and names the build / stack state of a crash, and the 2026-10-13 review fixes (each measured on the Fire with fw/fireseq/fire_live_test.py).
  • One crash seen on v0.17 (2026-10-13 22:09), not found yet: a smashed return address while the PI VU bars ran (USER_GUIDE "Crashes"). v0.17b adds stack canaries + stack/build data to the record so the next one names itself.
  • v0.12-v0.14 (2026-10-07): review fixes, faders on PERFORM, 32 patterns with colours. History below.

Status (2026-10-06)

  • Running on the Fire: v0.8 = sequencer (v0.7 features: 16 tracks x 128 steps with per-track lengths, 8 patterns, song mode, accents, swing, ratchets, probability, per-track notes/channels, MIDI clock in and out, auto-save, all confirmed by the owner) + live play (below).
  • v0.8 flashed 2026-10-06, not yet played: live play. NOTE = fourths keyboard; DRUM = four 4x4 grids, each with its own channel + note map (chromatic / MPC), for the ORC, MPC1000, SP-404 etc.; REC records hits into the pattern. Fixed velocity 100, SHIFT = 127. Pad velocity still open (best route: ST-Link reading Akai's ADC store live, see fw/VELOCITY_NOTES.md).
  • v0.9 flashed 2026-10-06, not yet played: 24 tracks = T1-T16 drum + M1-M8 melodic (a note per step); NOTE mode plays/records a melodic track; per-step gate.
  • v0.10 flashed 2026-10-06: sparse step storage (RAM ~49 -> ~31 KB of 64), smaller saves, moving around no longer triggers saves. the owner's saves converted and verified byte for byte on the Fire. Timing under saves MEASURED 2026-10-07 (180 BPM, the owner editing): no difference from a no-save control run (2.1% vs 2.3% of notes > 2 ms off their neighbours = the Pi's Python noise).
  • v0.11 flashed 2026-10-07: parameter locks, conditions (A:B, 1st, FILL on PERFORM), TIE / SLIDE, chords (+ chord recording); two step-knob pages (KNOB MODE); self-describing save records. The Fire's own v0.10 -> v0.11 conversion verified on a readback: identical except the one step the owner had since set to SLIDE (P3 T3 s1). the owner: "This is awesome".
  • Hardware fully mapped and measured, except pad velocity, knob touch and two unexplained pins.
  • Akai's firmware can be put back from the Pi in about a minute (fire_flash.sh stock), verified against a full backup of the chip.

How we got here (2026-10-05 / 06)

  1. Dumped the chip through ST's update mode (button combo) and backed it up twice.
  2. Looked inside: the chip (STM32F401RC), the flash layout, Akai's fonts and boot logos, the boot check (just an end marker, no checksum).
  3. Found Akai's "reboot to update mode" SysEx (0x72): from then on, everything was done remotely.
  4. Emulated Akai's firmware to map the pins and capture the screen's start-up sequence.
  5. Built firmwares step by step: boomerang (boot path) -> hello (USB MIDI) -> oled (screen) -> probe (mapped every button, pad, knob and LED with the owner's help) -> the sequencer.

What's in this repo (and what isn't)

This repo holds only our own work: fw/ (firmware source, test and measurement scripts) and these docs. The author's working folder also has things that are deliberately not published (.gitignore is an allow-list):

  • fire_flash_v0.21_a.bin, _b.bin, optbytes.bin, otp.bin: backups of the stock chip. Akai's copyrighted code. Also on the Pi in ~/fire_fw/.
  • patterns_backup_v03.bin: the pattern area before the v0.4 format change.
  • fire_fonts_and_logos.png: the graphics stored in Akai's firmware.
  • tools/: the emulator and analysis scripts that run Akai's firmware.

The USB stack (TinyUSB, MIT) is not vendored: see fw/DEVELOPER.md for fetching it.