About Me

My photo
I know the last digit of PI

Sunday, October 30, 2016

Keyboard back light under linux.

For some reason my fedora is turning the keyboard back light off. Even if I press the keyboard shorcut to turn the light on, it doesn't work. For a long time I thought that the reason is hardware problem, until I found this post and it turns out to be software issue. Here is the script that I used on my machine to restore the keyboard light. Execute following command line several times until it outputs "100" (percents)
kb-light.py +
or
kb-light.py --up
The python script:
#!/usr/bin/env python3
# coding: utf-8

from sys import argv
import dbus


def kb_light_set(delta):
    bus = dbus.SystemBus()
    kbd_backlight_proxy = bus.get_object('org.freedesktop.UPower', '/org/freedesktop/UPower/KbdBacklight')
    kbd_backlight = dbus.Interface(kbd_backlight_proxy, 'org.freedesktop.UPower.KbdBacklight')

    current = kbd_backlight.GetBrightness()
    maximum = kbd_backlight.GetMaxBrightness()
    new = max(0, current + delta)

    if new >= 0 and new <= maximum:
        current = new
        kbd_backlight.SetBrightness(current)

    # Return current backlight level percentage
    return 100 * current / maximum

if __name__ == '__main__':
    if len(argv[1:]) == 1:
        if argv[1] == "--up" or argv[1] == "+":
            # ./kb-light.py (+|--up) to increment
            print(kb_light_set(1))
        elif argv[1] == "--down" or argv[1] == "-":
            # ./kb-light.py (-|--down) to decrement
            print(kb_light_set(-1))
        else:
            print("Unknown argument:", argv[1])
    else:
        print("Script takes exactly one argument.", len(argv[1:]), "arguments provided.")

Sunday, October 02, 2016

How to monitor progress of linux command dd.

If you start a dd command from the command prompt, there is no progress output. The easiest way to get the current dd progress is by executing following commmand from different terminal
sudo kill -USR1 $(pgrep ^dd)
The progress will be printed in the dd terminal. To print the progress every 5 seconds use
watch -n5 'sudo kill -USR1 $(pgrep ^dd)'
For dd version 8.24 and above the following command line will print the progress
dd status=progress  if=xxx of=yyy