Skip to content

[Support] ASUS TUF Gaming A16 (FA608WV) keyboard backlight via HID LampArray (fix in PR #147) #148

Description

@v3zz0

Model

  • ASUS TUF Gaming A16 FA608WV_FA608WV (2024/2025)
  • CPU: AMD Ryzen AI 9 HX (Radeon 880M iGPU)
  • dGPU: NVIDIA RTX 4060 Laptop
  • BIOS: FA608WV.309 (2025-10-01)
  • Distro: Pop!_OS 24.04 LTS, kernel 7.0.11-76070011-generic

Problem (before fix)

Keyboard RGB backlight completely inert on Linux:

  • asusctl aura effect static -c ff0000 returns success but nothing happens
  • brightnessctl --device=asus::kbd_backlight set 3 writes value to sysfs, no physical change
  • rog-control-center shows the panel but color picker has no effect

Root cause

On this SKU the actual backlight controller is an ITE5570 chip on the I2C-HID bus (vendor 0B05, product 19B6), exposing the Microsoft HID LampArray standard (HID Usage Tables 1.5, Usage Page 0x59). The legacy asus::kbd_backlight sysfs node accepts writes but the EC ignores them on this hardware.

The current aura_manager::init_hid_devices filters HID devices by USB parent only, so any I2C-HID device is silently skipped and the LampArray controller is never probed.

$ ls /sys/bus/hid/devices/ | grep 0B05
0018:0B05:19B6.0002 # bus 0018 = I2C-HID
$ cat /sys/bus/hid/devices/0018:0B05:19B6.0002/uevent
DRIVER=hid-generic
HID_ID=0018:00000B05:000019B6
HID_NAME=ITE5570:00 0B05:19B6
HID_PHYS=i2c-ITE5570:00
$ sudo xxd /sys/bus/hid/devices/0018:0B05:19B6.0002/report_descriptor | grep "05 59"

→ LampArray Usage Page present

LampArrayAttributes on this SKU returns LampCount=1 (single-zone), Kind=Keyboard, bounding box ~310×144mm.

Fix

PR #147 implements the fix: #147

  • Adds I2C-HID fallback discovery to aura_manager::init_hid_devices (existing USB path untouched, walks udev parent chain for HID_ID)
  • Adds DeviceHandle::maybe_lamparray() factory in aura_types.rs
  • Adds is_lamparray: bool to Aura and a LampArray write path (HIDIOCSFEATURE [0x46, 0x00] disable autonomous + HIDIOCSFEATURE [0x45, 0x01, ..., R, G, B, I] range update) in Aura::write_effect_and_apply
  • Adds HidRaw::raw_info(), set_feature_report(), get_feature_report(), from_i2c_device() helpers in rog-platform
  • Routes set_led_mode, set_led_mode_data, set_brightness, set_aura_power zbus methods through the LampArray branch when is_lamparray=true

Net diff: +686 / -24 lines across 7 files. Zero behavior change on existing USB/asus-wmi/Slash/AniMe/Ally paths — every new code path is gated behind self.is_lamparray or the explicit I2C-HID discovery.

Test results (with PR #147 applied)

$ asusctl aura effect static -c ff0000 # keyboard turns red
$ asusctl aura effect static -c 00ff00 # green
$ asusctl aura effect static -c 0000ff # blue
[INFO asusd::aura_laptop] LampArray write_effect_and_apply: dev_type=LaptopKeyboard2021 mode=Static
[INFO asusd::aura_laptop] LampArray ready: LampCount=1 rgb=(ff,00,00) i=128
$ busctl tree xyz.ljones.Asusd
└─ /xyz/ljones/aura/lamparray_19b6

rog-control-center color picker now drives the hardware in real time.

Full write-up (userspace standalone driver + patched asusctl + screen brightness fix + hibernate setup)

https://dev.to/alessandrovezzoli/full-linux-support-for-asus-tuf-gaming-a16-fa608wv-keyboard-backlight-brightness-hibernate-18n2

Possibly related models

The same I2C-HID LampArray path is likely used on other 2024/2025 ASUS SKUs with ITE5570 controllers. If your model shows a device with vendor 0B05 on I2C-HID (bus code 0018 in HID_ID), it's a candidate. See #107 (A18), #110 (Zenbook Duo 2025), #119 (A18 FA808UM) — happy to extend the PID whitelist in a follow-up.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions