93 lines
7.8 KiB
Markdown
93 lines
7.8 KiB
Markdown
---
|
|
tags:
|
|
- Documentation
|
|
- Bookstack
|
|
- Notes
|
|
---
|
|
# ASUS Laptop
|
|
|
|
# Installing Keyboard LED
|
|
|
|
Ah, the output reveals exactly what's happening. OpenRGB is running in standalone mode and warning you about missing **udev rules**, which means it lacks the direct hardware permissions to hook into your Asus ROG laptop's internal SMBus/I2C controllers.
|
|
|
|
Because we are running this as a system startup task, the cleanest, most rock-solid approach is to completely sidestep OpenRGB and use the **native Linux kernel controls** (`sysfs`) that we found earlier. The kernel already has full root permissions and is running natively on your hardware without any extra utilities or udev rules required.
|
|
|
|
Let's test the native kernel interface directly. Run this command to see if your keyboard springs to life:
|
|
|
|
<div class="code-block ng-tns-c602925248-115 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk-bash"><div class="formatted-code-block-internal-container ng-tns-c602925248-115"><div class="animated-opacity ng-tns-c602925248-115"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c602925248-115 ng-star-inserted"><span class="ng-tns-c602925248-115">Bash</span><div class="buttons ng-tns-c602925248-115 ng-star-inserted"></div></div></div></div></div>```
|
|
echo 3 | sudo tee /sys/class/leds/asus::kbd_backlight/brightness
|
|
|
|
```
|
|
|
|
<div class="code-block ng-tns-c602925248-115 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation" id="bkmrk--1"><div class="formatted-code-block-internal-container ng-tns-c602925248-115"><div class="animated-opacity ng-tns-c602925248-115"></div></div></div>### Option A: If that turned your lights on (The Native Fix)
|
|
|
|
If the command above worked, we can make your startup service incredibly lightweight. We don't need OpenRGB or `rogauracore` at all.
|
|
|
|
1. Open your service file:
|
|
|
|
<div class="code-block ng-tns-c602925248-116 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c602925248-116"><div class="animated-opacity ng-tns-c602925248-116"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c602925248-116 ng-star-inserted"><span class="ng-tns-c602925248-116">Bash</span><div class="buttons ng-tns-c602925248-116 ng-star-inserted"></div></div></div></div></div>```
|
|
sudo nano /etc/systemd/system/keyboard-led.service
|
|
|
|
```
|
|
|
|
<div class="code-block ng-tns-c602925248-116 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c602925248-116"><div class="animated-opacity ng-tns-c602925248-116"></div></div></div>
|
|
2. Replace the entire contents with this clean shell execution:
|
|
|
|
<div class="code-block ng-tns-c602925248-117 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c602925248-117"><div class="animated-opacity ng-tns-c602925248-117"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c602925248-117 ng-star-inserted"><span class="ng-tns-c602925248-117">Ini, TOML</span><div class="buttons ng-tns-c602925248-117 ng-star-inserted"></div></div></div></div></div>```
|
|
[Unit]
|
|
Description=Asus ROG Keyboard LED Native Initialization
|
|
After=multi-user.target
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
RemainAfterExit=yes
|
|
ExecStart=/usr/bin/sh -c "echo 3 > /sys/class/leds/asus::kbd_backlight/brightness"
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
|
|
```
|
|
|
|
<div class="code-block ng-tns-c602925248-117 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c602925248-117"><div class="animated-opacity ng-tns-c602925248-117"></div></div></div>
|
|
3. Save, reload, and enable:
|
|
|
|
<div class="code-block ng-tns-c602925248-118 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c602925248-118"><div class="animated-opacity ng-tns-c602925248-118"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c602925248-118 ng-star-inserted"><span class="ng-tns-c602925248-118">Bash</span><div class="buttons ng-tns-c602925248-118 ng-star-inserted"></div></div></div></div></div>```
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl reset-failed keyboard-led.service
|
|
sudo systemctl start keyboard-led.service
|
|
sudo systemctl enable keyboard-led.service
|
|
|
|
```
|
|
|
|
<div class="code-block ng-tns-c602925248-118 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c602925248-118"><div class="animated-opacity ng-tns-c602925248-118"></div></div></div>
|
|
|
|
### Option B: If you still want OpenRGB's specific color profiles
|
|
|
|
If you want to stick with OpenRGB (for instance, to set custom HEX colors or complex animations), we need to fix those `udev` rules so OpenRGB can talk to the hardware interface.
|
|
|
|
1. Download and install the official OpenRGB udev rules template:
|
|
|
|
<div class="code-block ng-tns-c602925248-119 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c602925248-119"><div class="animated-opacity ng-tns-c602925248-119"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c602925248-119 ng-star-inserted"><span class="ng-tns-c602925248-119">Bash</span><div class="buttons ng-tns-c602925248-119 ng-star-inserted"></div></div></div></div></div>```
|
|
sudo wget -O /etc/udev/rules.d/60-openrgb.rules https://gitlab.com/CalcProgrammer1/OpenRGB/-/raw/master/60-openrgb.rules
|
|
|
|
```
|
|
|
|
<div class="code-block ng-tns-c602925248-119 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c602925248-119"><div class="animated-opacity ng-tns-c602925248-119"></div></div></div>
|
|
2. Reload your system's device rules:
|
|
|
|
<div class="code-block ng-tns-c602925248-120 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c602925248-120"><div class="animated-opacity ng-tns-c602925248-120"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c602925248-120 ng-star-inserted"><span class="ng-tns-c602925248-120">Bash</span><div class="buttons ng-tns-c602925248-120 ng-star-inserted"></div></div></div></div></div>```
|
|
sudo udevadm control --reload-rules && sudo udevadm trigger
|
|
|
|
```
|
|
|
|
<div class="code-block ng-tns-c602925248-120 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c602925248-120"><div class="animated-opacity ng-tns-c602925248-120"></div></div></div>
|
|
3. Try running the OpenRGB command again to test:
|
|
|
|
<div class="code-block ng-tns-c602925248-121 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c602925248-121"><div class="animated-opacity ng-tns-c602925248-121"><div class="code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c602925248-121 ng-star-inserted"><span class="ng-tns-c602925248-121">Bash</span><div class="buttons ng-tns-c602925248-121 ng-star-inserted"></div></div></div></div></div>```
|
|
sudo /usr/local/bin/openrgb --appimage-extract-and-run --device 0 --mode static --color 00FF00 --brightness 100
|
|
|
|
```
|
|
|
|
<div class="code-block ng-tns-c602925248-121 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation"><div class="formatted-code-block-internal-container ng-tns-c602925248-121"><div class="animated-opacity ng-tns-c602925248-121"></div></div></div>
|
|
|
|
If you prefer the simplicity of a working keyboard without extra dependencies, **Option A** is highly recommended! |