openAVproductions / openAV-Ctlra

A plain C library to program with hardware controllers.
BSD 3-Clause "New" or "Revised" License
82 stars 16 forks source link

NI Kontrol S2 Mk1 support #29

Closed Be-ing closed 7 years ago

Be-ing commented 7 years ago

I have been helping @turlando use the JS HID packet parser library in Mixxx to map the NI Kontrol S2 Mk1. @turlando reported that the USB product ID for the Mk1 is 0x1101 whereas the product ID used for the current S2 support in Ctlra is 0x1320. The existing support should be renamed to clarify that it is for the S2 Mk2, not Mk1.

harryhaaren commented 7 years ago

@Be-ing; correct on the S2 MK2, will update thanks.

On filing issues for every controller out there - unless somebody has access (or can get me access) to a device, there is little point filing an issue. 99.99% of controllers could have a "new device request" issue here without any progress..

Be-ing commented 7 years ago

@turlando, would you be interested in implementing this?

harryhaaren commented 7 years ago

As far as I understand, the MK1 is NHL (Native Hardware Language) and not plain-old USB HID. That means that unless you're planning on figuring out NHL in Mixxx's JS HID I don't see how it will work? The existing kernel module for NIs stuff exposes "linux events" for the devices - it should be possible to figure out how to grab the data using the kernel module though..

Be-ing commented 7 years ago

I thought so too, but apparently it is an HID device. @turlando has it starting to work with Mixxx's existing HID system. NI's help article just lists "S2" as class compliant without specifying Mk1 or Mk2, so I guess they both are.

harryhaaren commented 7 years ago

Ah ok - in that case, @turlando you might want to try using the latest Ctlra to see if the USB HID messages match up.. might save you a few hours / days work! Just updating the USB VID / PID in the S2mk2 driver should probably do..?

harryhaaren commented 7 years ago

Closing this until somebody has access to hardware, or can provide me with hardware access.

harryhaaren commented 5 years ago

@ronlaws86 has posted USBView info on the S2 Mk1 in the (now only) S4 Mk1 thread; https://github.com/openAVproductions/openAV-Ctlra/issues/94#issuecomment-455901841

Interface info

Interface Number: 0
    Name: snd-usb-audio
    Alternate Number: 0
    Class: 01(audio) 
    Sub Class: 01
    Protocol: 20
    Number of Endpoints: 0

Interface Number: 1
    Name: snd-usb-audio
    Alternate Number: 0
    Class: 01(audio) 
    Sub Class: 02
    Protocol: 20
    Number of Endpoints: 0

Interface Number: 1
    Name: snd-usb-audio
    Alternate Number: 1
    Class: 01(audio) 
    Sub Class: 02
    Protocol: 20
    Number of Endpoints: 2

        Endpoint Address: 01
        Direction: out
        Attribute: 5
        Type: Isoc
        Max Packet Size: 240
        Interval: 125us

        Endpoint Address: 81
        Direction: in
        Attribute: 17
        Type: Isoc
        Max Packet Size: 4
        Interval: 1ms

Interface Number: 2
    Name: (none)
    Alternate Number: 0
    Class: fe(app. ) 
    Sub Class: 01
    Protocol: 01
    Number of Endpoints: 0

Interface Number: 3
    Name: usbhid
    Alternate Number: 0
    Class: 03(HID  ) 
    Sub Class: 00
    Protocol: 00
    Number of Endpoints: 2

        Endpoint Address: 82
        Direction: in
        Attribute: 3
        Type: Int.
        Max Packet Size: 64
        Interval: 125us

        Endpoint Address: 02
        Direction: out
        Attribute: 3
        Type: Int.
        Max Packet Size: 64
        Interval: 125us