Puffer Man
New Member
Greetings.
I own an A70 HYB Standard, produced by Avell, a brazilian Clevo re-seller. The laptop comes with a RGB membrane backlit keyboard whose properties I wish to manipulate. Quick Set-up/Arch install configuration just in case it's needed:
Hardware
Arch Installation
Default Keyboard behavior
When booting the keyboard changes colors quickly, once GDM pops up a blue color prevails until the machine is turned off. The keyboard's back-light stays on for a some minutes, and after a while of inactivity its back-light intensity is dropped off until the next key is pressed. The fn keys are a hit/miss, some work some don't. The light intensity fn keys work. No configuration was made by me.
What have I tried until now:
First I attempted to get some info in regards to the physical hardware by running "hwinfo --keyboard":
As you can see the model name is "AT Translated Set 2 keyboard", which doesn't help that much in my pursuit. I tried entering in contact with the support but they tell me such info is unavailable from their end. Next I tried to gather info from /dev, "ls /dev/input/by-path/ -la":
At least I found out that the keyboard can't be fount in the .../by-ip/ sub directory. No luck in /sys/class/leds either:
By the way I see no num-lock led, nor scrolllock LEDs. In total I see 7 major LEDs zones in the laptop: the touch pad; the keyboard itself, power button, caps lock indicator, charging LED, webcam and a "fan speed" button that has no use nor response under "xev" under Linux.
After some digging and trying every back-light related package from the AUR and official repositories I gave up for some time; that was until I found out that the laptop has a proprietary Windows software to tweak the keyboard properties.
With that info in mind and knowing that I couldn't find any reverse engineered project on Git-Hub for this model in specific, I decided to make a QEMU/KVM W11 guest machine in order to attempt to install it.
The QEMU/VM set-up:
XML:
Based on the setup above I attempted to replicated to the best of my ability the laptop config with 32 GB of ram. I even went as far as to use the PCI Pass-through functionality, more precisely the DGPU, touch pad and keyboard.
I them proceed to install W11 on it. After installing the drivers that the re-seller itself provide I went for the management software. The first hurdle was that some sort of signature was out of date resulting in me having to set my date to last year to correctly install the software, at least I think that the software is correctly installed, I couldn't tell you how to do that in Windows through a terminal even if my life depended on it.
When looking on the "Device Manager" application it shows the same Keyboard name. Once inside the app is clear that the software had some issues since not all graphs load correctly and the only option I have to configure in regards to the keyboard is the time its back light will stay on, though it doesn't work. I also realized that the management software comes with some sorts of "Windows keys", once I opened it I could see that it had something to do with the keyboard colors. I can't remember the file extension now, but I can provide it if needed.
Is there any other thing I can try? Maybe I didn't set the vm correclty or maybe I didn't even needed a VM in the first place, any input is appreciated and I can provide further information on request, thanks in advance.
I own an A70 HYB Standard, produced by Avell, a brazilian Clevo re-seller. The laptop comes with a RGB membrane backlit keyboard whose properties I wish to manipulate. Quick Set-up/Arch install configuration just in case it's needed:
Hardware
- Host: A70 HYB Standard
- GPU: Intel Alder Lake-P
- GPU: NVIDIA GeForce RTX 3060 Mobile / Max-Q
- Memory: 64047MiB
- Storage: 2 NVMe SSDs (2 TB each)
- Resolution: 2560x1440
Arch Installation
- Boot-loader: GRUB
- OS: Arch Linux x86_64
- Kernel: 6.1.21-1-lts
- WM: kwin
- DE: Plasma 5.27.3
- Wayland
Default Keyboard behavior
When booting the keyboard changes colors quickly, once GDM pops up a blue color prevails until the machine is turned off. The keyboard's back-light stays on for a some minutes, and after a while of inactivity its back-light intensity is dropped off until the next key is pressed. The fn keys are a hit/miss, some work some don't. The light intensity fn keys work. No configuration was made by me.
What have I tried until now:
First I attempted to get some info in regards to the physical hardware by running "hwinfo --keyboard":
Code:
36: PS/2 00.0: 10800 Keyboard
[Created at input.226]
Unique ID: 3FDI.+49ps10DtUF
Hardware Class: keyboard
Model: "AT Translated Set 2 keyboard"
Vendor: 0x0001
Device: 0x0001 "AT Translated Set 2 keyboard"
Compatible to: int 0x0211 0x0001
Device File: /dev/input/event5
Device Files: /dev/input/event5, /dev/input/by-path/platform-i8042-serio-0-event-kbd
Device Number: char 13:69
Driver Info #0:
XkbRules: xfree86
XkbModel: pc104
Config Status: cfg=new, avail=yes, need=no, active=unknown
As you can see the model name is "AT Translated Set 2 keyboard", which doesn't help that much in my pursuit. I tried entering in contact with the support but they tell me such info is unavailable from their end. Next I tried to gather info from /dev, "ls /dev/input/by-path/ -la":
Code:
total 0
drwxr-xr-x 2 root root 160 mar 26 15:32 .
drwxr-xr-x 4 root root 560 mar 26 15:32 ..
lrwxrwxrwx 1 root root 10 mar 26 14:13 pci-0000:00:14.0-usb-0:5:1.0-event -> ../event12
lrwxrwxrwx 1 root root 10 mar 26 14:13 pci-0000:00:15.0-platform-i2c_designware.0-event-mouse -> ../event18
lrwxrwxrwx 1 root root 9 mar 26 14:13 pci-0000:00:15.0-platform-i2c_designware.0-mouse -> ../mouse1
lrwxrwxrwx 1 root root 9 mar 26 14:13 platform-INTC1070:00-event -> ../event6
lrwxrwxrwx 1 root root 9 mar 26 14:13 platform-i8042-serio-0-event-kbd -> ../event5
lrwxrwxrwx 1 root root 9 mar 26 14:13 platform-pcspkr-event-spkr -> ../event7
At least I found out that the keyboard can't be fount in the .../by-ip/ sub directory. No luck in /sys/class/leds either:
Code:
total 0
drwxr-xr-x 2 root root 0 mar 26 14:13 .
drwxr-xr-x 80 root root 0 mar 26 14:13 ..
lrwxrwxrwx 1 root root 0 mar 26 14:13 input5::capslock -> ../../devices/platform/i8042/serio0/input/input5/input5::capslock
lrwxrwxrwx 1 root root 0 mar 26 14:13 input5::numlock -> ../../devices/platform/i8042/serio0/input/input5/input5::numlock
lrwxrwxrwx 1 root root 0 mar 26 14:13 input5::scrolllock -> ../../devices/platform/i8042/serio0/input/input5/input5::scrolllock
lrwxrwxrwx 1 root root 0 mar 26 15:26 phy0-led -> ../../devices/pci0000:00/0000:00:14.3/leds/phy0-led
By the way I see no num-lock led, nor scrolllock LEDs. In total I see 7 major LEDs zones in the laptop: the touch pad; the keyboard itself, power button, caps lock indicator, charging LED, webcam and a "fan speed" button that has no use nor response under "xev" under Linux.
After some digging and trying every back-light related package from the AUR and official repositories I gave up for some time; that was until I found out that the laptop has a proprietary Windows software to tweak the keyboard properties.
With that info in mind and knowing that I couldn't find any reverse engineered project on Git-Hub for this model in specific, I decided to make a QEMU/KVM W11 guest machine in order to attempt to install it.
The QEMU/VM set-up:
XML:
Code:
<domain type="kvm">
<name>win11</name>
<uuid>9f5a7587-be64-4f1c-9e71-8889c6542b0e</uuid>
<metadata>
<libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
<libosinfo:os id="http://microsoft.com/win/11"/>
</libosinfo:libosinfo>
</metadata>
<memory unit="KiB">32768000</memory>
<currentMemory unit="KiB">32768000</currentMemory>
<vcpu placement="static">18</vcpu>
<os>
<type arch="x86_64" machine="pc-q35-7.2">hvm</type>
<loader readonly="yes" secure="yes" type="pflash">/usr/share/edk2/x64/OVMF_CODE.secboot.4m.fd</loader>
<nvram>/var/lib/libvirt/qemu/nvram/win11_VARS.fd</nvram>
<bootmenu enable="yes"/>
</os>
<features>
<acpi/>
<apic/>
<hyperv mode="custom">
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
</hyperv>
<vmport state="off"/>
<smm state="on"/>
</features>
<cpu mode="host-passthrough" check="none" migratable="on">
<topology sockets="1" dies="1" cores="9" threads="2"/>
</cpu>
<clock offset="localtime">
<timer name="rtc" tickpolicy="catchup"/>
<timer name="pit" tickpolicy="delay"/>
<timer name="hpet" present="no"/>
<timer name="hypervclock" present="yes"/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled="no"/>
<suspend-to-disk enabled="no"/>
</pm>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type="file" device="disk">
<driver name="qemu" type="qcow2"/>
<source file="/home/puffer/virtualization/W11Storage/win11.snapshot1"/>
<backingStore type="file">
<format type="qcow2"/>
<source file="/home/puffer/virtualization/W11Storage/win11.qcow2"/>
</backingStore>
<target dev="sda" bus="sata"/>
<boot order="1"/>
<address type="drive" controller="0" bus="0" target="0" unit="0"/>
</disk>
<disk type="file" device="cdrom">
<driver name="qemu" type="raw"/>
<source file="/home/puffer/Downloads/ISOS/Win11_22H2_English_x64v1.iso"/>
<target dev="sdb" bus="sata"/>
<readonly/>
<address type="drive" controller="0" bus="0" target="0" unit="1"/>
</disk>
<disk type="file" device="cdrom">
<driver name="qemu" type="raw"/>
<source file="/var/lib/libvirt/images/virtio-win.iso"/>
<target dev="sdd" bus="sata"/>
<readonly/>
<boot order="2"/>
<address type="drive" controller="0" bus="0" target="0" unit="3"/>
</disk>
<controller type="usb" index="0" model="qemu-xhci" ports="15">
<address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/>
</controller>
<controller type="pci" index="0" model="pcie-root"/>
<controller type="pci" index="1" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="1" port="0x10"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0" multifunction="on"/>
</controller>
<controller type="pci" index="2" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="2" port="0x11"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x1"/>
</controller>
<controller type="pci" index="3" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="3" port="0x12"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x2"/>
</controller>
<controller type="pci" index="4" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="4" port="0x13"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x3"/>
</controller>
<controller type="pci" index="5" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="5" port="0x14"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x4"/>
</controller>
<controller type="pci" index="6" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="6" port="0x15"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x5"/>
</controller>
<controller type="pci" index="7" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="7" port="0x16"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x6"/>
</controller>
<controller type="pci" index="8" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="8" port="0x17"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x7"/>
</controller>
<controller type="pci" index="9" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="9" port="0x18"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0" multifunction="on"/>
</controller>
<controller type="pci" index="10" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="10" port="0x19"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x1"/>
</controller>
<controller type="pci" index="11" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="11" port="0x1a"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x2"/>
</controller>
<controller type="pci" index="12" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="12" port="0x1b"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x3"/>
</controller>
<controller type="pci" index="13" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="13" port="0x1c"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x4"/>
</controller>
<controller type="pci" index="14" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="14" port="0x1d"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x5"/>
</controller>
<controller type="sata" index="0">
<address type="pci" domain="0x0000" bus="0x00" slot="0x1f" function="0x2"/>
</controller>
<controller type="virtio-serial" index="0">
<address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
</controller>
<interface type="network">
<mac address="52:54:00:a1:c8:a5"/>
<source network="default"/>
<model type="virtio"/>
<link state="up"/>
<address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>
<serial type="pty">
<target type="isa-serial" port="0">
<model name="isa-serial"/>
</target>
</serial>
<console type="pty">
<target type="serial" port="0"/>
</console>
<channel type="spicevmc">
<target type="virtio" name="com.redhat.spice.0"/>
<address type="virtio-serial" controller="0" bus="0" port="1"/>
</channel>
<input type="evdev">
<source dev="/dev/input/by-path/pci-0000:00:14.0-usb-0:5:1.0-event"/>
</input>
<input type="evdev">
<source dev="/dev/input/by-path/platform-i8042-serio-0-event-kbd" grab="all" grabToggle="ctrl-ctrl" repeat="on"/>
</input>
<input type="mouse" bus="virtio">
<address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/>
</input>
<input type="keyboard" bus="virtio">
<address type="pci" domain="0x0000" bus="0x08" slot="0x00" function="0x0"/>
</input>
<input type="mouse" bus="ps2"/>
<input type="keyboard" bus="ps2"/>
<tpm model="tpm-crb">
<backend type="emulator" version="2.0"/>
</tpm>
<graphics type="spice" port="-1" autoport="no">
<listen type="address"/>
<image compression="off"/>
<gl enable="no"/>
</graphics>
<sound model="ich9">
<address type="pci" domain="0x0000" bus="0x00" slot="0x1b" function="0x0"/>
</sound>
<audio id="1" type="spice"/>
<video>
<model type="qxl" ram="65536" vram="65536" vgamem="16384" heads="1" primary="yes"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x0"/>
</video>
<hostdev mode="subsystem" type="pci" managed="yes">
<source>
<address domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</source>
<address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
</hostdev>
<hostdev mode="subsystem" type="pci" managed="yes">
<source>
<address domain="0x0000" bus="0x01" slot="0x00" function="0x1"/>
</source>
<address type="pci" domain="0x0000" bus="0x06" slot="0x00" function="0x0"/>
</hostdev>
<redirdev bus="usb" type="spicevmc">
<address type="usb" bus="0" port="2"/>
</redirdev>
<redirdev bus="usb" type="spicevmc">
<address type="usb" bus="0" port="3"/>
</redirdev>
<watchdog model="itco" action="reset"/>
<memballoon model="virtio">
<address type="pci" domain="0x0000" bus="0x04" slot="0x00" function="0x0"/>
</memballoon>
</devices>
</domain>
Based on the setup above I attempted to replicated to the best of my ability the laptop config with 32 GB of ram. I even went as far as to use the PCI Pass-through functionality, more precisely the DGPU, touch pad and keyboard.
I them proceed to install W11 on it. After installing the drivers that the re-seller itself provide I went for the management software. The first hurdle was that some sort of signature was out of date resulting in me having to set my date to last year to correctly install the software, at least I think that the software is correctly installed, I couldn't tell you how to do that in Windows through a terminal even if my life depended on it.
When looking on the "Device Manager" application it shows the same Keyboard name. Once inside the app is clear that the software had some issues since not all graphs load correctly and the only option I have to configure in regards to the keyboard is the time its back light will stay on, though it doesn't work. I also realized that the management software comes with some sorts of "Windows keys", once I opened it I could see that it had something to do with the keyboard colors. I can't remember the file extension now, but I can provide it if needed.
Is there any other thing I can try? Maybe I didn't set the vm correclty or maybe I didn't even needed a VM in the first place, any input is appreciated and I can provide further information on request, thanks in advance.