Home › Forums › General Discussion & Questions › Command line utility for controlling B&O products
- This topic has 11 replies, 2 voices, and was last updated 1 week, 2 days ago by andy_js.
-
AuthorPosts
-
31 August 2024 at 15:56 #58765
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.
-
AuthorPosts
- You must be logged in to reply to this topic.