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

    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