pyatv icon indicating copy to clipboard operation
pyatv copied to clipboard

Stream to Homepod Stereo Pair

Open charlesvestal opened this issue 2 years ago • 6 comments

What feature would you like?

When streaming to a homepod stereo pair, I see both as individually addressable homepods, but not as a stereo pair. I'd like to be able to stream (and control) the stereo pair, rather than individuals.

Describe the solution you'd like

When scanning for devices, detect a pair and show as an additional device.

Any other information to share?

I'm attempting (unsuccesfully) to get around this via an apple TV paired to the homepods, but I imagine there are users without an apple tv that would want to do the same.

charlesvestal avatar Feb 16 '22 12:02 charlesvestal

There has been some work and success with this in OwnTone: https://github.com/owntone/owntone-server/issues/1413

shauder avatar Feb 17 '22 23:02 shauder

When comparing my two homepod mini's (set up as stereo pair) I have seen two service discovery outcomes for my actively playing stereo pair:

  • complete: differences as expected
  • incomplete: visible that it is a pair, but does not have all the expected settings

What they have in common:

  • gpn (group name) is set on both devices (same as the name of the group leader)
  • flags has bit 13 set for the group leader
  • gid (group UUID) is the same for both devices - can be "single" UUID, or can be a "concatenated" UUID.

Comparing the two situations in detail:

complete:

  • gpn (group name) same on both (same as name for the group leader)
  • flags for group leader has bit 13 set: TightSyncIsGroupLeader
  • gid (group UUID) same UUID on both devices (consist of tsid UUID and a 2nd one)
  • tsid (?) set to same UUID on both devices
  • gcgl (group contains group leader): set to 1 on both
  • pgid (parent group UUID) only set on the non-group-leader, has same value as gid
  • pgcgl (parent group contains discoverable leader ) only set on non-group-leader, set to 1
  • igcl (is group leader) set to 1 for the group leader, 0 for the other device

Format for gid/pgid: <tsid-UUID>+0+<some-other-UUID>

incomplete: Only gpn and flags are different between group leader and the non-group-leader. The flags are different than the complete example, but here as well: the group leader has bit 13 set.

  • gid: same on both devices (format: single UUID, not the same as tsid)
  • tsid: same on both devices (not used in gid or pgid) - and same as for complete example above
  • gcgl: 0 on both
  • pgid: same on both devices, same as gid
  • pgcgl: 0 on both
  • igl: 0 on both

Diffs for both situations:

image

wivaku avatar Dec 09 '22 12:12 wivaku

After updating from 16.1 to 16.2 all values are still the same, except:

srcvers=670.6.2
osvers=16.2

wivaku avatar Dec 14 '22 10:12 wivaku

any news / plans regarding support for homepod stereo pairs?

wivaku avatar Jul 07 '23 12:07 wivaku

any news / plans regarding support for homepod stereo pairs?

wveilleux avatar Sep 02 '23 16:09 wveilleux

No updates on that I'm afraid. It's a low priority for me right now, but certainly an interesting feature. At some point I might feel ready for it.

postlund avatar Sep 02 '23 17:09 postlund