Ors1mer/QuadcastRGB

New product ID

brandiseeley opened this issue · 3 comments

Hi,

I just bought a HyperX in Mexico. It has an unsupported vendor/pid pair. Output from lsusb contains:

Bus 001 Device 073: ID 0951:16df Kingston Technology HyperX QuadCast

I made local changes to devio.c and devio.h to allow the device to be found. That worked. But I couldn't get the color to change. Some output:

brandi@brandithinkpad:~/Downloads/QuadcastRGB$ killall quadcastrgb
quadcastrgb: no process found
brandi@brandithinkpad:~/Downloads/QuadcastRGB$ sudo quadcastrgb blink --verbose
Arguments parsed successfully.
Assembling data packets.
Opening the microphone descriptor.
Vendor 951
Product 16df
Sending packets.
brandi@brandithinkpad:~/Downloads/QuadcastRGB$ sudo quadcastrgb blink --verbose
Arguments parsed successfully.
Assembling data packets.
Opening the microphone descriptor.
Vendor 951
Product 16df
Sending packets.
Started with pid 117329
brandi@brandithinkpad:~/Downloads/QuadcastRGB$ killall quadcastrgb
quadcastrgb: no process found

Any ideas? Let me know if I can help.

Check the microphone model

Do you have Quadcast or Quadcast S ? Your lsusb output reports that it is a regular Quadcast, which doesn't have RGB functionality; it is always red.

If you are sure that it is Quadcast S, then read further.

Check the other VID:PID

It seems that quadcastrgb fails to send packets to the device. It might be because a wrong one is used. Quadcast S is actually detected as two separate devices, one for audio and the other for rgb. My lsusb output looks like this:

$ lsusb | grep "QuadCast S"
Bus 001 Device 007: ID 0951:171f Kingston Technology HyperX QuadCast S
Bus 001 Device 006: ID 0951:171d Kingston Technology HyperX QuadCast S

Where 0951:171f is the right ID to use. The verbose output for the right device should look similar to this:

output
$ lsusb -vd 0951:171f
Bus 001 Device 007: ID 0951:171f Kingston Technology HyperX QuadCast S
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x0951 Kingston Technology
  idProduct          0x171f
  bcdDevice           61.03
  iManufacturer           1 Kingston
  iProduct                2 HyperX QuadCast S
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x003b
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      31
          Report Descriptor: (length is 31)
            Item(Global): Usage Page, data= [ 0x90 0xff ] 65424
                            (null)
            Item(Local ): Usage, data= [ 0x00 0xff ] 65280
                            (null)
            Item(Main  ): Collection, data= [ 0x01 ] 1
                            Application
            Item(Global): Logical Minimum, data= [ 0x00 ] 0
            Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
            Item(Global): Report Size, data= [ 0x08 ] 8
            Item(Global): Report Count, data= [ 0x40 ] 64
            Item(Local ): Usage, data= [ 0x02 ] 2
                            (null)
            Item(Main  ): Input, data= [ 0x02 ] 2
                            Data Variable Absolute No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Local ): Usage, data= [ 0x03 ] 3
                            (null)
            Item(Main  ): Output, data= [ 0x02 ] 2
                            Data Variable Absolute No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Local ): Usage, data= [ 0x00 0xff ] 65280
                            (null)
            Item(Main  ): Feature, data= [ 0x02 ] 2
                            Data Variable Absolute No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Main  ): End Collection, data=none
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0
      bInterfaceProtocol      0
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      48
          Report Descriptor: (length is 48)
            Item(Global): Usage Page, data= [ 0x0c ] 12
                            Consumer
            Item(Local ): Usage, data= [ 0x01 ] 1
                            Consumer Control
            Item(Main  ): Collection, data= [ 0x01 ] 1
                            Application
            Item(Global): Report ID, data= [ 0x03 ] 3
            Item(Local ): Usage Minimum, data= [ 0x00 ] 0
                            Unassigned
            Item(Local ): Usage Maximum, data= [ 0xff 0x1f ] 8191
                            (null)
            Item(Global): Logical Minimum, data= [ 0x00 ] 0
            Item(Global): Logical Maximum, data= [ 0xff 0x1f ] 8191
            Item(Global): Report Size, data= [ 0x10 ] 16
            Item(Global): Report Count, data= [ 0x01 ] 1
            Item(Main  ): Input, data= [ 0x00 ] 0
                            Data Array Absolute No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Main  ): End Collection, data=none
            Item(Global): Usage Page, data= [ 0xff 0xff ] 65535
                            (null)
            Item(Local ): Usage, data= [ 0x01 ] 1
                            (null)
            Item(Main  ): Collection, data= [ 0x01 ] 1
                            Application
            Item(Global): Report ID, data= [ 0x05 ] 5
            Item(Local ): Usage, data= [ 0x01 ] 1
                            (null)
            Item(Global): Logical Minimum, data= [ 0x00 ] 0
            Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
            Item(Global): Report Size, data= [ 0x08 ] 8
            Item(Global): Report Count, data= [ 0x07 ] 7
            Item(Main  ): Input, data= [ 0x02 ] 2
                            Data Variable Absolute No_Wrap Linear
                            Preferred_State No_Null_Position Non_Volatile Bitfield
            Item(Main  ): End Collection, data=none
      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)

Glad it's clear now. Come back if you get Quadcast S! :)