J'essaie de configurer ma télécommande Harmony Smart Control en tant que télécommande Bluetooth PS3 (cette télécommande est supposée l'être) sous Ubuntu 13.10 (le dernier noyau et les mises à jour installées). Mon dongle Bluetooth ne fonctionnait pas, alors je devais faire ce qui suit:
modprobe btusb
echo "050d 065a" >> /sys/bus/usb/drivers/btusb/new_id
Après cela, je peux coupler l'amende distante à l'aide de Bluetooth Manager à partir de l'interface graphique. Cela ressemble à une télécommande PS3 normale, selon bt-device:
root@server:/dev/input# bt-device -i "BD Remote Contol"
[00:04:20:E8:B4:B4]
Name: BD Remote Contol
Alias: BD Remote Contol [rw]
Address: 00:04:20:E8:B4:B4
Icon: undefined
Class: 0x250c
Paired: 1
Trusted: 1 [rw]
Blocked: 0 [rw]
Connected: 1
UUIDs: [HumanInterfaceDevice, PnPInformation, 00001800-0000-1000-8000-00805f9b34fb]
Je peux voir des paquets venant de bluetooth pour chaque pression sur une touche comme celle-ci:
root@server:/dev/input# hcidump -x -i hci0
HCI sniffer - Bluetooth packet analyzer ver 2.5
device: hci0 snap_len: 1500 filter: 0xffffffffffffffff
> ACL data: handle 11 flags 0x02 dlen 17
L2CAP(d): cid 0x0041 len 13 [psm 0]
A1 01 00 00 00 00 FF FF FF FF FF 01 05
> ACL data: handle 11 flags 0x02 dlen 17
L2CAP(d): cid 0x0041 len 13 [psm 0]
A1 01 00 00 00 FF FF FF FF FF FF 00 05
Le couplage est donc correct et les appuis sont reçus. Le périphérique est reconnu en tant que périphérique d'entrée par syslog:
Bluetooth: HIDP (Human Interface Emulation) ver 1.2
Bluetooth: HIDP socket layer initialized
input: Bluetooth HID Boot Protocol Device as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/bluetooth/hci0/hci0:11/input14
Mais lorsque je fais un test sur l'appareil, je ne reçois que ceci:
root@server:/dev/input# evtest /dev/input/event6
Input driver version is 1.0.1
Input device ID: bus 0x5 vendor 0x46d product 0xc129 version 0x0
Input device name: "Bluetooth HID Boot Protocol Device"
Supported events:
Event type 0 (EV_SYN)
Properties:
Testing ... (interrupt to exit)
Il me semble qu'il n'y a qu'un seul type d'événement pour cette télécommande et qu'aucune pression sur une touche ne la déclenche. Sortie supplémentaire de lsusb pour mon dongle en dessous de [1]. Mes questions:
[1] Sortie lsusb pour clé Bluetooth: http://Pastebin.com/xHM5YZXB
Vous avez peut-être déjà corrigé cela, mais juste au cas où, voici le correctif de noyau que j'ai utilisé pour le faire fonctionner sous Arch Linux avec le noyau 3.12.6:
diff -u linux-3.12.org/drivers/hid/hid-core.c linux-3.12/drivers/hid/hid-core.c
--- linux-3.12.org/drivers/hid/hid-core.c 2013-11-03 16:41:51.000000000 -0700
+++ linux-3.12/drivers/hid/hid-core.c 2014-01-10 19:53:45.000000000 -0700
@@ -1738,6 +1738,7 @@
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER_2) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_RECEIVER) },
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_PS3) },
+ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_SMART_PS3) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_DINOVO_DESKTOP) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_DINOVO_Edge) },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_DINOVO_MINI) },
@@ -2347,7 +2348,8 @@
return true;
break;
case USB_VENDOR_ID_LOGITECH:
- if (hdev->product >= USB_DEVICE_ID_LOGITECH_HARMONY_FIRST &&
+ if (hdev->product != USB_DEVICE_ID_LOGITECH_HARMONY_SMART_PS3 &&
+ hdev->product >= USB_DEVICE_ID_LOGITECH_HARMONY_FIRST &&
hdev->product <= USB_DEVICE_ID_LOGITECH_HARMONY_LAST)
return true;
/*
diff -u linux-3.12.org/drivers/hid/hid-ids.h linux-3.12/drivers/hid/hid-ids.h
--- linux-3.12.org/drivers/hid/hid-ids.h 2013-11-03 16:41:51.000000000 -0700
+++ linux-3.12/drivers/hid/hid-ids.h 2014-01-10 19:47:39.000000000 -0700
@@ -542,6 +542,7 @@
#define USB_DEVICE_ID_LOGITECH_HARMONY_FIRST 0xc110
#define USB_DEVICE_ID_LOGITECH_HARMONY_LAST 0xc14f
#define USB_DEVICE_ID_LOGITECH_HARMONY_PS3 0x0306
+#define USB_DEVICE_ID_LOGITECH_HARMONY_SMART_PS3 0xc129
#define USB_DEVICE_ID_LOGITECH_RUMBLEPAD_CORD 0xc20a
#define USB_DEVICE_ID_LOGITECH_RUMBLEPAD 0xc211
#define USB_DEVICE_ID_LOGITECH_EXTREME_3D 0xc215
diff -u linux-3.12.org/drivers/hid/hid-sony.c linux-3.12/drivers/hid/hid-sony.c
--- linux-3.12.org/drivers/hid/hid-sony.c 2013-11-03 16:41:51.000000000 -0700
+++ linux-3.12/drivers/hid/hid-sony.c 2014-01-10 19:47:39.000000000 -0700
@@ -709,6 +709,9 @@
/* Logitech Harmony Adapter for PS3 */
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_PS3),
.driver_data = PS3REMOTE },
+ /* Logitech Harmony Smart Control for PS3 */
+ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_HARMONY_SMART_PS3),
+ .driver_data = PS3REMOTE },
{ }
};
MODULE_DEVICE_TABLE(hid, sony_devices);
La cartographie des clés n'est pas géniale - j'examine la prochaine!