Page 2 of 2
Re: Hey All
Posted: Mon Aug 08, 2011 7:25 am
by Matlo
My guess is that it's a standard usb hid controller. This kind of controller doesn't require any specific driver because it has the ability to tell the usb host what controls it provides (axes & buttons).
If you want to go further, you can boot linux (ubuntu 11.04 for ex.) and type some commands in a terminal.
This command will show all the usb devices:
You have to guess what's the usb device corresponding to your turntable.
Then type the following command:
For ex if your turntable is device 2 on bus 4:
Re: Hey All
Posted: Mon Aug 08, 2011 6:24 pm
by Joss
Done as you requested:
Code: Select all
Bus 003 Device 004: ID 12ba:0140 Licensed by Sony Computer Entertainment America
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 1.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x12ba Licensed by Sony Computer Entertainment America
idProduct 0x0140
bcdDevice 0.05
iManufacturer 1 RedOctane DJ
iProduct 2 Guitar Hero5 for PlayStation (R) 3
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 41
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 50mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.10
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 137
Report Descriptor: (length is 137)
Item(Global): Usage Page, data= [ 0x01 ] 1
Generic Desktop Controls
Item(Local ): Usage, data= [ 0x05 ] 5
Gamepad
Item(Main ): Collection, data= [ 0x01 ] 1
Application
Item(Global): Logical Minimum, data= [ 0x00 ] 0
Item(Global): Logical Maximum, data= [ 0x01 ] 1
Item(Global): Physical Minimum, data= [ 0x00 ] 0
Item(Global): Physical Maximum, data= [ 0x01 ] 1
Item(Global): Report Size, data= [ 0x01 ] 1
Item(Global): Report Count, data= [ 0x0d ] 13
Item(Global): Usage Page, data= [ 0x09 ] 9
Buttons
Item(Local ): Usage Minimum, data= [ 0x01 ] 1
Button 1 (Primary)
Item(Local ): Usage Maximum, data= [ 0x0d ] 13
(null)
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Report Count, data= [ 0x03 ] 3
Item(Main ): Input, data= [ 0x01 ] 1
Constant Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Usage Page, data= [ 0x01 ] 1
Generic Desktop Controls
Item(Global): Logical Maximum, data= [ 0x07 ] 7
Item(Global): Physical Maximum, data= [ 0x3b 0x01 ] 315
Item(Global): Report Size, data= [ 0x04 ] 4
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Global): Unit, data= [ 0x14 ] 20
System: English Rotation, Unit: Degrees
Item(Local ): Usage, data= [ 0x39 ] 57
Hat Switch
Item(Main ): Input, data= [ 0x42 ] 66
Data Variable Absolute No_Wrap Linear
Preferred_State Null_State Non_Volatile Bitfield
Item(Global): Unit, data= [ 0x00 ] 0
System: None, Unit: (None)
Item(Global): Report Count, data= [ 0x01 ] 1
Item(Main ): Input, data= [ 0x01 ] 1
Constant Array Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
Item(Global): Physical Maximum, data= [ 0xff 0x00 ] 255
Item(Local ): Usage, data= [ 0x30 ] 48
Direction-X
Item(Local ): Usage, data= [ 0x31 ] 49
Direction-Y
Item(Local ): Usage, data= [ 0x32 ] 50
Direction-Z
Item(Local ): Usage, data= [ 0x35 ] 53
Rotate-Z
Item(Global): Report Size, data= [ 0x08 ] 8
Item(Global): Report Count, data= [ 0x04 ] 4
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
(null)
Item(Local ): Usage, data= [ 0x20 ] 32
(null)
Item(Local ): Usage, data= [ 0x21 ] 33
(null)
Item(Local ): Usage, data= [ 0x22 ] 34
(null)
Item(Local ): Usage, data= [ 0x23 ] 35
(null)
Item(Local ): Usage, data= [ 0x24 ] 36
(null)
Item(Local ): Usage, data= [ 0x25 ] 37
(null)
Item(Local ): Usage, data= [ 0x26 ] 38
(null)
Item(Local ): Usage, data= [ 0x27 ] 39
(null)
Item(Local ): Usage, data= [ 0x28 ] 40
(null)
Item(Local ): Usage, data= [ 0x29 ] 41
(null)
Item(Local ): Usage, data= [ 0x2a ] 42
(null)
Item(Local ): Usage, data= [ 0x2b ] 43
(null)
Item(Global): Report Count, data= [ 0x0c ] 12
Item(Main ): Input, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Local ): Usage, data= [ 0x21 0x26 ] 9761
(null)
Item(Global): Report Count, data= [ 0x08 ] 8
Item(Main ): Feature, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Local ): Usage, data= [ 0x21 0x26 ] 9761
(null)
Item(Main ): Output, data= [ 0x02 ] 2
Data Variable Absolute No_Wrap Linear
Preferred_State No_Null_Position Non_Volatile Bitfield
Item(Global): Logical Maximum, data= [ 0xff 0x03 ] 1023
Item(Global): Physical Maximum, data= [ 0xff 0x03 ] 1023
Item(Local ): Usage, data= [ 0x2c ] 44
(null)
Item(Local ): Usage, data= [ 0x2d ] 45
(null)
Item(Local ): Usage, data= [ 0x2e ] 46
(null)
Item(Local ): Usage, data= [ 0x2f ] 47
(null)
Item(Global): Report Size, data= [ 0x10 ] 16
Item(Global): Report Count, data= [ 0x04 ] 4
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 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 10
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 10
Device Status: 0x0000
(Bus Powered)
*UPDATED: Added descriptor*
Anything else?
Re: Hey All
Posted: Mon Aug 08, 2011 7:35 pm
by Matlo
We need the report descriptors, but they are "UNAVAILABLE".
To get them you can do the steps described there:
link.
Re: Hey All
Posted: Mon Aug 08, 2011 7:40 pm
by Joss
Sure thing, I'll get them now.
*Update*
Added to my last post in the code section.
Re: Hey All
Posted: Tue Aug 09, 2011 7:49 am
by Matlo
Code: Select all
sudo apt-get install joystick
sudo jstest /dev/input/jsX
X is the joystick number. Press tab to get auto-completion.
Then see if you get the button & axis status updates.
Let the jstest command run in its own terminal, and type in another terminal:
Write down the device and bus ids.
If bus id is 4:
Code: Select all
sudo cat /sys/kernel/debug/usb/usbmon/4u > dump.txt
Generate an event for each of the controls (buttons, axes).
Post the result of each of the commands, and attach the dump.txt file.
Re: Hey All
Posted: Tue Aug 09, 2011 4:59 pm
by Joss
sudo jstest /dev/input/js0 gives me:
Code: Select all
1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 1Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 1Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:on 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 1Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 1Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:on 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 1Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 1Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:on 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 1Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 1Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:on 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 1Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 1Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:on 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 1Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 Buttons: 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off 12:off
I can see this altering as I press the buttons. Again the whammy dial and cross fader do not alter anything but all the other buttons and turntable moving does.
See
dump.txt.
Thanks
Joss
(hope it makes sense)
Re: Hey All
Posted: Sat Aug 13, 2011 5:37 pm
by Joss
Need anymore information Matlo?
Re: Hey All
Posted: Sat Aug 13, 2011 11:23 pm
by Matlo
What you provided is probably enough to emulate a turntable.
Sadly I have many other things to work on, and it's not a priority task for me

Re: Hey All
Posted: Sun Aug 14, 2011 10:49 am
by Joss
I completely understand, well if you need anything else you know where to find me.
Re: Hey All
Posted: Sun Aug 14, 2011 4:51 pm
by McKack
Thanks for providing all that info Joss. Hopefully we'll see the ability to emulate other devices than the Sixaxis/Dualshock 3 in the future because of people like you ;)