Touchpad/trackpad not working

Anders Bolt-Evensen andersbo87 at icloud.com
Tue Aug 11 06:03:25 UTC 2015



On Aug 10, 2015, at 06:33 PM, Anthony Jenkins via freebsd-mobile <freebsd-mobile at freebsd.org> wrote:

>
>
> 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
>
>
> _______________________________________________
> freebsd-mobile at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-mobile
> To unsubscribe, send any mail to "freebsd-mobile-unsubscribe at freebsd.org"


I did take a long look in the BIOS, but i have not seen anything interesting as far as any kind of USB settings goes.
When I boot with the external mouse plugged in and then disconnect the external mouse, the trackpad still works. That is because when I boot the system with the external USB mouse connected, the system creates both /dev/ums0 and /dev/ums1 (which you'll see from the output of dmesg from 2 verbose boots below). Moused then runs on both device nodes. When I disconnect the external device, /dev/ums0 is removed while /dev/ums1 remains. Normally, when I boot the system without the external mouse, /dev/ums* is not created at all. /dev/ums* only appears if I connect the external device.

One thing that puzzles me is why the following message appears during boot (it might be unrelated):
"psm0: unable to allocate IRQ"

Originally I tried to post the output of dmesg from the 2 verbose boots here, but the message got rejected because of its size. Therefore, output from dmesg is available from the following 2 links.
Output of the verbose boot messages without the external mouse:
https://www.dropbox.com/s/ukpoyg6rsl3jjgd/dmesg_without_external_usb.txt?dl=0

Now, I gave the command "shutdown -p now" (power off the system) and then plugged in the external USB mouse. After that I ran a new verbose boot:
https://www.dropbox.com/s/uga7p5zlxh7knsj/dmesg_with_external_usb.txt?dl=0

Anders


More information about the freebsd-mobile mailing list