1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Memory
  5. Motherboards
  6. Processors
  7. Software
  8. Storage
  9. Operating Systems


Facebook RSS Twitter Twitter Google Plus


Phoronix Test Suite

OpenBenchmarking.org

Reverse-Engineering USB Keyboards For Linux Support

Hardware

Published on 12 July 2012 06:17 AM EDT
Written by Michael Larabel in Hardware
16 Comments

For those interested in reverse-engineering USB keyboards (or other input devices), there's a short yet effective guide by Julien Danjou for reverse-engineering a Logitech keyboard in order to provide Linux support.

Julien was using a Logitech K750 keyboard, which is USB-based and wireless, but what makes it different is that the keyboard is solar-powered rather than relying upon disposable batteries. While the Logitech keyboard works under Linux, there's no support for monitoring the battery charge level outside of Windows. This led to writing open-source code in order to read the battery status and light meter from Linux. The actual keyboard works under Linux due to the "Unifying" receiver and more recently the added "hid-logitech-dj" Linux kernel driver.

In his Logitech K750 keyboard and Unifying Receiver Linux support blog post, Julien Danjou goes over the process of writing the support. He used VirtualBox virtualization of Windows since this means of Oracle virtualization supports USB pass-through with hot-plugging support. KVM/QEMU also supports USB pass-through, but Oracle's VM VirtualBox implementation works better for USB. With Windows running within a VirtualBox instance, he used the "usbmon" kernel driver paired with Wireshark to understand the Logitech USB HID protocol by reverse-engineering with snooping the USB packets.

With Windows virtualized and talking to the Logitech keyboard using its respective driver while sniffing out the USB packets from Linux, Julien was able to understand what was happening for the light meter and battery status. From there, he wrote a small libusb-powered application to obtain this information cleanly under Linux. In the end it worked, but there's still room for improvement. See Julien's blog post for details in full.

About The Author
Michael Larabel is the principal author of Phoronix.com and founded the web-site in 2004 with a focus on enriching the Linux hardware experience and being the largest web-site devoted to Linux hardware reviews, particularly for products relevant to Linux gamers and enthusiasts but also commonly reviewing servers/workstations and embedded Linux devices. Michael has written more than 10,000 articles covering the state of Linux hardware support, Linux performance, graphics hardware drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated testing software. He can be followed via and or contacted via .
Latest Articles & Reviews
  1. NVIDIA's Latest Maxwell Line-Up Against AMD With Catalyst On Linux
  2. Preliminary Tests Of Intel Sandy Bridge & Ivy Bridge vs. Broadwell
  3. AMD FX-8320E Performance On Linux
  4. Linux Compiler Benchmarks Of LLVM Clang 3.5 vs. LLVM Clang 3.6-rc1
  5. Intel Broadwell HD Graphics 5500: Windows 8.1 vs. Linux
  6. Linux Benchmarks Of NVIDIA's Early 2015 GeForce Line-Up
Latest Linux News
  1. NVIDIA Tegra DRM Driver Supports Atomic Mode-Setting In Linux 3.20
  2. Linux "GHOST" Vulnerability Hits Glibc Systems
  3. Linux Game Publishing Remains Offline, Three Years After The CEO Shakeup
  4. PlayStation 4 System Compiler Support Landing In LLVM
  5. Now-Closed KDE Vulnerabilities Remind Us X11 Screen Locks / Screensavers Are Insecure
  6. Vivaldi: A New Chromium-Powered, Multi-Platform Browser
  7. KDE Plasma 5.2 Officially Released
  8. Intel Broadwell On Linux Has Working OpenCL 1.2, VP8 Video Acceleration
  9. GParted 0.21 Brings ReFS Detection, EXT4 For RHEL5, Reiser4 For Linux 3.x
  10. Wine Staging Update Has Better CUDA Support, Driver Testing Framework
Most Viewed News This Week
  1. Windows 10 To Be A Free Upgrade: What Linux Users Need To Know
  2. LibreOffice 4.4 Is Coming Soon With New Features
  3. TraceFS: The Newest Linux File-System
  4. My Initial Intel Broadwell Linux Experience With The ThinkPad X1 Carbon
  5. Interstellar Marines On Linux With Catalyst: Bull S*#@
  6. Broadwell Linux Ultrabook Running MUCH Cooler Than Haswell
  7. Linux Users Upset By Chromium's Busted HiDPI Support
  8. LZHAM 1.0 Lossless Data Compression Codec Released