ubuntuusers.de

Logitech Unifying Empfänger

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


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

./logo.png 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.

Solaar.png
Solaar

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)

Befehl zum Installieren der Pakete:

sudo apt-get install solaar-gnome3 

Oder mit apturl installieren, Link: apt://solaar-gnome3

ansonsten das Paket solaar:

  • solaar (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install solaar 

Oder mit apturl installieren, Link: apt://solaar

Bedienung

Im obigen Beispiel sind bereits die Tastatur K400 und der Trackball M570, der Firma Logitech, mit dem Dongle verbunden. Um ein neues Gerät mit dem vorhandenen Empfänger zu koppeln klickt man auf die Schaltfläche "Neues Gerät koppeln". Über "Kopplung trennen" kann diese wieder aufgehoben werden. Im Programm werden unter anderem Informationen zum Ladezustand, der Verschlüsselung, Akkulaufzeit und Seriennummer angezeigt.

Hinweis:

Sofern der Logitech-Dongle bereits im Vorfeld am Computer angesteckt wurde wird dieser noch nicht erkannt. Aus- und anschließendes Wiedereinstöpseln löst das Problem umgehend.

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 5. September 2022 11:38 von march erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Hardware, Logitech