Touchpad/trackpad not working

Anders Bolt-Evensen andersbo87 at icloud.com
Fri Aug 7 06:19:59 UTC 2015



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



More information about the freebsd-mobile mailing list