Moode Audio Player for Raspberry Pi

moOde 4.0b1 has been our hands all of 5 days. You must have a fast metabolism if that is "a long time":D

I cut out everything in your two messages about items which are in fact done correctly in my configuration.

Sorry should have been clearer, i have been compiling the latest versions of UPMPDCLI and UPEXPLORER for 6 months now on older versions of Moode audio so have used the Qobuz integration for sometime.

And here it gets interesting. When I play a Tidal track,
Code:
~ $ sudo upexplorer --album-art "Moode UPNP"
[url]http://192.168.1.153:57645/proxy/H4sIAAAAAAAAAA3DjQ6AEBQG0DfyUYTexs8lLWPR1uPX2c4xZ9-Bm0Z77kCDzRLdxUKrKNVlGhDJS7NqD-4Ch6S0wShHsHKRwpPVUXNoxd8_O3v-AAr9IZVSAAAA.jpg[/url], [url]http://192.168.1.153:57645/proxy/H4sIAAAAAAAAAA3DCQqAIBQFwBv5tMyl27h8zUiUNOj4NTDHnH0HbhrtuQMNNkt0FwutolSXaUAkL82qPbgLHJKSgtkcwcpFCk9WR80hFH__7Oz5A97L53NSAAAA.jpg[/url]
This is a URL to legitimate artwork proxied by my BubbleUPnP app (I get the correct artwork if I plug it into my browser) but it's given twice.

I will have to resurrect my Tidal subscription to confirm but this does not look like you are playing through the UPMPDCLI media server but the Cloud integration in the Bubble player where the the bubble player proxies the stream to UPMPDCLI which puts it in the MPD playlist. Did you enter you subscription details into Bubble? When you select library in Bubble are you selecting Moode UPNP-mediaserver or Local and Cloud.

Below I have used a bit of python script to see what MPD is playing when I play a Qobuz track first through the UPMPDCLI Server or the Bubble Local Cloud function

pi@Allo-moode:~ $ mpdstatus.py
{'album': 'Bande \xc3\xa0 Part', 'title': 'The Killing Moon', 'track': '1', 'artist': 'Nouvelle Vague feat. M\xc3\xa9lanie Pain', 'pos': '0', 'file': 'http://192.168.x.65:49149/qobuz/track?version=1&trackId=33691222', 'id': '59'}

Nouvelle Vague feat. Mélanie Pain
The Killing Moon
Bande à Part

(Next proxied)

pi@Allo-moode:~ $ mpdstatus.py
{'pos': '0', 'file': 'http://192.168.X.232:57745/proxy/qobuz/90E06C3BF82FD1C64A93229492058BA2.flac', 'id': '73'}

Notice the IP address of the stream is different , the second ip is actually my phone as Bubble is proxying. You can get some of this information from the currentsong.txt file if you enable this.

One of the things about the Web front is that it checks the status of MPD, if MPD returns no artist or title then it assumes it is a radio stream and displays it as thus.


playlist.png

It looks like the metadata is not being passed in the stream when Bubble proxies it.

I don't speak UPnP AV. Can the album art service legitimately return a list of URLs? If so, this is a problem with moOde 4.0b1. If not, this is a problem with BubbleUPnP. That would be sad because it appears to be the best available for Android---certainly it's worked well in every other respect and it knows the subscription services. I can ping the BubbleUPnP developer but who knows what that will accomplish and when.


Kent
 
This is all detailed in the setup docs file - did you read it? http://moodeaudio.org/docs/readme.txt

Essentially:

If you have a Pi3 or a Pi with compatible USB wifi hardware, and boot without an Ethernet cable, the system configures itself in AP mode with an SSID of 'Moode' and a password of 'moodeaudio'. (If you connected with Ethernet, it will be at the address given by your routers DHCP service.)

Connect your phone, tablet, computer to that AP and browse to the Moode device, either at Moode.local or at 172.24.1.1 and enter configuration.

If you want to connect to your home wifi, configure>network and scan for networks. I find it takes two presses - one to get the attention of the scan button, the second one returns the available APs.

Try pressing it more than once - it's never failed me in many different configurations.

Moode is unique (I believe) with mpd-based Pi music players in that it does present an AP for you to configure wirelessly and when you don't read the setup guide, can be a source of consternation.

Hi Kent,
and thank's for your detailed instructions ! I've tried all of it and nothing seems to bring the Wifi interface up. On a fresh installation, the "moode" network appears but as soon as I try to configure WiFi to connect to my network it goes dead. The "Scan" function works sometimes, i.e. once. I've used different browsers, reset the router and hubs, etc. but no joy.

Anyways, I've given up on this release since the interface works with other players and because it doesn't seem to be an issue others are having. Ethernet works fine.

Again, thank's

Greetings.
 
For those that don't know UPMPDCLI acts as UPNP interface for MPD, the control point sends the http location to UPMPDCLI which in turn places the HTTP stream address into the MPD play list queue. UPMPDCLI doesn't actually process the audio just acts a mechanism for populating the playlist.

The current status for the playing track returned to the the control point is actually obtained from MPD by upmpdcli and then passed on.

Bubble is a good control point however BubbleDS is better of Ohome support which is a Linn extension that UPMPDCLI supports that means Renderer control of playlists and the ability to use Radio stations in the control point.
 
You can take the Kiwi out of NewZild but you can't take NewZild out of the Kiwi....:D

colloquial...Much ! (stumped !..... underarm..? hifix is an ocker ;)...)

How's the humidity there Mike...? you won't be missing this....3.6 degrees this morning here at Moonshine....brrr...:)

It's about 30C and 88% at 7pm. And no, I don't miss it. :) although I'm missing the RChamps.

Dug out all my sarongs and pacific safety boots - so I can get on building heavy machinery and wiring single phase dressed appropriately.
 
Hi Kent,
and thank's for your detailed instructions ! I've tried all of it and nothing seems to bring the Wifi interface up. On a fresh installation, the "moode" network appears but as soon as I try to configure WiFi to connect to my network it goes dead. The "Scan" function works sometimes, i.e. once. I've used different browsers, reset the router and hubs, etc. but no joy.

Anyways, I've given up on this release since the interface works with other players and because it doesn't seem to be an issue others are having. Ethernet works fine.

Again, thank's

Greetings.

Kent's the other bloke :)

In that situation, I've found that kind of problem can be caused by a duff SD burn.

Try reimaging your SD card and just inserting it and turning on,

In a couple of minutes you should see the Moode AP. appear in your wifi network list, if not there's something else afoot...

Given the standard nature of the Pi, if your SD image has been burned correctly, it will work. As you have other iterations and other images working, the most likely culprit is a bad download.

For my Pi work I tend to use a Mac, rather than a PC, but on both and on Linux, I use the same app for burning - Etcher. It's proven to be extremely reliable. Etcher

I would download the image again, burn to a known good Class 10 SD card, do no configuration just put it in the Pi and turn it on.

This is assuming a Pi3 - if you have something different, your WiFi adapter MUST use a supported AP-compatible chipset, if it doesn't, you will have to modify the config.txt file on your PC before the first boot.

Again, the process is detailed in the readme I referenced before and following exactly each step of the process is critical to success: burn the image, edit config.txt (fill in every option - it won't work if you miss a parameter thinking it doesn't apply) using a basic text editor (notepad, not wordpad), save, eject correctly - don't just pull the card out, put in the Pi and boot up. If your config file was correct, it will connect to your local wifi network and be available at moode.local.

This is a tried and true process that has worked many hundreds or thousands of times since Tim developed the method and just works, mostly without fail.

I think it unlikely you have a faulty Pi, and in my experience it is almost always a missed step or incompatible USB wifi adapter causing the problem.

What Pi are you using? If not a 3, what wifi adapter?
 
Sorry should have been clearer, i have been compiling the latest versions of UPMPDCLI and UPEXPLORER for 6 months now on older versions of Moode audio so have used the Qobuz integration for sometime.
Good on you, mate. I've ignored UPnP until now.
...
I will have to resurrect my Tidal subscription to confirm but this does not look like you are playing through the UPMPDCLI media server but the Cloud integration in the Bubble player where the the bubble player proxies the stream to UPMPDCLI which puts it in the MPD playlist. Did you enter you subscription details into Bubble? When you select library in Bubble are you selecting Moode UPNP-mediaserver or Local and Cloud.
...
Yeah, the penny finally dropped. This is exactly what I was doing. I tried out Tidal in BubbleUPnP with BubbleUPnP as my local media renderer to make sure I understood Tidal. Then when I switched to moOde as my renderer, I absentmindedly kept going to Tidal instead of moOde as my media server.

'Tother way round, the album art pops up in moOde as it should. Thanks.

I spent a coffee-break's worth of time birdwalking around the 'net looking for UPnP AV specs. At least the coffee was satisfying.

Interestingly, since using BubbleUPnP as my proxy for Tidal allows me to stream Tidal to any media renderer, I tried moOde 3.8.4. Yup, moOde plays the stream. Yup, moOde displays the album art!?! In the same test as before, upexplorer now returns a single URL
Code:
pi@moode-rpi2b:~ $ sudo upexplorer --album-art "MoodeRPi2B UPNP"
[url]http://192.168.1.157:57645/proxy/H4sIAAAAAAAAAA3DCwqAIBAFwBv53EUru025ax8SJQ06fg3M3nudgVtbee6ozfRDlsvEknHkZdMG72TUNBGUAsNZmRB8ZLAIp5BkTTSCBvv-zVm3D_9i__9SAAAA.jpg[/url]

So with moOde 3.8.4 I'm getting one behavior with album art and with moOde 4.0b1 I get another for the same control point and media server.

host "moode-rpi2b":
moode-r3.8.4, mpd 0.20.10, upmpdcli 1.1.3, libupnpp 0.14.1, libupnp 1.6.19.jfd2 [as reported by upmpdcli; dpkg reports 1.6.19.jdf3]

host "moode":
moode-r40b1, mpd 0.20.10, upmpdcli 1.2.15, libupnpp 0.15.3, libupnp [upmpdcli doesn't report libupnp version; dpkg reports 1:1.6.19+git20160116-1.2]

I haven't formally created a 40b1 bug report to Tim on this because I'm still sorting it. I have reported two other bugs with upmpdcli. It's start/stop init script is missing (so it doesn't restart on boot) and it's picking up a stale IP address for a certain situation.

Regards,
Kent
 
Last edited:
Good on you, mate. I've ignored UPnP until now.

Yeah, the penny finally dropped. This is exactly what I was doing. I tried out Tidal in BubbleUPnP with BubbleUPnP as my local media renderer to make sure I understood Tidal. Then when I switched to moOde as my renderer, I absentmindedly kept going to Tidal instead of moOde as my media server.

'Tother way round, the album art pops up in moOde as it should. Thanks.

I spent a coffee-break's worth of time birdwalking around the 'net looking for UPnP AV specs. At least the coffee was satisfying.

Interestingly, since using BubbleUPnP as my proxy for Tidal allows me to stream Tidal to any media renderer,

UPMPDCLI stands up a separate media if you have the parameters for a streaming service in the config file so you can use this to serve to another renderer just like Bubble but the music does not stop when you phone battery dies :)

If you notice any audio dropouts with Tidal then try the following below, when the UPMPDCLI first implemented the feature we found a dropout with the audo_buffer_size set to 4096 , he thought it might have been some sort of throttling.

audio_buffer_size "2048"
buffer_before_play "20%"


I tried moOde 3.8.4. Yup, moOde plays the stream. Yup, moOde displays the album art!?! In the same test as before, upexplorer now returns a single URL
Code:
pi@moode-rpi2b:~ $ sudo upexplorer --album-art "MoodeRPi2B UPNP"
[url]http://192.168.1.157:57645/proxy/H4sIAAAAAAAAAA3DCwqAIBAFwBv53EUru025ax8SJQ06fg3M3nudgVtbee6ozfRDlsvEknHkZdMG72TUNBGUAsNZmRB8ZLAIp5BkTTSCBvv-zVm3D_9i__9SAAAA.jpg[/url]

So with moOde 3.8.4 I'm getting one behavior with album art and with moOde 4.0b1 I get another for the same control point and media server.

Are you talking in the Control point or in the web front end? I am not sure this is UPMPDCLI but UPEXPLORER if it is the web front end.

host "moode-rpi2b":
moode-r3.8.4, mpd 0.20.10, upmpdcli 1.1.3, libupnpp 0.14.1, libupnp 1.6.19.jfd2 [as reported by upmpdcli; dpkg reports 1.6.19.jdf3]

host "moode":
moode-r40b1, mpd 0.20.10, upmpdcli 1.2.15, libupnpp 0.15.3, libupnp [upmpdcli doesn't report libupnp version; dpkg reports 1:1.6.19+git20160116-1.2]

No sure what you are saying here.

I haven't formally created a 40b1 bug report to Tim on this because I'm still sorting it. I have reported two other bugs with upmpdcli. It's start/stop init script is missing (so it doesn't restart on boot) and it's picking up a stale IP address for a certain situation.

Regards,
Kent

aah that explains why I had to start upmpdcli on my rebuilt RPI3 last night , I had assumed it was my cack handedness in the confg files. I have only noticed dual IP once when I switched from DHCP to Static , but Moode was also reporting the dual ip, a couple of reboots fixed it. Will try to replicate.
 
Last edited:
UPMPDCLI stands up a separate media if you have the parameters for a streaming service in the config file so you can use this to serve to another renderer just like Bubble but the music does not stop when you phone battery dies :)
UPnP is a many-headed hydra! I've enjoyed exploring Tidal's offerings but there's not a chance of a snowball in hell that I can explain how to use BubbleUPnP to my significant other. Tim's web UI, on the other hand, she gets.
Are you talking in the Control point or in the web front end? I am not sure this is UPMPDCLI but UPEXPLORER if it is the web front end.
Selected the Tidal playlist in the BubbleUPnP control point. It then shows up in the moOde 3.8.4 Web UI along with the album art for the track in progress, just as if it were playing tracks from a local NAS. With moOde 4.0.b1, I get the same playlist but "cover art not found" instead of images. And, yes, I thought I said upexplorer.
No sure what you are saying here.
I was just being my anal-retentive self, listing the current versions of the relevant software bits in the two versions of moOde I'm running for these tests.
aah that explains why I had to start upmpdcli on my rebuilt RPI3 last night , I had assumed it was my cack handedness in the confg files. I have only noticed dual IP once when I switched from DHCP to Static , but Moode was also reporting the dual ip, a couple of reboots fixed it. Will try to replicate.

Actually, IMHO upmpdcli should be managed entirely via systemcl and have nothing to do with init.d, but moOde 4.0b1 seems to have copied over the bifurcated way it was done in 3.8.4.

As for the stale IP address, it seems to have occurred in the following scenario:

Fresh copy of moOdeOS boots and gets a IP assigned by my router/DHCP server. UPnP renderer is then enabled during configuration steps. It picks up the assigned IP address. Everybody's happy. moOde is shut down. moOde is rebooted and gets a different IP address assigned. When upmpdcli starts, I find it still using the previous IP address (as determined by looking at the log file I enabled in upmpdcli.conf). Of course, now "Moode UPNP" (or whatever the configured name is) doesn't show up in UPnP-land 'cuz nobody can see it.

I say "seems to" because it has happened only sporadically (depends on the number of devices calling on DHCP assignment from the heavily-used router in our house). I haven't yet created a test harness to repo it in a controlled test. I could go to a static IP address but IMHO that's a band-aid (sorry, sticking plaster) solution.

And now off to do an afternoon stint as high school granddad-volunteer.

Regards,
Kent
 
@ Zoota from Borneo :)

oops, sorry. Have done all you describe, especially the fresh burning of the SD (with etcher, mac), etc. Hardware is a Pi3 with built-in WiFi. ... but nor worries, will ride it out, as said, ethernet works.

greetings

In that case, given the unlikely possibility that your Pi3 is faulty, the only conclusion is that you've missed a step - or that you are using a Hifiberry product... they screw the Pi3 wifi up and should be thrown away.:)

If you take a fresh, unused SD and put it in, boot it up, in around two minutes you should see the moode AP - if you don't, the chances of it being a a Pi problem are slim and it's time to look at your other peripherals.

As things like phones and tablets are pretty bullet-proof, I would use one of those to diagnose.

You are using a Mac (I think) and any Mac from the last decade should cope easily with finding the moode AP.
 
I use static so because of of some NFS rules I use and Android's DNS issues so had not noticed this before really, plus I never switch it off.

If I need a static IP, I tend to use DHCP reservations - easy to administer centrally without the need to hack network settings. And you can hack your router so it points your Android queries to your local DNS and thus get mDNS working locally.

My home network does tend to have a metric farktonne of devices on it and sorting out individual addresses for all those IoT devices would be a pita if you had to go to each one.

The sheer number of wired and wireless devices, and the foot-thick concrete and tile walls here are the reasons I have two 802.11ac AP's on each floor... and why I favour high-powered routers over the junk handed out by the ISP. Seamless AP-hopping with one SSID is peasy, if you know how.

So many 'computer' problems are because the person that bought the gear hasn't a clue about wireless, how to size it, configure it, measure it, maintain it.

My wife is off to lecture at a seminar today where the attendees have been told to bring their laptops - 35+ people trying to access an ISP-spec 802.11bg AP with a single radio is a recipe for disaster... but she won't let me send her off with a grunty DD-WRT device that's guaranteed to work - she's stubborn.

When it comes to networking, there is no substitute for cubic inches!
 
Last edited:
Further to the above rant, is one of you android users willing to try a change to your router to solve the mDNS issue with Android devices?

It seems that mDNS is supported in the various flavours of Android OS, but they have hard-coded 8.8.8.8 and 8.8.4.4 (google's DNS servers) and ignore any local DNS your router supplies with the DHCP lease.

So, your device is capable of resolving mDNS addresses (.local, .station, etc) if the query actually got to your local DNS server.

You could manually enter your local DNS address on your phone, but that is both a short-term fix and causes problems when you leave your local wifi. A better solution is to redirect requests to 8.8.8.8 and 8.8.4.4 to your local DNS.

If you're willing to try, let me know what make and model of router and I will tell you how to accomplish the hack.
 
If I need a static IP, I tend to use DHCP reservations - easy to administer centrally without the need to hack network settings. And you can hack your router so it points your Android queries to your local DNS and thus get mDNS working locally.

My home network does tend to have a metric farktonne of devices on it and sorting out individual addresses for all those IoT devices would be a pita if you had to go to each one.

The sheer number of wired and wireless devices, and the foot-thick concrete and tile walls here are the reasons I have two 802.11ac AP's on each floor... and why I favour high-powered routers over the junk handed out by the ISP. Seamless AP-hopping with one SSID is peasy, if you know how.

So many 'computer' problems are because the person that bought the gear hasn't a clue about wireless, how to size it, configure it, measure it, maintain it.

My wife is off to lecture at a seminar today where the attendees have been told to bring their laptops - 35+ people trying to access an ISP-spec 802.11bg AP with a single radio is a recipe for disaster... but she won't let me send her off with a grunty DD-WRT device that's guaranteed to work - she's stubborn.

When it comes to networking, there is no substitute for cubic inches!
I don't use a reservation in this case as I have swapping between a couple of Pi motherboards and I want to keep the same IP address. I am also living in a rented house with wireless bridged networking with a crappy ISP router which I am not about to hack especially when I tend to run my own DHCP server rather than a crappy or non crappy router which allows me to play with options. It's actually quicker to reboot with a static address as well.

The rest of the network apart from a domain controller and esxi and storage infrastructure is dhcp.
 
You can have multiple MAC's reserved to the same IP, but I get what you're saying. Boot speed has never really been an issue with the Pi3 - 12 secs vs 30, not what I'd call a ball-breaker :)

If you have control of your routing, a static route for 8.8.4.4 and 8.8.8.8 mask 255.255.255.255 to a dummy address (something you are sure has no device associated) should see your android device defaulting to the dhcp-supplied ones and thus, able to resolve mDNS

The same technique is used to spoof Chromecasts if you are on a smart DNS to access geo-locked content.
 
You can have multiple MAC's reserved to the same IP, but I get what you're saying. Boot speed has never really been an issue with the Pi3 - 12 secs vs 30, not what I'd call a ball-breaker :)

If you have control of your routing, a static route for 8.8.4.4 and 8.8.8.8 mask 255.255.255.255 to a dummy address (something you are sure has no device associated) should see your android device defaulting to the dhcp-supplied ones and thus, able to resolve mDNS

The same technique is used to spoof Chromecasts if you are on a smart DNS to access geo-locked content.
Mmm ok, I am used to windows dhcp servers where the Mac address needs to be unique in the reservations table.

Will check the route hack.
 
@TheOldPresbyope

Will do some packet captures tonight to make sure but I think part of the issue is how the playback panel PHP code decides whether it calls uplexplorer or not.

The last time I looked if the artist/Title was blank in the MPD current track status then the playback panel classed it as a Radio stream and did not call upexplorer.

If I open Bubble and proxy a Qobuz stream the details are correctly displayed in Kazoo another another control point.

Checking proxying through Bubble of my Qobuz subscription and two artwork urls are returned because it looks like Bubble publishes two different artwork size options (for Qobuz at least). I wonder if the earlier version only got the first. I will email the upmpdcli developer and ask.

Bubble and Kazoo will automatically connect to the last Renderer and Library so once you have finished testing opening Bubble should just take you to your preferred player. However I take your point about significant others, my wife refuses to acknowledge any interface, web or otherwise if its not the Sonos client and has demanded a STOP button, a Radio Paradise button and a nice nicer box. :(
 
Last edited: