Hi tech,

I had some success using Yamaha/Steinberg UR22 usb audio
interface box on OpenBSD/i386 6.0.
I heard that Linux supports the device but I never tested it under Linux.
I spent AUD $150 on the device last year and wondered if it could ever
be used with OpenBSD aucat(1).

The USB-quirks patch (below) allows UR22 to attach as uaudio device.
Patch was originally built against current kernel checked out a few days ago.
I've re-applied it against uaudio.c r1.115.
Regenerating usbdevs.h/usbdevs_data.h isn't included in patch.

I also own Creative Soundblaster X-Fi usb soundcard;
this worked on OpenBSD for some time but I wouldn't use it for recording.

Configuration:
* Test PC is "bios0: Compaq-Presario KJ335AA-ABG SR5490AN"
* UR22 audio input 1 connected to AKG P120 microphone via XLR cable
* UR22 audio input 2 connected to electric guitar via instrument cable
* Hi-Z toggle is enabled for input 2 on front panel
* +48V "phantom power" toggle is enabled for input 1 on back panel
* UR22 is attached directly to PC via USB cable (no intermediate hubs)
* label on front panel says "24-bit / 192 kHz"
* white "status" LED on front panel is solid (stops flashing when uaudio 
attaches)
* no speakers attached to line output (L/R) on back panel
* i am listening to audio playback via headphone jack on front panel
* headphone jack is also used for monitoring audio inputs 1 & 2

Simple playback:
* "aucat -i stereo48khz.wav" plays file ok

Stereo record (default encoding of s16):
* aucat -r $RATE -o test.wav
...with the following rates: 44100 48000 64000 96000 112000 192000
* all recorded files play back ok

Stereo record (different encoding):
* i'm fairly sure i have recorded in 24-bit mode under M$ Windows 8
* aucat -r 44100 -e s24le3 -o test.wav # caused segmentation fault
* also tried aucat with "-h raw" but it still dies
* audioctl reports encoding=s24le3 so i am confused
* i need to compile non-stripped aucat to see more

Other tests performed:
* Two concurrent instances of aucat; one recording, one playing
* Two concurrent instances of aucat; both playing
* One instance of aucat (record+play): aucat -r 96000 -i in.wav -o out.wav
* One instance of aucat (play+play): aucat -i in.wav -i out.wav

TODO:
* re-test on another PC, and on amd64
* determine why aucat segfaults for 24bit encodings (above)
* test umidi with this device (attaches successfully on unmodified 6.0 kernel)
* phone grandmother with voip/sip software and play guitar down the line?

- Michael


Index: uaudio.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/uaudio.c,v
retrieving revision 1.115
diff -u -r1.115 uaudio.c
--- uaudio.c    19 Sep 2016 06:46:44 -0000      1.115
+++ uaudio.c    22 Sep 2016 01:13:04 -0000
@@ -177,6 +177,8 @@
        struct usb_devno         uv_dev;
        int                      flags;
 } uaudio_devs[] = {
+       { { USB_VENDOR_YAMAHA, USB_PRODUCT_YAMAHA_UR22 },
+               UAUDIO_FLAG_VENDOR_CLASS },
        { { USB_VENDOR_ALTEC, USB_PRODUCT_ALTEC_ADA70 },
                UAUDIO_FLAG_BAD_ADC } ,
        { { USB_VENDOR_ALTEC, USB_PRODUCT_ALTEC_ASC495 },
Index: usbdevs
===================================================================
RCS file: /cvs/src/sys/dev/usb/usbdevs,v
retrieving revision 1.669
diff -u -r1.669 usbdevs
--- usbdevs     21 Sep 2016 08:55:21 -0000      1.669
+++ usbdevs     22 Sep 2016 01:13:05 -0000
@@ -4443,6 +4443,7 @@
 product YEDATA FLASHBUSTERU    0x0000  Flashbuster-U
 
 /* Yamaha products */
+product YAMAHA UR22            0x1509  UR22
 product YAMAHA UX256           0x1000  UX256 MIDI I/F
 product        YAMAHA UX96             0x1008  UX96 MIDI I/F
 product YAMAHA RPU200          0x3104  RP-U200

Reply via email to