ubuntuusers.de

Logitech Unifying Empfänger

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Inhaltsverzeichnis
  1. Verbinden
  2. Infobox
  3. Links

Der Logitech® Unifying-Empfänger {de} kann mehrere Logitech Funkgeräte mit dem PC verbinden. Dieser Artikel beschäftigt sich mit der Kopplung der Geräte unter Ubuntu. Alternativ ist es mit der Logitech SetPoint-Software unter Windows ohne weiteres möglich, die Geräte erstmalig zu verbinden (zu pairen) und danach den bereits gekoppelten Receiver unter Ubuntu oder an einem anderen PC weiterzunutzen.

Verbinden

Folgenden C-Code als pairing_tool.c abspeichern:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/*
 * Copyright 2011 Benjamin Tissoires <benjamin....@gmail.com>
 *
 * 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: %d\n", 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;
} 

Ein Terminal [1] öffnen und in das Verzeichnis wechseln, in welchem die Datei gesichert wurde. Nun mit

gcc -o pairing_tool pairing_tool.c 

kompilieren [3].

Nun muss man nur noch den Empfänger finden. Dazu öffnet man mit einem Texteditor [4] die Datei /sys/class/hidraw/hidraw*/device/uevent ,wobei der Stern * durch die jeweilige Zahl ersetzt wird, bis der in uevent eingetragene HID_NAME Logitech USB Receiver lautet.

Diese kann z.B. so aussehen:

DRIVER=logitech-djreceiver
HID_ID=0003:0000046D:0000C52B
HID_NAME=Logitech USB Receiver
HID_PHYS=usb-0000:00:04.0-4/input2
HID_UNIQ=
MODALIAS=hid:b0003v0000046Dp0000C52B

Wenn der Empfänger gefunden wurde, sind die zu koppelnden Geräte auszuschalten. Anschließend wieder zum Terminal [1] wechseln und mit Root-Rechten[2]

sudo ./pairing_tool /dev/hidraw* 

ausführen. Der Stern * ist auch hier durch die eben ermittelte Zahl zu ersetzen. Das Programm fordert nun auf, die zu verbindenden Geräte einzuschalten.

Infobox

Logitech® Unifying-Empfänger
Herausgeber: Logitech
USB ID: 046d:c52b Logitech, Inc. Unifying Receiver
Läuft mit: nativ

Diese Revision wurde am 6. September 2012 18:51 von XxLiraxX erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Hardware, Logitech