Re: [alsa-devel] [Alsa-user] snd-usb-caiaq (NI Maschine Mikro) device not recognised by alsa
ow, sorry! I not mentioned that there is no PID of Maschine Mikro (0x1110) in caiaq device list *https://github.com/torvalds/linux/blob/v4.2/sound/usb/caiaq/device.h https://github.com/torvalds/linux/blob/v4.2/sound/usb/caiaq/device.h*
yes there is some endless dump from usbhid but I don't know how to deal with it $sudo usbhid-dump --entity=all --address=1:15 http://pastebin.com/raw.php?i=KC96ERSV (300KiB)
ok, I've tried to extend the driver and end up with following doodad https://github.com/krasnobaev/linux/commits/feature/caiaq-mmikro-1 for every commit I've generated dmesg log *http://pastebin.com/raw.php?i=pJzdAyf4 http://pastebin.com/raw.php?i=pJzdAyf4* $amidi -l have no devices $cat /proc/asound/cards 4 [MaschineMikro ]: snd-usb-caiaq - Maschine Mikro Native Instruments Maschine Mikro (usb-0000:00:02.1-8) $cat /proc/asound/devices 24: [ 4] : control $cat /proc/asound/oss/sndstat Sound Driver:3.8.1a-980706 (ALSA emulation code) Kernel: Linux ***** 3.19.0+ #1 SMP Sun Sep 13 10:44:23 MSK 2015 x86_64 Config options: 0
Installed drivers: Type 10: ALSA emulation
Card config: X-Fi Extreme Audio [SB0790] at 0xdc00 irq 18 HDA NVidia at 0xfcf7c000 irq 19 Aureal Vortex au8810 at 0xfbfc0000 irq 17 Webcam C170 at usb-0000:00:02.1-4, high speed Native Instruments Maschine Mikro (usb-0000:00:02.1-8)
Audio devices: 0: CA0106 (DUPLEX) 2: au8810 adb (DUPLEX) 3: USB Audio
Synth devices: NOT ENABLED IN CONFIG
Midi devices: 0: CA0106 MPU-401 (UART) 2: au8810 MIDI 2
Timers: 31: system timer
Mixers: 0: CA0106 1: Nvidia GPU 1c HDMI/DP 2: Wolfson WM9701,WM9701A 3: USB Mixer 4: Maschine Mikro $cat /proc/asound/oss/devices 64: [4- 0]: mixer
So, currently customized driver fails (all info in dmesg log) on every usb_submit_urb and usb_set_interface functions, so I've decided to watch wireshark usb logs of windows driver
filtered windows log (usb.transfer_type != 0x01) && (usb.device_address == 3) http://filebin.ca/2G6kerv8x9TD/usbpcap-maschine-mikro-win7-x86-3maschinesoft... RAW http://filebin.ca/2G6g6civjKfI/usbpcap-maschine-mikro-win7-x86-3maschinesoft...
filtered log for custom driver http://filebin.ca/2G6kFZxgTTKR/usbpcap-maschine-mikro-ubuntu15.04-linux3.19-... RAW http://filebin.ca/2G6oNuU6c6b5/usbpcap-maschine-mikro-ubuntu15.04-linux3.19-...
the difference is... - windows driver do not send SET INTERFACE request while native caiaq driver is. - windows driver receives Response and Status on each request while caiaq recieves only Response - windows driver send two GET_REPORT with wValues: 0x03f8 and 0x0101 while caiaq driver sends three GET_REPORT requests with wValues: 0x0101, 0x0120, 0x03f8 - windows send 3 SET_REPORT requests with same wValue 0x03f8 while caiaq driver do not send any SET_REPORT request
I do not know what means these wValues (0x0101, 0x0120, 0x03f8) and how to find out.
Is there probability if linux driver send SET_REPORT requests in the same way as do windows driver - the device will set up correctly? How to send SET REPORT request?
I believe that there is no big difference between Maschine Controller and Maschine Mikro. BUT there is no Maschine Mikro on caiaq portfolio http://caiaq.de/references_en.html
On Sun, Sep 6, 2015 at 8:02 PM, Clemens Ladisch cladisch@googlemail.com wrote:
sypwex wrote:
Native Instruments Mashine Mikro which is snd-usb-caiaq.
No it's not; the Maschine Mikro is not the same as the Maschine Controller.
As far as I can see from your lsusb output, the Mikro either works as a HID input device, or needs a separate driver. To check the first possibility, try a tool like https://github.com/DIGImend/usbhid-dump.
Regards, Clemens
Cheers.
On 09/19/2015 11:20 AM, sypwex wrote:
ow, sorry! I not mentioned that there is no PID of Maschine Mikro (0x1110) in caiaq device list _https://github.com/torvalds/linux/blob/v4.2/sound/usb/caiaq/device.h_
yes there is some endless dump from usbhid but I don't know how to deal with it $sudo usbhid-dump --entity=all --address=1:15 http://pastebin.com/raw.php?i=KC96ERSV (300KiB)
ok, I've tried to extend the driver and end up with following doodad https://github.com/krasnobaev/linux/commits/feature/caiaq-mmikro-1 for every commit I've generated dmesg log _http://pastebin.com/raw.php?i=pJzdAyf4_
Maschine Mikro is a class compliant USB device which implements a completely different protocol compared to the old devices. The snd-usb-caiaq driver is unsuitable of handling and of the details exposed by device, so this approach is definitely a dead end.
What does 'lsusb -v' show when you plug in the device?
Thanks, Daniel
Thanks for the reply!
What does 'lsusb -v' show when you plug in the device?
the exactly `lsusb -v` out is here http://pastebin.com/raw.php?i=trmwPjGF
information only about 17cc:1110 (`sudo lsusb -D /dev/bus/usb/001/010`):
Device: ID 17cc:1110 Native Instruments Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x17cc Native Instruments idProduct 0x1110 bcdDevice 0.37 iManufacturer 1 Native Instruments iProduct 2 Maschine Mikro iSerial 6 677AC139 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 57 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 450mA 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 4 Maschine Mikro HID HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.10 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 367 Report Descriptors: ** UNAVAILABLE ** 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 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 4 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 254 Application Specific Interface bInterfaceSubClass 1 Device Firmware Update bInterfaceProtocol 1 iInterface 5 Maschine Mikro DFU Device Firmware Upgrade Interface Descriptor: bLength 7 bDescriptorType 33 bmAttributes 7 Will Not Detach Manifestation Tolerant Upload Supported Download Supported wDetachTimeout 250 milliseconds wTransferSize 64 bytes Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 bNumConfigurations 1 Device Status: 0x0000 (Bus Powered)
On 09/21/2015 10:10 PM, sypwex wrote:
Thanks for the reply!
What does 'lsusb -v' show when you plug in the device?
the exactly `lsusb -v` out is here http://pastebin.com/raw.php?i=trmwPjGF
information only about 17cc:1110 (`sudo lsusb -D /dev/bus/usb/001/010`):
Device: ID 17cc:1110 Native Instruments Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x17cc Native Instruments idProduct 0x1110 bcdDevice 0.37 iManufacturer 1 Native Instruments iProduct 2 Maschine Mikro iSerial 6 677AC139 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 57 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 450mA 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 4 Maschine Mikro HID
Yes, this device only offers HID and DFU (for firmware updates), so you'll have to parse the HID data it produces. Use the hidraw interface to get to the uncached information. Whether you can use an existing tool to do that depends on what you want to achieve with this device.
In either case, there is no hardware MIDI port on this device, so the firmware doesn't offer that as class compliant interface. NI's own software stack might offer that, but that's a pure virtual MIDI device then.
HTH, Daniel
On Tue, Sep 22, 2015 at 2:17 PM, Daniel Mack daniel@zonque.org wrote:
Yes, this device only offers HID and DFU (for firmware updates), so you'll have to parse the HID data it produces.
Ok, but device looks like powered off - no flashes on tap and LED display is blank. When I firstly attach USB cable all buttons flashes but then it looks like switched off.
On windows when I plug in the device, LED display offers to start up in MIDI mode (SHIFT+F1) - is it controlled by driver or this is behavior of firmware?
Thanks, Aleksey.
On 09/22/2015 09:03 PM, sypwex wrote:
On Tue, Sep 22, 2015 at 2:17 PM, Daniel Mack daniel@zonque.org wrote:
Yes, this device only offers HID and DFU (for firmware updates), so you'll have to parse the HID data it produces.
Ok, but device looks like powered off - no flashes on tap and LED display is blank. When I firstly attach USB cable all buttons flashes but then it looks like switched off.
Everything from that point on is under control of the host software.
On windows when I plug in the device, LED display offers to start up in MIDI mode (SHIFT+F1) - is it controlled by driver or this is behavior of firmware?
I've personally never used this device, so I can't tell you what they do. You need to sniff the USB traffic the Windows software issues to the device and find out which HID controls they touch in order to set LEDs and issue display commands. IOW: you need to re-engineer the HID mapping. That's tedious, but doable.
HTH, Daniel
On Wed, Sep 23, 2015 at 9:44 AM, Daniel Mack daniel@zonque.org wrote:
On 09/22/2015 09:03 PM, sypwex wrote:
On Tue, Sep 22, 2015 at 2:17 PM, Daniel Mack daniel@zonque.org wrote:
Yes, this device only offers HID and DFU (for firmware updates), so you'll have to parse the HID data it produces.
Ok, but device looks like powered off - no flashes on tap and LED display is blank. When I firstly attach USB cable all buttons flashes but then it looks like switched off.
Everything from that point on is under control of the host software.
On windows when I plug in the device, LED display offers to start up in MIDI mode (SHIFT+F1) - is it controlled by driver or this is behavior of firmware?
I've personally never used this device, so I can't tell you what they do. You need to sniff the USB traffic the Windows software issues to the device and find out which HID controls they touch in order to set LEDs and issue display commands. IOW: you need to re-engineer the HID mapping. That's tedious, but doable.
HTH, Daniel
Thanks Daniel!
Looks like I got the idea. I'll try it next week.
Cheers!
participants (2)
-
Daniel Mack
-
sypwex