Thank you for your donation!


Cloudsmith graciously provides open-source package management and distribution for our project.


Solved: Moode 8.3.0 RPi 1B+ - UPnP-Renderer doesnt show up
#11
There's nothing that shouts at me in that log. I found the order that you bring things back in seems to matter, restarting all the components isn't enough, they need to all be off for long enough to reset their cache and the restarted in order. The fact that you can see other UPnP devices shows that your network isn't fundamentally wrong. If you've done all the steps I suggested in order, I can't think of anything else to suggest I'm afraid.
----------------
Robert
Reply
#12
(03-20-2023, 09:28 AM)psychofaktory Wrote: Unfortunately, that is not the solution either.

I have an OPNsense firewall here.
I have already restarted this several times.
I also have a BubbleUPnP server on the same subnet as the Moode player. This shows all other UPnP renderers in the subnet.
I had also reset and restarted this.
With the Raspberry Pi 1 with the Moode 8.3.0 I had also done the described steps.
The control points were also restarted several times.

The other UPnP players are a Moode 8.1.2, the same Raspberry with Moode 6.4.1 before, a Grundig internet radio, a Pioneer receiver and its renderer proxified via the BubbleUPnP server.

The UPnP control points are all Android devices (11-13) with the BubbleUPnP app.

In the meantime, I specified a value for the upnplogfilename parameter in the upmpdcli configuration, set the loglevel to 5 and the upnploglevel to 4.

The logfile created with this is in the attachment.

I don't see anything in the upmpdcli startup log that relates to network errors. UPnP uses IP Multicast for discovery and announcement https://en.wikipedia.org/wiki/Simple_Ser...y_Protocol so you may want to check your Firewall device and servers to make sure there are no explicit deny rules for this protocol or its address space.

Since moOde just uses the standard Debian package for upmpdcli I think your best bet might be to view the upmpdcli maintainers repo to see if there any similar issues, and then post your specific issue.
https://framagit.org/medoc92/upmpdcli/activity

I'd post version of upmpdcli, the contents of the conf file and your debug log. 

Package version.

Code:
pi@moode:~ $ dpkg -l | grep upmpdcli
hi  upmpdcli   1.5.12-1moode1    arm64    UPnP Media Renderer front-end to MPD, the Music Player Daemon

Default conf file. 
Post your conf file if it's different than the default file.
Code:
pi@moode:~ $ cat /etc/upmpdcli.conf
#The XML tags in the comments are used to help produce the documentation
#from the sample/reference file, and not at all at run time, where
#comments are just comments. Edit at will.
#The command line options have higher priorities than the values in
#this file.

# Upmpdcli configuration


# Upmpdcli general parameters

# Log file name.
#logfilename =
# Log level.
#loglevel = 2
# XML and other constant data storage directory.
#pkgdatadir=/usr/share/upmpdcli
# Name of lock file used to store the current process pid.
#pidfile = /var/run/upmpdcli.pid

# UPnP network parameters

# Network interface to use for UPnP.
#upnpiface =
# IP address to use for UPnP, alternative to using an interface name.
#upnpip =
# Port number used for UPnP.
#upnpport =
# Enable use of IPV6.
#useipv6 = false

# Media Renderer parameters

# "Friendly Name" for the Media Renderer.
friendlyname = Moode UPNP
# Specific friendly name for the UPnP/AV Media Renderer.
avfriendlyname = Moode UPNP
# Enable UPnP AV services (0/1).
upnpav = 1
# Enable OpenHome services (0/1).
openhome = 0
# Disable the OpenHome Credentials service.
#lumincompat = 0
# Store metadata into the OpenHome "metatext" variable.
#ohinfotexttodata = 0
# Save the streaming services login parameters to disk.
#saveohcredentials = 1
# Check that input format is supported.
checkcontentformat = 1
# Path to the openssl command
#opensslcmd =
# Path to the Renderer icon.
iconpath = /usr/share/upmpdcli/moode_audio.png
# Directory used to store cached data
#cachedir = /var/cache/upmpdcli
# Path to the presentation HTML document
#presentationhtml = /usr/share/upmpdcli/presentation.html
# Advertise L16 format support
#enablel16 = false

# MPD parameters

# Host MPD runs on.
#mpdhost = localhost
# IP port used by MPD
#mpdport = 6600
# MPD password.
#mpdpassword =
# MPD connection timeout in milliseconds.
#mpdtimeoutms = 2000
# Set if we own the MPD queue.
#ownqueue = 1

# Audio control hooks

# Command to run when playback is about to begin.
#onstart =
# Command to run when MPD state switches to "PLAY".  
#onplay =
# Command to run when MPD state switches to "PAUSE".  
#onpause =
# Command to run when MPD state switches to "STOP".
#onstop =
# Command to run when the setstandby action is called.
#onstandby =
# Use external command to manage the the sound volume (0/1).
#externalvolumecontrol =
# Command to run for reading the sound volume.
#getexternalvolume =
# Command to run to set the volume.
#onvolumechange =

# UPnP/AV tweaking

# Automatically fake a Play command when track is set.
#avtautoplay = 0

# OpenHome parameters

# The name of the room where the Product is located.
ohproductroom = Moode UPNP
# Path to an external file with radio definitions.
radiolist = /usr/share/upmpdcli/radio_scripts/radiolist.conf
# Radio metadata scripts directory.
#radioscripts = /usr/share/upmpdcli/radio_scripts
# Manufacturer name.
#ohmanufacturername = UpMPDCli heavy industries Co.
# Manufacturer information.
#ohmanufacturerinfo = Such nice guys and gals
# URL for manufacturer web site.
#ohmanufacturerurl = http://www.lesbonscomptes.com/upmpdcli
# Uri for manufacturer’s logo.
#ohmanufacturerimageuri =
# Model name.
#ohmodelname = UpMPDCli UPnP-MPD gateway
# Model information.
#ohmodelinfo =
# URL for model web site.
#ohmodelurl = http://www.lesbonscomptes.com/upmpdcli
# Uri for model’s icon.
#ohmodelimageuri =
# User-visible product name. By default this is set to ModelName.
#ohproductname = Upmpdcli
# Product information.
#ohproductinfo =
# URL for product web site. This may be the UPnP presentation page.
#ohproducturl =
# Uri for product image.
#ohproductimageuri =
# Save queue metadata to disk (0/1).
#ohmetapersist = 1
# Mimimum interval (Seconds) between two cache saves.
#ohmetasleep = 0

# Media Server general parameters

# Friendly name for the Media Server (if enabled).
#msfriendlyname =
# Hostname/IP address used in proxy URLs.
#plgmicrohttphost =
# IP port for the tidal/qobuz local HTTP service.
#plgmicrohttpport = 49149
# Decide if we proxy (copy: fetch/serve), or redirect the streaming services streams.
#plgproxymethod = redirect
# Path to the Media Server icon.
#msiconpath = /usr/share/upmpdcli/icon.png

# Highresaudio streaming service parameters

# Hra user name.
#hrauser = your hra user name
# Hra password.
#hrapass = your Hra password
# Hra language setting (en/de).
#hralang = en

# Spotify streaming service parameters

# Spotify user name.
#spotifyuser = me@some.place
# Spotify password.
#spotifypass = agoodpassword
# Spotify preferred bitrate: 160 (default), 320 or 96.
#spotifybitrate = 160

# Tidal streaming service parameters

# Tidal user name.
#tidaluser = your tidal user name
# Tidal password.
#tidalpass = your Tidal password
# Tidal API token.
#tidalapitoken = thetoken
# Tidal stream quality.
#tidalquality = low

# Qobuz streaming service parameters

# Qobuz user name.
#qobuzuser = me@some.place
# Qobuz password.
#qobuzpass = agoodpassword
# Qobuz stream quality.
#qobuzformatid = 5

# Deezer streaming service parameters

# Deezer user name.
#deezeruser = me@some.place
# Deezer password.
#deezerpass = agoodpassword

# Local Media Server parameters

# Bogus user name variable.
#uprcluser = bugsbunny
# Plugin Title.
#uprcltitle = Local Music
# HTTP host and port for serving media files
#uprclhostport =
# uprcl Recoll index directory
#uprclconfdir = /var/cache/upmpdcli/uprcl
# Name of the user Recoll config additions file
#uprclconfrecolluser = /var/cache/upmpdcli/uprcl/recoll.conf.user
# Name of the Minim Server configuration file
#uprclminimconfig =
# Media directories
#uprclmediadirs = /tmp
# Path translations.
#uprclpaths =

# Songcast Receiver parameters

#Parameters for the Songcast modes. These are read by either/both the
#songcast and upmpdcli processes
# Log file name for sc2mpd (default stderr)
#sclogfilename =
# Log verbosity for sc2mpd.
#scloglevel = 3
# sc2mpd play method (mpd/alsa).
#scplaymethod = mpd
# Port used by sc2mpd for MPD to connect to.
#schttpport = 8768
# Alsa device used by sc2mpd for playing audio.
#scalsadevice = default
# sc2mpd resampling method.
#sccvttype = SRC_SINC_FASTEST
# Scale songcast stream based on mpd volume value
#scusempdvolume = 0
# Path to sc2mpd.
#sc2mpd =
# Path to a screceiver state file.
#screceiverstatefile =

# Songcast Sender parameters

#Parameters tor the Sender/Receiver mode. Only does anything if
#scplaymethod is alsa
# !!Standard Songcast receivers only support PCM!! Codec to use for the network stream.
#scstreamcodec =
# Path to starter script
#scsenderpath =
# Scale the Songcast stream.
#scstreamscaled = 1
# localhost port to be used by the auxiliary mpd.
#scsendermpdport = 6700
# External sources script directory.
#scripts_dir = /usr/share/upmpdcli/src_scripts
# Grace period to wait for a script process to exit before it is forcely killed.
#scscriptgracesecs = 2

Your debug log.
Code:
:4:src/mpdcli.cxx:131::MPDCLi::openconn: mpd protocol version: 0.23.5
:4:src/mpdcli.cxx:140::MPDCli::startEventLoop
:4:libupnpp/upnpplib.cxx:208::LibUPnP: serveronly 1 ifnames [] inip [] port 0
:4:src/mpdcli.cxx:189::MPDCli::pollerCtl: mpd is not playing
:3:libupnpp/upnpplib.cxx:244::LibUPnP: Using IPV4 10.20.20.52 port 49152 IPV6  port 49152
:4:libupnpp/device/device.cxx:541::UpnpDevice::addService: [urn:av-openhome-org:serviceId:Time]
:4:libupnpp/device/device.cxx:541::UpnpDevice::addService: [urn:av-openhome-org:serviceId:Volume]
:4:libupnpp/device/device.cxx:541::UpnpDevice::addService: [urn:av-openhome-org:serviceId:Credentials]
:4:src/execmd.cpp:472::ExecCmd::startExec: (0|1) openssl {rsa} {-in} {/var/cache/upmpdcli/ohcreds/credkey.pem} {-RSAPublicKey_out}
:5:src/netcon.cpp:372::Netcon::selectloop: fd 12 has 0x0 mask, erasing
:5:src/execmd.cpp:831::ExecCmd::doexec: selectloop returned 0
:4:src/execmd.cpp:997::ExecCmd::wait: got status 0x0
:5:src/conftree.cpp:240::ConfSimple::ConfSimple: fstream(w)(/var/cache/upmpdcli/ohcreds/screds, 8) errno 2
:4:src/ohcredentials.cxx:345::OHCredentials: error opening for read (probably not an error)/var/cache/upmpdcli/ohcreds/screds errno 2
:4:libupnpp/device/device.cxx:541::UpnpDevice::addService: [urn:av-openhome-org:serviceId:Playlist]
:4:src/ohplaylist.cxx:123::ohPlaylist: cache restore done
:4:libupnpp/device/device.cxx:541::UpnpDevice::addService: [urn:av-openhome-org:serviceId:Radio]
:4:libupnpp/device/device.cxx:541::UpnpDevice::addService: [urn:av-openhome-org:serviceId:Info]
:4:libupnpp/device/device.cxx:541::UpnpDevice::addService: [urn:av-openhome-org:serviceId:Product]
:5:src/ohproduct.cxx:122::OHProduct::OHProduct: sources: <SourceList><Source><Name>Playlist</Name><Type>Playlist</Type><Visible>true</Visible><SystemName>Playlist</SystemName></Source><Source><Name>Radio</Name><Type>Radio</Type><Visible>true</Visible><SystemName>Radio</SystemName></Source></SourceList>
:4:libupnpp/device/device.cxx:541::UpnpDevice::addService: [urn:upnp-org:serviceId:ContentDirectory]
:4:libupnpp/device/device.cxx:541::UpnpDevice::addService: [urn:upnp-org:serviceId:ConnectionManager]
:4:src/main.cxx:211::Media server event loop
:4:src/main.cxx:785::Renderer event loop
Enjoy the Music!
moodeaudio.org | Mastodon Feed | GitHub
Reply
#13
Hello,

I am a new user of MoOde, and it seems I have the same problem: it doesn't detect my UPnP server.

My configuration is:
- image 2023-03-14-moode-r830-lite
- raspberry pi 1B (512 Mo, 32bits) + HifiBerry DAC
- UPnP server : Universal Media Server (UMS) 13.2.0 on Ubuntu 20.04

My UMS server perfectly works on my local network, with clients like VLC or Android TV, wifi or ethernet
It also works ok on my RPI using RuneAudio as a client.

Here with MoOde, I have activated Renderers / UPnP Client for MPD, then M / Update Library, but then, nothing.

It is not clear to me where the detected UPnP servers should be displayed:
in "Browse by Folder", menu "Library" on the left, the entries are :
- NAS
- SDCARD
- USB
- Default Playlist
- Favorites
There is no entry like "UPnP server", where should they be displayed if detected ? Is there a specific URL ?

Thanks
Reply
#14
If your music collection is on a UPnP Media Server then the moOde Library is out of the picture. It's only applicable for collections on locally attached storage (USB Drive or uSD Card) or NAS via Samba or NFS file sharing.

The UPnP Client for MPD in moOde functions as a UPnP Media Renderer. Your UPnP control point (VLC, etc) should list "Moode UPNP" as a renderer.
Enjoy the Music!
moodeaudio.org | Mastodon Feed | GitHub
Reply
#15
(03-20-2023, 09:53 AM)the_bertrum Wrote: I found the order that you bring things back in seems to matter, restarting all the components isn't enough, they need to all be off for long enough to reset their cache and the restarted in order.  The fact that you can see other UPnP devices shows that your network isn't fundamentally wrong.
I had left the devices all unpowered for longer and brought them back online in the order you suggested.
My network is totaly fine.
All other components, including the rest of the UPnP devices also work flawlessly.

For testing, I brought the same Raspberry again into a completely independent network, which was created especially for this purpose.
Again, Moode did not show up as a UPnP renderer in BubbleUPnP. Another device, which I had also connected to the network for the counter test, was displayed without any problems.


(03-20-2023, 11:08 AM)Tim Curtis Wrote: UPnP uses IP Multicast for discovery and announcement https://en.wikipedia.org/wiki/Simple_Ser...y_Protocol so you may want to check your Firewall device and servers to make sure there are no explicit deny rules for this protocol or its address space.
I have configured the firewall myself. There are no deny rules or similar that could intervene here.

(03-20-2023, 11:08 AM)Tim Curtis Wrote: Post your conf file if it's different than the default file.
The configuration (with the exception of my adjustment to debug-logging today) is the default configuration of a fresh Moode installation.



I have a hunch that it is because on the Raspberry Pi 1B, the network stack may be different from the more modern Raspberries and therefore no UPnP multicast is sent from the Raspberry to the network.

Would that be possible?

Does anyone here have a Raspberry Pi 1B with MoodeOS 8.3.0 where the UPnP renderer works without problems?
Reply
#16
(03-20-2023, 01:20 PM)psychofaktory Wrote:
(03-20-2023, 09:53 AM)the_bertrum Wrote: I found the order that you bring things back in seems to matter, restarting all the components isn't enough, they need to all be off for long enough to reset their cache and the restarted in order.  The fact that you can see other UPnP devices shows that your network isn't fundamentally wrong.
I had left the devices all unpowered for longer and brought them back online in the order you suggested.
My network is totaly fine.
All other components, including the rest of the UPnP devices also work flawlessly.

For testing, I brought the same Raspberry again into a completely independent network, which was created especially for this purpose.
Again, Moode did not show up as a UPnP renderer in BubbleUPnP. Another device, which I had also connected to the network for the counter test, was displayed without any problems.


(03-20-2023, 11:08 AM)Tim Curtis Wrote: UPnP uses IP Multicast for discovery and announcement https://en.wikipedia.org/wiki/Simple_Ser...y_Protocol so you may want to check your Firewall device and servers to make sure there are no explicit deny rules for this protocol or its address space.
I have configured the firewall myself. There are no deny rules or similar that could intervene here.

(03-20-2023, 11:08 AM)Tim Curtis Wrote: Post your conf file if it's different than the default file.
The configuration (with the exception of my adjustment to debug-logging today) is the default configuration of a fresh Moode installation.



I have a hunch that it is because on the Raspberry Pi 1B, the network stack may be different from the more modern Raspberries and therefore no UPnP multicast is sent from the Raspberry to the network.

Would that be possible?

Does anyone here have a Raspberry Pi 1B with MoodeOS 8.3.0 where the UPnP renderer works without problems?

Are you using a mix of Ethernet and WiFi?

I think Multicast behaves differently on WiFi. Typically for WiFi domains the Router will convert Multicast to Unicast as opposed to converting to Broadcast. Something like that.

There used to be a set of UPnP utilities that could be downloaded or compiled from the upmpdcli repo but I can't find them on the framgit.org repo. IIRC one of the utilities could be used to manually submit the Announce/Discover protocols.
Enjoy the Music!
moodeaudio.org | Mastodon Feed | GitHub
Reply
#17
(03-20-2023, 02:56 PM)Tim Curtis Wrote: Are you using a mix of Ethernet and WiFi?

The Raspberry is connected via LAN only.
My smartphones, which are used to control the renderers via BubbleUPnP, are connected via WiFi and can find the other renderers (also all connected via LAN) in the same subnet.
The BubbleUPnP server is connected via LAN. So WiFi is not involved here at all.
All UPnP renderers are also displayed on this one. Except for the Raspberry Pi 1B with Moode 8.3.0.


(03-20-2023, 02:56 PM)Tim Curtis Wrote: I think Multicast behaves differently on WiFi. Typically for WiFi domains the Router will convert Multicast to Unicast as opposed to converting to Broadcast. Something like that.

My Ubiquiti UniFi 6 Lite access points has a feature called "Multicast Enhancement" which is enabled by default.
Without this all UPnP devices couldn't be discovered.
I think this is what you meant.
adcasts can also be allowed only for specific devices. But I have not activated this restriction.
Reply
#18
It does begin to sound very much like it is the 1B that's the deciding factor here. I'm afraid I don't have one on which I can experiment.
----------------
Robert
Reply
#19
Thanks Robert.
That's what I'm also thinking.
Reply
#20
Bullseye is probably too heavy a lift for 1B, since my 2 struggles with it. In the Raspberry Pi news release discussion on Bullseye, they mention that it will work on 1, but it will be slow.  So either wait, wait , wait for your 1 using Bullseye, or go back? Unfortunate, because I think the newer MPD versions sound better. One other interesting thing to mention with a 3B+ with the 8.3.0 64 bit OS powered from Allo Kali and a 3.7A SMPS. When doing Update Library over Wifi, the power LED blinks. I have not seen that before.
Reply


Forum Jump: