Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

omen-led

Control the HP OMEN 30L desktop case lighting from Linux, with no vendor software.

HP's OMEN Gaming Hub is Windows-only, and no Linux RGB tool covers these machines — OpenRGB has only unresolved issues for OMEN desktops, and OmenLinux / hp-omen-linux-module target OMEN laptops (keyboard backlight, fans). This is a single dependency-free Python script that talks to the lighting controller directly.

$ omen-led on jungle
on — cycle, theme=jungle, speed=medium, 100% (/dev/hidraw0)

Install

sudo install -m 755 omen-led /usr/local/bin/omen-led
sudo install -m 644 99-omen-tracerled.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger --subsystem-match=hidraw
sudo usermod -aG plugdev "$USER"     # log out/in for this to take effect

The udev rule gives group plugdev write access to the controller so you don't need sudo. Requires Python 3.6+ and nothing else — no hidapi, no pyusb.

Usage

omen-led off                          turn everything off
omen-led on [THEME] [SPEED] [PCT]     colour cycle
omen-led color RRGGBB [PCT]           one static colour
omen-led brightness PCT               change brightness, keep current theme/speed
omen-led status                       show what was last set

THEME   galaxy (purple/blue, default) · volcano (red/orange) · jungle (green) · ocean (blue/cyan)
SPEED   slow | medium | fast          (default medium)
PCT     25 | 50 | 75 | 100            (default 100)

Arguments may be given in any order: omen-led on 50 jungle slow.

omen-led off                # nightly
omen-led on jungle          # green cycle
omen-led on ocean slow 25   # dim, slow, blue
omen-led color 00FF40       # solid green
omen-led brightness 50      # dim without losing the theme

Hardware

Tested on an HP OMEN 30L Desktop GT13-0xxx (board "HP 8703"), Linux 5.4.

The controller is a USB HID device 103c:84fd "HP TracerLED". The kernel binds usbhid automatically and exposes it as /dev/hidrawN, which is all this script needs. It should also work on the OMEN 25L and other models using the same controller — reports welcome.

Not covered: the GPU's illuminated logo. On this machine the card is an HP OEM board (10de:2204, subsystem 103c:88d5); nvidia-settings exposes no illumination attributes and OpenRGB's NVIDIA support targets Founders-Edition/AIB controllers this board doesn't have. It appears hard-wired on — physical remedies only.

Protocol

Each write is 0x00 (report-ID prefix) + 57 data bytes = 58 bytes to /dev/hidrawN. This matches the device's own HID report descriptor:

95 39   Report Count = 57,  no Report ID item (unnumbered)
91 02   Output (Data,Var,Abs)
Byte Meaning
0 report ID — always 0x00
2 0x12 command header — mandatory
3 mode: 0x05 off · 0x01 static · 0x06 breathing · 0x07 colour-cycle · 0x08 blink
4, 5 custom colour count / number (0x01)
8, 9, 10 R, G, B — static/custom modes only
48 brightness: 0x19 25% · 0x32 50% · 0x4b 75% · 0x64 100%
49 0x0a normal (0x04 = system-vitals mode)
54 module id (bit flag): 0x01 front · 0x02 LED bar · 0x04 fan · more exist
55 0x01
56 theme: galaxy / volcano / jungle / ocean = 0x01..0x04
57 speed: slow / medium / fast = 0x01..0x03

Two things that cost real debugging time

  1. Omitting [2] = 0x12 makes the device silently ignore the report. The write succeeds and returns no error — the LEDs simply don't change.
  2. The commonly documented module IDs (0x01/0x02/0x04) are incomplete. On this machine the large front fan light ignored all three and only responded after sweeping the wider bit-flag range. This script therefore writes to every known module ID, which is harmless.

Also worth knowing: deauthorizing the USB device does not turn the lights off (echo 0 > /sys/bus/usb/devices/X-Y/authorized). The controller holds its state in firmware — you have to tell it to turn off.

Themes are sequenced in the controller's firmware, so selecting a palette works natively; no host-side colour streaming is required.

Credits

The report layout was reverse-engineered by rchiruma/HPOmenLED (a Windows/pywinusb script) — without that work this would not exist. This project is an independent Linux implementation written against hidraw; it shares no code with the original, only the factual protocol description, which it extends with the corrected module-ID handling and firmware-descriptor verification described above.

License

MIT — see LICENSE.

Note that the upstream project declares no license. Only interface facts (byte offsets and values) were used from it, not its code; protocol facts are generally not copyrightable. If you are the author of the original and would like different attribution, please open an issue.

About

Control HP OMEN 30L desktop case lighting (TracerLED) from Linux — no vendor software, no dependencies

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages