Skip to content

hugo-andrade/avellcc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

avellcc

Go Report Badge CI Badge License Badge Release Badge

Linux control center for Avell Storm 590X (Clevo barebone) laptops. Per-key RGB keyboard LEDs, rear lightbar, fan control, and thermal monitoring — no Windows required.

Single static binary, zero dependencies.

Hardware

Component Details
Keyboard LED Controller ITE IT8295, USB 048d:8910
Lightbar Controller ITE 048d:8911 (X58 protocol)
Fans 2x ACPI fans via WMI/hwmon
WMI Clevo WMBB (ABBC0F6D) for fan control

Install

Quick install (recommended)

curl -fsSL https://raw.githubusercontent.com/hugo-andrade/avellcc/main/install.sh | bash

This downloads the latest release, verifies the checksum, installs the binary to /usr/local/bin, sets up udev rules, and installs the systemd restore service.

You can customize the install:

# Install a specific version
VERSION=0.2.0 curl -fsSL https://raw.githubusercontent.com/hugo-andrade/avellcc/main/install.sh | bash

# Install to a custom directory
INSTALL_DIR=~/.local/bin curl -fsSL https://raw.githubusercontent.com/hugo-andrade/avellcc/main/install.sh | bash

Go install

go install github.com/hugo-andrade/avellcc@latest

Note: go install only installs the binary. You still need to set up udev rules manually for non-root access (see udev rules below).

Build from source

git clone https://github.com/hugo-andrade/avellcc.git
cd avellcc
make install

Or manually:

go build -o avellcc .
sudo install -m 755 avellcc /usr/local/bin/

udev rules

Required for non-root access to the keyboard and lightbar HID devices:

sudo cp udev/99-avellcc.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && sudo udevadm trigger

Fan speed control (optional)

Fan speed control requires the acpi_call kernel module:

# Arch Linux
sudo pacman -S --needed linux-headers acpi_call-dkms

# Debian / Ubuntu
sudo apt install dkms acpi-call-dkms linux-headers-$(uname -r)
sudo modprobe acpi_call

Usage

Keyboard

avellcc keyboard --color red              # All keys solid color
avellcc keyboard --color "#FF6600"        # Hex color
avellcc keyboard --color 255,100,0        # RGB values

avellcc keyboard --key w --color blue     # Single key
avellcc keyboard --key space --color green

avellcc keyboard --brightness 7           # Brightness (0-10)
avellcc keyboard --effect rainbow         # Hardware animation
avellcc keyboard --effect sw_rainbow      # Software rainbow wave
avellcc keyboard --effect sw_breathing    # Software breathing

avellcc keyboard --profile gaming.json    # Load profile
avellcc keyboard --off                    # Turn off

avellcc kb -c red -b 7                    # Short alias

Lightbar

avellcc lightbar                          # Show status and available effects/colors
avellcc lightbar --effect static --color blue --brightness 4
avellcc lightbar --effect wave --speed 5
avellcc lightbar --effect color-wave
avellcc lightbar --effect change-color
avellcc lightbar --effect granular --color cyan
avellcc lightbar --off

avellcc lb -e static -c blue -b 4 -s 3   # Short alias

Available effects: static, breathe, wave, change-color, granular, color-wave

Available colors: red, yellow, lime, green, cyan, blue, purple

Fans

avellcc fan                               # Live TUI dashboard (interactive terminal)
avellcc fan --status                      # Plain text output
avellcc fan --speed 80                    # All fans 80%
avellcc fan --speed 100 --fan 1           # Fan 1 at 100%
avellcc fan --auto                        # Back to automatic

The TUI dashboard shows live RPM sparklines, duty progress bars, and temperatures. Keyboard shortcuts: + max, - min, a auto, q quit.

Keyboard utilities

avellcc keyboard keys                     # List known key names
avellcc keyboard keys -v                  # With grid positions
avellcc keyboard calibrate                # Interactive key-to-LED calibration
avellcc keyboard firmware                 # Show keyboard firmware info

Profiles

JSON files in ~/.config/avellcc/profiles/:

{
    "brightness": 10,
    "color": "black",
    "lightbar": {
        "effect": "static",
        "color": "blue",
        "brightness": 4,
        "speed": 3
    },
    "keys": {
        "w": "#FF0000",
        "a": "#FF0000",
        "s": "#FF0000",
        "d": "#FF0000",
        "space": "#FF4400",
        "esc": "#FFFFFF"
    }
}

State reload

avellcc reload                            # Reload saved keyboard and lightbar state

Restore on boot

sudo cp systemd/avellcc.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable avellcc.service

Restore on suspend/resume

sudo install -Dm755 systemd/system-sleep/avellcc /usr/lib/systemd/system-sleep/avellcc

Both the boot service and suspend/resume hook call avellcc reload to restore saved keyboard and lightbar state.

Tip: The quick install script sets up both automatically.

Uninstall

make uninstall

Or manually:

sudo systemctl disable --now avellcc.service
sudo rm -f /usr/local/bin/avellcc
sudo rm -f /etc/udev/rules.d/99-avellcc.rules
sudo rm -f /etc/systemd/system/avellcc.service
sudo rm -f /usr/lib/systemd/system-sleep/avellcc
sudo udevadm control --reload-rules
sudo systemctl daemon-reload

Protocol

Keyboard (ITE IT8295)

HID feature reports on report ID 0xCC (6 bytes) via Linux hidraw.

Command Format Description
Set key color CC 01 <led_id> R G B Per-key RGB
Set brightness CC 09 <level> 02 00 00 Level 0-10
Hardware animation CC 00 09 00 00 00 Random color effect

LED addressing: led_id = (row << 5) | col on a 6x20 grid.

Lightbar (ITE 8911)

HID feature reports on report ID 0xCD, command 0xE2, 64-byte frames via hidraw. Protocol reverse-engineered from the Windows CC.Device.LightBar_X58 driver. Details in docs/lightbar-re.md.

Fans (Clevo WMI)

ACPI method \_SB.WMI.WMBB (GUID ABBC0F6D, 3 args: instance, command, data).

Command Function
0x63 Get fan 1 duty + period
0x64 Get fan 2 duty + period
0x68 Set fan duty (packed: fan1[7:0] | fan2[15:8])
0x69 Set auto mode (bitmask: bit0=fan1, bit1=fan2)

Compatibility

Built and tested on Arch Linux. Should work on any distro with hidraw support. Other Clevo-based laptops with ITE IT8295 (TUXEDO, Sager, etc.) should also work.

About

Avell Control Center

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors