Dell XPS 13 Linux – HDD LED (using ShiftLock LED) Kommentare deaktiviert für Dell XPS 13 Linux – HDD LED (using ShiftLock LED)
I recently bought a Dell XPS 13 (Modell 2015) Ultrabook and I run Arch Linux on it. One thing I missed from the beginning was the absence of a drive LED. When I saw, that the XPS 13 has a white LED to signal ShiftLock directly inside the ShiftLock-Key I had an idea. Hey, I run Linux and I have total control, so why not use this ShiftLock-LED as a HardDrive LED?
The following script (running as a service) provides the Drive LED functionality on the Dell XPS 13. (Thanks to P.I. Engineering, Manwe and Stefo for their ideas)
#!/bin/bash # save this file as pcfreakled without extension # and make it executable (chmod +x) #check dependencies command -v setxkbmap >/dev/null 2>&1 || { echo >&2 "Script requires setxkbmap but it is not installed.Aborting."; exit 1; } command -v setleds >/dev/null 2>&1 || { echo >&2 "Script requires setleds but it is not installed.Aborting."; exit 1; } # console CONSOLE=/dev/console # disable caps lock key # This can also be done within Gnome but here is also a good place setxkbmap -option ctrl:nocaps >/dev/null 2>&1 # Check interval seconds CHECKINTERVAL=0.1 #indicator to use [caps, num, scroll] INDICATOR=caps getVmstat() { # cat /proc/vmstat| egrep "pgpgin|pgpgout" /proc/vmstat } #turn led on function led_on() { setleds -L +${INDICATOR} < ${CONSOLE} >/dev/null 2>&1 } #turn led off function led_off() { setleds -L -${INDICATOR} < ${CONSOLE} >/dev/null 2>&1 } # initialise variables NEW=$(getVmstat) OLD=$(getVmstat) ## while [ 1 ] ; do sleep $CHECKINTERVAL # slowdown a bit # get status NEW=$(getVmstat) #compare state if [ "$NEW" = "$OLD" ]; then led_off ## no change, led off else led_on ## change, led on fi OLD=$NEW done
If your Linux distribution already uses systemd, you can use the following file to implement the above script as a daemon (assuming you placed the script in /usr/lib/systemd/scripts/pcfreakled):
[Unit] Description=PCFreaks Dell XPS13 DriveLED [Service] Type=simple ExecStart=/usr/lib/systemd/scripts/pcfreakled [Install] WantedBy=multi-user.target