Ok that's interesting, no xruns with the on-board card. So the basic system tuning is already quite good as we suspected.
It would be interesting to see what happens under AVLinux and whether the USB Audio xruns persist.
Based on what we've found so far, there could be something flaky with one or more of the
- USB ports
- USB audio driver
- USB port power management or
- USB audio hardware?
Or it is something else we're missing?????
Some additional things to try:
Disable jackdbus:
sudo su -
cd /usr/share/dbus-1/services/; mkdir old; mv org.jackaudio.service old
- Reboot
- jackdbus should be deactivated, to reactivate - should you need it - just reverse the process
USB Port Autosuspend:
- LAM suggested the autosuspend string earlier, here's an alternative method.
- Sometimes methods to control the system get deprecated in favor of new methods, it's not always clear (unless one remains up to date with all of it - which I'm not) on what actually still works and what doesn't.
- In this case we change the setting of power/control from "auto" to "on" to hopefully disable USB autospend.
- !!NOTE: Obviously check the commands first and adjust where necessary for your system before blindly running them
- !!Don't blame me if I screwed up and it breaks your system, LOL
- Guess or derive the vendor / manufacturer name of the USB Soundcard
lsusb
- Alternatively check for it with
udevadm info --export-db | egrep "ID_VENDOR|ID_MODEL" | less
- Set vendor and devices path variables
vendor=edirol # [!!change this value for your particular card!!]
mydevices=/sys/bus/usb/devices/
- !!The cut values to locate the relevant "usbX/N-N" entry under /sys/bus/usb/devices/ (in my case 5,6) for your USB soundcard may need to be adjusted for your particular system!!
- !!Find the cut values!!: vendor=<your vendorname>; udevadm info --export-db | grep -B15 -i $vendor | grep -B10 BUSNUM | grep DEVPATH
- Identify USB Soundcard & Port
cd $mydevices$(udevadm info --export-db | grep -B15 -i $vendor | grep -B10 BUSNUM | grep DEVPATH | cut -f 5,6 -d /)
pwd
cat $mydevices$(udevadm info --export-db | grep -B15 -i $vendor | grep -B10 BUSNUM | grep DEVPATH | cut -f 5,6 -d /)/manufacturer
cat $mydevices$(udevadm info --export-db | grep -B15 -i $vendor | grep -B10 BUSNUM | grep DEVPATH | cut -f 5,6 -d /)/idVendor
cat $mydevices$(udevadm info --export-db | grep -B15 -i $vendor | grep -B10 BUSNUM | grep DEVPATH | cut -f 5,6 -d /)/idProduct
- Power/Control is probably set to "auto" to enable suspend, set to "on" to disable suspend
- Check current value of USB suspend "power/control"
sudo su -
vendor=edirol # !!change this value for your particular card!!
mydevices=/sys/bus/usb/devices/
cat $mydevices$(udevadm info --export-db | grep -B15 -i $vendor | grep -B10 BUSNUM | grep DEVPATH | cut -f 5,6 -d /)/power/control
- Disable autosuspend
echo "on" > $mydevices$(udevadm info --export-db | grep -B15 -i $vendor | grep -B10 BUSNUM | grep DEVPATH | cut -f 5,6 -d /)/power/control
- Check new status of control for soundcard
cat $mydevices$(udevadm info --export-db | grep -B15 -i $vendor | grep -B10 BUSNUM | grep DEVPATH | cut -f 5,6 -d /)/manufacturer
cat $mydevices$(udevadm info --export-db | grep -B15 -i $vendor | grep -B10 BUSNUM | grep DEVPATH | cut -f 5,6 -d /)/power/control
If it is now "on", USB autosuspend is now hopefully disabled for that card.
Then test again
PS
That setting won't persist following a reboot, so if you want to make it permanent you'll need to write a script or create a udev rule or something.
A udev rule would be nicer but I couldn't get it to work for some reason.