McIntosh DA2 playback fails after C2700 standby resume on RoPieee 2026.02 (build 3360)

I may be oversimplifying this, but my thinking was simply that McIntosh probably doesn’t have an RPI Pro on hand, and LHY probably doesn’t have a C2700/DA2 on hand, so I feel I should try to gather as much useful information as I can from the actual combination here.

Since Raspberry Pi hardware can generally boot many different Linux images, I just vaguely assumed that a bootable Linux image with enough xHCI/USB logging might be possible on the RPI Pro too.

If that were possible, I thought the public RoPieee/linux source might be a sensible baseline, simply because it seemed closer to what you are already using.

Chuck retired over a year ago.

1 Like

Awww. Too bad. But good for him.

1 Like

My point is just that: they should (imho) not focus on the RPI Pro, but on Linux support in general. That’s the reason why I suggested to test it on a regular Linux PC. Because otherwise you might end up that manufacturers point to each other.

If it’s Linux in general then McIntosh need to do something, if it’s RPI Pro specific, then those guys need to do something. And yes, if it’s RoPieee specific (which I highly doubt because of my kernel which runs the stock USB stack) then it’s me who should do something :wink:

1 Like

@Chris.Ha Somewhere the coming months the Raspberry Pi will switch from the 6.12 LTS release to the new 6.18 LTS release.

I always follow them (after some time) and although it’s not that time yet, I’m willing to build an image for you with that 6.18 kernel.

Maybe, just maybe, something changed during 6.12 and 6.18 which improves things for the DA2.

1 Like

Thank you — that makes sense.

I’ve decided to follow the quicker route first, and I’ve just ordered a Raspberry Pi 4B.

Once it arrives, I’ll test the DA2 standby/on behavior on a standard Pi/Linux path and report back. That should help separate the LHY RPI Pro path from something more Linux-general.

If you later have a 6.18-based test image available, I’d also be very happy to try that.

Thanks again for all your help.

1 Like

Nice! That would make the ‘search’ a little bit narrower.

1 Like

Hi @Chris.Ha ,

Here’s an image for you with the latest 6.18 LTS kernel.

I gave it a quick ‘shakedown’ and are listening to music as we speak.

Chances are slim, but you’ll never know :wink:

https://image.ropieee.io/ropieee_pi4-2026.3.0-test.20260401.3425.bin

1 Like

Thank you very much.

The Pi 4B may arrive as early as this afternoon, so once it arrives I’ll put the new image on it, test the DA2 standby/on behavior, and send feedback from that test.

Thanks again for making this image.:+1:

I tested 3425 on both the LHY Audio RPI Pro and a standard Raspberry Pi 4B, and I sent feedback from both.

RPI Pro:

  • baseline OK: 41e4a5b16ea33928
  • after DA2 standby/on, playback failed: d5ccd7047e8af71a

Standard Pi 4B:

  • baseline OK: 37fdba871f60b796
  • after repeated DA2 standby/on cycles, playback still OK: da2278c38b131f7c

Could you please take a look when you have time?

Thanks a lot.

1 Like

Ok. With certainty we can point towards the LHY.

On the Pi4 I see expected USB disconnect events, which are not present on the LHY.

Keep in mind, this version does not even have the ‘usb reset’ functionality in place: in other words, the DA2 behaves on the Pi4 like it should.

1 Like

So here’s what I think is going on:

The USB stack maintains state for connected device. And as soon as the device is disconnected, this state is reset. However, with the LHY this is not happening: while you put the DA2 to sleep (and thus state on the device side is changed), RoPieee (the Linux kernel) doesn’t know that. Hence a mismatch in state, which results in the errors when you try to stream.

LHY just needs to make sure that when a device disconnects, this is also reflected on the USB bus.

1 Like

Thanks again for continuing to dig into this.

You may already have seen this in the feedback I sent, but from my side the key difference looked like this:

  • On the RPI Pro direct path, after DA2 standby the device does not get cleaned up as a disconnect; it stays stale-present, with the root port stuck at CCS=1 / PED=0 / PLS=Polling.
  • On the standard Pi 4B path, the DA2 under the onboard hub is actually removed and re-enumerated (remove/unbind → add/bind, with a new devnum after power-on).

So the same DA2 standby transition seems to be handled very differently by the two host paths.

From my reading, this looks much more consistent with something specific to the RPI Pro direct USB path than with a Linux-general issue.

My main question is this:
if CCS=1 / PED=0 / PLS=Polling persists for some finite time, would you still treat that as a state to preserve, or would it make more sense to treat it as a failed recovery / dead-port condition and force logical disconnect / re-enumeration?

I’m also planning to go back to LHY with the additional comparison results and ask for more detail from their side about how the RPI Pro USB output path is expected to behave here.

I don’t know. I’m not that into depth up to speed with the USB stack in the Linux kernel. IMHO it also doesn’t matter, because the issue is very simple: when you put a USB device into standby (like your McIntosh in this case), it should result in a USB disconnect. That’s not happening.

I can imagine that their devices out there who can handle this, but the DA2 is certainly not. LHY can verify this with a regular PC running Linux, and basically a random USB device.

1 Like

Yes, I think that is probably the right way to look at it.

I’ve already passed the comparison results and this observation back to LHY as well. :wink:

Since this is the actual problem I’m dealing with, I still wanted to understand it a bit further, so I did one more small local experiment on the direct RPI Pro path.

In code terms, the experiment was roughly this: if the direct path stayed in the stale CCS=1 / PED=0 / PLS=Polling state after DA2 standby, I checked again after about 20 ms, and if it was still unchanged, I made the host treat it as a connection-change event (synthetic C_CONNECTION). That caused usbcore to discard the stale device state and go down the normal disconnect / re-enumeration path.

With that experiment, the direct RPI Pro path recovered cleanly again after DA2 power-on.

I’m not asking you to take this on — I just wanted to share it as a matching local observation. :blush:

Thanks again for helping narrow this down.

1 Like

FYI — LHY replied on their forum with a concrete explanation. They explicitly point to the ADuM3165 isolation stage between the CM4 and the RPI Pro USB output as the key difference vs native Pi 4B / Mac USB. Their view is that the DA2 standby transition can be so fast/abrupt that, on the isolated path, it may not always be presented upstream as a full disconnect, which they say matches the stale CCS=1 / PED=0 / PLS=Polling state I saw. They also say this is why the powered USB 2.0 hub workaround helps: the hub re-terminates/manages connection state and presents a fresh attach event to the host.

So they are essentially framing this as an RPI Pro direct USB path / isolation-stage handling issue rather than a general DA2 issue. They also say the hub workaround is the most reliable practical solution for now, and that they are reviewing whether there is room to improve handling on their side. At the moment, though, they have not provided a concrete fix or a clear product-side statement on why Mac direct USB, standard Pi 4B, and even RPI Pro + a cheap powered USB 2.0 hub all handle the same DA2 standby transition correctly while the direct RPI Pro path does not.

Hmmm… I’m not sure what to make of this: it reads that they think this is an inconvenience, where from my side imho this is wrong behavior of their device…

Anyways, I’m ‘happy’ that this is not related to RoPieee - but I can imagine that you’re not too happy about it because it does not solve your issue.

If there’s anything else I can help out with let me know.

Thanks

1 Like

FYI — LHY has now taken the position that this is not a bug but a design characteristic/limitation of the RPI Pro direct/isolation USB path in this use case, and they also said there are currently no planned changes to that USB output design. Since they are effectively saying stable use here may require reinitialization or a USB hub, I’ll probably try to resolve this from the return/refund side. :sad_but_relieved_face: In any case, thank you again for all your help — it was very useful in narrowing this down.

1 Like

I think that the Stack Audio Link (II) had a similar solution, but they at least hid it behind a switch because not all equipment can deal with this.

1 Like

Information appreciated. I’m in the process of getting a refund for the LHY.
Currently just using a Pi 4B directly.

While running various tests, I discovered yet another issue with DSD512 Native transmission and I’m trying to work through it.
It’s not easy. Haha.. flops down

https://community.roonlabs.com/t/da2-dsd512-audible-ticks-when-switching-between-44-1k-and-48k-rate-families/318619