keyboard driver problem?

ti bugmenot ti.bugmenot at gmail.com
Fri Jul 1 11:52:35 UTC 2011


I met with the same problem. I do not know how to solve this problem:

http://lists.freebsd.org/pipermail/freebsd-current/2011-January/022022.html


% uname -a

FreeBSD td.local 9.0-CURRENT FreeBSD 9.0-CURRENT #3 r223706M: Fri Jul
1 16:50:12 YEKT 2011     root at td.local:/usr/obj/usr/src/sys/TI  amd64



% dmesg

ugen5.2: <A4Tech> at usbus5
ugen6.2: <A4TECH> at usbus6
ukbd0: <A4Tech RF USB Receiver, class 0/0, rev 1.10/0.01, addr 2> on usbus5
kbd2 at ukbd0
ukbd2: <A4TECH USB Device, class 0/0, rev 1.10/1.02, addr 2> on usbus6
ums0: <A4Tech RF USB Receiver, class 0/0, rev 1.10/0.01, addr 2> on usbus5
kbd3 at ukbd2
ums0: 8 buttons and [XYZT] coordinates ID=1
ums1: <A4TECH USB Device, class 0/0, rev 1.10/1.02, addr 2> on usbus6
ums1: 16 buttons and [XYZT] coordinates ID=0



% usbconfig -u 6 -a 2 dump_device_desc dump_curr_config_desc

ugen6.2: <USB Device A4TECH> at usbus6, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0110
  bDeviceClass = 0x0000
  bDeviceSubClass = 0x0000
  bDeviceProtocol = 0x0000
  bMaxPacketSize0 = 0x0008
  idVendor = 0x09da
  idProduct = 0x054f
  bcdDevice = 0x0102
  iManufacturer = 0x0001  <A4TECH>
  iProduct = 0x0002  <USB Device>
  iSerialNumber = 0x0000  <no string>
  bNumConfigurations = 0x0001


 Configuration index 0

    bLength = 0x0009
    bDescriptorType = 0x0002
    wTotalLength = 0x003b
    bNumInterfaces = 0x0002
    bConfigurationValue = 0x0001
    iConfiguration = 0x0000  <no string>
    bmAttributes = 0x00a0
    bMaxPower = 0x0032

    Interface 0
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0000
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x0003
      bInterfaceSubClass = 0x0001
      bInterfaceProtocol = 0x0001
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x21
      bDescriptorSubType = 0x11
       RAW dump:
       0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0x84,
       0x08 | 0x00

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0081  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x000c
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


    Interface 1
      bLength = 0x0009
      bDescriptorType = 0x0004
      bInterfaceNumber = 0x0001
      bAlternateSetting = 0x0000
      bNumEndpoints = 0x0001
      bInterfaceClass = 0x0003
      bInterfaceSubClass = 0x0001
      bInterfaceProtocol = 0x0002
      iInterface = 0x0000  <no string>

      Additional Descriptor

      bLength = 0x09
      bDescriptorType = 0x21
      bDescriptorSubType = 0x11
       RAW dump:
       0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0x57,
       0x08 | 0x00

     Endpoint 0
        bLength = 0x0007
        bDescriptorType = 0x0005
        bEndpointAddress = 0x0082  <IN>
        bmAttributes = 0x0003  <INTERRUPT>
        wMaxPacketSize = 0x0008
        bInterval = 0x0001
        bRefresh = 0x0000
        bSynchAddress = 0x0000


----------

Not work:

#define UKBD_NKEYCODE                 8


----------

Not work:

                if (sc->sc_kbd_id != 0) {
                        /* check and remove HID ID byte */
                        usbd_copy_out(pc, 0, &id, 1);
                        if (id != sc->sc_kbd_id) {
                                DPRINTF("wrong HID ID\n");
                                goto tr_setup;
                        }
                        offset = 1;
                        len--;
                } else {
                        offset = 0;
                }

+	if (len == 12) {
+		offset += 2;
+		len -= 2;
+	}
+	if (len == 11) {
+		offset += 1;
+		len -= 1;
+	}


More information about the freebsd-current mailing list