USBqemu-wheel
USBqemu-wheel copied to clipboard
Feature Request: Support for Karaoke Revolution (Japan) Microphone
Hi,
Would it be possible to add support for the Japanese Karaoke Revolution Microphone? I tried the current version out and it doesn't seem to support it.
I tried your usbdescdump program but it gives a -5 error. This is the info from another usb dump tool:
Information for device AK5370 (VID=0x0556 PID=0x0001):
Connection Information:
Device current bus speed: FullSpeed Device supports USB 1.1 specification Device supports USB 2.0 specification Device address: 0x000A Current configuration value: 0x00 Number of open pipes: 0
Device Descriptor:
0x12 bLength
0x01 bDescriptorType
0x0110 bcdUSB
0x00 bDeviceClass
0x00 bDeviceSubClass
0x00 bDeviceProtocol
0x08 bMaxPacketSize0 (8 bytes)
0x0556 idVendor
0x0001 idProduct
0x0001 bcdDevice
0x01 iManufacturer
0x02 iProduct
0x00 iSerialNumber
0x01 bNumConfigurations
Hex dump:
0x12 0x01 0x10 0x01 0x00 0x00 0x00 0x08 0x56 0x05
0x01 0x00 0x01 0x00 0x01 0x02 0x00 0x01
Configuration Descriptor:
0x09 bLength 0x02 bDescriptorType 0x0076 wTotalLength (118 bytes) 0x02 bNumInterfaces 0x01 bConfigurationValue 0x00 iConfiguration 0x80 bmAttributes (Bus-powered Device) 0x2D bMaxPower (90 mA) Hex dump: 0x09 0x02 0x76 0x00 0x02 0x01 0x00 0x80 0x2D
Interface Descriptor:
0x09 bLength 0x04 bDescriptorType 0x00 bInterfaceNumber 0x00 bAlternateSetting 0x00 bNumEndPoints 0x01 bInterfaceClass (Audio Device Class) 0x01 bInterfaceSubClass (Audio Control Interface) 0x00 bInterfaceProtocol (Audio Protocol undefined) 0x00 iInterface Hex dump: 0x09 0x04 0x00 0x00 0x00 0x01 0x01 0x00 0x00
AC Interface Header Descriptor:
0x09 bLength 0x24 bDescriptorType 0x01 bDescriptorSubtype 0x0100 bcdADC 0x0026 wTotalLength (38 bytes) 0x01 bInCollection 0x01 baInterfaceNr(1) Hex dump: 0x09 0x24 0x01 0x00 0x01 0x26 0x00 0x01 0x01
AC Input Terminal Descriptor:
0x0C bLength 0x24 bDescriptorType 0x02 bDescriptorSubtype 0x01 bTerminalID 0x0201 wTerminalType (Microphone) 0x02 bAssocTerminal 0x01 bNrChannels (1 channels) 0x0000 wChannelConfig 0x00 iChannelNames 0x00 iTerminal Hex dump: 0x0C 0x24 0x02 0x01 0x01 0x02 0x02 0x01 0x00 0x00 0x00 0x00
AC Output Terminal Descriptor:
0x09 bLength 0x24 bDescriptorType 0x03 bDescriptorSubtype 0x02 bTerminalID 0x0101 wTerminalType (USB Streaming) 0x01 bAssocTerminal 0x03 bSourceID 0x00 iTerminal Hex dump: 0x09 0x24 0x03 0x02 0x01 0x01 0x01 0x03 0x00
AC Feature Unit Descriptor:
0x08 bLength 0x24 bDescriptorType 0x06 bDescriptorSubtype 0x03 bUnitID 0x01 bSourceID 0x01 bControlSize bmaControls: 0x43 Channel(0) - Mute / Volume / Automatic Gain 0x00 iFeature
Hex dump: 0x08 0x24 0x06 0x03 0x01 0x01 0x43 0x00
Interface Descriptor:
0x09 bLength 0x04 bDescriptorType 0x01 bInterfaceNumber 0x00 bAlternateSetting 0x00 bNumEndPoints 0x01 bInterfaceClass (Audio Device Class) 0x02 bInterfaceSubClass (Audio Streaming Interface) 0x00 bInterfaceProtocol (Audio Protocol undefined) 0x00 iInterface Hex dump: 0x09 0x04 0x01 0x00 0x00 0x01 0x02 0x00 0x00
Interface Descriptor:
0x09 bLength 0x04 bDescriptorType 0x01 bInterfaceNumber 0x01 bAlternateSetting 0x01 bNumEndPoints 0x01 bInterfaceClass (Audio Device Class) 0x02 bInterfaceSubClass (Audio Streaming Interface) 0x00 bInterfaceProtocol (Audio Protocol undefined) 0x00 iInterface Hex dump: 0x09 0x04 0x01 0x01 0x01 0x01 0x02 0x00 0x00
AS Interface Descriptor:
0x07 bLength 0x24 bDescriptorType 0x01 bDescriptorSubtype 0x02 bTerminalLink 0x01 bDelay 0x0001 wFormatTag (PCM) Hex dump: 0x07 0x24 0x01 0x02 0x01 0x01 0x00
AS Format Type 1 Descriptor:
0x17 bLength 0x24 bDescriptorType 0x02 bDescriptorSubtype 0x01 bFormatType (FORMAT_TYPE_1) 0x01 bNrChannels (1 channels) 0x02 bSubframeSize 0x10 bBitResolution (16 bits per sample) 0x05 bSamFreqType (Discrete sampling frequencies) 0x001F40 tSamFreq(1) (8000 Hz) 0x002B11 tSamFreq(2) (11025 Hz) 0x005622 tSamFreq(3) (22050 Hz) 0x00AC44 tSamFreq(4) (44100 Hz) 0x00BB80 tSamFreq(5) (48000 Hz) Hex dump: 0x17 0x24 0x02 0x01 0x01 0x02 0x10 0x05 0x40 0x1F 0x00 0x11 0x2B 0x00 0x22 0x56 0x00 0x44 0xAC 0x00 0x80 0xBB 0x00
Endpoint Descriptor (Audio/MIDI 1.0):
0x07 bLength 0x05 bDescriptorType *** ERROR: Invalid descriptor length 0x07 Hex dump: 0x07 0x05 0x81 0x01 0x64 0x00 0x01
AS Isochronous Data Endpoint Descriptor:
0x07 bLength 0x25 bDescriptorType 0x01 bDescriptorSubtype 0x01 bmAttributes (Sampling Frequency) 0x00 bLockDelayUnits (undefined) 0x0000 wLockDelay Hex dump: 0x07 0x25 0x01 0x01 0x00 0x00 0x00
Microsoft OS Descriptor is not available. Error code: 0x0000001F
String Descriptor Table
Index LANGID String
0x00 0x0000
Hex dump:
0x01 0x0000 "AKM " Hex dump: 0x22 0x03 0x41 0x00 0x4B 0x00 0x4D 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00
0x02 0x0000 "AK5370 " Hex dump: 0x22 0x03 0x41 0x00 0x4B 0x00 0x35 0x00 0x33 0x00 0x37 0x00 0x30 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00 0x20 0x00
Whole Device Descriptor as hex dump: 0x12, 0x01, 0x10, 0x01, 0x00, 0x00, 0x00, 0x08, 0x56, 0x05, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x01
Whole Configuration Descriptor as hex dump: 0x09, 0x02, 0x76, 0x00, 0x02, 0x01, 0x00, 0x80, 0x2D, 0x09, 0x04, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x09, 0x24, 0x01, 0x00, 0x01, 0x26, 0x00, 0x01, 0x01, 0x0C, 0x24, 0x02, 0x01, 0x01, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x09, 0x24, 0x03, 0x02, 0x01, 0x01, 0x01, 0x03, 0x00, 0x08, 0x24, 0x06, 0x03, 0x01, 0x01, 0x43, 0x00, 0x09, 0x04, 0x01, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x09, 0x04, 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x00, 0x07, 0x24, 0x01, 0x02, 0x01, 0x01, 0x00, 0x17, 0x24, 0x02, 0x01, 0x01, 0x02, 0x10, 0x05, 0x40, 0x1F, 0x00, 0x11, 0x2B, 0x00, 0x22, 0x56, 0x00, 0x44, 0xAC, 0x00, 0x80, 0xBB, 0x00, 0x07, 0x05, 0x81, 0x01, 0x64, 0x00, 0x01, 0x07, 0x25, 0x01, 0x01, 0x00, 0x00, 0x00
Connection path for device: USB xHCI Compliant Host Controller Root Hub AK5370 (VID=0x0556 PID=0x0001) Port: 1
Brought to you by TDD v2.15.0, Jun 8 2020, 17:18:07
Thanks!
Seems it works, at least with SLPM-62450.
Thanks for testing.
Do you get the score changing on the top left when singing?
I tried all the mic options (logitech, singstar, etc with WASAPI) but it still doesn't work (I don't get any errors in pcsx2), but when I enable logging, I get this in the log:
usbqemu wheel mod plugin version 0.10.1 USBinit USBopen USBqemu: failed to create device '' on port 0
- Known 32bit write at address 1f801614 value ffffffff
- Known 32bit read at address 1f801604: 00000000
- Known 32bit write at address 1f801604 value 00000000
- Known 32bit write at address 1f801608 value 00000001
- Known 32bit write at address 1f801604 value 00000000
- Known 32bit read at address 1f801608: 00000000
- Known 32bit write at address 1f801680 value 00000001
- Known 32bit write at address 1f801620 value 000a7cf0
- Known 32bit write at address 1f801628 value 000a7d00 ....
Is this maybe why it doesn't work on my machine (PCSX2 v1.60 and USBqemu-wheel-0.10.1-Win32.dll)
Oh, no. It isn't in plugin yet. These japanese versions are picky. Trying to get it in the plugin soon. If you are able to build pcsx2 yourself, you can try usb-subtypes
branch. But seems there's some in-game buffer overflow issues so it crackles etc.
Ok thanks. There's no rush, just take your time. Let me know if you need any further usb dumps from the microphone.
Is usbwheel getting merged into pcsx2? I had tried to build usbwheel, but it had some issues that I haven't fully looked into yet on mingw windows. I'll try to build pcsx2 later.
I tried the pcsx2 build out and it fails to initialize the mic on my machine in:
audiodev-wasapi.cpp:150 (MMAudioDevice::Init())
HRESULT err = CoCreateInstance(CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, IID_IMMDeviceEnumerator, (void**)&mmEnumerator);
with the error: 0x800401f0 : CoInitialize has not been called. (it looks like it's not getting called in all circumstances, eg if you don't bring up a file selector to choose the iso, it won't get called so CoCreateInstance fails). Not sure if this happens on the normal branch.
I put in a quick hack on my side to test it out and it looks promising, but as you mentioned, I get cracking audio as well.
btw, the mic is the official Japanese Konami PS2 Karaoke Revolution mic with product code RU042 if you want the correct device naming.
the RU042 allows for a second microphone to be plugged in. it's a two player mic. i wonder if this the issue of trying to use both channels for one player
Descriptor is just a mono mic so it probably has an integrated usb hub.
i wonder if this the issue of trying to use both channels for one player
What's this? Can't read japanese so just smashing buttons until it goes in-game :D so idk how to set to 2 players to test.
i'm having the RU042 come in on monday but i don't think it has a usb hub on it. it looks like an analog plug on the RU042 allowing plugging in the RU044
It may reinitialize or provide different usb descriptors when a slave microphone is connected. You can try to connect a slave mic, then connect the usb and verify if the same descriptors are provided.
reinitialize or provide different usb descriptors when a slave microphone is connected. You can try to connect a slave mic, then connect the usb and verify if the same descriptors are provid
this does say to have the slave mic plugged into the base mic before powering on the ps2. you might be right.
Hmm, i think it should also return only 1ms worth of data even though packet length is the full 100 bytes of endpoints max packet length. Testing.. holy shit, might fix the crackling. In-game music is too loud :cry: ~~or not... singstar is weird~~ (e: 2 channels doh) but Karaoke is near perfect.
What's this? Can't read japanese so just smashing buttons until it goes in-game :D so idk how to set to 2 players to test.
The third option in the main screen (チームバトル) (Team Battle) is the multiplayer option. Players on each team just take in turns.
It may reinitialize or provide different usb descriptors when a slave microphone is connected. You can try to connect a slave mic, then connect the usb and verify if the same descriptors are provided.
I don't have the official 2nd mic, but I tried plugging in other mics into the main one it still shows the same usb decriptor data.
I tried playing the team battle with another mic plugged into the bottom of the official mic and it seems like it might be just an analog pass through. Either mic can sing and it still gets scored.
is the usb-subtypes branch ready to merge?