Repository navigation
Conversation
Issues FoundNo issues with your PR description were found. Next Steps
Thank you for your contribution! If you need any help, please reach out on our Discord server. ❤️ |
|
Before we review this, you mention that MagicPods doesn't have support for Pixel Buds Pro, have you considered PRing that functionality to MagicPods or asking the dev to add it? |
|
I haven't reached out directly. There was a thread from last year that the support was requested by another user and it hasn't been acted on. Not sure whether it's a compatibility or willingness issue. I made this plugin for myself, as a Pixel Buds owner, so I wanted to share it with the community in case it would be beneficial to others too |
Just to provide some confirmation from someone other than the developer, I own Pixel Buds that I use for my ROG Ally, and this would be very helpful for me as well. |
|
add codec switching pls 🙏 if nobody reviews this soon i can do it i have the hardware |
I can look into this as a future update, I'd like to make sure the initial logic is solid first! |
|
This pull request is stale as no updates or testing reports have been posted within the last 7 days. Please ensure you are actively recruiting testers or resolving the issues discussed. If you do not remove the stale label or comment, this will be closed in 7 days. Please close this pull request if you need more time to resolve issues so we can keep our repo healthy. |
@AAGaming00 If you could review the plugin when you have a few minutes spare, I would be very grateful! |
|
bug me tomorrow it's 3 am |
|
@AAGaming00 bugging you now. Hopefully it's a better time for you, I'm in Australia so our timezones are flipped. |
|
@Phill544 Can you push a commit to your fork? The deployment script ran too long ago for us to re-run it |
1bf5ee3 to
1ac4c36
Compare
|
Thanks! Just merged the conflicting .gitmodules files. No other changes needed. |
|
dont need to approve the testing deploy |
Plugin Testing ReportInstalled Plugins
Specifications
IssuesHas the following major blocking issue(s):
SummaryAs a Pixel Buds Pro 2 owner, I'm happy to see this plugin exist! However, I've encountered an issue: the plugin page keeps cycling between displaying my Pixel Buds Pro 2, This also happened when I testing on Here's the error log, which seems to point to the root cause. Hope this log helps! |
|
@wynn1212 Thanks mate, I only have the Pixel Bud Pro 1s so I appreciate testing out on the 2s. I believe I've fixed the issue, please confirm next opportunity you have! I've updated the plugin to 1.0.1, I also added the adaptive noise cancelling option for the PBP2s. |
There was a problem hiding this comment.
Hello, after reviewing the backend and frontend a bit, I found a few things I'd like you to address because bluetooth is kinda iffy in general
a) In _run_pbpctrl, every invocation calls _find_buds(), which runs bluetoothctl devices Connected and then fires bluetoothctl info for every single connected Bluetooth device via asyncio.gather.
cause refresh()in Content calls bothgetBattery()andgetAnc()` every five seconds, this entire sequence runs twice per poll. On a steam deck with a couple of controllers connected, that is easily like 5-10 subprocesses spawning every 5 seconds on battery
Can you cache the resolved MAC address and device class after the first successful check, and only rerun _find_buds() if a subsequent call fails or disconnects?
b) Checking device_class in (0x240404, 0x244404) is going to cause false negatives. Bluetooth CoD is a bitfield representing service classes alongside the device type.
If the buds connect with slightly different service flags active (telephony, audio and rendering), or if BlueZ reports different bits under different profile states, _connected_buds_class returns None and the UI says its not connected even though the buds are working fine and are connected.
This is probably why pbpctrl show battery in terminal works when the UI shows disconnected. Google's Maestro UUID (25e97ff7-24ce-4c4c-8951-f764a708f7b5) is already unique to Pixel Buds, we probably shouldn't gate connection status on an exact integer match for CoD.
If you need to distinguish Buds Pro 2 for adaptive ANC support, check the model name or inspect whether adaptive ANC is supported rather than hardcoding the entire bitfield.
c) Layout and styling are kinda hacky here:
-- The <style> tag injected directly inside AncToggleGrid on every render to style .gpfocus. If you need custom focus styling, see if this can be moved to a static stylesheet or applied at the top level so you aren't appending style nodes on each render cycle
-- The connected status dot positioning uses position: "absolute", left: "calc(50% - 46px)"
If someone change the font scale, applies a custom css that conflicts with it, or if Decky adds localization somewhere in the future, this will drift or overlap the text.
Using flexbox with standard gap (like in the disconnected state above it) would be much cleaner imo
|
Also, side note: LLMs seem to be used heavily, not a big deal because most of the code is fine, but please do clarify. |
Also @Phill544, please do a better implementation of this UI! It doesn't suit the Steam UI at all. |
|
Hey @sidharthify I've actioned your bluetooth feedback, thanks for that! I've also pulled out the custom UI so that it is built using Decky's standard css (visible in PR message). While I think it's a step back in terms of readability, you raise a good point regarding scaling, etc. Cheers! |

Add Pixel Buddy to Plugin Store
A Decky Loader plugin that lets you monitor battery and control ANC on your Google Pixel Buds Pro directly from Steam Deck. Inspired by MagicPods, they do not support Google Pixel Buds so this plugin fills that gap
Features
Task Checklist
Developer
Plugin
Backend
Community
Testing