Sou relativamente novo no OpenWRT e Linux em geral, então, por favor, descubra comigo.
Eu estou tentando imprimir o botão pressionado de um gamepad para o console em um Arduino Yun que tem OpenWRT. Eu usei opkg
para instalar alguns pacotes como:
kmod-input-core - 3.8.3-1
kmod-input-joydev - 3.8.3-1
E se eu usar lsusb
, posso ver o controlador:
root@Arduino:~# lsusb -D /dev/bus/usb/001/004
Device: ID 054c:05c4 Sony Corp.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x054c Sony Corp.
idProduct 0x05c4
bcdDevice 1.00
iManufacturer 1 Sony Computer Entertainment
iProduct 2 Wireless Controller
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 41
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 483
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 5
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 5
Device Status: 0x0000
(Bus Powered)
Eu fiz uma pesquisa rápida e a maioria dos resultados relacionados ao acesso a um gamepad do Linux menciona o acesso por /dev/input/js0
, por exemplo, onde eu tenho apenas /dev/input/event0
, que sempre está lá e consigo ver o sony gamepad em /dev/usb/001/004
então não tenho certeza se foi inicializado corretamente ou não para começar. Quaisquer sugestões / sugestões serão úteis.
O outro problema seria acessar as teclas sendo pressionadas e imprimir no console. O espaço em disco é limitado no Yun e não configurei um cartão SD ainda, portanto, ainda não há gcc / g ++. As opções mais rápidas, por enquanto, estão usando scripts Python ou shell.
Eu comecei com um pequeno script de este post :
#!/usr/bin/env python
import sys
pipe = open('/dev/bus/usb/001/004','r')
#pipe = open('/dev/input/event0','r')
byte = []
while 1:
for bit in pipe.read(1):
byte.append('%5X' % ord(bit))
if len(byte) == 8:
print byte
byte = []
Qual o resultado disso:
[' 12', ' 1', ' 2', ' 0', ' 0', ' 0', ' 0', ' 40']
[' 5', ' 4C', ' 5', ' C4', ' 1', ' 0', ' 1', ' 2']
[' 0', ' 1', ' 9', ' 2', ' 29', ' 0', ' 1', ' 1']
[' 0', ' C0', ' FA', ' 9', ' 4', ' 0', ' 0', ' 2']
[' 3', ' 0', ' 0', ' 0', ' 9', ' 21', ' 11', ' 1']
[' 0', ' 1', ' 22', ' E3', ' 1', ' 7', ' 5', ' 84']
[' 3', ' 40', ' 0', ' 5', ' 7', ' 5', ' 3', ' 3']
e isso nunca muda.
Eu também vi muitos exemplos usando o pygame, mas ainda não consegui instalar o pygame (usando opkg install python-pygame
) e até eu configurar um SD eu não terei espaço para o gcc / g ++ compilar de fonte.
Em resumo: como posso verificar se o gamepad está instalado corretamente? Se não for, qual seria a maneira correta de instalar um gamepad USB no openwrt? Qual é a maneira mais fácil / simples de imprimir as impressoras gampad para consolar?