Re: Touchpad/trackpad not working

Anders Bolt-Evensen <[email protected]>
Newsgroups gmane.os.freebsd.devel.mobile
Message-ID <[email protected]>

On Aug 06, 2015, at 07:01 PM, Anthony Jenkins <[email protected]> wrote:

>
>
> On 08/06/2015 01:42 AM, Anders Bolt-Evensen wrote:
>>
>>
>> On Aug 05, 2015, at 07:48 PM, Anthony Jenkins <[email protected]>
>> wrote:
>>
>>> [Dropping current@]
>>>
>>>> ________________________________
>>>> From: Anders Bolt-Evensen <[email protected]>
>>>> To: [email protected]; [email protected] 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

_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-mobile
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.