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:

Code: Select all

lsusb
You have to guess what's the usb device corresponding to your turntable.

Then type the following command:

Code: Select all

sudo lsusb -v -s [bus]:[devnum]
For ex if your turntable is device 2 on bus 4:

Code: Select all

sudo lsusb -v -s 4:2

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:

Code: Select all

lsusb
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 ;)