Using the Griffin PowerMate with Linux

The Griffin PowerMate  is a USB device that produces rotation and click signals.  These can be mapped to a variety of uses, most commonly volume control.  Most major distributions now have kernel support for it, in the form of the powermate module. If your distribution does not, you may want to look at my older instructions.

Here is what you need to get the PowerMate working with Linux:

Initial setup
Plug in your PowerMate.  After a few seconds it should light up and you should see something similar to this in your syslog:

Jun 11 15:54:09 bpenguin kernel: hub.c: USB new device connect on bus1/2, assigned device number 2
Jun 11 15:54:09 bpenguin kernel: Manufacturer: Griffin Technology, Inc.
Jun 11 15:54:09 bpenguin kernel: Product: Griffin PowerMate
Jun 11 15:54:09 bpenguin kernel: usb.c: USB device 2 (vend/prod 0x77d/0x410) is not claimed by any active driver.
Jun 11 15:54:09 bpenguin kernel:   Length              = 18
<....many more lines of USB device detail..>
Jun 11 15:54:09 bpenguin kernel: usb.c: registered new driver powermate
Jun 11 15:54:09 bpenguin kernel: input: Griffin PowerMate on input0
Jun 11 15:54:09 bpenguin kernel: usb.c: registered new driver hid
Jun 11 15:54:09 bpenguin kernel: hid-core.c: v1.8 Andreas Gal, Vojtech Pavlik <vojtech@suse.cz>
Jun 11 15:54:09 bpenguin kernel: hid-core.c: USB HID support drivers
Jun 11 15:54:09 bpenguin kernel: usb.c: deregistering driver powermate
Jun 11 15:54:09 bpenguin kernel: usb.c: registered new driver powermate
Jun 11 15:54:09 bpenguin kernel: input: Griffin PowerMate on input0
A lsmod should show the powermate module loaded.
 

Configure permissions on the event devices.
Different Linux distributions vary in how they handle device permissions, so the below may not apply to you.
My experience is with Fedora, so that is what the below is based on.

The powermate driver will map the device to an event entry in /dev/input/. You need to have read-write permissions to this device to be able to access it. I deal with this by creating an input group, and having a udev rule that gives access to users in that group.

As root do the following:

groupadd input
gpasswd -a your_user_name input
cd /etc/udev/rules.d/

Create a file called 99-input.rules and put in it:


KERNEL=="event*", NAME="input/%k", MODE="660", GROUP="input"<BR>
KERNEL=="js*", NAME="input/%k", MODE="664", GROUP="input"<BR>

Reboot. On restart you should be able to log in, launch gizmod, and have it detect your devices.

Install the Gizmo userspace daemon.
The best userspace support I have found for the Powermate is the Gizmo Daemon. This application lets you map the actions of the Powermate to almost anything input-related. Follow the instructions on that page to install Gizmo and its dependencies.

Gizmo uses Python for configuration. The included example file can be a bit confusing, so I have attached a simplified version that controls the PCM volume with the knob, and uses hardware pulsing to make it flash when muted: gizmoDaemonConfig.py. Place it in your .gizmo/scripts/ directory and start the Gizmo daemon. Turning the Powermate knob should cause an on-screen volume display to appear. Pushing down on the Powermate will toggle muting.

Other sites with information about the PowerMate and Linux
Leigh Klotz's tools
Roger Pingleton case mod + PowerMate
Mixxx - a DJ tool that supports the PowerMate
Oliver M. Bolzer's Ruby Powermate code

Happy twiddling!
 
Special thanks to Roger Pingleton and Martin Dengler for suggestions for this page, to Tue Haste Andersen for the info on Mixxx, Oliver Bolzer for the first userspace tools, and to Tim Burrell for writing Gizmo and making the Powermate fully supported under Linux!