Home › Forums › General Discussion & Questions › Browser based UI for B&O products
- This topic has 19 replies, 6 voices, and was last updated 1 week, 2 days ago by kuyttendaele.
-
AuthorPosts
-
2 September 2024 at 16:13 #59241
UPDATE: This thread was originally titled “Command line utility for controlling B&O products”
A while back I wrote a utility to control B&O products. I did this primarily because I wanted to understand how the B&O app communicates with B&O products, and better understand their capabilities, so that I could potentially write a replacement app. I recently found the motivation to clean that code up and have put it on GitHub: https://github.com/andy-js/beoutil
The last several updates to the B&O app have removed features, like the ability to view the play queue on a device that is in standby, as well as modify it, and begin playback from any point in that queue. I don’t know why they did this, but I suspect it’s because the newer Mozart based speakers are lacking functionality and it looks better to not expose that in the app. For me this makes the B&O app much less useful than it used to be. My utility provides a way to access this functionality again. It also has full support for multiroom audio, allowing you to borrow sources from other products, expand a multiroom experience, etc, all things that have become more difficult in the latest version of the B&O app.
B&O have also pushed out updates to the older speaker’s firmware which have removed features. I was dismayed to discover that they removed support for using a Deezer playlist as a timer, which allowed you to use a speaker as an alarm clock. I’d hoped to include support for this in my utility but the functionality is simply not there anymore on the speaker side. I think this is really poor form, they should’ve at least asked for confirmation before installing an update that removed features. Hopefully they will get better about this in the future.
For now I’ve abandoned my plans to create a third-party app and have instead started working on a web based GUI for B&O products that will be able to run on something like a Raspberry Pi. Imagine something a bit like sonos-web for B&O products, though the UI is going to be something other than the typical iTunes style UI that both sonos-web and the B&O app have. I think this style of UI just does not work for multiroom audio, especially when there are a large number of speakers. Eventually I expect this will be a total replacement for the overpriced BeoLiving Intelligence. I have other features in mind which I think will be game changers, but I’ll reveal that later. I plan to make this freely available with the source code.
3 September 2024 at 18:52 #58823Hello Andy,
Thanks for this initiative!
I tried both installation methods, with the following results.
Method 1: go install github.com/andy-js/beoutil@latest
And so, I tried your second method, with the following similar result:
However, the above must be somehow wrong, because your app seems to have written the files! I must be doing something wrong:
I realize you are not the help desk, but I do want to try these commands. Best,
3 September 2024 at 19:28 #58824No problem! I’m glad someone else thinks this utility might be useful. I’ve pushed some fixes that should resolve your problems. Both installation methods should now work.
4 September 2024 at 03:11 #58830Thanks. The good news is that these commands now download v.0.1.0, whereas before it was o.o.o.2024…
Unfortunately, no joy: method 1 yields “found (v0.1.0), but does not contain package github.com/andy-js/beoutil” and method 2 yields “no Go files in [local directory]. Underlined both outcomes here:
4 September 2024 at 11:39 #58850Part of the fixes I pushed involved correcting some mistakes in the README file. You should have better luck if you try this:
go install github.com/andy-js/beoutil/beoutil@latest
Or
git clone https://github.com/andy-js/beoutil.git
cd beoutil/beoutil
go install5 September 2024 at 04:10 #58868Thank you so much. With the new instructions, both Method 1 and Method 2 completed with no adverse feedback.
Alas!, once instalation appeared to be complete, the command «beoutil» was not found. The good news is that the command «go» was found.
5 September 2024 at 13:18 #58879Go binaries are normally installed into ~/go/bin. Try ~/go/bin/beoutil.
5 September 2024 at 19:41 #58910I again thank you, and admit that the Terminal lies outside my comfort level. I don’t want to further harass you.
5 September 2024 at 19:55 #58912To run beoutil from the current directory you will need to prefix the command with “./” so it ends up looking like “./beoutil”. The dot here refers to the current directory. To run beoutil from ~/go/bin (the tilde here refers to your home directory) you would type “~/go/bin/beoutil”. I recommend the latter because it will work regardless of the current directory. I don’t mind the questions so don’t sweat it.
6 September 2024 at 23:42 #58927It worked! On my Mac as long as I type (or use a shortcut) «~/go/bin/beoutil» it all works as you said. Thanks for your patience!
Now, I have 3 wireless devices, well, 4 if you count the H95, but I am not sure your app would track the BT-only H95, so forget about that. But… look at this:
MacBook-Air:bin fmmbair$ ~/go/bin/beoutil find-products Scanning for products... Found 3 products. MacBook-Air:bin fmmbair$ ~/go/bin/beoutil list-products NAME ROLE IP JID ONLINE STATE Beoplay A6 - 192.168.0.66 2703.1200287.27252054@products.bang-olufsen.com true - Beosound Essence - 192.168.0.235 2872.1293028.28118056@products.bang-olufsen.com true - MacBook-Air:bin fmmbair$
It found 3, but displayed only 2! The one missing is a Converter ML/NL, with the latest sw installed, and known to be functional 100%, and with IP 192.168.0.168, so it is in the same network segment.
I tried this twice; once with all systems on std.by, and then once with all systems playing the same Deezer source, multiroom.
What’s interesting is that get-sources 192.168.0.168 works! It gives me the sources for the product it didn’t list.
7 September 2024 at 00:46 #58929Wow, wrote a long post about an error, and something called “Wordfence” blocked my post and deleted my draft. Apparently it interpreted the output I pasted from Beoutil as a hack attempt!
Anyway, the command «watch» exposed a B&O error I had been lamenting for months now: if I am playing Deezer on all my 3 products, and then tell the A6 to start playing N.MUSIC, and then join the Essence, now all 3 products are playing N.MUSIC from the ML/NL Converter.
But «watch», applied sequentially to all 3 products demonstrates that «Type: NOW_PLAYING_STORED_MUSIC / Kind: playing» still reports as the current song/album/artist/artwork whatever last played on Deezer! B&O fails to update this to N.MUSIC, which should be the minimum, much less to profit from any N.MUSIC metadata. This error is reflected in the B&O app by showing whatever final Deezer artwork, and ignoring the current N.MUSIC.
I had thought the error laid on the app itself, but I guess it is something in the code of the ML/NL: it probably fails to send an update to the network. Sad, if so!
10 September 2024 at 13:02 #58979That wouldn’t surprise me. In my experience B&O products have a lot of software bugs that the app would need to work around if it wanted to provide a consistent user experience on top of them. This could be a quirk of the ML/NL converter that older app versions had special handling for. It’s also possible they broke something in a firmware update without realising it. They don’t seem to test their software properly.
One of my other B&O related coding projects is a piece of software that simulates a BeoSound Moment. It shows up in the B&O app and can be controlled by it, but it doesn’t actually play any music yet. I hacked it up to better understand how beolink multiroom audio works, with the intention of writing a small app for Mac OS that would allow me to join my Mac to audio playing from a BeoSound in another room. If I took that software and combined it with the ML Streamer Tinker Edition (see here https://hallaudio.com/en/produkter/the-ml-collection/ml-streamer-tinker-edition/) it could be used to build a totally open-source ML/NL converter replacement. Support for Airplay, Tidal, etc, could all probably be added as well, providing a nice upgrade over the official ML/NL converter.
21 September 2024 at 16:08 #59239I have a prototype web frontend for B&O products and I might share some screenshots of if people are interested. It has support for discovering active “experiences” as B&O used to call them, shows the track info and artwork for music, has basic playback controls, and allows you to adjust the volume of each “listener” or product joined to an experience. It’s basic but doesn’t look too bad.
In the course of coding this up I’ve found several bugs in the speakers firmware. The most egregious are:
- Speakers randomly stop producing sound when they finish one track and move to the next one. There doesn’t appear to be any way to detect this, because they still give progress updates and report themselves as not being muted. Adjusting the volume doesn’t help, but pausing the speaker and unpausing it seemed like it did. Because the speakers are moving through the track even though they aren’t producing any sound, you end up missing out on whatever they should’ve played, unless you start the track from the beginning again. This is pretty bad IMO and should never have escaped B&O’s internal QA.
- Speakers suddenly forget they are part of an “experience”. This caused me some serious head scratching and thought for sure I had a bug in my code. I had music playing on my BeoSound Stage and then joined my BeoSound 2 to it, but for some reason only the BeoSound 2 was reporting itself as having an active source (the one playing from the BeoSound Stage), yet both were playing music, something I can easily verify with my own two ears. This also confused B&O’s own app, which showed the BeoSound Stage as having “No source”. Other folks may have seen this as well.
I’m going to file bugs with B&O because this really isn’t good enough, and I’m quite sure these bugs haven’t always been in the firmware of these speakers.
7 October 2024 at 11:49 #59948Here are some screenshots showing a multiroom “experience”:
7 October 2024 at 18:51 #59955How much I wish it was the same thing to remotely control or even just monitor iTunes from a mac to another…
8 October 2024 at 07:27 #59956I’m looking forward to the web based tool, too! Very nice effort.
If it doesn’t need the latest and greatest browser to get accessed, that would be good solution to use older devices to control B&O even if their operating system doesn’t support any other apps. 🙂
9 October 2024 at 16:21 #59971Looks like a great initiative!
It looks like it wold bump Beoplay Remote GUI from my Mac!
3 December 2024 at 10:10 #61310I wanted to make a note somewhere of a bug I’ve been running into with the Beosound Stage: it seems that if I turn my TV off using the Beoremote in the evening I’m not able to turn it on again using the remote or the app, but I’ve discovered using the app to put the Beosound Stage into standby seems to get it out of this state, and after that I’m able to control it again using both the remote and the app. Sending the AllStandby command to the Beosound Stage using beoutil also seems to pull it out of this weird state. I will open a ticket with B&O when I get a chance but I have not been impressed with their support so far. They will probably ask for something dumb like a screenshot from the app.
- This reply was modified 2 weeks, 4 days ago by andy_js.
4 December 2024 at 00:28 #61328Just an FYI for anyone with a Mac with apple silicon can run the iPad version of the B&O app on their Mac Desktop/laptop etc with all the same features as the iPad app. Been working great for me for years.
12 December 2024 at 14:08 #61531Indeed… B&O iPad app on Apple Silicon works perfectly. Never touched the Essence Remote on my desk since the app is running on my Mac Studio / MacBook Pro.
-
AuthorPosts
- You must be logged in to reply to this topic.