Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Apr 2007 22:53:54 +0200
From:      Hans Petter Selasky <hselasky@c2i.net>
To:        Rasmus Kaj <kaj@kth.se>
Cc:        freebsd-multimedia@freebsd.org
Subject:   Re: New USB MIDI driver for FreeBSD
Message-ID:  <200704242253.54147.hselasky@c2i.net>
In-Reply-To: <rqcy7khlea2.fsf@kashyyyk.ite.kth.se>
References:  <200608271719.23435.hselasky@c2i.net> <rqcy7khlea2.fsf@kashyyyk.ite.kth.se>

next in thread | previous in thread | raw e-mail | index | archive | help
--Boundary-00=_i5mLGQNs3PTFM6p
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On Tuesday 24 April 2007 22:15, Rasmus Kaj wrote:
> >>>>> "HPS" == Hans Petter Selasky <hselasky@c2i.net> wrote on 2006-08-27:
>
>  HPS> During the past week I have been working on USB MIDI support for
>  HPS> FreeBSD. I choose the simplest approach, and that was to create
>  HPS> a raw/direct MIDI device.
>
> Hi!  Thanks for giving me some hope regarding MIDI on FreeBSD again!
>
>  HPS> svn --username anonsvn --password anonsvn \
>  HPS>       checkout svn://svn.turbocat.net/i4b
>
> What version of FreeBSD was this supposed to work with?  I was able to
> run it with releng_6 as of about a week ago, but not talk to my midi
> device [1], so I thought I'd try it with current.  Unfortunatley,
> there seems to have been some changes (in bus_setup_intr and
> cam_sim_alloc, possibly more) in current that this code does not
> reflect.

Currently FreeBSD 6.x stable. You can get it working with FreeBSD 7.x also, 
but you need to work a little bit then.

>
> Is there a more up-to-date version somewhere else?  Should I go back
> to releng_6 and try to insert some "magic numbers" (device id) for my
> device?  Or is (relevant parts of) this included in current by now?
> Maybe current just needs some device ids?

No, the SVN version is the latest.

>
> By the way, what does the MIDI support have in common with the ISDN
> support?

Not much, except that there are USB ISDN adapters :-)

By the way, when you go into the "FreeBSD.usb" folder you don't install any 
ISDN stuff. Also don't forget editing and running the "install_uaudio.sh".

I'm just looking forward till all of my code gets committed to FreeBSD. Then 
you don't have to worry any more.

> [1] I've got a "MIDI Mate", it is a simple gateway between a USB
> connector in one end an a single pair (in / out) of midi connectors in
> the other, that identifies as follows on FreeBSD current:

Same here, but there are some notes. When I implemented the USB MIDI support 
there was no MIDI API in the kernel, so I created my own. That means you get 
some raw devices, /dev/umidiX.X, which I have created some utilities for in 
my SVN repo.

So there might be some work to do, if you want to use your MIDI mate with 
ordinary MIDI applications.

>
> ugen0: <Ego Systems Inc XP MIDI mate, class 0/0, rev 1.10/1.01, addr
> 2> on uhub1
> Unknown USB device: vendor 0x0a92 product 0x1000 bus uhub1

Do a "svn update", make a new package, install it, and compile a new kernel.

If you use FreeBSD 7.x, then:

In /sys/dev/usb/usb_port.h, use the following:

/* preliminary fix for a bug in msleep on FreeBSD,
 * which cannot sleep with Giant:
 */
#undef msleep
#define msleep(i,m,p,w,t) _sleep(i,(((m) == &Giant) ? \
  NULL : &(m)->mtx_object),p,w,t)

After this patch you have to insert a NULL argument, to all bus_setup_intr() 
functions you find in the files /sys/dev/usb/*pci.c like shown below ?

        error = bus_setup_intr(dev, sc->sc_irq_res, INTR_TYPE_TTY,
-                              si_intr, sc, &ih);
+                              NULL, si_intr, sc, &ih);

Also please find attached the "/usr/src/sys/dev/sound/usb/uaudioxxx" 
and "/usr/src/sys/dev/sound/pcm/mixerxxx" files you need.

--HPS

--Boundary-00=_i5mLGQNs3PTFM6p--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200704242253.54147.hselasky>