USB composite midi keyboard not detected despite port remaping

Questions about Wine on Linux
Locked
Cillvann
Newbie
Newbie
Posts: 1
Joined: Wed Jun 29, 2022 8:25 am

USB composite midi keyboard not detected despite port remaping

Post by Cillvann »

Hi all,

I need to access to a audio midi keyboard (M-audio Code49) connected via USB, in wine. The program .exe that I use is preset editor that send or retrieve presets stored in the keyboard controler.
Available here : https://m-audio.com/support/download/so ... dows-1.0.6

I've tried to add string key in using

Code: Select all

regedit
command, and mapping manually the ports, as advised in the wine user guide,
https://wiki.winehq.org/Wine_User%27s_G ... llel_Ports

Here are the steps I followed so far ( currently run Wine 7, stable.)

First, I connect my controller, turn it on, and then use this simple script to list the usb currently connected and print the corresponding serial ID.

Code: Select all

#!/bin/bash
for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev); do
    (
        syspath="${sysdevpath%/dev}"
        devname="$(udevadm info -q name -p $syspath)"
        [[ "$devname" == "bus/"* ]] && exit
        eval "$(udevadm info -q property --export -p $syspath)"
        [[ -z "$ID_SERIAL" ]] && exit
        echo "/dev/$devname - $ID_SERIAL"
    )
done
the results are

Code: Select all

/dev/sdb - _USB_DISK_3.2_07001A60B1A20F76-0:0
/dev/sdb1 - _USB_DISK_3.2_07001A60B1A20F76-0:0
/dev/sda - _USB_DISK_3.2_07001AE54BA30234-0:0
/dev/input/event9 - M-Audio_Code_49_Ver00.10
/dev/input/event8 - M-Audio_Code_49_Ver00.10
/dev/input/mouse3 - M-Audio_Code_49_Ver00.10
/dev/snd/controlC1 - M-Audio_Code_49_Ver00.10
So I'm interested in the four last entries, which correspond to the the midi-usb controler.
Note : It is a composite usb device (one cable, but recognize four distinct devices).


I then list the dos device mapping for wine, using the command

Code: Select all

ls -l .wine/dosdevices

Code: Select all

lrwxrwxrwx 1 sly sly 10 Jun 29 01:09 c: -> ../drive_c
lrwxrwxrwx 1 sly sly 10 Jun 29 15:47 com1 -> /dev/ttyS0
lrwxrwxrwx 1 sly sly 10 Jun 29 15:47 com10 -> /dev/ttyS9
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com11 -> /dev/ttyS10
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com12 -> /dev/ttyS11
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com13 -> /dev/ttyS12
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com14 -> /dev/ttyS13
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com15 -> /dev/ttyS14
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com16 -> /dev/ttyS15
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com17 -> /dev/ttyS16
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com18 -> /dev/ttyS17
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com19 -> /dev/ttyS18
lrwxrwxrwx 1 sly sly 10 Jun 29 15:47 com2 -> /dev/ttyS1
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com20 -> /dev/ttyS19
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com21 -> /dev/ttyS20
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com22 -> /dev/ttyS21
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com23 -> /dev/ttyS22
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com24 -> /dev/ttyS23
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com25 -> /dev/ttyS24
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com26 -> /dev/ttyS25
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com27 -> /dev/ttyS26
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com28 -> /dev/ttyS27
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com29 -> /dev/ttyS28
lrwxrwxrwx 1 sly sly 10 Jun 29 15:47 com3 -> /dev/ttyS2
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com30 -> /dev/ttyS29
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com31 -> /dev/ttyS30
lrwxrwxrwx 1 sly sly 11 Jun 29 15:47 com32 -> /dev/ttyS31
lrwxrwxrwx 1 sly sly 11 Jun 29 15:18 com33 -> /dev/ttyS28
lrwxrwxrwx 1 sly sly 11 Jun 29 15:18 com34 -> /dev/ttyS29
lrwxrwxrwx 1 sly sly 11 Jun 29 15:18 com35 -> /dev/ttyS30
lrwxrwxrwx 1 sly sly 11 Jun 29 15:18 com36 -> /dev/ttyS31
lrwxrwxrwx 1 sly sly 10 Jun 29 15:47 com4 -> /dev/ttyS3
lrwxrwxrwx 1 sly sly 10 Jun 29 15:47 com5 -> /dev/ttyS4
lrwxrwxrwx 1 sly sly 10 Jun 29 15:47 com6 -> /dev/ttyS5
lrwxrwxrwx 1 sly sly 10 Jun 29 15:47 com7 -> /dev/ttyS6
lrwxrwxrwx 1 sly sly 10 Jun 29 15:47 com8 -> /dev/ttyS7
lrwxrwxrwx 1 sly sly 10 Jun 29 15:47 com9 -> /dev/ttyS8
lrwxrwxrwx 1 sly sly  8 Jun 29 01:09 d:: -> /dev/sdb
lrwxrwxrwx 1 sly sly 16 Jun 29 15:47 e: -> /media/sly/deneb
lrwxrwxrwx 1 sly sly  8 Jun 29 01:09 e:: -> /dev/sda
lrwxrwxrwx 1 sly sly 16 Jun 29 15:47 f: -> /media/sly/orion
lrwxrwxrwx 1 sly sly  9 Jun 29 01:09 f:: -> /dev/sdb1
lrwxrwxrwx 1 sly sly  1 Jun 29 01:09 z: -> /

SInce the midi keyboard controller does not seems to be there (I don't see any correspondance with the previous outputs), I then use

Code: Select all

regedit
command, and add four string entries in HKEY_LOCAL_MACHINE/Software/Wine/Ports

NAME - Type - Data

COM1 - REG_SZ - /dev/input/event8
COM2 - REG_SZ - /dev/input/event9
COM3 - REG_SZ - /dev/input/mouse3
COM4 - REG_SZ - /dev/snd/controlC1


But without sucess. The preset editor.exe does not detect the midi controller.

Some additional informations:
- The midi keyboard works well with linux app.
- I installed a virtual piano midi keyboard .exe via wine, like this one : https://vmpk.sourceforge.io/
The application detects the midi keyboard, and I didn't even had to remap the USB using

Code: Select all

regedit
!
So, I suspect that the preset editor.exe do not use the same usb entry than a standard virtual piano applications.

I don't really know where to look now, any help or idea are welcome :)

Best
Locked