From 5a99e55309b0b9ec3a7509805d0152f25389b2e7 Mon Sep 17 00:00:00 2001 From: Daniel Pavel Date: Mon, 3 Dec 2012 15:07:35 +0200 Subject: [PATCH] readme updates --- README | 95 ++++++++++++++--------- app/ui/main_window.py | 2 +- lib/logitech/unifying_receiver/hidpp10.py | 5 ++ 3 files changed, 65 insertions(+), 37 deletions(-) diff --git a/README b/README index 38893b34..5f2e7dda 100644 --- a/README +++ b/README @@ -1,60 +1,83 @@ -Solaar ------- +**Solaar** is a Linux device manager for Logitech's +[Unifying Receiver](http://www.logitech.com/en-us/66/6079) peripherals. - -This application connects to a Logitech Unifying Receiver -(http://www.logitech.com/en-us/66/6079) and listens for events from devices -attached to it. - -Currently the K750 solar keyboard is also queried for its solar charge status. -Support for other devices could be added in the future, but the K750 keyboard is -the only device I have and can test on. +It comes in two flavours, command-line and GUI. Both are able to list the +devices paired to a Unifying Receiver, show detailed info for each device, and +also pair/unpair supported devices with the receiver. Requirements ------------ -- Python (2.7 or 3.2). Either version should work well. -- Gtk 3; Gtk 2 should partially work with some problems. -- Python GI (GObject Introspection), for Gtk bindings. -- pyudev for enumerating udev devices. -- Optional libnotify GI bindings, for desktop notifications. +You should have a reasonably new kernel (3.2+), with the `logitech-djreceiver` +driver enabled and loaded; also, the `udev` package must be installed and the +daemon running. If you have a modern Linux distribution (2011+), you're most +likely good to go. -The necessary packages for Debian/Ubuntu are `python-pyudev`/`python3-pyudev`, -`python-gi`/`python3-gi`, `gir1.2-gtk-3.0`, and optionally `gir1.2-notify-0.7`. +The command-line application (`bin/solaar-cli`) requires Python 2.7.3 or 3.2+ +(either version should work), and the `python-pyudev`/`python3-pyudev` package. + +The GUI application (`bin/solaar`) also requires Gtk3, and its GObject +Introspection bindings. The Debian/Ubuntu package names are +`python-gi`/`python3-gi` and `gir1.2-gtk-3.0`; if you're using another +distribution the required packages are most likely named something similar. +If the desktop notifications bindings are also installed (`gir1.2-notify-0.7`), +you will also get desktop notifications when devices come online/go offline. Installation ------------ Normally USB devices are not accessible for r/w by regular users, so you will -need to install a udev rule to allow access to the Logitech Unifying Receiver. +need to do a one-time udev rule installation to allow access to the Logitech +Unifying Receiver. -In rules.d/ you'll find a udev rule file, to be copied in /etc/udev/rules.d/ (as -root). +In the `rules.d/` folder of Solaar you'll find a udev rule file, to be copied in +`/etc/udev/rules.d/` (as the root user). -In its current form it makes the UR device available for r/w by all users -belonging to the 'plugdev' system group (standard Debian/Ubuntu group for -pluggable devices). It may need changes, specific to your particular system's -configuration. +In its current form it makes the Unifying Receiver device available for r/w by +all users belonging to the `plugdev` system group (standard Debian/Ubuntu group +for pluggable devices). It may need changes, specific to your particular +system's configuration. -If in doubt, replacing GROUP="plugdev" with GROUP="" should just +If in doubt, replacing `GROUP="plugdev"` with `GROUP=""` should just work. -After you copy the file to /etc/udev/rules.d (and possibly modify it for your -system), run 'udevadm control --reload-rules' as root for it to apply. Then -physically remove the Unifying Receiver, wait 30 seconds and re-insert it. +After you copy the file to `/etc/udev/rules.d` (and possibly modify it for your +system), run `udevadm control --reload-rules` as root for it to apply. Then +physically remove the Unifying Receiver, wait 10 seconds and re-insert it. + + +Supported Devices +----------------- + +**Solaar** will detect all devices paired with your Unifying Receiver, and at +the very least display some basic information about them. Depending on the +device, it may be able to read its battery status. Changing various settings +of the devices (like mouse DPI) is currently not supported, but implementation +is planned. + +The [K750 Solar Keyboard](http://www.logitech.com/keyboards/keyboard/devices/7454) +is also queried for its solar charge status. Pressing the Solar key on the +keyboard will pop-up the application window and display the current lighting +value, similar to Logitech's Solar app for Windows. + +Extended support for other devices will be added in the future, depending on the +documentation available, but the K750 keyboard is the only device I have and can +test on right now. Thanks ------ -This project began as a third-hand clone of Noah K. Tilton's logitech-solar-k750 -project on GitHub (no longer available). It was developed further thanks to the -diggings in Logitech's HID protocol done, among others, by Julien Danjou -(http://julien.danjou.info/blog/2012/logitech-k750-linux-support) and -Lars-Dominik Braun (http://6xq.net/git/lars/lshidpp.git). +This project began as a third-hand clone of [Noah K. Tilton](https://github.com/noah)'s +logitech-solar-k750 project on GitHub (no longer available). It was developed +further thanks to the diggings in Logitech's HID++ protocol done by many other +people: - -Cheers, --pwr +- [Julien Danjou](http://julien.danjou.info/blog/2012/logitech-k750-linux-support), +who also provided some internal +[Logitech documentation](http://julien.danjou.info/blog/2012/logitech-unifying-upower) +- [Lars-Dominik Braun](http://6xq.net/git/lars/lshidpp.git) +- [Alexander Hofbauer](http://derhofbauer.at/blog/blog/2012/08/28/logitech-performance-mx) +- [Clach04](http://bitbucket.org/clach04/logitech-unifying-receiver-tools) diff --git a/app/ui/main_window.py b/app/ui/main_window.py index 6dd19f50..c352337e 100644 --- a/app/ui/main_window.py +++ b/app/ui/main_window.py @@ -348,7 +348,7 @@ def _update_device_box(frame, dev): def update(window, receiver, device=None): assert receiver is not None - # print ("update", receiver, receiver.status, device, None if device is None else device.number) + # print ("update %s %s, %s" % (receiver, receiver.status, device)) window.set_icon_name(ui.appicon(receiver.status)) vbox = window._vbox diff --git a/lib/logitech/unifying_receiver/hidpp10.py b/lib/logitech/unifying_receiver/hidpp10.py index a7496135..8fb77564 100644 --- a/lib/logitech/unifying_receiver/hidpp10.py +++ b/lib/logitech/unifying_receiver/hidpp10.py @@ -57,6 +57,11 @@ PAIRING_ERRORS = _NamedInts( too_many_devices=0x03, sequence_timeout=0x06) +REGISTERS = _NamedInts( + battery=0x0D, + dpi=0x63, + leds=0x51) + # # functions #