ralphm's blog

Thursday, 10 October 2013

Logitech Ultrathin Touch Mouse

But does it work with Linux?

Logitech is my brand of choice for input devices. Unfortunately, though, Logitech seems to focus on their unifying receiver for most of their stuff, to the detriment of their Bluetooth offering. Every now and then, they do come out with a nice Bluetooth device, usually targetting ultrabooks or tablets. Last month I stumbled upon the new Logitech Ultrathin Touch Mouse (t630). As usual, it is marketed for Windows compatibility, with Linux officially not supported. They do have a second model targetted to Mac users with the t631, but I suspect the only difference is its color.

Fortunately, this device mostly works fine on my Ubuntu 13.04 laptops. Plural, because this tiny mouse can be set up to pair with two devices, switchable with a switch on the bottom. The only problem is that, out-of-the-box, gnome-bluetooth cannot reconnect with the device when it has been powered down or switched back from the other channel. It turns out that Logitech might not be following standards, and requires repairing every time. In my search for similar cases, I found a bug report for another device that has had similar issues, and the solution presented there also works for the Ultrathin Touch Mouse.

The trick is to tell gnome-bluetooth to always send the pincode (0000, as usual) upon connecting. For this, it needs an entry in /usr/share/gnome-bluetooth/pin-code-database.xml like this:

<!-- Logitech Ultrathin Touch Mouse -->
<device oui="00:1F:20:" name="Ultrathin Touch Mouse" pin="0000"/>

I filed a bug report to have this included by default. After adding the entry, add the mouse as a new input device and it should work as expected.

On to the mouse' features. Besides detecting motion with its bottom laser, the surface is a touch pad that can be depressed as a whole. Pressing in the top left and top right corner will trigger the left and right mouse button events (button 1 and 3). To do a middle-click, you have to press in the center of the touch pad, not at the top middle, as you'd expect. Vertical and horizontal scrolling can be done with swipe gestures, respectively up/down and left/right. This will trigger buttons 4 through 7.

On top of that, there are some additional gestures, which Logitech has pictured in a handy overview. First, there is a two-finger left or right swipe for doing previous and next actions. In X11 this will trigger buttons 8 and 9, and Firefox, for example, will respond to move back and forth in a tab's history. The other three gestures generate keyboard events, instead of the usual mouse events. A double-finger double-tap yields a press and release of the Super_L key. In Unity this brings up the dash home by default. Finally there are swipes from the left edge and from the right edge. The former triggers Ctrl_L Super_L Tab, which switches between the two last used tabs in Firefox, the latter Alt_L Super_L XF86TouchpadOff, which doesn't have a default action bound to it, as far as I can tell. Logitech also mentions the single-finger double tap, but that doesn't seem to register any event in the input handler.

The mouse can be charged with via its micro-USB connector, also on the bottom, with a convenient short USB cable in the box. The micro-USB connector on that cable is also angled so the mouse doesn't have to be upright when charging. The battery state is reported to the kernel, but there is another bug in upower that will make batteries in bluetooth input devices show up as laptop batteries.

Having used the mouse for a few days now, I like it a lot. It is really tiny, but not in a bad way (for me). The two-finger swipe gestures are a bit tricky to get right, but I don't really use them anyway. I also tried hooking it up to my Nexus 7, and that works nicely. All-in-all a great little device, especially while travelling.

Using ElasticSearch and Logstash to Serve Billions of Searchable Events for Customers

Another real-time technology

Kicking off the revival of this publication, I recently did a guest post on our use of Elasticsearch at Mailgun. Since I have joined the Mailgun team at Rackspace in May, my primary project was to reimplement the Mailgun customer logs so that we can serve billions of searchable events. Head over to the HackerNews page for some additional details.