Skip to content

HUB75: Color Order setting is hidden in the UI, and only 2 of 6 orders are implemented #5723

Description

@jsenecal

What happened?

For a HUB75 matrix bus, the LED Preferences page hides the "Color Order" dropdown entirely, even though the HUB75 driver in bus_manager.cpp reads and acts on that same value (it swaps GPIO pin roles to compensate for panels whose R/G/B lines aren't wired in the order WLED expects).

On top of that, only RGB and BGR are actually handled in firmware whilst the other four permutations (GRB, BRG, RBG, GBR) silently do nothing.

Root cause, wled00/data/settings_leds.htm:

gId("co"+n).style.display = (isVir(t) || isAna(t) || isHub75(t)) ? "none":"inline";       // hide color order for PWM

Per the comment, this was meant to hide the control only for PWM/analog/virtual buses; HUB75 appears bundled in by mistake.

Firmware side, wled00/bus_manager.cpp (BusHub75Matrix::BusHub75Matrix):

if (bc.colorOrder == COL_ORDER_RGB) {
    DEBUGBUS_PRINTLN("MatrixPanel_I2S_DMA = Default color order (RGB)");
} else if (bc.colorOrder == COL_ORDER_BGR) {
    ...swaps r1<->b1, r2<->b2...
} else {
    DEBUGBUS_PRINTF("MatrixPanel_I2S_DMA = unsupported color order %u\n", bc.colorOrder);
}
COL_ORDER_GRB (0, the system default for any new bus), BRG (2), RBG (3), GBR (5) all fall through as no-ops.

To Reproduce Bug

  1. Add a HUB75 matrix bus in Settings -> LED Preferences.
  2. Note there's no "Color Order" control for it (compare to a WS2812 bus on the same page).
  3. Use a panel needing a non-RGB/BGR order (e.g. Green/Blue swapped); colors render wrong with no way to fix it in the UI.

Expected Behavior

Color Order dropdown visible for HUB75 buses; all 6 orders correctly remap R1/G1/B1/R2/G2/B2 GPIO roles.

Install Method

Self-Compiled

What version of WLED?

WLED 16.0.1 (2605010)

Which microcontroller/board are you seeing the problem on?

ESP32

Relevant log/trace output

Bus: Config (0-4096, type:65, CO:1, rev:0, skip:0, AW:0 kHz:0, mA:0/0, driver:RMT)
MatrixPanel_I2S_DMA = Default color order (RGB)

Anything else?

Suggested fix: drop isHub75(t) from the hide condition; extend the bus_manager.cpp chain to all 6 COL_ORDER_* values. Locally implemented/verified the RBG case. I'd be happy to open a PR with the full set. Hardware: classic ESP32 (no PSRAM), esp32dev_hub75 build env, 64x64 P2.5 panel with G/B swap.

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions