Setting Logitech Unifying di Ubuntu 12.04

No Comments

Hmm baru saja saya beli mouse dan keyboard dari Logitech, bukannya iklan atau ngecap tapi hanya keyboard dan mouse dari Logitech yang bisa tahan lama di tangan saya hehehe.

Keyboard yang saya beli adalah Logitech Wireless Solar Keyboard K750, sedangkan mousenya saya beli adalah Logitech Anywhere Mouse MX™. Sebelumnya saya beli Logitech Performance Mouse MX tetapi ternyata terlalu besar buat tangan saya yang kecil, untungnya beli barang disini (Norwegia) kalau ga cocok bisa dikembalikan, keren kan? 😀

Nah ternyata di peripheral Logitech yang saya beli dilengkapi dengan receiver yang bisa menghubungkan sampai dengan 6 (enam) buah peripheral Logitech, fitur ini disebut dengan Logitech Unifying.

Beruntung bagi pengguna OS Windows dan Mac OSX yang disupport penuh dengan adanya software pendukung untuk setting fitur tersebut dengan mudah.
Pastikan peripheral yang dibeli ada gambar dengan lambang unifying seperti gambar disamping.

Bagaimana dengan Linux? tentu saja bukan Open Source kalau tidak ada orang yang dapat membuat fitur ini berjalan di Linux (y).  Lets setting Logitech Unifying di Ubuntu 12.04.

Berikut adalah source codenya dalam bentuk C:

<code>/*
* Copyright 2011 Benjamin Tissoires <benjamin…[email protected]>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#include <linux/input.h>
#include <linux/hidraw.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>

#define USB_VENDOR_ID_LOGITECH (__u32)0x046d
#define USB_DEVICE_ID_UNIFYING_RECEIVER (__s16)0xc52b
#define USB_DEVICE_ID_UNIFYING_RECEIVER_2 (__s16)0xc532

int main(int argc, char **argv)
{
int fd;
int res;
struct hidraw_devinfo info;
char magic_sequence[] = {0x10, 0xFF, 0x80, 0xB2, 0x01, 0x00, 0x00};

if (argc == 1) {
errno = EINVAL;
perror(“No hidraw device given”);
return 1;
}

/* Open the Device with non-blocking reads. */
fd = open(argv[1], O_RDWR|O_NONBLOCK);

if (fd < 0) {
perror(“Unable to open device”);
return 1;
}

/* Get Raw Info */
res = ioctl(fd, HIDIOCGRAWINFO, &info);
if (res < 0) {
perror(“error while getting info from device”);
} else {
if (info.bustype != BUS_USB ||
info.vendor != USB_VENDOR_ID_LOGITECH ||
(info.product != USB_DEVICE_ID_UNIFYING_RECEIVER &&
info.product != USB_DEVICE_ID_UNIFYING_RECEIVER_2)) {
errno = EPERM;
perror(“The given device is not a Logitech ”
“Unifying Receiver”);
return 1;
}
}

/* Send the magic sequence to the Device */
res = write(fd, magic_sequence, sizeof(magic_sequence));
if (res < 0) {
printf(“Error: %dn”, errno);
perror(“write”);
} else if (res == sizeof(magic_sequence)) {
printf(“The receiver is ready to pair a new device.n”
“Switch your device on to pair it.n”);
} else {
errno = ENOMEM;
printf(“write: %d were written instead of %ld.n”, res,
sizeof(magic_sequence));
perror(“write”);
}
close(fd);
return 0;
} </code>

Simpan kode diatas dalam filename.c, disini saya menyimpannya dengan nama unify.c

Setelah disimpan kita lakukan compiling dengan gcc:
<code>gcc -o unify unify.c</code>

Kemudian cari posisi peripheralnya (keyboard/mouse) di:
<code>cat /sys/class/hidraw/hidrawX/device/uevent</code>

dimana X adalah angka 0-9.

Perhatikan line yang ada tulisan “Logitech USB Receiver”:
<code>[email protected]:~/Downloads# cat /sys/class/hidraw/hidraw2/device/uevent
DRIVER=logitech-djreceiver
HID_ID=0003:0000046D:0000C52B
HID_NAME=Logitech USB Receiver
HID_PHYS=usb-0000:09:00.0-2.4/input2
HID_UNIQ=
MODALIAS=hid:b0003v0000046Dp0000C52B</code>

“Pastikan mousenya dimatikan dulu” sebelum dikoneksikan dengan Unifying Receivernya. Kenapa mouse yang disambungkan dengan keyboard bukan sebaliknya? lha terus mau ngetik di konsole gmn caranya? 😛

Cara mengkoneksikan hidraw2 dengan Unifying tinggal gunakan file unify yang telah dikompile sebelumnya:
<code>sudo ./unify /dev/hidraw2</code>

Seharusnya muncul:
The receiver is ready to pair a new device.
Switch your device on to pair it.

Jangan lupa matikan trus nyalakan mousenya…

Jika muncul error:
write: 0 were written instead of 7.
write: Cannot allocate memory
Berarti salah peripheral atau salah hidrawX.

Voila!! sekarang cukup dengan 1 (satu) buah receiver kita bisa menggunakan keyboard dan mouse kita 😀

Semoga bermanfaat dan semoga berhasil melakukan setting Logitech Unifying di Ubuntu 12.04.
iKONs

Sumber:
https://groups.google.com/forum/?fromgroups=#!msg/linux.kernel/zYS6yddI8yU/9cMvg3k9xTYJ
http://tycho.ws/blog/2011/12/logitech-unifying-receiver

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subscribe  
Notify of