Re: USB sound card device complains about "error -28: not enough bandwidth" only on specific PC hardware, seems not kernel specific

2012-08-24 Thread David Ranch


[re-send dropping the HTML format to work around VGER's silly 
plain-text-only rule]



Hello Alan,

First off, thanks for the response and sorry for the delay here.. very 
busy here!



The problem is caused by the ehci-hcd driver's not-so-great support 
for scheduling periodic transfers to full-speed devices. That's why 
the HP and Dell systems have no trouble but your Gateway laptop can't 
handle it. 


There are various reports that the Windows driver has an option to FORCE 
this X-Fi device to use USB high speed which solves some specific sound 
quality issues, etc. but I have not seen anything about needing that 
switch to support 96khz at.  There was a similar trick done on the 
Audigy2 NX card and I'd be willing to try some code that could force the 
device to high speed that but it's unclear what's needed for the X-Fi card.


   Audigy 2 NX required a hack to go into highspeed mode
http://comments.gmane.org/gmane.linux.usb.general/20816


I've also researched around where some people recommended to remove the 
EHCI module to use the OHCI but that doesn't seem to work on this 
specific laptop's chipset.



To be clear, I'm ONLY looking to record two channel (stereo) from this 
sound card's line-in.  I'm more than happy to disable any playback, etc. 
if that might allow this USB device to stay under the Full speed 
bandwidth limit



You can provide some more details: The output from "lsusb -v" for the 
sound card, and a usbmon trace showing the RECORD failure (see 
Documentation/usb/usbmon.txt for instructions). 


Absolutely.  Please see here:

http://www.trinityos.com/SCRATCH/

--David

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: USB sound card device complains about "error -28: not enough bandwidth" only on specific PC hardware, seems not kernel specific

2012-08-24 Thread David Ranch


Hello Alan,

Going to high speed would undoubtedly fix your problem, but we can't 
do it if we don't know how. Is there any way for you to use your 
device with Windows, force it to high speed, and record the USB 
commands that Windows uses to do this? 
Sure.. I can put it on the Windows machine and try to record the USB 
commands but I need some guidance (HOWTO, documentation, etc) of what 
software I need to do this.




The usbmon trace showed there was audio-out data being sent at the time
the first error occurred during the initial connection.  But there
wasn't any audio-out during the second error, so it's not the cause.
I have no idea why there would be audio going out that device once 
connected.  The laptop's internal sound card is the default sound 
device.  Maybe a minor initialization bug?  I do know that with the 
3.4.4 kernels, I wouldn't see that initial "not enough bandwidth" error 
upon connecting it.  Regardless, when I would try the 96Khz recording 
with the 3.4.4 kernel, I'd still get the error.



Which kernel version were you using when you recorded these? 


That was with a Centos6 kernel:  2.6.32-220.7.1.el6.ax25.x86_64 #1 SMP 
Sun Mar 18 15:51:48 PDT 2012 x86_64 x86_64 x86_64 GNU/Linux


As I mentioned above, I also have a Vanilla 3.4.4 kernel that I can use 
though the USB behavior is basically the same.


--David




Alan Stern -- To unsubscribe from this list: send the line 
"unsubscribe linux-usb" in the body of a message to 
majord...@vger.kernel.org More majordomo info at 
http://vger.kernel.org/majordomo-info.html 

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: USB sound card device complains about "error -28: not enough bandwidth" only on specific PC hardware, seems not kernel specific

2012-08-24 Thread David Ranch



It depends on what version of Windows you're running.  There are
programs freely available, but I don't have a list.  Try doing a web
search for: USB snoop windows.


Ok.. will do.  I'm finding tools like the following.  Recognize any of them?

SniffUSB 2.0 - XP only  - Seems free - 
http://www.pcausa.com/Utilities/UsbSnoop/

USBlyzer   - various windows - $200! ouch - http://www.usblyzer.com/

Curious, will doing this snooping on a *different computer* be 
acceptable?  This Gateway laptop only has Linux on it and though I could 
get a new SATA disk for it, doing the requested USB sniff capture to 
enable the High Speed "poke" on a different box would be far easier.  
I'm thinking of doing this on a Windows XP box.




Can you run the same test with the 3.4.4 kernel?

In fact, can you build your own kernel with CONFIG_USB_DEBUG enabled?


Sure.. if you want, I can do it with a newer kernel if you'd like.. 
3.5.x?  Let me know and I'll start compiling it.


--David
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: USB sound card device complains about "error -28: not enough bandwidth" only on specific PC hardware, seems not kernel specific

2012-08-25 Thread David Ranch


Hello Alan,

Ok... I've uploaded the DEBUG enabled 3.5.2 kernel logs as requested and 
I'm working on getting the USB snooping going on the old Athlon 1.1Ghz 
Windows XP machine (yuk!).


   http://www.trinityos.com/SCRATCH/


Regardless of getting this possible high-speed hack working, could you 
explain a bit by what you meant by:


   "The problem is caused by the ehci-hcd driver's not-so-great support 
for scheduling periodic transfers to full-speed devices. That's why the 
HP and Dell systems have no trouble but your Gateway laptop can't handle 
it. "


To me if I'm doing the math right, 2 (two stereo channels) * 24 (bit) * 
96,000 (sampling) == 4.6Mb/s which is only a third of the USB port's 
speed when even running in FULL speed mode!  Why would it be complaining 
when there isn't anything else on this bus?   What are the chances 
when/if this EHCI driver will get some fixes for this issue?



Btw, this might be helpful but the "quisk" program I'm using has a 
portaudio (not PulseAudio) script to show devices and their abilities.   
The onboard soundcard works all the way up to 192Khz but it's horribly 
noisy and ironically, it's lowpass/highpass filtering seems to only 
support ~70Khz worth of bandwidth though the chip can do far better!  
Lame.  Guess that's what one gets for a $400 laptop these days.


$ python portaudio.py
ALSA lib pcm.c:2209:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2209:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2209:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
Open 0
Version 1899
Version Text PortAudio V19-devel (built Jan 17 2012 04:03:50)
NumDev 12
Device  0, host api ALSA
Name HDA Intel PCH: ALC269VB Analog (hw:0,0)
Max inputs 2,  Max outputs 2
Speeds for 2-channel paInt32:   44100   48000   96000   192000
Device  1, host api ALSA
Name HDA Intel PCH: HDMI 0 (hw:0,3)
Max inputs 0,  Max outputs 8
Speeds for 2-channel paInt32:   44100   48000   96000   192000
Device  2, host api ALSA
Name SB X-Fi Surround 5.1 Pro: USB Audio (hw:1,0)
Max inputs 2,  Max outputs 6
Speeds for 2-channel paInt32:   48000   96000
Device  3, host api ALSA
Name SB X-Fi Surround 5.1 Pro: USB Audio #1 (hw:1,1)
Max inputs 0,  Max outputs 2
Speeds for 2-channel paInt32:   44100   48000
Device  4, host api ALSA
Name front
Max inputs 0,  Max outputs 2
Speeds for 2-channel paInt32:   44100   48000   96000   192000
Device  5, host api ALSA
Name surround40
Max inputs 0,  Max outputs 2
Speeds for 2-channel paInt32:   44100   48000   96000   192000
Device  6, host api ALSA
Name surround51
Max inputs 0,  Max outputs 2
Speeds for 2-channel paInt32:   44100   48000   96000   192000
Device  7, host api ALSA
Name surround71
Max inputs 0,  Max outputs 2
Speeds for 2-channel paInt32:   44100   48000   96000   192000
Device  8, host api ALSA
Name hdmi
Max inputs 0,  Max outputs 8
Speeds for 2-channel paInt32:   44100   48000   96000   192000
Device  9, host api ALSA
Name pulse
Max inputs 32,  Max outputs 32
Speeds for 2-channel paInt32:   44100   48000   96000   192000
Device 10, host api ALSA
Name dmix
Max inputs 0,  Max outputs 2

 lots of the following:
ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
Expression 'ret' failed in 'src/hostapi/alsa/pa_linux_alsa.c', line: 1669
Expression 'AlsaOpen( hostApi, parameters, streamDir, &pcm )' failed in 
'src/hostapi/alsa/pa_linux_alsa.c', line: 1701


... and then
Speeds for 2-channel paInt32:
Device 11, host api ALSA
Name default
Max inputs 32,  Max outputs 32
Speeds for 2-channel paInt32:   44100   48000   96000   192000
Close 0


--David


--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: USB sound card device complains about "error -28: not enough bandwidth" only on specific PC hardware, seems not kernel specific

2012-08-26 Thread David Ranch



Hello Alan,

 The best that can be said is that it sort of works most of the time. 
But there are plenty of cases where it doesn't work, and you are 
facing one of them. 
Geee... I feel honored!   (g)  That's usually my luck with Linux but 
I've always been a glutton for punishment, I mean, up for the challenge 
so I'll keep at it.  ;-)



By the way, now that you've got CONFIG_USB_DEBUG enabled, there's 
something I'd like to see. I'm assuming you've got a debugfs 
filesystem mounted on /sys/kernel/debug. Go into 
/sys/kernel/debug/usb/ehci/:00:1d.0/ (that's the directory 
corresponding to the controller your device is plugged into, bus 2) 
and post a copy of the "periodic" file in that directory


Something is a miss here as that path ( /sys/kernel/debug/usb/ehci ) 
doesn't exist and I'm also getting new hourly errors complaining about 
missing proc entries like:


   /sys/devices/system/cpu/sched_mc_power_savings

I imagine it might be a specific issue with this modern kernel running 
on "old.. centos6 kernel) so I've posted my kernel config here:



http://www.trinityos.com/SCRATCH/3.5.2-1.ax25.el6.x86_64
. . .
-rw-r--r-- 1 dranch dranch  130080 Aug 26 12:24 kernel-ml-3.5.2-config.txt
-rw-r--r-- 1 dranch dranch  353212 Aug 26 12:24 usbdebug-sys-dir.txt

If you can help me figure out why the EHCI debug interface isn't showing 
up (maybe the /proc line is a hint), I'll recompile and get the results 
you asked for.


--David
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


USB sound card device complains about "error -28: not enough bandwidth" only on specific PC hardware, seems not kernel specific

2012-08-09 Thread David Ranch


Hello Everyone,

I've been researching this specific issue and I'm coming to the 
conclusion my problem is a USB chipset / kernel infrastructure specific 
issue and not a problem with the USB device or it's ALSA driver.  If 
anyone has some ideas of how I might be able to work around this problem 
or what additional details are needed to help troubleshoot this issue, 
I'd love to hear from you.



Failure details:
-
I have a SoundBlaster X-Fi full-speed USB device on a Gateway NV57H 
(Acer) laptop (Intel i5 dual core with HM65 (SandyBridge) chipset [no 
USB 3.0 on this platform] - 
http://support.gateway.com/s/notebook/2010/gateway/nv/nv57h/NV57Hsp2.shtml 
. When I connect this USB device to any of the three USB ports on this 
platform (all other ports are disconnected) and try to RECORD (use the 
line-in jack at 96Khz stereo.. I'm not trying to do anything additional 
than just 2 channels ), I get the below errors.  If I only ask to record 
at 48Khz, it works fine with no errors.  I get these results either with 
the stock Centos 6 2.6.32 kernel installed on the HD,  stock Centos 6 
running from a LiveCD (reduces any risk of me introducing possible 
configuration problems), a Ubuntu 10.11 livecd running a 3.0.0 kernel, 
and a custom compiled vanilla 3.4.4 kernel running on the Centos6 HD 
installation.  I chose 3.4.4 as I saw that there were some fixes in the 
3.1.3 kernel for "not enough bandwidth" issues per the release notes but 
all tests came up with the same 96Khz failure.


** Please see below for a success report on a different computer with 
the same kernels, etc.


--
Jul 16 19:05:18 hampacket2 kernel: usb 2-1.2: new full speed USB device 
using ehci_hcd and address 62
Jul 16 19:05:18 hampacket2 kernel: usb 2-1.2: New USB device found, 
idVendor=041e, idProduct=30df
Jul 16 19:05:18 hampacket2 kernel: usb 2-1.2: New USB device strings: 
Mfr=1, Product=2, SerialNumber=3
Jul 16 19:05:18 hampacket2 kernel: usb 2-1.2: Product: SB X-Fi Surround 
5.1 Pro
Jul 16 19:05:18 hampacket2 kernel: usb 2-1.2: Manufacturer: Creative 
Technology Ltd

Jul 16 19:05:18 hampacket2 kernel: usb 2-1.2: SerialNumber: 04qe
Jul 16 19:05:18 hampacket2 kernel: usb 2-1.2: configuration #1 chosen 
from 1 choice
Jul 16 19:05:20 hampacket2 rtkit-daemon[2848]: Sucessfully made thread 
873 of process 25871 (/usr/bin/pulseaudio) owned by '500' RT at priority 5.
Jul 16 19:05:20 hampacket2 rtkit-daemon[2848]: Sucessfully made thread 
874 of process 25871 (/usr/bin/pulseaudio) owned by '500' RT at priority 5.
Jul 16 19:05:20 hampacket2 kernel: ALSA endpoint.c:856: cannot submit 
datapipe for urb 0, error -28: not enough bandwidth 
<---
Jul 16 19:05:21 hampacket2 pulseaudio[25871]: ratelimit.c: 11 events 
suppressed



# lspci
00:00.0 Host bridge: Intel Corporation 2nd Generation Core Processor 
Family DRAM Controller (rev 09)
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core 
Processor Family Integrated Graphics Controller (rev 09)
00:16.0 Communication controller: Intel Corporation 6 Series/C200 Series 
Chipset Family MEI Controller #1 (rev 04)
00:1a.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset 
Family USB Enhanced Host Controller #2 (rev 04)
00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset 
Family High Definition Audio Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset 
Family PCI Express Root Port 1 (rev b4)
00:1c.1 PCI bridge: Intel Corporation 6 Series/C200 Series Chipset 
Family PCI Express Root Port 2 (rev b4)
00:1d.0 USB controller: Intel Corporation 6 Series/C200 Series Chipset 
Family USB Enhanced Host Controller #1 (rev 04)
00:1f.0 ISA bridge: Intel Corporation HM65 Express Chipset Family LPC 
Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset 
Family 6 port SATA AHCI Controller (rev 04)
00:1f.3 SMBus: Intel Corporation 6 Series/C200 Series Chipset Family 
SMBus Controller (rev 04)
02:00.0 Ethernet controller: Broadcom Corporation NetLink BCM57785 
Gigabit Ethernet PCIe (rev 10)
02:00.1 SD Host controller: Broadcom Corporation NetXtreme BCM57765 
Memory Card Reader (rev 10)

02:00.2 System peripheral: Broadcom Corporation Device 16be (rev 10)
02:00.3 System peripheral: Broadcom Corporation Device 16bf (rev 10)
--

In my research, some posts recommended to front the USB sound card full 
speed device with a USB 1.1 hub to force the communication path to 
12Mb/s but that didn't help in my situation.




Success details:
---
I tested the stock Centos6 2.6.32 kernel and vanilla 3.4.4 kernel setups 
on different platform (a Hp Pavilion P6310Pf AMD-based desktop - 
http://h10025.www1.hp.com/ewfrf/wc/document?docname=c01949155&tmp_task=prodinfoCategory&cc=us&dlc=en&lang=en&lc=en&product=4107914 
) and it did NOT have any problems at 96Khz


One note: On the this Hp desktop, the sound card is supported via the 
OHCI