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:

Der Logitech® Unifying-Empfänger 🇩🇪 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. Eine grafische Oberfläche für Linux stellt das Projekt Solaar 🇬🇧 bereit.

Verbinden

Grafisches Tool

Mit dem grafischen Tool Solaar kann man bequem die Unifying Geräte miteinander verbinden und auch diverse Infos über die Geräte erhalten.

Seit Ubuntu 15.04 ist Solaar in den Paketquellen enthalten. Für GNOME 3 und Unity kann das Paket solaar-gnome3 installiert werden,

  • solaar-gnome3 (universe)

Paketliste zum Kopieren:

sudo apt-get install solaar-gnome3 

Oder mit apturl die Pakete installieren. Link: apt://solaar-gnome3

ansonsten das Paket solaar:

  • solaar (universe)

Paketliste zum Kopieren:

sudo apt-get install solaar 

Oder mit apturl die Pakete installieren. Link: apt://solaar

Kommandozeilen Tool

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
84
85
86
87
88
/*
 * 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
#define USB_DEVICE_ID_UNIFYING_RECEIVER_3        (__s16)0xc534

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");
                return 1;
        } 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 &&
                     info.product != USB_DEVICE_ID_UNIFYING_RECEIVER_3)) {
                        errno = EPERM;
                        perror("The given device is not a known "
                                "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");
                return 1;
        } 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");
                return 1;
        }
        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 (beginnend mit 0) 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 3. Juli 2019 00:03 von Beforge erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Logitech, Hardware