Hi Alan, thanks for the fast response and useful infos. Unfortunately your patch does not work but triggered by it I made it working. The changes as as follows: First we should diverse between Audigy and X-Fi in snd_usb_apply_boot_quirk: case USB_ID(0x041e, 0x30df): /* X-Fi Surround 5.1 */ return snd_usb_sb_x_fi_boot_quirk(dev); and then additional function static int snd_usb_sb_x_fi_boot_quirk(struct usb_device *dev) { u16 buf = 1; snd_printk(KERN_ERR "X-Fi Surround 5.1 newer quirk\n"); snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), 0x2a, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_OTHER, 0, 0, &buf, 2); snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), 0x2a, USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_OTHER, 0, 0, &buf, 2); if (buf == 0) { snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev, 0), 0x29, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, 1, 2000, NULL, 0); usb_reset_device(dev); return -EAGAIN; //-ENODEV; } return 0; } about this quirk function I am not sure. I tried to follow recorded initialization process from WinXP running on virtual machine. I made it finally running but without real understanding why it should be like that. I noticed that initialization process takes a while (~2 sec.). I do not care about that. If you think there is a smarter way to do it just suggest and I will test it. The patch combining these two is as follows: =================================================================== mgrecki@mgpc:/usr/src/linux-3.9.2/sound/usb$ diff -c quirks.c.org quirks.c =================================================================== *** quirks.c.org 2013-07-20 00:06:51.246927975 +0200 --- quirks.c 2013-07-20 00:07:28.067690027 +0200 *************** *** 374,379 **** --- 374,401 ---- return 0; } + static int snd_usb_sb_x_fi_boot_quirk(struct usb_device *dev) + { + u16 buf = 1; + + snd_printk(KERN_ERR "X-Fi Surround 5.1 newer quirk\n"); + + snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), 0x2a, + USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_OTHER, + 0, 0, &buf, 2); + snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), 0x2a, + USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_OTHER, + 0, 0, &buf, 2); + if (buf == 0) { + snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev, 0), 0x29, + USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, + 1, 2000, NULL, 0); + usb_reset_device(dev); + return -EAGAIN; //-ENODEV; + } + return 0; + } + static int snd_usb_fasttrackpro_boot_quirk(struct usb_device *dev) { int err; *************** *** 733,738 **** --- 755,764 ---- /* SB Audigy 2 NX needs its own boot-up magic, too */ return snd_usb_audigy2nx_boot_quirk(dev); + case USB_ID(0x041e, 0x30df): + /* X-Fi Surround 5.1 quirk for HS operation*/ + return snd_usb_sb_x_fi_boot_quirk(dev); + case USB_ID(0x10f5, 0x0200): /* C-Media CM106 / Turtle Beach Audio Advantage Roadie */ return snd_usb_cm106_boot_quirk(dev); =================================================================== In case you would like me to perform additional tests just let me know. Many thanks for your help. That was exactly what I was looking for. Mariusz Grecki PS. I still do not understand why the card was initialized to HS without that. I really seen that once... But this is probably not important, just a curiosity... On 04.07.2013 18:26, Alan Stern wrote: > As Oliver Neukum suggested earlier, your device appears to need the > same magic message as the SoundBlaster Audigy 2 NX. This patch for > 3.10 should do it. Let me know how it works. > > Index: usb-3.10/sound/usb/quirks.c > =================================================================== > --- usb-3.10.orig/sound/usb/quirks.c > +++ usb-3.10/sound/usb/quirks.c > @@ -744,6 +744,8 @@ int snd_usb_apply_boot_quirk(struct usb_ > > case USB_ID(0x041e, 0x3020): > /* SB Audigy 2 NX needs its own boot-up magic, too */ > + case USB_ID(0x041e, 0x30df): > + /* Same for the X-Fi Surround 5.1 */ > return snd_usb_audigy2nx_boot_quirk(dev); > > case USB_ID(0x10f5, 0x0200): > -- Best regards Mariusz Grecki _____________________________________________________ | | | Dr. Mariusz Grecki | | Deutsches Elektronen-Synchrotron DESY | | Notkestraße 85, 22607 Hamburg, Geb. 3/109a | | tel.: +49 40 89985489 fax: +49 40 89983282 | | e-mail: mariusz.grecki@xxxxxxx | | pgp key: B03772F8/pool.sks-keyservers.net | |_____________________________________________________| -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html