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! :)