When I first installed Ubuntu on my Vostro 1500, I was very happy that the wireless card worked. Ordering the correct hardware is one thing, actually printing "Hello World" is another.
Two days later I was cursing the wireless worked. The wireless LED that is. It's a constant bright blue blinking light that's extremely annoying. After googling, I finally discovered that I could control it via the /sys file system:
# echo iphy0assoc > '/sys/class/leds/iwl-phy0:assoc/trigger'
# echo none > '/sys/class/leds/iwl-phy0:radio/trigger'
# echo none > '/sys/class/leds/iwl-phy0:RX/trigger'
# echo none > '/sys/class/leds/iwl-phy0:TX/trigger
Woot! The light turned off. For two seconds. Then was back again. Still bright, still blue, still blinking, still annoying. It took me a couple nights, but then I woke up. Haduh! Computers do the redundant really well! So I wrote a simple C program:
#include <unistd.h>
int main ( ) {
while ( 1 ) {
// loop endlessly
system( "echo iphy0assoc > '/sys/class/leds/iwl-phy0:assoc/trigger'" );
system( "echo none > '/sys/class/leds/iwl-phy0:radio/trigger'" );
system( "echo none > '/sys/class/leds/iwl-phy0:RX/trigger'" );
system( "echo none > '/sys/class/leds/iwl-phy0:TX/trigger'" );
system( "echo 0 > '/sys/class/leds/iwl-phy0:radio/brightness'" );
sleep( 2 ); // wait 2 seconds, before doing it again
}
}
Basically, an endless loop, turning off the wifi led every 2 seconds. Compilation was easy:
$ gcc -Os -o turn_off_wifi_led turn_off_wifi_led.c
Now, the tricky part is that this must be run as root, and I don't want to have to run it manually every time I login. Luckily, our Unix engineers have thought of this: setuid
$ ll turn_off_wifi_led
-rwxr-xr-x 1 kevin kevin 6.3K 2009-06-22 01:59 turn_off_wifi_led
$ sudo chown root:kevin turn_off_wifi_led
$ sudo chmod 4755 turn_off_wifi_led
-rwsr-xr-x 1 root kevin 6.3K 2009-06-22 01:59 turn_off_wifi_led
Now, because it's setuid
, and it's owned by root, no matter who executes the turn_off_wifi_led
program, it will run with root privileges.
The last actions are to put it my bin folder, and to run it automatically when I log in:
$ mv turn_off_wifi_led ~/bin
Then go to System→Preferences→Startup Applications. Click 'Add' to make a new entry in the table:
Name: Kill WiFi LED
Command: /home/kevin/bin/turn_off_wifi_led &
Comment: Turn off that damned annoying, always flashing, blue wifi LED.
Click Save, then Close. VoilĂ ! After logging back in, the annoying blue LED is off for good!