kernel issues with Schiit USB DAC (UAC2, high-speed Isochronous)

Having issues with your DietPi installation, or, found a bug? Post it here.
Post Reply
Posts: 10
Joined: Tue May 24, 2016 5:57 am

kernel issues with Schiit USB DAC (UAC2, high-speed Isochronous)

Post by rosswesleyporter » Fri May 17, 2019 5:56 pm

I believe that I am experiencing a kernel issue when using a Schiit Fulla 2 USB DAC / headphone amp. The DAC sounds great, but always freezes after rapidly skipping through tracks. Schiit themselves describe it as a Pi kernel issue. Suggestions? Details:

- A very nice and informed person at Schiit said: "The issue as you’ve noted is indeed with Raspberry Pi where its USB implementation has a flaw with UAC2 USB devices. Not much we can do about it since UAC2 is the preferred standard for windows, mac, most desktop linux, etc. ... Perhaps some future Linux kernel will fix the issue."

- A Pi Foundation github issue thread describes a perhaps related situation with a different Schiit DAC: "Both the reported problems are with a specific type of DAC. This DAC is unusual in being a high-speed device. There are differences with handling of packet intervals for high-speed Isochronous devices, which a move to 3.18 may have caused to change." Alas, the solution on that thread did not fix my problem.

- More on the problem: DietPi, VLC (vlc-nox), headless. I can always make the DAC freeze (stop playing audio) by rapidly skipping through tracks with VLC. I can cause the problem in 20 seconds. As far as I can tell, VLC still thinks it's playing music. The DAC does not recover - have to reboot. The track skipping seems to be part of the equation - if I just let music play, the DAC seems to behave properly for quite a while.

- I tried the usual cures: swapped cables, swapped Pis, swapped power supplies. The Fulla 2 can be externally powered, so I tried that. I swapped USB DACs - the non-Schitt DACS work correctly but don't sound as good. I started with DietPi. But hit the same issue in Raspbian Lite even after rpi-update to get the most recent stable kernel.

Suggestions? I'm open to very experimental suggestions e.g. using new unstable kernels. I'm controlling vlc-nox via Python bindings, so I can run some code prior to each track skip, but I'm not a USB expert, so I wouldn't know what action to take in code (USB device reset of some kind?).


Post Reply