USB Midi Keyboard doesn't create umidi device

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:

Code:
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:

Code:
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.
 
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.
 
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.
 
I've got a new keyboard and slightly different results this time:

Code:
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:

Code:
"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.
 
Back
Top