OpenDeck, image 1 from its README
1/6
Firmware

OpenDeck

Hype: cold · 2

Firmware and configurator for custom MIDI and OSC controllers.

forShantea Controls OpenDeck·by@shanteacontrols

Unclaimed. Is this yours? Sign in with GitHub as @shanteacontrols to claim it.

Apache-2.0· shanteacontrols/OpenDeck·shanteacontrols.com·downloads come from the creator’s GitHub releases

244 commits and 13 releases in the last year
100 releases
  1. v8.5.2Latest120 files

    Fixes

    • Fixed broken support for encoders
    • Fixed an issue with encoder inversion in two note mode
    • Fixed sending of 14-bit values for encoders and analog components
    • Fix handling of global channel for encoders and LEDs
    Show all 120 files
  2. v8.5.1120 files

    Fixes

    • Fixed support for Olimex ESP32 POE and wESP32 boards
    Show all 120 files
  3. v8.5.0120 files

    New features

    • Added uf2 binary output for Adafruit Grand Central board
    • Added new settings for various sensors
    • Added support for VL53L5CX sensor
    • UI now makes it possible to flash all supported boards from the browser

    Improvements

    • Reworked flash memory layout on most targets
    • Improved responsiveness of most sensors
    • Improved stability of DFU process - protocol is now shared for USB and network
    • Improved behaviour of OSC when IP address is unreachable

    Fixes

    • Fixed I2C scanning on some targets

    Other

    • Added various Processing examples for OSC sensors
    • Reworked CI/Docker setup
    Show all 120 files
  4. v8.4.00 files

    New features

    • Added support for new boards:
      • Adafruit Metro ESP32-S3
      • Adafruit Metro ESP32-S3 + W5500 Ethernet Shield
      • Adafruit Metro ESP32-S3 + W6100 Ethernet Shield
      • Adafruit Metro RP2040
      • Adafruit Metro RP2040 + W5500 Ethernet Shield
      • Adafruit Metro RP2040 + W6100 Ethernet Shield
      • LILYGO T-ETH Elite
      • Nucleo-H563ZI
      • Waveshare ESP32-S3-ETH
      • W5500-EVB-Pico
      • W5500-EVB-Pico2
      • W6100-EVB-Pico
      • W6100-EVB-Pico2
    • Added support for various I2C sensors:
      • APDS9960
      • BNO085
      • CAP1188
      • VL53L4CX
    • Use stable MAC address on all network targets generated from the MCU serial number
    • Added the ability to set 4 OSC destination addresses
    • Added new custom SysEx request to check if staged DFU is supported
    • Merged binary files are again part of the release

    Improvements

    • Enabled OSC by default on network-capable targets
    • Stability improvements to WebUSB DFU
    • Faster initial database initialization on blank boards
    • Improved build error message an unknown TARGET is used

    Fixes

    • Fixed flashing setup for STM32F4 Discovery
    • Fixed missing PWM pin control on Raspberry Pi Pico / RP boards

    Other

    • Updated Zephyr
    • Renamed discovery target to discovery_f407g
    • Refactored WebSockets, DFU, I2C, OSC, MIDI, and hardware abstraction internals
    • Documentation updates
  5. v8.3.00 files

    New features

    • Added native PWM output driver
    • Added 0-100% output level control for PWM-capable targets which use PWM output driver

    Improvements

    • Changed output OSC control to accept 0-100% levels
    • Changed SysEx output state control to use on/off state instead of the old color section
    • Improved board pin mappings

    Fixes

    • Implemented missing output matrix driver

    Other

    • Dropped RGB LED support
    • Updated terminology around outputs (blink -> pulse, brightness -> level)
    • Added output protocol mapper for MIDI, OSC, preset, pulse, and state handling
    • Renamed opendeck-display-i2c binding to opendeck-i2c
    • Cleaned up stale touchscreen properties in switches and output bindings
    • Removed schematics for unsupported targets
    • Split shared board and target overlay pieces into common.overlay files
    • Instantiated IO mappers directly inside IO handlers instead of passing them through builders
    • Updated tests
    • Documentation updates
  6. v8.2.00 files

    New features

    • Added network-based recovery DFU for network-enabled boards
    • Added support for WESP32 and Olimex ESP32-POE boards
    • Added DTS-based transport declarations for USB, network, BLE, and DIN MIDI UART

    Improvements

    • Improved analog filtering behavior
    • Improved overall performance by switching the entire system to asynchronous message delivery

    Other

    • MCUboot is now used as the first-stage bootloader
    • Renamed WebConfig internals to WebSockets
    • Refactored bootloader layout into dfu/, io/, protocols/, and system/ to mimic firmware layout
    • Moved shared DFU, mDNS, WebSockets, MCU, indicators, and signaling pieces into app/common/src
    • Split board overlays into firmware and bootloader overlays
    • Reworked common/firmware/bootloader common, debug, release, usb, network, and ble config layering
    • Reorganized tests into common/, firmware/, bootloader/, and hardware/
    • Renamed CMake libraries to use consistent opendeck_<area>_<path> naming
    • Removed support for ST Nucleo F446ZE (not enough flash for the new DFU flow)
    • Black Pill F411 now requires external SPI flash for factory/config storage due to the new MCUboot + recovery layout
    • Re-enabled code linting on CI
    • Updated Zephyr, zlibs, zenv and project docs/README files
  7. v8.1.10 files

    Fixes

    • Fix incorrect handling of bootloader button
  8. v8.1.070 files

    New features

    • Added OSC support via Ethernet
    • Added binary-compatible SysEx configuration protocol via WebSockets for use with web configurator over network
    • Added mDNS/DNS-SD discovery for WebConfig and OSC endpoints
    • Added staged firmware update support through firmware + bootloader staging flow (network targets only)
    • Added Ethernet enablement for Nucleo H7 and F7 boards
    • Added SysEx custom request 0x53 for reading the hardware serial number

    Fixes

    • Fixed possible config loss when rebooting immediately after changes
    • Fixed USB MIDI writes being attempted while USB transport is not ready

    Other

    • Renamed component terminology: buttons -> switches, LEDs -> outputs
    • Refactored MCU-specific services into src/mcu
    • Refactored analog, switch, encoder, and output mapping internals
    • Updated Docker image and zlibs
    • Refactored app includes so that they're relative to the app/ dir
    Show all 70 files
  9. v8.0.10 files

    Improvements

    • Scan only the used analog inputs
  10. v8.0.00 files

    Major rewrite of the entire OpenDeck software

    • The complete software has been rewritten in Zephyr RTOS. This means that the OpenDeck software now runs on an actual operating system with various OpenDeck subsystems running in their own threads. It also means that adding support for various boards and more complex features in the future will be much easier.
    • The software now uses MIDI2 in MIDI1 compatibility mode. Full MIDI2 migration will be considered once the major operating systems support it more broadly and if there's enough demand for it.
    • The MIDI bootloader has been replaced with WebUSB one - firmware still takes place inside the web browser via OpenDeck configurator with the difference being that WebUSB is much more reliable and way faster - the entire sofware update now takes just a few seconds.
    • Support has been dropped for AVR boards - Arduino Mega and Teensy++ 2.0 aren't supported anymore.
    • STM32F401 Black pill boards also aren't supported anymore. F411 variants still are.
    • Support has been added for many new boards:
      • Adafruit Grand Central M4 Express
      • nRF5340 DK
      • Raspberry Pi Pico 2
      • ST Nucleo F446ZE
      • ST Nucleo F767ZI
      • ST Nucleo H753ZI
      • Teensy 4.0
      • Teensy 4.1
    • Much of the wiki has been rewritten around the new codebase. So, the current wiki assumes this version from now on.
    • A new page in the wiki has been added which documents latency and timings in the current software.

    Any issues with this version should be reported here: https://github.com/shanteacontrols/OpenDeck/issues/376

  11. v7.12.298 files

    Fixes

    • Fixed the issue with bouncing analog inputs configured as buttons
    Show all 98 files
  12. v7.12.198 files

    Fixes

    • Lower the analog on threshold for buttons on 10-bit ADC
    Show all 98 files
  13. v7.12.098 files

    New features

    • Added new MMC Play/Stop combination button message type

    Fixes

    • Fixed the handling of global LED channel

    Other

    • Misc code cleanups and refactorings
    • Improved support for flashing of STM32 targets via pyocd
    Show all 98 files
  14. v7.11.1101 files

    New features

    • Analog inputs configured as inputs will now send their values on startup and preset change

    Fixes

    • Fixed broken ability to use analog inputs as buttons

    Other

    • Rework the VSCode/Docker/CI setup
    Show all 101 files
  15. v7.11.0101 files

    Fixes

    • Fixed non-functional button debouncer
    • Fixed builds of custom boards using 4051 multiplexer

    Other

    • Disabled touchscreen support by default on Arduino Mega due to low amount of resources
    Show all 101 files
  16. v7.10.0101 files

    New features

    • Added the ability to send repeated note with configurable value using encoders (one option: repeated note with configured value in both direction, other option: same but with value 0 in other direction)
    • Added the ability to send two different notes using encoders
    Show all 101 files
  17. v7.9.0101 files

    New features

    • Implemented static LED control mode in which LED is constantly on

    Other

    • Misc build system / flashing scripts improvements
    Show all 101 files
  18. v7.8.0101 files

    New features

    • Display now supports display of the current preset in the upper right corner
    • In/Out text on display has been replaced with "<" and ">" symbols respectively
    • Data order for MIDI messages on display has been changed to channel, index, value
    • Preset change with MIDI Program Change in message is now optional and disabled by default
    Show all 101 files
  19. v7.7.1101 files

    Fixes

    • Fixed support for nRF52 MCUs

    Other

    • Switched to west tool for managing modules
    Show all 101 files
  20. v7.7.0101 files

    New features

    • Custom boards can now specify amount of daisy-chained MAX7219 drivers
    • Added Note message type for encoders
    • Added the ability to set lower and upper limits for encoders (for continuous messages)
    • Added the ability to disable forced component refresh after preset change
    Show all 101 files