Mam wielofunkcyjny kontroler USB eDIO (odbiornik podczerwieni), który został dostarczony z pilotem do surfingu w sieci ASUS PSR 2000.
Próbuję podłączyć Zdalny kontroler do mojego pi, aby odbierał naciśnięcia klawiszy wysyłane przez pilota.
Kontroler jest wykrywany jako urządzenie HID. Oto szczegóły komendy lsusb -v
Bus 001 Device 007: ID 147a:e001 Formosa Industrial Computing, Inc.
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.10
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 8
idVendor 0x147a Formosa Industrial Computing, Inc.
idProduct 0xe001
bcdDevice 1.22
iManufacturer 1
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 34
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 4
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 300mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 1 Boot Interface Subclass
bInterfaceProtocol 2 Mouse
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 20
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 10
Mogę również wyświetlić urządzenie docelowe w folderze deweloperskim z utworzonym zdarzeniem
pi@raspberrypi /dev/input/by-id $ dir
usb-Cypress_Semiconductor_eDio_USB_Multi_Remote_Controlle-event-if00
Powiązana z nim procedura obsługi zdarzeń wygląda następująco:
pi@raspberrypi /proc/bus/input $ cat devices
I: Bus=0003 Vendor=147a Product=e001 Version=0110
N: Name="Cypress Semiconductor eDio USB Multi Remote Controlle"
P: Phys=usb-bcm2708_usb-1.2/input0
S: Sysfs=/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/input/input2
U: Uniq=
H: Handlers=event0
B: PROP=0
B: EV=1
Problem polega na tym, że próbuję odczytać dane wyjściowe z procedury obsługi zdarzeń utworzonej dla urządzenia. Pierwsze naciśnięcie klawisza jest zarejestrowane, ale kolejne naciśnięcia klawiszy nie są wyświetlane przez polecenie CAT.
pi@raspberrypi /dev/input $ cat event0 | xxd
0000000: e007 9450 9476 0900 0000 0000 0000 0000 ...P.v..........
Proszę zasugerować mi, co mogę zrobić, aby urządzenie działało. Naciśnięcie dowolnego klawisza po pierwszym naciśnięciu klawisza nie zwróci niczego, chyba że urządzenie zostanie ponownie podłączone.
Proszę zasugerować, co należy zrobić, aby rozwiązać problem.
|xxd
? Buforuje dane wyjściowe. Użyłem irw
z paczki, lirc
aby uzyskać kody dostępu wysłane przez mojego pilota.