# USB Midi Keyboard doesn't create umidi device



## neal (May 12, 2015)

Hi.

I'm trying to connect a class compliant USB MIDI device to FreeBSD 10.1, and from what I understand if I have snd_uaudio loaded it should create a umidi device for me, which I can then use Jack_umidi to capture input from.

When I connect the keyboard I get the following:


```
May 12 12:21:19 bollo2 kernel: ugen0.8: <Hua Xing> at usbus0
May 12 12:21:19 bollo2 kernel: uaudio0: <Hua Xing Hua Xing, class 0/0, rev 1.00/1.00, addr 10> on usbus0
May 12 12:21:19 bollo2 kernel: uaudio0: No playback.
May 12 12:21:19 bollo2 kernel: uaudio0: No recording.
May 12 12:21:19 bollo2 kernel: device_attach: uaudio0 attach returned 6
```

A `usbconfig dump_device_desc` gives me the following:


```
ugen0.8: <Hua Xing Hua Xing> at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0100
  bDeviceClass = 0x0000
  bDeviceSubClass = 0x0000
  bDeviceProtocol = 0x0000
  bMaxPacketSize0 = 0x0008
  idVendor = 0x2702
  idProduct = 0x2702
  bcdDevice = 0x0100
  iManufacturer = 0x0001  <Hua Xing>
  iProduct = 0x0002  <Hua Xing>
  iSerialNumber = 0x0000  <no string>
  bNumConfigurations = 0x0001
```

There appears to be no corresponding umidi device, so it looks like snd_uaudio isn't recognising the device properly somehow. It works perfectly on Mac OS X, so I suspect that the keyboard is fine.

If anyone has any ideas on how to get this to work, I'd be very grateful.


----------



## SirDice (May 12, 2015)

There's barely any MIDI support in FreeBSD. The MIDI that's supported by snd_uaudio(4) is MIDI audio, i.e. it can produce audio from MIDI. Even the venerable MPU401 is barely working.


----------



## neal (May 21, 2015)

Ah, that explains things. Being new to MIDI I assumed it was just a control protocol, not a transport protocol as well. The documentation is somewhat vague, but being a sound driver it does make sense.

Maybe this is an opportunity for me to get into some driver development, but alas I have no idea where to start.


----------



## tingo (May 22, 2015)

There is the audio/midipp port at least.
Some more info here:
http://www.selasky.org/hans_petter/midistudio/


----------



## neal (Aug 12, 2015)

I've got a new keyboard and slightly different results this time:


```
Aug 12 18:40:26 bollo2 kernel: ugen0.7: <YAMAHA Corporation> at usbus0
Aug 12 18:40:26 bollo2 kernel: uaudio0: <YAMAHA Corporation Digital Keyboard, class 0/0, rev 2.00/1.00, addr 10> on usbus0
Aug 12 18:40:26 bollo2 kernel: uaudio0: No playback.
Aug 12 18:40:26 bollo2 kernel: uaudio0: No recording.
Aug 12 18:40:26 bollo2 kernel: uaudio0: MIDI sequencer.
Aug 12 18:40:26 bollo2 kernel: uaudio0: No HID volume keys found.
```

This is recognised far better than my previous MIDI keyboard, so I can only assume that the driver is not recognising the other one properly. Is there a way to add it in, as it's really just a class compliant MIDI keyboard.

Now, the snd_uaudio(4) driver recognises the keyboard, which is nice, but I can't get audio/jack_umidi to use it. I get the following:


```
"YAMAHA Corporation Digital Keyboard #0" is too long to be used as a JACK client name.
Please use 33 characters or less.
jack_umidi: Could not connect to the JACK server. Run jackd first?
```

There doesn't seem to be a way to change the jack client name that I can see unfortunately. Also jackd is running as audio/qsynth happily connects to it, so there seem to be a few issues with this.


----------

