Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Hang/reboot with -current and umidi on i386



Hi all,

I'm trying to get a couple of USB MIDI interfaces to work on a very
current (Jan 24) -current i386, and running into problems.

The interfaces are Roland UM-ONE (not to be confused with the old UM-1),
and support for them is not present in /sys/dev/usb in -current.  I
added it myself, in a straightforward manner (patch appended below),
after having seen a couple of Linux discussion threads that concluded
with a configuration equivalent to that for the old UM-1 actually
working for this new interface.

Thus, I get:

NetBSD 5.99.60 (ATHENE) #7: Thu Jan 26 11:07:55 CET 2012
[...]
umidi0 at uhub4 port 1 configuration 1 interface 0
umidi0: Roland UM-ONE, rev 1.10/1.00, addr 2
umidi0: (Fixed Endpoint)
umidi0: out=1, in=1
midi1 at umidi0: <0 >0 on umidi0
umidi1 at uhub4 port 2 configuration 1 interface 0
umidi1: Roland UM-ONE, rev 1.10/1.00, addr 3
umidi1: (Fixed Endpoint)
umidi1: out=1, in=1
midi2 at umidi1: <0 >0 on umidi1

% midiplay -l
0: PC speaker
1: <0 >0 on umidi0
2: <0 >0 on umidi1

If I attach a synth to the second interface, and do

% midiplay -d 2 -x

the sample tune plays as it should.

The problem is reading from the MIDI device.  If I simply

% cat < /dev/rmidi2 > /dev/null

then the system immediately hangs (with the cursor still at the end of
the command line).  At this point, the box will respond to ICMP ECHO
from other systems, but will not give access to any services over the
net.  The mouse pointer does not move.  After a pause of somewhere
between 5 seconds and half a minute (this varies), the machine reboots.

Any hints as to where to start looking for the problem?

-tih

Patch applied to get Roland UM-ONE working:

Index: sys/dev/usb/umidi_quirks.c
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/umidi_quirks.c,v
retrieving revision 1.16
diff -u -r1.16 umidi_quirks.c
--- sys/dev/usb/umidi_quirks.c  8 Jul 2008 11:34:43 -0000       1.16
+++ sys/dev/usb/umidi_quirks.c  26 Jan 2012 14:25:44 -0000
@@ -515,6 +515,22 @@
 };
 
 /*
+ * ROLAND UM-ONE
+ */
+UMQ_FIXED_EP_DATA_DEF(ROLAND, ROLAND_UMONE, ANYIFACE, 1, 1) = {
+       /* out */
+       { 0, 1 },
+       /* in */
+       { 1, 1 }
+};
+UMQ_FIXED_EP_DEF(ROLAND, ROLAND_UMONE, ANYIFACE, 1, 1);
+
+UMQ_DEF(ROLAND, ROLAND_UMONE, ANYIFACE) = {
+       UMQ_FIXED_EP_REG(ROLAND, ROLAND_UMONE, ANYIFACE),
+       UMQ_TERMINATOR
+};
+
+/*
  * Midiman Midisport 2x4. This has 2 physical MIDI IN jacks that are read
  * on endpoint 0x81 (descriptor index 0). It has 4 physical MIDI OUT jacks
  * that can be written on endpoints 2 or 4 (at descriptor index 2 or 4,
@@ -587,6 +603,7 @@
        UMQ_REG(ROLAND, ROLAND_UA25, 2),
        UMQ_REG(ROLAND, ROLAND_UA4FX, 2),
        UMQ_REG(ROLAND, ROLAND_SONICCELL, 2),
+       UMQ_REG(ROLAND, ROLAND_UMONE, ANYIFACE),
        UMQ_REG(MIDIMAN, MIDIMAN_MIDISPORT2X4, ANYIFACE),
        { .vendor = 0 },
 };
Index: sys/dev/usb/usbdevs
===================================================================
RCS file: /cvsroot/src/sys/dev/usb/usbdevs,v
retrieving revision 1.606
diff -u -r1.606 usbdevs
--- sys/dev/usb/usbdevs 21 Jan 2012 12:50:28 -0000      1.606
+++ sys/dev/usb/usbdevs 26 Jan 2012 14:25:45 -0000
@@ -2414,6 +2414,7 @@
 product ROLAND UM3             0x009A  EDIROL UM-3
 product ROLAND UA4FX           0x00A3  EDIROL UA-4FX
 product ROLAND SONICCELL       0x00C2  SonicCell
+product ROLAND UMONE           0x012a  UM-ONE MIDI I/F
 
 /* Sagem products */
 product SAGEM XG760A           0x004a  XG-760A


-- 
"The market" is a bunch of 28-year-olds who don't know anything. --Paul Krugman


Home | Main Index | Thread Index | Old Index