Touchpad/trackpad not working

Anthony Jenkins Scoobi_doo at yahoo.com
Mon Aug 10 16:33:23 UTC 2015



On 08/10/2015 02:29 AM, Anders Bolt-Evensen wrote:
>
>
> On Aug 09, 2015, at 03:07 AM, Anthony Jenkins <Scoobi_doo at yahoo.com>
> wrote:
>
>>
>>
>> On 08/07/15 02:19, Anders Bolt-Evensen wrote:
>>>
>>>
>>> On Aug 06, 2015, at 07:01 PM, Anthony Jenkins <Scoobi_doo at yahoo.com>
>>> wrote:
>>>
>>>>
>>>>
>>>> On 08/06/2015 01:42 AM, Anders Bolt-Evensen wrote:
>>>>>
>>>>>
>>>>> On Aug 05, 2015, at 07:48 PM, Anthony Jenkins <Scoobi_doo at yahoo.com>
>>>>> wrote:
>>>>>
>>>>>> [Dropping current@]
>>>>>>
>>>>>>> ________________________________
>>>>>>> From: Anders Bolt-Evensen <andersbo87 at me.com>
>>>>>>> To: freebsd-current at freebsd.org; freebsd-mobile at freebsd.org Sent:
>>>>>>> Wednesday, August 5, 2015 11:38 AM
>>>>>>> Subject: Touchpad/trackpad not working
>>>>>>>
>>>>>>>
>>>>>>> Hello, everyone!
>>>>>>> On my Acer Aspire V17 Nitro I have a little problems with my
>>>>>>> touchpad/trackpad:
>>>>>>> When I boot the system, in this case, on FreeBSD Current (the
>>>>>>> problem also exists on FreeBSD 10) without an external USB receiver
>>>>>>> connected, my trackpad does not work at all, neither in console or
>>>>>>> in X.
>>>>>>> In other words I am not able to do a left or right click and moving
>>>>>>> the pointer does not work either.
>>>>>>> I cannot see any mention of it when I take a look at dmesg, other
>>>>>>> than a message that says "psm0: unable to allocate IRQ"
>>>>>>> Today I installed sysutils/usbutils to see if I could get any more
>>>>>>> info about my problem and then took a look at output of the command
>>>>>>> "lsusb".
>>>>>>> I see the following output:
>>>>>>> Bus /dev/usb Device /dev/ugen0.5: ID 046d:c52b Logitech, Inc.
>>>>>>> Bus /dev/usb Device /dev/ugen0.4: ID 04f2:b474 Chicony Electronics
>>>>>>> Co., Ltd
>>>>>>> Bus /dev/usb Device /dev/ugen0.3: ID 06cb:2970 Synaptics, Inc.
>>>>>>
>>>>>> Weird...first time seeing a Synaptics device on USB. I know psm(4)
>>>>>> generally handles Synaptics protocol in FreeBSD (if you enable
>>>>>> synaptics
>>>>>> support), but your device isn't hanging off the atkbd(4)/psm(4). I'd
>>>>>> expect ums(4) to attach then... no idea why it isn't, or if it
>>>>>> supports
>>>>>> the Synaptics protocol.
>>>>>>
>>>>>> Can you tell me what the following command reports:
>>>>>>
>>>>>> usbconfig -d ugen0.3 dump_device_desc
>>>>>>
>>>>>> I think the device needs to report itself as a USB HID device for
>>>>>> ums(4)
>>>>>> to attach.
>>>>>>
>>>>>> Also, do you have moused(8) running?
>>>>>>
>>>>>> Thanks,
>>>>>> Anthony Jenkins
>>>>>
>>>>> In /etc/rc.conf I do have moused_enable="YES", but sudo
>>>>> /etc/rc.d/moused status reports
>>>>> "moused is not running". I assume it is because of missing psm0.
>>>>>
>>>>> The command usbconfig -d ugen0.3 dump_device_desc reports:
>>>>> ugen0.3: <product 0x2970 vendor 0x06cb> at usbus0, cfg=0 md=HOST
>>>>> spd=FULL (12Mbps) pwr=ON (100mA)
>>>>>
>>>>> bLength = 0x0012
>>>>> bDescriptorType = 0x0001
>>>>> bcdUSB = 0x0200
>>>>> bDeviceClass = 0x0000 <Probed by interface class>
>>>>> bDeviceSubClass = 0x0000
>>>>> bDeviceProtocol = 0x0000
>>>>> bMaxPacketSize0 = 0x0008
>>>>> idVendor = 0x06cb
>>>>> idProduct = 0x2970
>>>>> bcdDevice = 0x0008
>>>>> iManufacturer = 0x0001 < >
>>>>> iProduct = 0x0002 < >
>>>>> iSerialNumber = 0x0000 <no string>
>>>>> bNumConfigurations = 0x0001
>>>>>
>>>>> - Anders
>>>>
>>>> Okay try the 'dump_curr_config_desc' command to usbconfig(8):
>>>>
>>>> usbconfig -d ugen0.3 dump_curr_config_desc
>>>>
>>>> For my Areson USB mouse, this reports:
>>>>
>>>> $ sudo usbconfig -d ugen0.2 dump_curr_config_desc
>>>> ugen0.2: <USB Device Areson> at usbus0, cfg=0 md=HOST spd=LOW
>>>> (1.5Mbps)
>>>> pwr=ON (100mA)
>>>>
>>>>
>>>> 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 <HID device>
>>>> bInterfaceSubClass = 0x0001
>>>> bInterfaceProtocol = 0x0002
>>>> iInterface = 0x0000 <no string>
>>>>
>>>> Additional Descriptor
>>>>
>>>> bLength = 0x09
>>>> bDescriptorType = 0x21
>>>> bDescriptorSubType = 0x00
>>>> RAW dump:
>>>> 0x00 | 0x09, 0x21, 0x00, 0x01, 0x00, 0x01, 0x22, 0x59,
>>>> 0x08 | 0x00
>>>>
>>>> Endpoint 0
>>>> bLength = 0x0007
>>>> bDescriptorType = 0x0005
>>>> bEndpointAddress = 0x0081 <IN>
>>>> bmAttributes = 0x0003 <INTERRUPT>
>>>> wMaxPacketSize = 0x0008
>>>> bInterval = 0x000a
>>>> bRefresh = 0x0000
>>>> bSynchAddress = 0x0000
>>>> ...
>>>>
>>>>
>>>> I'm looking for an "Interface #" section with "bInterfaceClass =
>>>> 0x0003
>>>> <HID device>" and "bInterfaceProtocol = 0x0002" lines (class 0x3
>>>> protocol 0x2 is a mouse, supported by our ums(4) driver). If you have
>>>> that, then it should work "out of the box" with moused(8) configured
>>>> with the "auto" protocol (required for USB pointing devices).
>>>>
>>>> You didn't say whether the touchpad works with another USB mouse
>>>> attached or not. I wouldn't expect plugging a different mouse in to
>>>> have any effect on the touchpad behaviour, but if so, please also run
>>>> the above usbconfig(8) command:
>>>>
>>>> - with no external USB mouse plugged in, targetting the Synaptics
>>>> touchpad device (ugen0.3)
>>>> - with an external USB mouse plugged in, once for the Synaptics
>>>> touchpad device (ugen0.3) and once for the external mouse (ugen?.?)
>>>>
>>>> Thanks,
>>>> Anthony
>>>
>>> If I start FreeBSD without the external receiver and run udo usbconfig
>>> -d ugen0.3 dump_curr_config_desc, I get the following output:
>>> ugen0.3: <product 0x2970 vendor 0x06cb> at usbus0, cfg=0 md=HOST
>>> spd=FULL (12Mbps) pwr=ON (100mA)
>>>
>>>
>>> Configuration index 0
>>>
>>> bLength = 0x0009
>>> bDescriptorType = 0x0002
>>> wTotalLength = 0x0029
>>> bNumInterfaces = 0x0001
>>> bConfigurationValue = 0x0001
>>> iConfiguration = 0x0000 <no string>
>>> bmAttributes = 0x00a0
>>> bMaxPower = 0x0032
>>>
>>> Interface 0
>>> bLength = 0x0009
>>> bDescriptorType = 0x0004
>>> bInterfaceNumber = 0x0000
>>> bAlternateSetting = 0x0000
>>> bNumEndpoints = 0x0002
>>> bInterfaceClass = 0x0003 <HID device>
>>> bInterfaceSubClass = 0x0000
>>> bInterfaceProtocol = 0x0000
>>> iInterface = 0x0000 <no string>
>>>
>>> Additional Descriptor
>>>
>>> bLength = 0x09
>>> bDescriptorType = 0x21
>>> bDescriptorSubType = 0x11
>>> RAW dump:
>>> 0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0xa1,
>>> 0x08 | 0x01
>>>
>>> Endpoint 0
>>> bLength = 0x0007
>>> bDescriptorType = 0x0005
>>> bEndpointAddress = 0x0081 <IN>
>>> bmAttributes = 0x0003 <INTERRUPT>
>>> wMaxPacketSize = 0x0040
>>> bInterval = 0x0001
>>> bRefresh = 0x0000
>>> bSynchAddress = 0x0000
>>>
>>> Endpoint 1
>>> bLength = 0x0007
>>> bDescriptorType = 0x0005
>>> bEndpointAddress = 0x0002 <OUT>
>>> bmAttributes = 0x0003 <INTERRUPT>
>>> wMaxPacketSize = 0x0040
>>> bInterval = 0x000a
>>> bRefresh = 0x0000
>>> bSynchAddress = 0x0000
>>>
>>> Now, if I plug in the receiver and reboot my computer (the touchpad
>>> does not work in FreeBSD unless I start the computer with that device
>>> plugged in -- the external mouse that came with the receiver works
>>> just fine without a reboot) and then run the same command again (note
>>> that when booting with the external device plugged in, according to
>>> "lsusb", the Symantec touchpad changes from ugen0.3 to ugen0.4), I get
>>> the following:
>>> Output of lsusb:
>>> [...]
>>> Bus /dev/usb Device /dev/ugen0.4: ID 06cb:2970 Synaptics, Inc.
>>> [...]
>>> Bus /dev/usb Device /dev/ugen0.2: ID 046d:c52b Logitech, Inc.
>>>
>>> Output of "sudo usbconfig -d ugen0.4 dump_curr_config_desc" (ugen0.3
>>> before the reboot)
>>> ugen0.4: <product 0x2970 vendor 0x06cb> at usbus0, cfg=0 md=HOST
>>> spd=FULL (12Mbps) pwr=ON (100mA)
>>>
>>>
>>> Configuration index 0
>>>
>>> bLength = 0x0009
>>> bDescriptorType = 0x0002
>>> wTotalLength = 0x0029
>>> bNumInterfaces = 0x0001
>>> bConfigurationValue = 0x0001
>>> iConfiguration = 0x0000 <no string>
>>> bmAttributes = 0x00a0
>>> bMaxPower = 0x0032
>>>
>>> Interface 0
>>> bLength = 0x0009
>>> bDescriptorType = 0x0004
>>> bInterfaceNumber = 0x0000
>>> bAlternateSetting = 0x0000
>>> bNumEndpoints = 0x0002
>>> bInterfaceClass = 0x0003 <HID device>
>>> bInterfaceSubClass = 0x0000
>>> bInterfaceProtocol = 0x0000
>>> iInterface = 0x0000 <no string>
>>>
>>> Additional Descriptor
>>>
>>> bLength = 0x09
>>> bDescriptorType = 0x21
>>> bDescriptorSubType = 0x11
>>> RAW dump:
>>> 0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0xa1,
>>> 0x08 | 0x01
>>>
>>> Endpoint 0
>>> bLength = 0x0007
>>> bDescriptorType = 0x0005
>>> bEndpointAddress = 0x0081 <IN>
>>> bmAttributes = 0x0003 <INTERRUPT>
>>> wMaxPacketSize = 0x0040
>>> bInterval = 0x0001
>>> bRefresh = 0x0000
>>> bSynchAddress = 0x0000
>>>
>>> Endpoint 1
>>> bLength = 0x0007
>>> bDescriptorType = 0x0005
>>> bEndpointAddress = 0x0002 <OUT>
>>> bmAttributes = 0x0003 <INTERRUPT>
>>> wMaxPacketSize = 0x0040
>>> bInterval = 0x000a
>>> bRefresh = 0x0000
>>> bSynchAddress = 0x0000
>>>
>>> Output of sudo usbconfig -d ugen0.2 dump_curr_config_desc (ugen0.5 if
>>> plugged in before the reboot)
>>> ugen0.2: <USB Receiver Logitech> at usbus0, cfg=0 md=HOST spd=FULL
>>> (12Mbps) pwr=ON (98mA)
>>>
>>>
>>> Configuration index 0
>>>
>>> bLength = 0x0009
>>> bDescriptorType = 0x0002
>>> wTotalLength = 0x0054
>>> bNumInterfaces = 0x0003
>>> bConfigurationValue = 0x0001
>>> iConfiguration = 0x0004 <RQR12.01_B0019>
>>> bmAttributes = 0x00a0
>>> bMaxPower = 0x0031
>>>
>>> Interface 0
>>> bLength = 0x0009
>>> bDescriptorType = 0x0004
>>> bInterfaceNumber = 0x0000
>>> bAlternateSetting = 0x0000
>>> bNumEndpoints = 0x0001
>>> bInterfaceClass = 0x0003 <HID device>
>>> 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, 0x3b,
>>> 0x08 | 0x00
>>>
>>> Endpoint 0
>>> bLength = 0x0007
>>> bDescriptorType = 0x0005
>>> bEndpointAddress = 0x0081 <IN>
>>> bmAttributes = 0x0003 <INTERRUPT>
>>> wMaxPacketSize = 0x0008
>>> bInterval = 0x0008
>>> bRefresh = 0x0000
>>> bSynchAddress = 0x0000
>>>
>>>
>>> Interface 1
>>> bLength = 0x0009
>>> bDescriptorType = 0x0004
>>> bInterfaceNumber = 0x0001
>>> bAlternateSetting = 0x0000
>>> bNumEndpoints = 0x0001
>>> bInterfaceClass = 0x0003 <HID device>
>>> 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, 0x94,
>>> 0x08 | 0x00
>>>
>>> Endpoint 0
>>> bLength = 0x0007
>>> bDescriptorType = 0x0005
>>> bEndpointAddress = 0x0082 <IN>
>>> bmAttributes = 0x0003 <INTERRUPT>
>>> wMaxPacketSize = 0x0008
>>> bInterval = 0x0002
>>> bRefresh = 0x0000
>>> bSynchAddress = 0x0000
>>>
>>>
>>> Interface 2
>>> bLength = 0x0009
>>> bDescriptorType = 0x0004
>>> bInterfaceNumber = 0x0002
>>> bAlternateSetting = 0x0000
>>> bNumEndpoints = 0x0001
>>> bInterfaceClass = 0x0003 <HID device>
>>> bInterfaceSubClass = 0x0000
>>> bInterfaceProtocol = 0x0000
>>> iInterface = 0x0000 <no string>
>>>
>>> Additional Descriptor
>>>
>>> bLength = 0x09
>>> bDescriptorType = 0x21
>>> bDescriptorSubType = 0x11
>>> RAW dump:
>>> 0x00 | 0x09, 0x21, 0x11, 0x01, 0x00, 0x01, 0x22, 0x62,
>>> 0x08 | 0x00
>>>
>>> Endpoint 0
>>> bLength = 0x0007
>>> bDescriptorType = 0x0005
>>> bEndpointAddress = 0x0083 <IN>
>>> bmAttributes = 0x0003 <INTERRUPT>
>>> wMaxPacketSize = 0x0020
>>> bInterval = 0x0002
>>> bRefresh = 0x0000
>>> bSynchAddress = 0x0000
>>>
>>> With that device plugged in during the booting process, I'm able to do
>>> a left tap/click and a right click with the touchpad. Scrolling does
>>> not work unless I use the external mouse instead of the touchpad.
>>> If I now decide to unplug the external device, the touchpad works
>>> until the next reboot.
>>>
>>> Anders
>>>
>> Are there any /dev/ums* device nodes when the external mouse is
>> plugged in?
>>
>> $ ls /dev/ums*
>> $ dmesg | grep ums
>
> Yes, when I connect the external mouse, /dev/ums0 appears:
> ls /dev/ums*
> /dev/ums0
>
> dmesg | grep ums
> ums0: <Logitech USB Receiver, class 0/0, rev 2.00/12.01, addr 5> on
> usbus0
> ums0: 16 buttons and [XYZT] coordinates ID=2

Whoa... does your mouse /actually/ have 16 buttons???

Ahh never mind, I just tried my Logitech universal receiver on my
FreeBSD laptop - same number of buttons.

>
>> Are there any instances of moused(8) running when the external mouse is
>> plugged in?
>>
>> $ ps auxww | grep moused
>>
>> Thanks,
>> Anthony
>
> When the external mouse is connected, the following instance of moused
> is running (as returned from the command ps auxww | grep moused):
> root       2426   0.0  0.0  16728   2284  -  Ss   08:06    0:00.00
> /usr/sbin/moused -p /dev/ums0 -t auto -I /var/run/moused.ums0.pid
>
> Anders
>
Well I'm at a loss... if your touchpad is in fact a USB device, I don't
see how it could report mouse events to FreeBSD when a different USB
mouse is installed (if that's indeed what's happening).  Next thing I'd
do is try to track down how the device is reporting data to FreeBSD in
this case (and why it isn't in the other case).  I'd look at the
/dev/ums0 device node to see what data it appears to be receiving when
using the touchpad, probably by running moused(8) in debug/verbose mode.

Does the touchpad still work (e.g. move the cursor) if you boot with the
external USB mouse, but then unplug it?  Is moused(8) still running
after unplugging?

Have you poked around your BIOS for any possible touchpad or USB
configuration settings?  For one, you might try setting "Legacy USB" to
"enabled" (if your BIOS has it).

About the only thing I can think of asking for now is for you to boot
verbose twice (with and without the external USB mouse connected) and
send me the dmesg(1) or /var/log/messages with the boot messages.

-- 
Anthony Jenkins




More information about the freebsd-mobile mailing list