Gdy dni stają się krótsze, gdy słońca jest coraz mniej - używając linux'a zaczynasz się zastanawiać jak długo jeszcze będziesz mógł korzystać ze swej nowej klawiatury Logitech K750 Solar :). By rozwiązać ten problem, stworzyłem aplikację umożliwiającą odczyt danych z sensorów np. klawiatury k750, wszystko jest dostępne w projekcie na bitbucket.
Moje poszukiwania rozpocząłem od artykułu Julien Danjou, gdzie oprócz przejrzystego rozpracowywania protokołu Logitech'a został dodany później link do specyfikacji zdobytej przez Lars-Dominik Braun.
Jako że dość szybko odkryłem te informacje, uznałem że może ktoś już napisał jakąś aplikację wyciągającą stan baterii czy naświetlenia. Trafiłem na projekt na github'ie: https://github.com/aheadley/logitech-solar-k750-linux/blob/master/logitech_k750.py.
Niestety posiadał pewne wady:
- nie do końca działał na moim sprzęcie
- podczas odczytu wartości blokował cały interfejs usb - czyli klawiatura po prostu nie działała
Podczas poszukiwań mój cel stał się bardziej klarowny - postanowiłem napisać jakiś serwis pozwalający na bezproblemowy odczyt chociażby informacji o naładowaniu baterii.
Następnym problemem z którym musiałam się zmierzyć był fakt że wiele bezprzewodowych urządzeń logitech'a mogło korzystać z 1 odbiornika, powodowało to brak takowego podziału w urządzeniach /dev/hidraw, miałem nadzieję że patch proponowany na https://lkml.org/lkml/2012/1/17/118 mógłby to naprawić ale niestety to nie było to. Napisałem więc własny parser pakietów HID++ (których oczywiście nie mogłem znaleźć w specyfikacji :D ). Posiadam tylko jedno bezprzewodowe urządzenie logitech'a więc nie mogłem sprawdzić czy kod zachowa się poprawnie dla większej ilości.
Gdy już posiadałem kod potrafiący wyciągać i prosić o informacje o naładowaniu dodałem do tego serwis DBus, prostego klienta konsolowego oraz rozszerzenie do Gnome-Shell. Użytkownicy sytemu Gentoo mogą pobrać ebuild'a z https://bitbucket.org/glorpen/pysolar/src/tip/gentoo/app-misc/pysolar?at=default
Cała opisywania powyżej aplikacja jest dostępna jako projekt na bitbucket