{"id":46666767,"url":"https://github.com/hugo-andrade/avellcc","last_synced_at":"2026-04-07T14:02:55.885Z","repository":{"id":343041673,"uuid":"1175634670","full_name":"hugo-andrade/avellcc","owner":"hugo-andrade","description":"Avell Control Center","archived":false,"fork":false,"pushed_at":"2026-03-08T18:57:39.000Z","size":151,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-08T19:13:11.151Z","etag":null,"topics":["590x","avell","avell-notebooks","storm","storm-590x"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hugo-andrade.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"hugo-andrade"}},"created_at":"2026-03-08T00:53:58.000Z","updated_at":"2026-03-08T18:57:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hugo-andrade/avellcc","commit_stats":null,"previous_names":["hugo-andrade/avellcc"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/hugo-andrade/avellcc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugo-andrade%2Favellcc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugo-andrade%2Favellcc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugo-andrade%2Favellcc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugo-andrade%2Favellcc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hugo-andrade","download_url":"https://codeload.github.com/hugo-andrade/avellcc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hugo-andrade%2Favellcc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31515152,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["590x","avell","avell-notebooks","storm","storm-590x"],"created_at":"2026-03-08T19:01:39.227Z","updated_at":"2026-04-07T14:02:55.869Z","avatar_url":"https://github.com/hugo-andrade.png","language":"Go","funding_links":["https://github.com/sponsors/hugo-andrade"],"categories":[],"sub_categories":[],"readme":"# avellcc\n\n\u003cp\u003e\n    \u003ca href=\"https://goreportcard.com/report/github.com/hugo-andrade/avellcc\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/hugo-andrade/avellcc\" alt=\"Go Report Badge\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/hugo-andrade/avellcc/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/hugo-andrade/avellcc/actions/workflows/ci.yml/badge.svg\" alt=\"CI Badge\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/hugo-andrade/avellcc/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/hugo-andrade/avellcc.svg\" alt=\"License Badge\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/hugo-andrade/avellcc/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/hugo-andrade/avellcc\" alt=\"Release Badge\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nLinux control center for **Avell Storm 590X** (Clevo barebone) laptops. Per-key RGB keyboard LEDs, rear lightbar, fan control, and thermal monitoring — no Windows required.\n\nSingle static binary, zero dependencies.\n\n## Hardware\n\n| Component | Details |\n|---|---|\n| Keyboard LED Controller | ITE IT8295, USB `048d:8910` |\n| Lightbar Controller | ITE `048d:8911` (X58 protocol) |\n| Fans | 2x ACPI fans via WMI/hwmon |\n| WMI | Clevo WMBB (`ABBC0F6D`) for fan control |\n\n## Install\n\n### Quick install (recommended)\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/hugo-andrade/avellcc/main/install.sh | bash\n```\n\nThis downloads the latest release, verifies the checksum, installs the binary to `/usr/local/bin`, sets up udev rules, and installs the systemd restore service.\n\nYou can customize the install:\n\n```bash\n# Install a specific version\nVERSION=0.2.0 curl -fsSL https://raw.githubusercontent.com/hugo-andrade/avellcc/main/install.sh | bash\n\n# Install to a custom directory\nINSTALL_DIR=~/.local/bin curl -fsSL https://raw.githubusercontent.com/hugo-andrade/avellcc/main/install.sh | bash\n```\n\n### Go install\n\n```bash\ngo install github.com/hugo-andrade/avellcc@latest\n```\n\n\u003e **Note:** `go install` only installs the binary. You still need to set up udev rules manually for non-root access (see [udev rules](#udev-rules) below).\n\n### Build from source\n\n```bash\ngit clone https://github.com/hugo-andrade/avellcc.git\ncd avellcc\nmake install\n```\n\nOr manually:\n\n```bash\ngo build -o avellcc .\nsudo install -m 755 avellcc /usr/local/bin/\n```\n\n### udev rules\n\nRequired for non-root access to the keyboard and lightbar HID devices:\n\n```bash\nsudo cp udev/99-avellcc.rules /etc/udev/rules.d/\nsudo udevadm control --reload-rules \u0026\u0026 sudo udevadm trigger\n```\n\n### Fan speed control (optional)\n\nFan speed control requires the `acpi_call` kernel module:\n\n```bash\n# Arch Linux\nsudo pacman -S --needed linux-headers acpi_call-dkms\n\n# Debian / Ubuntu\nsudo apt install dkms acpi-call-dkms linux-headers-$(uname -r)\n```\n\n```bash\nsudo modprobe acpi_call\n```\n\n## Usage\n\n### Keyboard\n\n```bash\navellcc keyboard --color red              # All keys solid color\navellcc keyboard --color \"#FF6600\"        # Hex color\navellcc keyboard --color 255,100,0        # RGB values\n\navellcc keyboard --key w --color blue     # Single key\navellcc keyboard --key space --color green\n\navellcc keyboard --brightness 7           # Brightness (0-10)\navellcc keyboard --effect rainbow         # Hardware animation\navellcc keyboard --effect sw_rainbow      # Software rainbow wave\navellcc keyboard --effect sw_breathing    # Software breathing\n\navellcc keyboard --profile gaming.json    # Load profile\navellcc keyboard --off                    # Turn off\n\navellcc kb -c red -b 7                    # Short alias\n```\n\n### Lightbar\n\n```bash\navellcc lightbar                          # Show status and available effects/colors\navellcc lightbar --effect static --color blue --brightness 4\navellcc lightbar --effect wave --speed 5\navellcc lightbar --effect color-wave\navellcc lightbar --effect change-color\navellcc lightbar --effect granular --color cyan\navellcc lightbar --off\n\navellcc lb -e static -c blue -b 4 -s 3   # Short alias\n```\n\nAvailable effects: `static`, `breathe`, `wave`, `change-color`, `granular`, `color-wave`\n\nAvailable colors: `red`, `yellow`, `lime`, `green`, `cyan`, `blue`, `purple`\n\n### Fans\n\n```bash\navellcc fan                               # Live TUI dashboard (interactive terminal)\navellcc fan --status                      # Plain text output\navellcc fan --speed 80                    # All fans 80%\navellcc fan --speed 100 --fan 1           # Fan 1 at 100%\navellcc fan --auto                        # Back to automatic\n```\n\nThe TUI dashboard shows live RPM sparklines, duty progress bars, and temperatures. Keyboard shortcuts: `+` max, `-` min, `a` auto, `q` quit.\n\n### Keyboard utilities\n\n```bash\navellcc keyboard keys                     # List known key names\navellcc keyboard keys -v                  # With grid positions\navellcc keyboard calibrate                # Interactive key-to-LED calibration\navellcc keyboard firmware                 # Show keyboard firmware info\n```\n\n## Profiles\n\nJSON files in `~/.config/avellcc/profiles/`:\n\n```json\n{\n    \"brightness\": 10,\n    \"color\": \"black\",\n    \"lightbar\": {\n        \"effect\": \"static\",\n        \"color\": \"blue\",\n        \"brightness\": 4,\n        \"speed\": 3\n    },\n    \"keys\": {\n        \"w\": \"#FF0000\",\n        \"a\": \"#FF0000\",\n        \"s\": \"#FF0000\",\n        \"d\": \"#FF0000\",\n        \"space\": \"#FF4400\",\n        \"esc\": \"#FFFFFF\"\n    }\n}\n```\n\n## State reload\n\n```bash\navellcc reload                            # Reload saved keyboard and lightbar state\n```\n\n### Restore on boot\n\n```bash\nsudo cp systemd/avellcc.service /etc/systemd/system/\nsudo systemctl daemon-reload\nsudo systemctl enable avellcc.service\n```\n\n### Restore on suspend/resume\n\n```bash\nsudo install -Dm755 systemd/system-sleep/avellcc /usr/lib/systemd/system-sleep/avellcc\n```\n\nBoth the boot service and suspend/resume hook call `avellcc reload` to restore saved keyboard and lightbar state.\n\n\u003e **Tip:** The quick install script sets up both automatically.\n\n## Uninstall\n\n```bash\nmake uninstall\n```\n\nOr manually:\n\n```bash\nsudo systemctl disable --now avellcc.service\nsudo rm -f /usr/local/bin/avellcc\nsudo rm -f /etc/udev/rules.d/99-avellcc.rules\nsudo rm -f /etc/systemd/system/avellcc.service\nsudo rm -f /usr/lib/systemd/system-sleep/avellcc\nsudo udevadm control --reload-rules\nsudo systemctl daemon-reload\n```\n\n## Protocol\n\n### Keyboard (ITE IT8295)\n\nHID feature reports on report ID `0xCC` (6 bytes) via Linux hidraw.\n\n| Command | Format | Description |\n|---|---|---|\n| Set key color | `CC 01 \u003cled_id\u003e R G B` | Per-key RGB |\n| Set brightness | `CC 09 \u003clevel\u003e 02 00 00` | Level 0-10 |\n| Hardware animation | `CC 00 09 00 00 00` | Random color effect |\n\nLED addressing: `led_id = (row \u003c\u003c 5) | col` on a 6x20 grid.\n\n### Lightbar (ITE 8911)\n\nHID 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`](docs/lightbar-re.md).\n\n### Fans (Clevo WMI)\n\nACPI method `\\_SB.WMI.WMBB` (GUID `ABBC0F6D`, 3 args: instance, command, data).\n\n| Command | Function |\n|---|---|\n| `0x63` | Get fan 1 duty + period |\n| `0x64` | Get fan 2 duty + period |\n| `0x68` | Set fan duty (packed: fan1[7:0] \\| fan2[15:8]) |\n| `0x69` | Set auto mode (bitmask: bit0=fan1, bit1=fan2) |\n\n## Compatibility\n\nBuilt 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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhugo-andrade%2Favellcc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhugo-andrade%2Favellcc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhugo-andrade%2Favellcc/lists"}