Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bonob missing after Sonos 80.00 update #205

Open
np-90 opened this issue May 8, 2024 · 132 comments
Open

bonob missing after Sonos 80.00 update #205

np-90 opened this issue May 8, 2024 · 132 comments

Comments

@np-90
Copy link

np-90 commented May 8, 2024

Have been using bonob flawlessly for a few months now but as expected, Sonos dropped an app update this week and the bonob service looks to have just disappeared from my list of services on both iOS and the new web app.

Interestingly I can still access it on the Desktop App (which I believe is being retired)

Is this the experience for everyone else or have I broken something in the process of tinkering?

@simojenki
Copy link
Owner

My phone hasn't updated yet, so I've not experienced this yet.

Will be interesting to see what experience others have.

@peterbuga
Copy link

peterbuga commented May 8, 2024

here to confirm the same problem :(

turns out there are new requests (endpoints?) done by the new app.
for example I can start bonob playing from desktop app, I can see playlist/controls from new app but pushing the "..." button to bottom left corner gives an error - normally this button exposes options like Save to Sonos Favoriters/Search for <<artist>>/Crossfade etc

@simojenki
Copy link
Owner

I'm going to let the dust settle a little before considering upgrading.
I have a spare device somewhere so I might see if I can set that up somehow as a new location with a different controller so as not to brick my home audio.

@Jypy
Copy link

Jypy commented May 8, 2024

yep, it's gone with the new app for me too. Sonos mentioned they were dropping HTTP & SMBv1 support. I tried creating a new service using HTTPS just in case, but it doesn't appear in the new app either. As mentioned above, it still work fine with the desktop app (until it gets updated too I guess).

@hakimh02
Copy link

hakimh02 commented May 8, 2024

same here, updated to the new app and Bonob is gone....

@drohhyn
Copy link

drohhyn commented May 8, 2024

Unfortunately this is not a bonob issue, it is fully sonos fault. Their community forum is full of issues with missing sources, missing features, missing everyhting.
If you are on Android, for now you can go back to the older app version (16.1), e.g. via aurora store (foss client for the play store, so downloading APKs from google not some obscure provider). The correct version numbers are 780151030 or 780151030 depending on your hardware.

@garfieldairlines
Copy link

Got the update too… Don't update, and I guess it would be wise to turn off automatic firmware updates for the time being.
And if you own a iPhone, I think it's too late to downgrade.

@simojenki
Copy link
Owner

Perhaps it's time to look into WiiM and what is required to get a similar experience.

@wez
Copy link

wez commented May 9, 2024

Perhaps it's time to look into WiiM and what is required to get a similar experience.

@simojenki I hadn't seen WiiM, looks interesting!

I have BluSound Node device and another NAD device that has the option of a BluOS addon board. I'm not recommending them, but wanted to raise that as another possible streamer hardware platform. If there is a good way to navidrome -> bluos then I can avoid buying more hardware in case sonos is really dead and done for this use case. Would love to hear about options for that.

The timing of this sucks: I only just discovered bonob in the past week or so and have been really enjoying it!

@simojenki
Copy link
Owner

I'm still optimistic that Sonos will update their app in the coming weeks/months in such a way that this type of service works, however I'm also aware of the fact that the bonob/subsonic use case is not a large part of their user base so it may also never work again... in which case I'll look for alternatives to continue to self host which may require porting bonob to another platforms api.

@garfieldairlines
Copy link

Someone asked the support about subsonic and here's a copy of the reply... I am afraid the days of the bonob/subsonic solution are counted :(
(Source : https://en.community.sonos.com/product-updates/the-new-sonos-mobile-app-web-app-6891770/index20.html?postid=7933#post7933)

Got a response to my email, similar to other ones posted. To their credit, the directly addressed my comments about last.fm and Subsonic, but I can’t say the responses make sense:

”In the new Sonos app, you won't be able to setup new music libraries or configure existing libraries. You can utilize the Sonos desktop controller to set up and manage your music library. The sleep timer feature is not currently available in the Sonos app, but will return in a future update.

Last.fm is used for scrobbling. Scrobbling is a system that tracks your listening habits and uploads them to your Last.fm account. Every time you play a track it is added, or scrobbled, to your Last.fm account.

Subsonic doesn't show on the services on Sonos. I believe we never supported Subsonic since they do not work the way a normal music service would.”

@simojenki
Copy link
Owner

I found that a little confusing. They never officially supported the manual style of integration that subsonic and later bonob used. That doesn't necessarily mean the new updates have broken it forever, as someone on this thread mentioned bonob is still registered, it just doesn't show in the app, however as I understand it there are other missing services that also do not show in the app.

I suspected this might happen when they said they were going to remove http as a protocol, perhaps using https and implementing whatever missing api routes the new app requires will be enough to get it going again??

Their new web app is unlikely to work with bonob however as their servers have no api access to bonob.

I have no idea at this point, I'm just being optimistic.

There were other ominous signs;

  • forcing people to log in to register speakers
  • forcing the use of location services

@simojenki
Copy link
Owner

@Jypy when you tried https did you use a self signed cert or a cert signed by a public auth ie LetsEncrypt?

@Jypy
Copy link

Jypy commented May 10, 2024

@Jypy when you tried https did you use a self signed cert or a cert signed by a public auth ie LetsEncrypt?

I tried both actually. With my own CA I couldn't pass the first service configuration step when you need to login. Which was expected as sonos doesn't trust my CA. But I had no issues with Let's Encrypt cert, I can browse, play, etc... same as using HTTP only, on the old or desktop app only ofc.
When testing, I found some info here which helped me debug. Like downgrading from TLSv1.3 to TLSv1.2.
I can post my nginx proxy config if needed.

@peterbuga
Copy link

@simojenki
to follow up on @Jypy answer, I do also have bonob+navidrome setup on an external machine and sonos in a different physical location with connection over https. the only difference is that on my case it's working over TLSv1.3 for some reason.

in my case the setup is:
Sonos -- https --> Cloudflare ("DNS only" option, related to my other problem) -- https w/ Let's encrypt --> Bonob -- http /w docker network --> Navidrome

a possible future solution would be to create a mock-plex server, like a bridge to translate plex requests to navidrome/subsonic otherwise Sonos might never allow external integrations show up in their app/web interface. (the reason I don't use Plex as a source for music is due to the fact it does a crappy job organizing my media even though it's properly tagged, as it's just randomly merging albums together 😤)

@drohhyn
Copy link

drohhyn commented May 10, 2024

I found that a little confusing. They never officially supported the manual style of integration that subsonic and later bonob used. That doesn't necessarily mean the new updates have broken it forever, as someone on this thread mentioned bonob is still registered, it just doesn't show in the app, however as I understand it there are other missing services that also do not show in the app.

I can confirm this. As mentioned in my other comment, when you downgrade to the previous Android app version everything works as before. Same for using noson.

@Jypy
Copy link

Jypy commented May 10, 2024

@peterbuga I actually have both TLSv1.2 & 1.3 enabled, but with 1.3 only it wasn't connecting. So your endpoint may also support both?!
I also just found out about this Music Assistant, I haven't tested it yet though.

@simojenki
Copy link
Owner

It sounds like plex still works? As I understand it you require a plex account? However presumably plex don't proxy all data from the private network through their servers and back into the private network for Sonos? Maybe there is a solution that allows for https for the auth section, then http within the LAN?

@Jypy
Copy link

Jypy commented May 10, 2024

Yes, plex still works, but it requires you to enable external access and a plex pass. More details here. I wanted to try it, but having to enable external access for me was a deal breaker.

@simojenki
Copy link
Owner

Taken from that link;

"...something such as manually forward a port in your router/modem.
Successfully enabling Remote Access will give you the best experience with Sonos." - This does not sound like a good idea to me.

I'm also unhappy with the 'relay' feature. The entire point of self hosting is to not have a dependency on a 3rd party service.

@hakimh02
Copy link

hakimh02 commented May 10, 2024

FWIW: https://www.theverge.com/2024/5/9/24152675/sonos-new-app-bad-reviews-response-statement

"...broken local music library management..."

@simonmiddleton
Copy link

simonmiddleton commented May 10, 2024 via email

@drohhyn
Copy link

drohhyn commented May 10, 2024

FWIW: https://www.theverge.com/2024/5/9/24152675/sonos-new-app-bad-reviews-response-statement

"...broken local music library management..."

Unfortunately, it does not necessarily mean services like subsonic (with bonob) because even the "old" music library feature (with the old samba version) is broken.


I am still puzzled how releasing an app "update" like this could happen. In the android ecosystem you have beta release channels and I assume there is something similar for iOS. Imagine having an update like this on your smartwatch. "Your alarm is set to 6:00. Now deal with it because you can't change it in the following months. It is always at 6:00. No, you can't disable it, please just wait." Crazy.

I also got a response from sonos support about the "classic search" feature, which they stated 2 months ago will remain. Now:

Unfortunately, unforeseen developments led to the removal of the Classic Search function in our new app version.

I do not believe them. Even if they are fully doing agile development, the reduced android version did not suddenly change within the last 8 weeks. It was in review before without the classic search function. And in addition, they did not address my main concern, the privacy feature as mentioned e.g. by @simojenki.

@ChevronLugs
Copy link

ChevronLugs commented May 10, 2024

Another data point here. Due to this whole mess, I spun up a Plex server in Docker on the same NAS where Navidrome and Bonob were (still are) running. I have not forwarded any ports. Remote access is enabled yet not available from outside of my network. It's working with the new Sonos app.

I'd rather have Navidrome and Bonob.

@Jypy
Copy link

Jypy commented May 11, 2024

Taken from that link;

"...something such as manually forward a port in your router/modem. Successfully enabling Remote Access will give you the best experience with Sonos." - This does not sound like a good idea to me.

I'm also unhappy with the 'relay' feature. The entire point of self hosting is to not have a dependency on a 3rd party service.

Exactly, so using plex, even if you don't open the port on your router (which plex will try using UPNP anyway), still requires you to have an online connection, rely on their servers, and at least the search traffic goes through plex relays (maybe the tracks are played locally though). And if your plex is setup to use SSL only with your own CA, then you probably won't be able to play your tracks on sonos.

I've tried Music Assistant, and it's not perfect, but connect to open subsonic api and sonos without any 3rd party. It still needs improvements, but at least I can search and play my music without relying on 3rd party services or online connection.

@simojenki
Copy link
Owner

Presumably you are running MA over https?

If that is working then that's a good sign, might mean bonob just needs a valid cert and perhaps a new api or two implemented

@Jypy
Copy link

Jypy commented May 11, 2024

Presumably you are running MA over https?

If that is working then that's a good sign, might mean bonob just needs a valid cert and perhaps a new api or two implemented

sorry, my bad for not being clearer about this. MA have it's own interface, which sort of replace the sonos app. MA doesn't appear in sonos as a service at all.
Right now I have it over HTTP only as I just started to test it, but it will be over HTTPS soon.

@simojenki
Copy link
Owner

I see, well at least it works, that's a good start!

@wez
Copy link

wez commented May 11, 2024

FWIW, I think that something like MA is probably the right way to go in the long term; I'm skeptical that we can rely on any vendor's own internal service API in the long term, because of their own financial machinations and interests, so having a self-hosted solution that can drive casting/air-play/dlna to a device via an industry standard protocol is probably going to be the most stable integration.

@simojenki
Copy link
Owner

You may well be right, as it currently stands we don't know if Sonos has simply blocked all non 'official' sources in their UI with a simple 'if' statement.

However the nice thing about the bonob/subsonic style integration was the native Sonos expeeience, that was the reason I bought the expensive Sonos hardware. Without the Sonos app then I no longer need to stay within the sonos ecosystem.

@jackysee
Copy link

jackysee commented Sep 6, 2024

Isn't that Symphonium only support uPnP to the speaker? So playing requires a phone?

@OnePunchMan007
Copy link

Isn't that Symphonium only support uPnP to the speaker? So playing requires a phone?

yep your are right, it's only support uPnP and playing requires a phone also it's lack group speaker.

@LeePorte
Copy link

LeePorte commented Sep 6, 2024

I'm also guessing that it won't work for a stereo pair?

@OnePunchMan007
Copy link

I'm also guessing that it won't work for a stereo pair?

What do you means ? You can't group 2 speakers if it's your question.
You can try the app and buy if it's meets your needs. i like the fact that i use this in my car (bluetooth) and when i come one i can switch the music to sonos speaker

@mrkesu
Copy link

mrkesu commented Sep 6, 2024

I'm also guessing that it won't work for a stereo pair?

It does not, unfortunately. If I send it to the left speaker it only plays from the left speaker 🙃

@LeePorte
Copy link

LeePorte commented Sep 6, 2024

I'm also guessing that it won't work for a stereo pair?

It does not, unfortunately. If I send it to the left speaker it only plays from the left speaker 🙃

That's what I was guessing would happen. The stereo pairing is voodoo within the Sonos app(s).

I've put a WiiM amp in one of the rooms where I had a stereo pair. It's a nice upgrade.

@simojenki
Copy link
Owner

I've put a WiiM amp in one of the rooms where I had a stereo pair. It's a nice upgrade.

What is the WiiM app experience like?
Do you have a local music collection in the WiiM app? If so how does the WiiM amp source the music?

@LeePorte
Copy link

LeePorte commented Sep 7, 2024

I've put a WiiM amp in one of the rooms where I had a stereo pair. It's a nice upgrade.

What is the WiiM app experience like? Do you have a local music collection in the WiiM app? If so how does the WiiM amp source the music?

WiiM natively support DLNA, so I've been using my Serviio instance as the backend in the WiiM app. It also works with Bubble UPnP with no issues.

As the stereo is handled in hardware there is not the same issue with DLNA streaming to a stereo pair as there is with Sonos. You can also simulcast to multiple devices.

There is a public roadmap and Trello board that sees stories moving. So I'm pretty convinced it's not a PR stunt.

I'm going to be recommending the in-laws move over to WiiM.

@simojenki
Copy link
Owner

Thanks, WiiM sounds like it could be the way forward.
Maybe there is some way of exposing Navidrome/Subsonic over DLNA?

@LeePorte
Copy link

LeePorte commented Sep 7, 2024

Subsonic is natively visible

Screenshot_2024-09-07-09-20-08-21_5592fe85c89b9c7526dd9939eef9599a

@LeePorte
Copy link

Looks like Navidrome is a no to adding DLNA natively. I'm not sure @simojenki if you'd want to undergo changing Bonob into a DNLA transport layer for Navidrome. It feels like quite a lot of work.

@gravelld
Copy link

I thought the whole point of bonob was as a Sonos SMAPI implementation, which can adapt for different backend sources such as Subsonic. DLNA or WiiM would be a different project, no?

@LeePorte
Copy link

LeePorte commented Sep 11, 2024

I thought the whole point of bonob was as a Sonos SMAPI implementation, which can adapt for different backend sources such as Subsonic. DLNA or WiiM would be a different project, no?

It was certainly this. However, I guess as Sonos are deciding that such things are undesirable there is a choice between pivoting or archiving this project and starting a new one. Only @simojenki is able to make that decision, and did throw it out there #205 (comment)

@gravelld
Copy link

gravelld commented Sep 11, 2024

Only @simojenki is able to make that decision, and did throw it out there #205 (comment)

Yeah, the WiiM comment was partly what motivated my reply.

The project still has worth - I haven't dropped it as a proxy for music services in Sonos. I haven't worked out why Sonos don't send credentials post-authorisation yet but I haven't had another go on it for a few weeks...

@simojenki
Copy link
Owner

It looks like Navidrome supports DLNA through some other 3rd party plugin here I am yet to try that, or for that matter yet to order a WiiM device to see what the experience is like.

I had considered the possibility of changing bonob so it can start up with either sonos/SMAPI or DLNA support in order to achieve similar functionality on the WiiM. Though I suspect that will take a considerable amount of effort. I'd probably be reluctant to just start an entire new project as there is quite a bit of work in bonob just to map the various Subsonic API endpoints into typescript etc, doing all that again from scratch doesn't appeal.

First I will probably try and get bonob working again on the new sonos app, even though I'm unlikely to ever use it that way as I'm not interested in opening firewall ports.

@TobiasDax
Copy link

Subsonic is natively visible

Screenshot_2024-09-07-09-20-08-21_5592fe85c89b9c7526dd9939eef9599a

How did you get subsonic to show up in Wiim?
You say it’s natively visible but apparently not for me? :)

@LeePorte
Copy link

How did you get subsonic to show up in Wiim? You say it’s natively visible but apparently not for me? :)

Have you enabled the DLNA server in subsonic? It's under settings => DLNA/UPnP

Subsonic

@gravelld
Copy link

gravelld commented Oct 11, 2024

I just wanted to update this thread with my own progress, as I haven't shared anything publically on Github yet and likely won't if it's not useful to others.

My aim is to use bonob, deployed online, as an adapter between a Sonos music service and a Subsonic server. I don't use bonob to integrate with any Sonos devices.

After several tweaks I have managed to get this working with the new apps, firmware etc. A summary of what I've done:

  • Everything has to be behind HTTPS.
  • Implemented OAuth. The Sonos docs are a bit vague, but when you return a token from getDeviceAuthToken you need to keep a record of it and the private key. The new app only sends the token in a HTTP header (it's suggested in the docs this occurs in the SOAP header on all calls, but it does not) from which you need to pluck it, look up the login info on your server, then forward onto the Subsonic layer.
  • The same model has to be updated when refreshing tokens.
  • I found calling getAlbumList2 and getArtists was too slow and caused timeouts in the Sonos app so fixed them by "embracing and extending" the Subsonic API following OpenSubsonic as much as possible and handling the changes in bonob.
  • Implemented reportAccountAction as it was showing an error... but I don't think it was an issue.

There's more to do but it basically works - I can browse and stream from a Subsonic server via a Sonos service. It's still in sandbox mode.

Edit: I realised I wanted to save my work anyway, so I went ahead and forked. It's here: https://github.com/Astiga/bonob/tree/bonob-astiga but note it has some changes which call non 1.x Subsonic methods.

@araujojr82
Copy link

Awesome news! Thanks @gravelld !
@simojenki any chance of getting those changes merged?

@sjol
Copy link

sjol commented Oct 11, 2024

@gravelld do you have some instructions on how to get your fork up and running? I have a similar setup with airsonic running on a server. That has built in sonos support but it stopped working so I was hoping to put bonob in between.

@simojenki
Copy link
Owner

Great work @gravelld!

I see getArtists uses a custom endpoint, maybe you could lobby opensubsonic to add 'getArtistList' to their spec? It would be in keeping with other subsonic APIs, ie. getAlbumList2 so doesn't seem unreasonable.

Other than that we could look to get these changes merged in, though until the above is resolved you would need to maintain a fork for the custom endpoint that will not be present in ND, gonic etc. Although there is another option there that could be explored.

@gravelld
Copy link

I have already opened that issue - the key is supporting totalCount and pagination in general:

Agree about the merge, no point until it becomes official API.

@sjol Note you need to create a Sonos "music service" via https://developer.sonos.com/s/?language=en_US . I'm not sure if there's some sort of generic service you can re-use. Other than that it works like bonob - docker build and run it. But as pointed out it also uses custom API so you might need to make tweaks to the call to getArtistsList (back to getArtist) and getAlbumsList2 with the parallel call to get the album count via summing the artists' album counts). Probably easiest just to revert those commits.

@ianwebster7713
Copy link

@gravelld,
I am not a coders big toe but like @sjol I've been playing around trying to get Airsonic up and running and using BONOB as a test case.
Anyway, in both cases I can get a service into SONOS that can be set up and configured but can't get it to work. I can get both Airsonic and BONOB to authenticate via the SONOS app without errors but then when I try to browse the music service there is no content available (But equally - no errors).
Is there any chance you could share some details about how you configured the browse and search (on developer.sonos.com) capabilities on your setup? Or did it just work? Basically I'm after the details in the "request body" under the service configation tab of the service creation - just without any personal detail like your system ID.
Thanks in advance

@gravelld
Copy link

The key issue is that the login token is shared in a different way now - in the HTTP headers - and only the token, so you must record the token and combine it with the private key when making authenticated calls to the Subsonic layer.

I don't think my service configuration is in any way special - the real changes are in bonob, basically it's in my fork above.

@ianwebster7713
Copy link

@gravelld,
I'm really struggling to pull or build your changes into a docker container to have a play with. Any chance you have a built image you can share? Appreciate any help you can provide. When I try to docker pull your repository it doesn't like the capital A in Astiga and if I try to build it errors out on Copy .git. Apologies for the dumb questions.

@gravelld
Copy link

@ianwebster7713 I'm maxed out with Christmas atm but will try to look at this when I can.

@mvanduijker
Copy link

@ianwebster7713 I succeeded in making a docker image with the changes of @gravelld and pushed it to docker hub. I am not going to maintain this for long, so only for testing purposes.
I haven't tried it yet, pretty new to the Sonos ecosystem, but hope to play with it soon.

@arsaboo
Copy link

arsaboo commented Jan 8, 2025

@mvanduijker The image is functioning partially for me. I can't browse the Navidrome library, but searching and playing tracks work fine.

@chxx
Copy link

chxx commented Jan 12, 2025

@mvanduijker The image is functioning partially for me. I can't browse the Navidrome library, but searching and playing tracks work fine.

what is your start command?

@arsaboo
Copy link

arsaboo commented Jan 12, 2025

@mvanduijker The image is functioning partially for me. I can't browse the Navidrome library, but searching and playing tracks work fine.

what is your start command?

Which start command? I am running it as a container.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests