USB HID: Gyration kbd wakeups pc but remote keys do not

Submitted by bobthule
on February 16, 2009 - 6:54pm

I have a Gyration Keyboard and Remote combo (GYAM1600CKUS, GYR3101US) that work off the same USB wireless transmitter. When I suspend the pc to S3, pressing a button on the keyboard will wakeup the pc, however, no buttons on the remote will wakeup the pc. Could this be a problem caused by two interfaces being on the same USB device? If not, any other suggestions? Thanks

I am using kernel 2.6.27 r8 (gentoo)

> lsusb -v   (shortened here, in full length at end of this post)
Bus 004 Device 002: ID 0c16:0002 Gyration, Inc. 
Device Descriptor:
  idVendor           0x0c16 Gyration, Inc.
  iProduct                2 Gyration RF Technology Receiver
  Configuration Descriptor:
    iConfiguration          4 USB Receiver
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup

    Interface Descriptor:
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              0 
        HID Device Descriptor:
          bcdHID               1.10
      Endpoint Descriptor:
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
    Interface Descriptor:
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bcdHID               1.20
      Endpoint Descriptor:
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data

I used acpitool to set the wakeup on the USB port:

> acpitool -W 14
14. USB4        S3     enabled   pci:0000:00:1a.1

I tried looking at the ACPI setting in /sys/devices/*/power/wakeup. You can see below that the usb device has 2 different inputs "./usb4/4-2/4-2:1.0" is for the keyboard and "./usb4/4-2/4-2:1.1/" for the remote.

> cd /sys/devices/pci0000:00/0000:00:1a.1
> find . -name wakeup

./power/wakeup
./usb_host/usb_host4/power/wakeup
./usb4/power/wakeup
./usb4/4-0:1.0/power/wakeup
./usb4/4-0:1.0/usb_endpoint/usbdev4.1_ep81/power/wakeup
./usb4/usb_device/usbdev4.1/power/wakeup
./usb4/usb_endpoint/usbdev4.1_ep00/power/wakeup
./usb4/4-2/power/wakeup
./usb4/4-2/4-2:1.0/power/wakeup
./usb4/4-2/4-2:1.0/usb_endpoint/usbdev4.2_ep81/power/wakeup
./usb4/4-2/4-2:1.0/input/input0/power/wakeup
./usb4/4-2/4-2:1.1/power/wakeup
./usb4/4-2/4-2:1.1/usb_endpoint/usbdev4.2_ep82/power/wakeup
./usb4/4-2/4-2:1.1/input/input1/power/wakeup
./usb4/4-2/4-2:1.1/input/input1/mouse0/power/wakeup
./usb4/4-2/usb_device/usbdev4.2/power/wakeup
./usb4/4-2/usb_endpoint/usbdev4.2_ep00/power/wakeup

Most of these are blank, but some of them are enabled:

./power/wakeup:enabled
./usb4/power/wakeup:enabled
./usb4/4-2/power/wakeup:enabled

Also to note, this remote is similar to the Fiire Chief remote which looks as if it does wakeup properly.

Thanks so much for any help given. And please let me know if any more information is needed. I am happy to help as much as I can.

> lsusb -v   (full version here)
Bus 004 Device 002: ID 0c16:0002 Gyration, Inc. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x0c16 Gyration, Inc.
  idProduct          0x0002 
  bcdDevice            2.20
  iManufacturer           1 Gyration
  iProduct                2 Gyration RF Technology Receiver
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           59
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          4 USB Receiver
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower               98mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      1 Keyboard
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.10
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     149
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.20
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     154
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
Device Status:     0x0000
  (Bus Powered)