MINI2440 + USB BARCODE READER não mapeia /dev/event0 /dev/event1

Autor: Rodrigo_P_A • Categoria: Linux • Postado em 25 Mai 2014 22:06 • Visualizado: 2227x

Me deparei com um problema, tenho uma placa linux que eu fiz, que o leitor de código de barras funciona.

já em uma mini2440 com kernel 2.32 não funcionava, ele só mapeava o dispositivo em /dev/event0 enquanto que o certo é mapear em /dev/event1 ... não vou entrar em maiores detalhes, em resumo, o leitor lia um código e travava, e eu não consegui ler o código em minha aplicação pois por padrão você tem que abrir o /dev/event1

Depois de quebrar um pouco a cabeça, peguei o VID e o PID e busquei no arquivo fonte do kernel na pasta: /drivers/hid/hid-ids.h

VID/PID do meu BARCODEREADER: 1130 0001

encontrei o VID no arquivo hid-ids.h na linha 390 assim:

cpp code

#define USB_VENDOR_ID_TENX		0x1130
#define USB_DEVICE_ID_TENX_IBUDDY1 0x0001
#define USB_DEVICE_ID_TENX_IBUDDY2 0x0002


Depois abri o arquivo: /drivers/hid/hid-core.c
e encontrei isso:

cpp code
/* a list of devices that shouldn't be handled by HID core at all */
static const struct hid_device_id hid_ignore_list[] = {
...............
{ HID_USB_DEVICE(USB_VENDOR_ID_PHILIPS, USB_DEVICE_ID_PHILIPS_IEEE802154_DONGLE) },
{ HID_USB_DEVICE(USB_VENDOR_ID_POWERCOM, USB_DEVICE_ID_POWERCOM_UPS) },
{ HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY1) },
{ HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY2) },
{ HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LABPRO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_GOTEMP) },
...............


Comentei as linhas abaixo:
cpp code
/* a list of devices that shouldn't be handled by HID core at all */
static const struct hid_device_id hid_ignore_list[] = {
...............
{ HID_USB_DEVICE(USB_VENDOR_ID_PHILIPS, USB_DEVICE_ID_PHILIPS_IEEE802154_DONGLE) },
{ HID_USB_DEVICE(USB_VENDOR_ID_POWERCOM, USB_DEVICE_ID_POWERCOM_UPS) },
// { HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY1) },
// { HID_USB_DEVICE(USB_VENDOR_ID_TENX, USB_DEVICE_ID_TENX_IBUDDY2) },
{ HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LABPRO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_GOTEMP) },
...............


depois recompilei o kernel, gravei na placa, e pronto... o leitor funcionou como se fosse um teclado comum, como eu queria.

Então, fica a dica.

Adicionar comentário

Registrar or Efetue login para comentar

x