In windows, this should be fairly easy. All the communication is done through the APPDRV.sys device driver. A CreateFileA for \\.\APPDRV should open it and then control through DeviceIOControl. The above APIMONITOR app can easily show the buffers going into and out of the device driver.
It seems the control code is 0x22209C
The buffer is 22 bytes long. The same buffer is used for in and out.
The first 9 bytes have data, the last are all 0.
Bytes 1 - 4 : 04000600 Don't know what these are.
Bytes 5-7 : Led color for the three zones
Byte 8: brightness
Byte 9: save as bootup value (1/0)
Unfortunately, that doesn't help me much since I'm looking for a linux solution. I'm assuming the device driver interprets that buffer into something else and writes to the SM bios. The good news is the device driver is only 16K in size, not 550K like gaming.exe. That should be a lot less work for someone that is good with a disassembler and knows something about device drivers. Unfortunately, that's not me. :-(
Dan
iXPS Gen 2