Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Mar 2009 21:08:59 +0200
From:      Boris Kotzev <boris.kotzev@gmail.com>
To:        Hans Petter Selasky <hselasky@c2i.net>
Cc:        freebsd-usb@freebsd.org
Subject:   Re: usb touchpad not working properly on CURRENT with usb2
Message-ID:  <200903052109.00282.boris.kotzev@gmail.com>
In-Reply-To: <200903051431.22066.hselasky@c2i.net>
References:  <200903041946.15105.boris.kotzev@gmail.com> <200903042346.00840.boris.kotzev@gmail.com> <200903051431.22066.hselasky@c2i.net>

next in thread | previous in thread | raw e-mail | index | archive | help
> On Wednesday 04 March 2009, Boris Kotzev wrote:
> > > On Wednesday 04 March 2009, Boris Kotzev wrote:
> > > > Hi,
> > > >
> > > > The touchpad of my laptop is not responding properly to input
> > > > anymore. It used to work fine with the old usb stack.
> > > >
> > > > The laptop is running CURRENT from yesterday:
> > > >
> > > > FreeBSD zembla.universe 8.0-CURRENT FreeBSD 8.0-CURRENT #0: Wed Mar 
> > > > 4 17:30:05 EET 2009 user@zembla.universe:/usr/obj/usr/src/sys/CUSTOM
> > > > amd64
> > > >
> > > > When I move my finger horizontally on the touchpad of the laptop, the
> > > > cursor moves up and down. Moving the finger vertically moves the
> > > > cursor a little and then it stops. Pressing the touchpad button moves
> > > > the cursor to the right.
> > > >
> > > > The touchpad is detected as:
> > > >
> > > > ugen0.2: <Apple Internal Keyboard / Trackpad Apple Computer> at
> > > > usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
> > > >
> > > > Resetting the touchpad  produces the following dmesg output:
> > > >
> > > > ukbd0: at uhub0, port 2, addr 2 (disconnected)
> > > > ums1: at uhub0, port 2, addr 2 (disconnected)
> > > > ums_detach:608: sc=0xffffff000188c400
> > > > uhid1: at uhub0, port 2, addr 2 (disconnected)
> > > > ukbd0: <Apple Internal Keyboard> on usbus0
> > > > kbd1 at ukbd0
> > > > ums1: <Touchpad> on usbus0
> > > > ums_attach:530: WARNING: report size, 67 bytes, is larger than
> > > > interrupt size, 64 bytes! ums1: 3 buttons and [XY] coordinates
> > > > ums_attach:546: sc=0xffffff000184e800
> > > > ums_attach:547: X	8/8
> > > > ums_attach:548: Y	16/8
> > > > ums_attach:549: Z	0/0
> > > > ums_attach:550: T	0/0
> > > > ums_attach:551: W	0/0
> > > > ums_attach:555: B1	0/1
> > > > ums_attach:555: B2	1/1
> > > > ums_attach:555: B3	2/1
> > > > ums_attach:557: size=67, id=0
> > > > uhid1: <Apple Internal Keyboard> on usbus0
> > > >
> > > > What other information should I provide to help solving this problem?
> > > >
> > > > Sincerely,
> > > >
> > > > Boris Kotzev
> > >
> > > Could you get the USB HID descriptors dumped using:
> > >
> > > usbhidctl
> > >
> > > --HPS
> >
> > All information I  managed to extract by using usbhidctl is below:
> >
> > # usbhidctl -f /dev/uhid1 -ra
> > Report descriptor:
> > Collection page=Consumer usage=Consumer_Control
> > Input   size=8 count=1 page=Consumer usage=Eject, logical range 0..255
> > End collection
> > Total   input size 1 bytes
> > Total  output size 0 bytes
> > Total feature size 0 bytes
> > usbhidctl: USB_SET_IMMED: Device not configured
> >
> > If it is not enough, will you explain to me how to use this utility?
>
> Hi,
>
> I think you have to unload ums module. Then replug the device and search
> for the new uhid device.
>
> Can you also do:
>
> usbconfig -u 0 -a 2 dump_device_desc dump_curr_config_desc
>
> --HPS

Hi,

After the removal of the ums and ukbd devices from the kernel, a lot more
uhid devices showed up in /dev:

# dmesg | grep uhid
uhid0: <Logitech USB Receiver, class 0/0, rev 2.00/57.01, addr 3> on usbus4
uhid1: <Logitech USB Receiver, class 0/0, rev 2.00/57.01, addr 3> on usbus4
uhid2: <Apple Internal Keyboard> on usbus0
uhid3: <Touchpad> on usbus0
uhid4: <Apple Internal Keyboard> on usbus0
uhid5: <Apple Computer, Inc. IR Receiver, class 0/0, rev 2.00/1.10, addr 2> on usbus2
uhid6: <Apple Computer product 0x1000, class 0/0, rev 2.00/19.65, addr 2> on usbus3
uhid7: <Apple Computer product 0x1000, class 0/0, rev 2.00/19.65, addr 2> on usbus3

The dump for uhid2, uhid3 and uhid4 is shown below.

# usbhidctl -f /dev/uhid2 -r
Report descriptor:
Collection page=Generic_Desktop usage=Keyboard
Input   size=1 count=1 page=Keyboard usage=Keyboard_LeftControl, logical range 0..1
Input   size=1 count=1 page=Keyboard usage=Keyboard_LeftShift, logical range 0..1
Input   size=1 count=1 page=Keyboard usage=Keyboard_LeftAlt, logical range 0..1
Input   size=1 count=1 page=Keyboard usage=Keyboard_Left_GUI, logical range 0..1
Input   size=1 count=1 page=Keyboard usage=Keyboard_RightControl, logical range 0..1
Input   size=1 count=1 page=Keyboard usage=Keyboard_RightShift, logical range 0..1
Input   size=1 count=1 page=Keyboard usage=Keyboard_RightAlt, logical range 0..1
Input   size=1 count=1 page=Keyboard usage=Keyboard_Right_GUI, logical range 0..1
Output  size=1 count=1 page=LEDs usage=Num_Lock, logical range 0..1
Output  size=1 count=1 page=LEDs usage=Caps_Lock, logical range 0..1
Output  size=1 count=1 page=LEDs usage=Scroll_Lock, logical range 0..1
Output  size=1 count=1 page=LEDs usage=Compose, logical range 0..1
Output  size=1 count=1 page=LEDs usage=Kana, logical range 0..1
Input   size=8 count=5 page=Keyboard usage=Reserved_(no_event_indicated), logical range 0..101
Input   size=8 count=1 page=0x00ff usage=0x0003, logical range 0..101
End collection
Total   input size 8 bytes
Total  output size 1 bytes
Total feature size 0 bytes

# usbhidctl -f /dev/uhid3 -r
Report descriptor:
Collection page=Generic_Desktop usage=Mouse
Total   input size 0 bytes
Total  output size 0 bytes
Total feature size 0 bytes

# usbhidctl -f /dev/uhid4 -r
Report descriptor:
Collection page=Consumer usage=Consumer_Control
Input   size=8 count=1 page=Consumer usage=Eject, logical range 0..255
End collection
Total   input size 1 bytes
Total  output size 0 bytes
Total feature size 0 bytes

The output of usbconfig is as follows:

# usbconfig -u 0 -a 2 dump_device_desc dump_curr_config_desc
ugen0.2: <Apple Internal Keyboard / Trackpad Apple Computer> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x0000 
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0008 
  idVendor = 0x05ac 
  idProduct = 0x0218 
  bcdDevice = 0x0064 
  iManufacturer = 0x0001  <Apple Computer>
  iProduct = 0x0002  <Apple Internal Keyboard / Trackpad>
  iSerialNumber = 0x0000  <no string>
  bNumConfigurations = 0x0001 


 Configuration index 0

    bLength = 0x0009 
    bDescriptorType = 0x0002 
    wTotalLength = 0x0054 
    bNumInterfaces = 0x0003 
    bConfigurationValue = 0x0001 
    iConfiguration = 0x0000  <no string>
    bmAttributes = 0x00a0 
    bMaxPower = 0x0014 

    Interface 0
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0000 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0001 
      bInterfaceClass = 0x0003 
      bInterfaceSubClass = 0x0001 
      bInterfaceProtocol = 0x0001 
      iInterface = 0x0003  <Apple Internal Keyboard>

      Additional Descriptor

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

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0083 
        bmAttributes = 0x0003 
        wMaxPacketSize = 0x0008 
        bInterval = 0x0008 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 


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

      Additional Descriptor

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

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0081 
        bmAttributes = 0x0003 
        wMaxPacketSize = 0x0040 
        bInterval = 0x0008 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 


    Interface 2
      bLength = 0x0009 
      bDescriptorType = 0x0004 
      bInterfaceNumber = 0x0002 
      bAlternateSetting = 0x0000 
      bNumEndpoints = 0x0001 
      bInterfaceClass = 0x0003 
      bInterfaceSubClass = 0x0000 
      bInterfaceProtocol = 0x0000 
      iInterface = 0x0003  <Apple Internal Keyboard>

      Additional Descriptor

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

     Endpoint 0
        bLength = 0x0007 
        bDescriptorType = 0x0005 
        bEndpointAddress = 0x0084 
        bmAttributes = 0x0003 
        wMaxPacketSize = 0x0001 
        bInterval = 0x0008 
        bRefresh = 0x0000 
        bSynchAddress = 0x0000 


Thanks!

Boris Kotzev





 
















Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200903052109.00282.boris.kotzev>