readme updates

This commit is contained in:
Daniel Pavel 2012-12-03 15:07:35 +02:00
parent 1b6e6692c0
commit 5a99e55309
3 changed files with 65 additions and 37 deletions

95
README
View File

@ -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="<your username>" should just
If in doubt, replacing `GROUP="plugdev"` with `GROUP="<your username>"` 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)

View File

@ -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

View File

@ -57,6 +57,11 @@ PAIRING_ERRORS = _NamedInts(
too_many_devices=0x03,
sequence_timeout=0x06)
REGISTERS = _NamedInts(
battery=0x0D,
dpi=0x63,
leds=0x51)
#
# functions
#