I’ve done a fair bit of digging to get smooth sound out of my USB-driven Cambridge Audio DacMagic, so here’s the info for your benefit. It also seems to apply to other USB DACs too.
Pops and crackle in the sound can often be fixed by adding dwc_otg.fiq_split_enable=0 to /boot/cmdline.txt. Just add it to the line that doesn’t start with a # and reboot. Verify that the parameter took effect by looking for “dwc_otg: FIQ split fix disabled” in the kernel boot log.
If /var/log/syslog is spammed by messages like “estimated delay: X actual Y” this can be solved in two ways. The first is to set the nrpacks=1 option on the snd-usb-audio driver. I did it by creating the file /etc/modprobe.d/usb-dac.conf and putting the line “options snd-usb-audio nrpacks=1” in it. When you reboot (or force the kernel module to reload) those log lines should disappear. The current setting can be seen by “cat /sys/module/snd_usb_audio/parameters/nrpacks” (It can’t be changed through that file, since it is only applied on module load.)
However, that will put a higher load on the USB stack, and I found a patch for the upcoming Linux 3.13 where the offending code has been completely rewritten. I patched that into a 3.10.25 kernel here: elinux.org/RPi_Kernel_Compilation)
With that patch, the nrpacks=1 is not needed and the sound seems to work fine (I’ve been running this for a week now).