# Mk1 dim display, bootloader reflash instruction completely missing from site

**URL:** <https://forum.electra.one/t/mk1-dim-display-bootloader-reflash-instruction-completely-missing-from-site/3832>\
**Category:** Bug reports\
**Created:** [July 25, 2025, 1:05am UTC](https://forum.electra.one/t/mk1-dim-display-bootloader-reflash-instruction-completely-missing-from-site/3832 "2025-07-25T01:05:27Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jeff](https://avatars.discourse-cdn.com/v4/letter/j/e19b73/32.png) [@jeff](https://forum.electra.one/u/jeff)\
**Post date:** [July 25, 2025, 1:05am UTC](https://forum.electra.one/t/mk1-dim-display-bootloader-reflash-instruction-completely-missing-from-site/3832/1 "2025-07-25T01:05:27Z")

</div>

Unable to access menu, screen very Dim. Tried all the normal stuff. It is a very old model bought used. I have to remove the Mainboard to access the SD that is on on the display board. Saw an old post about an EEPROM being erased causing the issue i am experiencing. It speaks to a solution but does not share it.

Hardware revision

2.40

Firmware version

v3.5.4

Serial number

EO-00001

---

<div class="post-metadata">

**Author:** ![jeff](https://avatars.discourse-cdn.com/v4/letter/j/e19b73/32.png) [@jeff](https://forum.electra.one/u/jeff)\
**Post date:** [July 25, 2025, 7:04pm UTC](https://forum.electra.one/t/mk1-dim-display-bootloader-reflash-instruction-completely-missing-from-site/3832/2 "2025-07-25T19:04:44Z")

</div>

# 💡 RESTORED: Display Brightness Control for Electra One MK1 HW 2.40 v3.5.4

## Overview

The display brightness control feature that was available in firmware v2.0 but dropped in later versions has been successfully restored for **Electra One MK1** running **firmware v3.5.4**!

This implementation adds SysEx-based brightness control while preserving all existing controller functionality.

## ✅ What This Adds

- **5 brightness levels** from maximum to minimum via SysEx commands
- **Persistent settings** - brightness survives controller reboot (stored in EEPROM)
- **Minimal code change** - only 25 lines added to firmware
- **Full compatibility** - works with existing presets, Lua scripts, and controller features
- **SysEx API integration** - follows Electra One’s existing command structure

## 🔧 Technical Implementation

### Firmware Changes

The restoration required adding UPDATE command support for ElectraInfo objects in `TaskProcessSysex.cpp`:

```cpp
} else if (cmd.isUpdate()) {
    if (object == ElectraCommand::Object::ElectraInfo) {
        // Handle brightness update for ElectraInfo
        uint16_t brightness = (cmd.getByte1() << 8) | cmd.getByte2();
        System::logger.write(LOG_ERROR, "processElectraSysex: setting brightness to %d", brightness);
        
        // Set the brightness value in runtime info
        System::runtimeInfo.setElectraInfoBrightness(brightness);
        
        // Apply brightness immediately to the display
        Hardware::screen.setBacklightbrightness(brightness);
        
        System::logger.write(LOG_ERROR, "processElectraSysex: brightness set successfully");
        MidiOutput::sendAck(MidiInterface::Type::MidiUsbDev, port);
    } else {
        // Pass other UPDATE commands to application
        App::get()->handleElectraSysex(port, sysexBlock);
    }

```

### SysEx Command Format

```auto
F0 00 21 45 04 7F [MSB] [LSB] F7

```

- `F0` - SysEx start
- `00 21 45` - Electra One manufacturer ID
- `04` - UPDATE command
- `7F` - ElectraInfo object
- `[MSB] [LSB]` - 16-bit brightness value (big-endian)
- `F7` - SysEx end

### Brightness Value Range

**Important** : The RA8876 display uses **inverted PWM** - higher values = darker screen!

- **0** = Maximum brightness (brightest)
- **1024** = High brightness
- **2048** = Medium brightness
- **4096** = Low brightness
- **5888** = Minimum brightness (dimmest)
- **6144** = Hardware maximum (very dim)

## 📁 Ready-to-Use SysEx Files

| File | Brightness Level | Value | Description |
| --- | --- | --- | --- |
| `set-brightness-maximum.syx` | Maximum | 0 | Brightest setting |
| `set-brightness-high.syx` | High | 1024 | High brightness |
| `set-brightness-medium.syx` | Medium | 2048 | Medium brightness |
| `set-brightness-low.syx` | Low | 4096 | Low brightness |
| `set-brightness-minimum.syx` | Minimum | 5888 | Dimmest usable setting |

## 🛠 Installation Instructions

### Option A: Use Pre-compiled Firmware (Easiest)

1. Download the compiled firmware from the GitHub release
2. Upload using ElectraOneConsole app or `make upload`

### Option B: Build from Source

1. **Prerequisites** : ARM GNU Toolchain installed
2. **Clone repositories** :

```bash
git clone https://github.com/jelytle/firmware.git
git clone https://github.com/electraone/controller.git

```

3. **Checkout brightness control branch** :

```bash
cd firmware
git checkout brightness-control-v3.5.4

```

4. **Link controller app** :

```bash
ln -sf ../controller ./controller

```

5. **Build and upload** :

```bash
make APPPATH=controller all
make APPPATH=controller upload

```

## 🧪 Testing

1. **Install firmware** (see instructions above)
2. **Test brightness control** :
  - Send `set-brightness-maximum.syx` → Screen should be brightest
  - Send `set-brightness-minimum.syx` → Screen should be dimmest

3. **Verify persistence** : Restart controller, brightness should remain

### Expected Response

Successful brightness changes return ACK:

```auto
F0 00 21 45 7E 01 00 00 F7

```

## 🔍 How This Was Discovered

The brightness infrastructure was never removed from v3.5.4 - it just lacked the SysEx command interface:

- ✅ `Hardware::screen.setBacklightbrightness()` - Present
- ✅ `System::runtimeInfo.setElectraInfoBrightness()` - Present
- ✅ EEPROM storage functions - Present
- ❌ **UPDATE command handler** - **Missing** (now restored!)

## 💻 Integration Examples

### MIDI Controller

Map hardware knobs/faders to send brightness SysEx commands

### Automation

```python
# Python example using python-rtmidi
brightness_cmd = [0xF0, 0x00, 0x21, 0x45, 0x04, 0x7F, 0x08, 0x00, 0xF7] # Medium
midiout.send_message(brightness_cmd)

```

### Max/MSP, Pure Data, etc.

Send raw SysEx messages to Electra Controller CTRL port

## 🤝 Contributing

This feature is now available as:

- **Source code** : GitHub branch `brightness-control-v3.5.4`
- **Pre-compiled firmware** : GitHub release downloads
- **SysEx test files** : Ready-to-use brightness control files

## ⚠ Compatibility

- **Hardware** : Electra One MK1 only (MK2 uses different display driver)
- **Firmware** : Based on v3.5.4 - fully compatible with existing presets
- **Controller App** : Tested with full controller application (not just demo)

## 🎉 Result

The Electra One MK1 now has the brightness control that was missing since v2.0, implemented with minimal firmware changes and maximum compatibility!

* * *

_Thanks to the excellent Electra One architecture that preserved all the underlying brightness infrastructure - this restoration required only adding the missing SysEx command interface!_  
fork [GitHub - jelytle/firmware: Electra One base firmware](https://github.com/jelytle/firmware)

---

<div class="post-metadata">

**Author:** ![martin](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.electra.one/martin/32/145_2.png) [@martin](https://forum.electra.one/u/martin)\
**Post date:** [August 2, 2025, 8:25am UTC](https://forum.electra.one/t/mk1-dim-display-bootloader-reflash-instruction-completely-missing-from-site/3832/3 "2025-08-02T08:25:10Z")

</div>

great work! I am sorry I did not respond, I was mostly offline recently.

I will review what you have done (in code) and will incorporate the changes to the main repo.
