usb touchpad not working properly on CURRENT with usb2
Boris Kotzev
boris.kotzev at gmail.com
Thu Mar 5 11:09:06 PST 2009
> 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 at 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
More information about the freebsd-usb
mailing list