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

DLNA "Play to" not working with plugin (and 10.9.x) #48

Closed
arpel opened this issue May 18, 2024 · 39 comments
Closed

DLNA "Play to" not working with plugin (and 10.9.x) #48

arpel opened this issue May 18, 2024 · 39 comments

Comments

@arpel
Copy link

arpel commented May 18, 2024

Hi, I've just updated 10.8.x version to latest 10.9.2, installed additional plugin-dlna and I can't get "Play to" to list something... as it used to do on 10.8.

I'm able to browse and play from a device to the Jellyfin DLNA : should not be a network issue (and was working before...).

I am using the official docker container in host networking mode and basically changed nothing to the configuration.

There's nothing in the logs, could you help?
Thanks!

@DrCalambre
Copy link

DrCalambre commented May 18, 2024

(with jellyfin_10.9.2-amd64)
I have the same problem. I did a clean install from scratch but I can't stream to my Samsung TV anymore. With the previous version jellyfin_10.9.1-amd64 worked without problems

screenshot

@arpel
Copy link
Author

arpel commented May 18, 2024

Thanks, just tried 10.9.1 (went straight from 10.8 to 10.9.2) and can confirm it immediately works.

What happened on 10.9.2 ? Might not be plugin related ?

@DrCalambre
Copy link

DrCalambre commented May 18, 2024

I honestly wouldn't know what to tell you. We'll have to wait and see what's new. I assume it has to do with changes between versions of the Jellyfin server (because the plugin is the same for both versions)

I leave screenshots confirming that with jellyfin10.9.1 DLNA it works without problems

screenshot2
screenshot

@javisol
Copy link

javisol commented May 18, 2024

Hi, same issue here with the "Cast to device/Play on" option.
I was on an old jellyfin version (I think 10.8.x) and recently switch to 10.9.? and DLNA plugin was working. Yesterday I updated to 10.9.2 and plugin stopped working

@arpel
Copy link
Author

arpel commented May 19, 2024

Hi, I think this is related to the various modifications of NetworkManager in the core application in 10.9.2.

If it fails when "bind address" field is empty in the network configuration tab, it actually works, even on 10.9.2 when I fill this field with local LAN IP of the server.

When doing so, the DLNA sessions are created and the targets appear in "Play to" menu :

[2024-05-19 09:10:18.133 +00:00] [DBG] [23] Jellyfin.Plugin.Dlna.ContentDirectory.ContentDirectoryService: Creating event subscription for "upnp:event" with timeout of 180 to "<http://192.168.0.31:49200/>"
[2024-05-19 09:10:21.015 +00:00] [DBG] [23] Jellyfin.Plugin.Dlna.Main.DlnaHost: Attempting to create PlayToController from location http://192.168.0.31:60006/upnp/desc/aios_device/aios_device.xml
[2024-05-19 09:10:21.063 +00:00] [DBG] [3] Jellyfin.Networking.Manager.NetworkManager: Trying to get bind address for source "192.168.0.31" - External: False
[2024-05-19 09:10:21.064 +00:00] [DBG] [3] Jellyfin.Networking.Manager.NetworkManager: "192.168.0.31": No matching bind address override found
[2024-05-19 09:10:21.064 +00:00] [DBG] [3] Jellyfin.Networking.Manager.NetworkManager: "192.168.0.31": Internal request received, matching internal bind address found: "192.168.0.61"
[2024-05-19 09:10:21.066 +00:00] [DBG] [3] Jellyfin.Plugin.Dlna.Main.DlnaHost: Dlna Device.Start
[2024-05-19 09:10:21.068 +00:00] [DBG] [3] Jellyfin.Plugin.Dlna.DlnaManager: Found matching device profile: "Marantz"
[2024-05-19 09:10:21.072 +00:00] [INF] [3] Jellyfin.Plugin.Dlna.Main.DlnaHost: DLNA Session created for "Marantz NR1200" - "Marantz NR1200"

Configuration field is in Dashboard -> Advanced -> Networking -> Bind to local IP : 192.168.0.61/24 (in my case)

@DrCalambre
Copy link

Hello Arpel. Good job!
I installed the jellyfin_10.9.2-amd64 version again to test and indeed, now you have to indicate the server IP in Dashboard -> Advanced -> Networks -> Link to local IP
In my case it is the IP of my internal network 192.168.1.104.

for the DNLA plugin to work well. Everything is well now. Thank you.

screenshot2
screenshot

@alaincao
Copy link

hi, just to add more information/confirmation: it did work in .91 version but broke in .92 for me as well.

also, in my case, binding to a single address as proposed by @arpel did indeed seem to fix the DLNA problem: from what I saw in the logs, it could detect my DLNA Sony hifi,
but since I am using a docker "macvlan" network (instead of the "host" mode), this renders the web interface inaccessible: the "web network" is different from the "DLNA network". (in fact, I had to manually edit the network.xmlfile to revert bc. I couldn't reach the GUI anymore...)
so in my case, I do indeed use 2 different addresses.

fyi, for now, I will just leave it as is and watch closely this issue. I can live without DLNA.
but if this plugin cannot bind to multiple addresses anymore, may I suggest adding a "binding address" configuration field here too?
in fact, I'd rather have that anyways since i'd rather not have the DLNA broadcasting in all networks anyways.

@Zen3515
Copy link

Zen3515 commented May 22, 2024

macvlan" network (instead of the "host" mode), this renders the web interface inaccessible: the

I too use macvlan, and we could specify two ips, make sure that the first one is your macvlan (the one for the DLNA)

In my case it looks like this (192.168.1.0/24 is my network for dlna(where each devices are))

image

@alaincao
Copy link

hi, thx a bunch for the idea of putting more than 1 address there o_0, it works for me too!
that being said, that 2nd address being one that is dynamically allocated (by Docker), I still consider this a temporary solution (ie. it will fail in the future, more than probably when I'll have completely forgotten about all this...)

nb. for the ones using the jellyfin/jellyfin Docker image like me: I also had to modify the env. variable HEALTHCHECK_URL=http://192.168.1.245:8096/health because it defaults to localhost.
otherwise, the container cannot properly start (ie. "starting" for a while, then "unhealthy")

@zorro0109
Copy link

After I put an address in " Link to local IP",I can link my tv.But the movie did not play.There is nothing displaying just a black screen.

@ms-afk
Copy link
Contributor

ms-afk commented May 26, 2024

This should now be fixed in #51.
Restarting Jellyfin should update the plugin automatically, otherwise just update it manually to version 2.0.0.0.

@alaincao
Copy link

FYI, 'just tested, and without manually setting the bind addresses,
it can find the device: I see my "hi-fi" in the list & select it,
it can send the play commands to the device: when I click the play button, the "hi-fi" display shows it is searching for something,
but the "hi-fi" doesn't seem to find the server: it keeps searching but never finds anything ; after a timeout (~40secs), it abandons and tries the next song.

web_1  | [00:30:40] [INF] [55] Jellyfin.Plugin.Dlna.DlnaManager: No matching device profile found. The default will need to be used. 
web_1  | {"FriendlyName": "CMT-MX700Ni/MX750Ni", "ModelNumber": null, "SerialNumber": null, "ModelName": "CMT-MX700Ni/MX750Ni", "ModelDescription": "Micro Hi-Fi Component System", "ModelUrl": null, "Manufacturer": "Sony Corporation", "ManufacturerUrl": "http://www.sony.net/", "Headers": [], "$type": "DeviceIdentification"}
^^^ this a bunch of times but seems normal: it appears also when everything is working correctly

web_1  | [00:31:22] [INF] [56] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app DLNA 10.9.2 playing The Forbidden Fruits Of Eden. Stopped at 0 ms
web_1  | [00:32:05] [INF] [55] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app DLNA 10.9.2 playing Everything Matters (feat. Pomme). Stopped at 0 ms
web_1  | [00:32:48] [INF] [56] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app DLNA 10.9.2 playing Giving In To The Love. Stopped at 0 ms

I don't know the thing at all, but my guess it sends the commands with a "source IP" from the wrong network.

nb: I notice that the 'NetworkManager' detects the expected address (192.168.1.245) last in its list.

web_1  | [00:20:38] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Defined LAN subnets: ["127.0.0.1/8", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]                                                                      
web_1  | [00:20:38] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Defined LAN exclusions: []                                                                                                                                 
web_1  | [00:20:38] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Used LAN subnets: ["127.0.0.1/8", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]                                                                         
web_1  | [00:20:38] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Filtered interface addresses: ["127.0.0.1", "172.18.0.5", "192.168.1.245"]                                                                                 
web_1  | [00:20:38] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Bind Addresses ["0.0.0.0"]                                                                                                                                 
web_1  | [00:20:38] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Remote IP filter is Allowlist                                                                                                                              web_1  | [00:20:38] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Filtered subnets: []                                                                                                                                       

thanks for your work, btw!

@alaincao
Copy link

alaincao commented May 27, 2024

hi, me again, sorry!
right when I clicked the "send comment" button, I got the notification that the v10.9.3 is out...
so after updating & retesting, everything is now working correctly o_0 .
it seems this issue is fixed for me

but I also noticed the interfaces got registered in a different order:

web_1  | [01:02:21] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Filtered interface addresses: ["127.0.0.1", "192.168.1.245", "172.18.0.5"]                                                                                 
web_1  | [01:02:21] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Bind Addresses ["0.0.0.0"]

question, then: am I correct to understand this is only a question of chance that this is working ?

@crobibero
Copy link
Member

There was a DLNA plugin release that was supposed to fix IP binding issues, and a server release that was also supposed to fix IP binding issues.

I'm leaning towards the issue is fixed and not just chance 🤞

@ms-afk
Copy link
Contributor

ms-afk commented May 27, 2024

FYI, 'just tested, and without manually setting the bind addresses, it can find the device: I see my "hi-fi" in the list & select it, it can send the play commands to the device: when I click the play button, the "hi-fi" display shows it is searching for something, but the "hi-fi" doesn't seem to find the server: it keeps searching but never finds anything ; after a timeout (~40secs), it abandons and tries the next song.

web_1  | [00:30:40] [INF] [55] Jellyfin.Plugin.Dlna.DlnaManager: No matching device profile found. The default will need to be used. 
web_1  | {"FriendlyName": "CMT-MX700Ni/MX750Ni", "ModelNumber": null, "SerialNumber": null, "ModelName": "CMT-MX700Ni/MX750Ni", "ModelDescription": "Micro Hi-Fi Component System", "ModelUrl": null, "Manufacturer": "Sony Corporation", "ManufacturerUrl": "http://www.sony.net/", "Headers": [], "$type": "DeviceIdentification"}
^^^ this a bunch of times but seems normal: it appears also when everything is working correctly

web_1  | [00:31:22] [INF] [56] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app DLNA 10.9.2 playing The Forbidden Fruits Of Eden. Stopped at 0 ms
web_1  | [00:32:05] [INF] [55] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app DLNA 10.9.2 playing Everything Matters (feat. Pomme). Stopped at 0 ms
web_1  | [00:32:48] [INF] [56] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app DLNA 10.9.2 playing Giving In To The Love. Stopped at 0 ms

I don't know the thing at all, but my guess it sends the commands with a "source IP" from the wrong network.

nb: I notice that the 'NetworkManager' detects the expected address (192.168.1.245) last in its list.

web_1  | [00:20:38] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Defined LAN subnets: ["127.0.0.1/8", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]                                                                      
web_1  | [00:20:38] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Defined LAN exclusions: []                                                                                                                                 
web_1  | [00:20:38] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Used LAN subnets: ["127.0.0.1/8", "10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"]                                                                         
web_1  | [00:20:38] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Filtered interface addresses: ["127.0.0.1", "172.18.0.5", "192.168.1.245"]                                                                                 
web_1  | [00:20:38] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Bind Addresses ["0.0.0.0"]                                                                                                                                 
web_1  | [00:20:38] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Remote IP filter is Allowlist                                                                                                                              web_1  | [00:20:38] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Filtered subnets: []                                                                                                                                       

thanks for your work, btw!

Strange, I'm still on 10.9.2 and with the new version of the plugin I can both find and stream to my DLNA music player without problems.

@alaincao
Copy link

@ms-afk ok, FYI, re-retested today and even when reverting back to version .92 the issue does not reappear...
but I also notice that the order of the interfaces in the logs is still the "correct" one: the "192.168" first

web_1  | [10:40:09] [INF] [1] Jellyfin.Networking.Manager.NetworkManager: Filtered interface addresses: ["127.0.0.1", "192.168.1.245", "172.18.0.5"]

so my guts feeling (and a little bit the code change in the merge request) is telling me it is taking the first address in the list (after the 127) and use it as source or something, and so rely on some "chance" to fall on the right one.
but this is just a guess ; I am really not sure what happened yesterday nor how I can reproduce or refute that hypothesis ...
in any case, this is another problem not related to this issue, so I consider this one closed.

again: thank you all for your work!

@ms-afk
Copy link
Contributor

ms-afk commented May 27, 2024

(and a little bit the code change in the merge request) is telling me it is taking the first address in the list

The code added in the pull requests only takes the first address if there is only one address present.

On the other hand the "old" code, still executed in some occasions, also takes the first address, but this address has to match the right network interface.
The three addresses in your log should be assigned to three different interfaces, so, again, there should be only one matching address.

This means that the order of those addresses should not matter. It is however possible that something else has been broken after 10.9.2, that is dependent on the order of the addresses.

@zorro0109
Copy link

jellyfin:10.9.3 DLNA:2.0.0.0

After updating jellyfin and plugins,it still does not work well.
image

Thanks.

@Shadowghost
Copy link
Contributor

@zorro0109 this seems to be a totally different issue (session related), please open a new issue for it.

@D43m0n
Copy link

D43m0n commented Jul 6, 2024

Updated to version 10.9.7 and DLNA-plugin version 2.0.0.0 yesterday/today. I also run on docker with macvlan. I read here and there in the linked other issues that it should not be necessary anymore to bind the server to local network addresses anymore. But with these versions I still need to do so. If I bind the server to the macvlan ip address and the docker internal ip address, then and only then I can hear music coming from my DLNA devices. If I remove the bindings and restart Jellyfin again, I can start to play a song/playlist but after a few seconds the next song is automatically playing and I loose the controls too. When I enter both ip addresses again in the Network section to bind the local addresses, it works again as expected.

relevant log
[2024-07-06 15:44:43.862 +02:00] [INF] [24] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "DLNA" "10.9.7" playing "I'm Good (Blue)". Stopped at "0" ms
[2024-07-06 15:44:43.881 +02:00] [INF] [26] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Playback stop did not have a tracker : "9ab0c000-f668-11de-9976-00a0def918f6-9156cfaba6de407682baf4d1f05b1494-eb91394f60a2dbf7374c68643595c342"
[2024-07-06 15:44:43.887 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Adding playback tracker : 9ab0c000-f668-11de-9976-00a0def918f6-9156cfaba6de407682baf4d1f05b1494-6f0815245631031650c46f1af0d0dd0b
[2024-07-06 15:44:43.889 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.Data.PlaybackTracker: PlaybackTracker : Adding Start Event : 07/06/2024 15:44:43
[2024-07-06 15:44:43.889 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Creating StartPlaybackTimer Task
[2024-07-06 15:44:43.895 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Entered
[2024-07-06 15:44:44.885 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "9ab0c000-f668-11de-9976-00a0def918f6-9156cfaba6de407682baf4d1f05b1494-6f0815245631031650c46f1af0d0dd0b"
[2024-07-06 15:44:53.926 +02:00] [INF] [27] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "DLNA" "10.9.7" playing "90s Kid". Stopped at "0" ms
[2024-07-06 15:44:53.933 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Playback stop tracker found, processing stop : "9ab0c000-f668-11de-9976-00a0def918f6-9156cfaba6de407682baf4d1f05b1494-6f0815245631031650c46f1af0d0dd0b"
[2024-07-06 15:44:53.936 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.Data.PlaybackTracker: PlaybackTracker : Adding Stop Event : 07/06/2024 15:44:53
[2024-07-06 15:44:53.936 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Playback stop but TrackedPlaybackInfo not found! not storing activity in DB
[2024-07-06 15:44:54.180 +02:00] [INF] [24] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Adding playback tracker : 9ab0c000-f668-11de-9976-00a0def918f6-9156cfaba6de407682baf4d1f05b1494-95d39ff1aa101637d110e43067268e0b
[2024-07-06 15:44:54.180 +02:00] [INF] [24] Jellyfin.Plugin.PlaybackReporting.Data.PlaybackTracker: PlaybackTracker : Adding Start Event : 07/06/2024 15:44:54
[2024-07-06 15:44:54.180 +02:00] [INF] [24] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Creating StartPlaybackTimer Task
[2024-07-06 15:44:54.180 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Entered
[2024-07-06 15:44:55.178 +02:00] [INF] [27] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "9ab0c000-f668-11de-9976-00a0def918f6-9156cfaba6de407682baf4d1f05b1494-95d39ff1aa101637d110e43067268e0b"
[2024-07-06 15:45:03.899 +02:00] [INF] [16] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: session.RemoteEndPoint : "http://192.168.1.31:49154/MediaRenderer/desc.xml"
[2024-07-06 15:45:03.903 +02:00] [INF] [16] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_playing_id     = "6f0815245631031650c46f1af0d0dd0b"
[2024-07-06 15:45:03.903 +02:00] [INF] [16] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id        = "9156cfaba6de407682baf4d1f05b1494"
[2024-07-06 15:45:03.903 +02:00] [INF] [16] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id_int    = 1
[2024-07-06 15:45:03.903 +02:00] [INF] [16] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_playing_id   = "95d39ff1aa101637d110e43067268e0b"
[2024-07-06 15:45:03.904 +02:00] [INF] [16] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_user_id      = "9156cfaba6de407682baf4d1f05b1494"
[2024-07-06 15:45:03.904 +02:00] [INF] [16] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : play_method          = "DirectStream"
[2024-07-06 15:45:03.904 +02:00] [INF] [16] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.ClientName         = "DLNA"
[2024-07-06 15:45:03.904 +02:00] [INF] [16] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.DeviceName         = "Keuken"
[2024-07-06 15:45:03.904 +02:00] [INF] [16] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemName             = "Di-rect - 90s Kid (90s Kid)"
[2024-07-06 15:45:03.904 +02:00] [INF] [16] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemId               = "6f0815245631031650c46f1af0d0dd0b"
[2024-07-06 15:45:03.905 +02:00] [INF] [16] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemType             = "Audio"
[2024-07-06 15:45:03.905 +02:00] [INF] [16] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Details do not match for play item
[2024-07-06 15:45:03.905 +02:00] [INF] [16] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Exited
[2024-07-06 15:45:14.182 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: session.RemoteEndPoint : "http://192.168.1.31:49154/MediaRenderer/desc.xml"
[2024-07-06 15:45:14.182 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_playing_id     = "95d39ff1aa101637d110e43067268e0b"
[2024-07-06 15:45:14.182 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id        = "9156cfaba6de407682baf4d1f05b1494"
[2024-07-06 15:45:14.182 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id_int    = 1
[2024-07-06 15:45:14.182 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_playing_id   = "95d39ff1aa101637d110e43067268e0b"
[2024-07-06 15:45:14.182 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_user_id      = "9156cfaba6de407682baf4d1f05b1494"
[2024-07-06 15:45:14.182 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : play_method          = "DirectStream"
[2024-07-06 15:45:14.182 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.ClientName         = "DLNA"
[2024-07-06 15:45:14.182 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.DeviceName         = "Keuken"
[2024-07-06 15:45:14.182 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemName             = "Felix Jaehn & Sandro Cavazza - All For Love (All For Love)"
[2024-07-06 15:45:14.182 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemId               = "95d39ff1aa101637d110e43067268e0b"
[2024-07-06 15:45:14.182 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemType             = "Audio"
[2024-07-06 15:45:14.182 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : All matches, playback registered
[2024-07-06 15:45:14.182 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Playback tracker found, adding playback info : "9ab0c000-f668-11de-9976-00a0def918f6-9156cfaba6de407682baf4d1f05b1494-95d39ff1aa101637d110e43067268e0b"
[2024-07-06 15:45:14.182 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Saving playback tracking activity in DB
[2024-07-06 15:45:14.195 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Exited
[2024-07-06 15:45:14.277 +02:00] [INF] [24] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "DLNA" "10.9.7" playing "All For Love". Stopped at "0" ms
[2024-07-06 15:45:14.283 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Playback stop tracker found, processing stop : "9ab0c000-f668-11de-9976-00a0def918f6-9156cfaba6de407682baf4d1f05b1494-95d39ff1aa101637d110e43067268e0b"
[2024-07-06 15:45:14.283 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.Data.PlaybackTracker: PlaybackTracker : Adding Stop Event : 07/06/2024 15:45:14
[2024-07-06 15:45:14.283 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Saving playback tracking activity in DB
[2024-07-06 15:45:14.536 +02:00] [INF] [24] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Adding playback tracker : 9ab0c000-f668-11de-9976-00a0def918f6-9156cfaba6de407682baf4d1f05b1494-231d1faeba833fe2560d4fa6c87f2513
[2024-07-06 15:45:14.536 +02:00] [INF] [24] Jellyfin.Plugin.PlaybackReporting.Data.PlaybackTracker: PlaybackTracker : Adding Start Event : 07/06/2024 15:45:14
[2024-07-06 15:45:14.537 +02:00] [INF] [24] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Creating StartPlaybackTimer Task
[2024-07-06 15:45:14.537 +02:00] [INF] [24] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Entered
[2024-07-06 15:45:15.532 +02:00] [INF] [15] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "9ab0c000-f668-11de-9976-00a0def918f6-9156cfaba6de407682baf4d1f05b1494-231d1faeba833fe2560d4fa6c87f2513"
[2024-07-06 15:45:16.189 +02:00] [ERR] [15] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL "POST" "/Sessions/1148cf9b2f7dcec31d0dc3080cb1ba5f/Playing/PlayPause".
System.Net.Http.HttpRequestException: Response status code does not indicate success: 500 (Internal Server Error).
   at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()
   at Jellyfin.Plugin.Dlna.PlayTo.DlnaHttpClient.SendRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Jellyfin.Plugin.Dlna.PlayTo.DlnaHttpClient.SendCommandAsync(String baseUrl, DeviceService service, String command, String postData, String header, CancellationToken cancellationToken)
   at Jellyfin.Plugin.Dlna.PlayTo.Device.SetPause(CancellationToken cancellationToken)
   at Emby.Server.Implementations.Session.SessionManager.SendMessageToSession[T](SessionInfo session, SessionMessageType name, T data, CancellationToken cancellationToken)
   at Jellyfin.Api.Controllers.SessionController.SendPlaystateCommand(String sessionId, PlaystateCommand command, Nullable`1 seekPositionTicks, String controllingUserId)
   at lambda_method1322(Closure, Object)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Jellyfin.Api.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
   at Jellyfin.Api.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
   at Jellyfin.Api.Middleware.IPBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
   at Jellyfin.Api.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Api.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Api.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
   at Jellyfin.Api.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
   at Jellyfin.Api.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
   at Jellyfin.Api.Middleware.ExceptionMiddleware.Invoke(HttpContext context)
[2024-07-06 15:45:20.152 +02:00] [INF] [27] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "172.19.0.1" closed
[2024-07-06 15:45:27.257 +02:00] [INF] [15] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "::ffff:192.168.1.14" request

@make-nz
Copy link

make-nz commented Aug 14, 2024

It's just two weeks ago, I got network receiver and had the above issues to, till I tead this post and updated the server.

One question @ALL

  • do you allways have the now playing bar at the bottom, or does it disappear for you too?
  • when you click the playing bar, do you get a now playing playlist view?
  • can you add another album to the now playing list? For me it just starts playing this album right way
    jellyfin-DLNA-noNowPlaying-Playlist

A bit OT, but you seem to use the DLNA feature much much longer, so hope you don't mind

@make-nz
Copy link

make-nz commented Aug 14, 2024

  • when you click the playing bar, do you get a now playing playlist view?

  • can you add another album to the now playing list? For me it just starts playing this album right way

Just cross checked from the other plattform -- you know, die origin of Jellyfin…

Has the view and adding works fine
other-DLNA-Sever-has-this-view

So it is not some issue with the Marantz

@calfus
Copy link

calfus commented Sep 12, 2024

Jellyfin.Server 10.9.11.0
linux (no docker)
DLNA plugin V 3.0.0.0

The above mentioned fix to enter local ip in the "Bind to local network address" has worked well for me the past few weeks until yesterday. Now my devices are undiscoverable if there is any value in the "Bind to local network address" field. The devices become discoverable if the field is blank but the playback fails to initiate with the following logs message:

image

@szotsaki
Copy link

I can confirm that this issue is still there on v10.9.11.

I also noticed that there's a seemingly erroneous status when no DLNA plugins are active:

  • DLNA 3.0.0.0
    • State: Restart
  • DLNA 2.0.0.0
    • State: Superceded (btw. this contains a typo)

After restarting Jellyfin, only 3.0.0.0 is shown with status "Active".

I also see this in the error log during start-up:

[INF] [1] Jellyfin.Plugin.Dlna.Main.DlnaHost: Registering publisher for "urn:schemas-upnp-org:device:MediaServer:1" on "127.0.0.1" with uri "http://127.0.0.1:8096/dlna/8900d942-6e02-479f-aa36-5699a18a865c/description.xml"
[DBG] [1] Jellyfin.Plugin.Dlna.Main.DlnaHost: "Device Added MediaServer - 8900d942-6e02-479f-aa36-5699a18a865c - http://127.0.0.1:8096/dlna/8900d942-6e02-479f-aa36-5699a18a865c/description.xml"
[ERR] [1] Jellyfin.Plugin.Dlna.Main.DlnaHost: Error registering endpoint
System.UriFormatException: Invalid URI: The hostname could not be parsed.
   at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind, UriCreationOptions& creationOptions)
   at System.Uri..ctor(String uriString)
   at System.UriBuilder..ctor(String uri)
   at Jellyfin.Plugin.Dlna.Main.DlnaHost.RegisterServerEndpoints()
   at Jellyfin.Plugin.Dlna.Main.DlnaHost.StartDevicePublisher(DlnaPluginConfiguration options)

Accessing it requires a user/password combo. Does this 127.0.0.1 address with port 8096 look ok?

@spacemanspiff2007
Copy link

I too have the issue that it's not possible to send to device.
My tv is discovered. Once I select it and hit the play button on any media nothing happens.
I've configured the local network address as suggested in the posts above.
If I browse media through dlna from the tv everything plays fine.

Docker in host mode running 10.9.11 and DLNA 3.0.0.0
This shows up in the logs:

[2024-09-29 08:28:02.905 +02:00] [INF] [3] Jellyfin.Plugin.Dlna.Main.DlnaHost: DLNA Session created for "[LG] webOS TV" - "LG TV"
[2024-09-29 08:28:24.019 +02:00] [ERR] [39] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL "POST" "/Sessions/2dbbe260f9cc71d651b382fc128231f0/Playing".
System.Net.Http.HttpRequestException: Response status code does not indicate success: 500 (Internal Server Error).
   at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()
   at Jellyfin.Plugin.Dlna.PlayTo.DlnaHttpClient.SendRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Jellyfin.Plugin.Dlna.PlayTo.DlnaHttpClient.SendCommandAsync(String baseUrl, DeviceService service, String command, String postData, String header, CancellationToken cancellationToken)
   at Jellyfin.Plugin.Dlna.PlayTo.Device.SetAvTransport(String url, String header, String metaData, CancellationToken cancellationToken)
   at Jellyfin.Plugin.Dlna.PlayTo.PlayToController2.SetPlaylistIndex(Int32 index, CancellationToken cancellationToken)
   at Jellyfin.Plugin.Dlna.PlayTo.PlayToController2.PlayItems(IEnumerable`1 items, CancellationToken cancellationToken)
   at Emby.Server.Implementations.Session.SessionManager.SendMessageToSession[T](SessionInfo session, SessionMessageType name, T data, CancellationToken cancellationToken)
   at Emby.Server.Implementations.Session.SessionManager.SendPlayCommand(String controllingSessionId, String sessionId, PlayRequest command, CancellationToken cancellationToken)
   at Jellyfin.Api.Controllers.SessionController.Play(String sessionId, PlayCommand playCommand, Guid[] itemIds, Nullable`1 startPositionTicks, String mediaSourceId, Nullable`1 audioStreamIndex, Nullable`1 subtitleStreamIndex, Nullable`1 startIndex)
   at lambda_method1203(Closure, Object)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Jellyfin.Api.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
   at Jellyfin.Api.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
   at Jellyfin.Api.Middleware.IPBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
   at Jellyfin.Api.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Api.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Api.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
   at Jellyfin.Api.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
   at Jellyfin.Api.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
   at Jellyfin.Api.Middleware.ExceptionMiddleware.Invoke(HttpContext context)

@disgustipated
Copy link
Contributor

disgustipated commented Oct 1, 2024

I started looking into this a bit on this issue post as it seems this one is the most specific to the playto functionality. still nothing conclusive but I found that when i removed the published url setting, and set the bind ip to a specific ip i was able to use playto on my lgtv. I suspect something with how this Sessions call is being made is going to the published url value and should be a local ip that is being registered as the publisher for dlna. the dlna plugin seems to have a lot of different locations where these urls are built...
I believe this is the call that is posting the 500

[2024-10-01 06:57:57.397 -04:00] [INF] [21] Microsoft.AspNetCore.Hosting.Diagnostics: Request finished "HTTP/1.1" "POST" "https"://"mypublishedURLsetting""""/Sessions/426533c9fc6d30842eb3000c4921403b/Playing""?ItemIds=...

note that the multiple double quotes seems odd and are getting injected there somehow, not sure if those could be causing a problem and not sure where they are coming from.

yeah, this has to be related to the publisheduri setting again. i just removed the bind ip and i have full functionality doing playto to my lg tv, from both the web ui and the android app and i was able to play an audio and video file directly to the tv.

@spacemanspiff2007
Copy link

yeah, this has to be related to the publisheduri setting again. i just removed the bind ip and i have full functionality doing playto to my lg tv, from both the web ui and the android app and i was able to play an audio and video file directly to the tv.

Can you show which settings work for you? I'm not quite sure what I have to configure ...

@make-nz
Copy link

make-nz commented Oct 2, 2024

  • when you click the playing bar, do you get a now playing playlist view?
  • can you add another album to the now playing list? For me it just starts playing this album right way

#48 (comment)
#48 (comment)

Could any oft you take a look at my post, please?
As I only now started using I don't know what it has to over, when working correct.

@disgustipated
Copy link
Contributor

@spacemanspiff2007 I thought I was on to something but it was my published url setting, it seems you dont need that any longer even when using nginx. When I'm playing to a device it seems to work fine without the published url. What does your network.xml file look like?

@spacemanspiff2007
Copy link

I just entered the local network address and the local networks. Everything else is empty or default.
I tried local network address with and without subnet but it makes no difference.
grafik

@disgustipated
Copy link
Contributor

Ok well I meant the xml file from your config folder but I think i see the problem there. i dont think that box for binding wants a CIDR address, try removing the /24 from the binden box. after you do that you have to restart jellyfin completely so the plugin pulls in the new value, i dont think the plugin reloads by itself when you save that

@Shadowghost
Copy link
Contributor

Shadowghost commented Oct 2, 2024

If it saves, it should work. I reworked the logic for that field back in 10.9 and setting the CIDR should work just as well as without or even with fill netmask.

Issues with devices not getting discovered are likely within how the ssdp listener binds to specific IPs/Interfaces

@disgustipated
Copy link
Contributor

Issues with devices not getting discovered are likely within how the ssdp listener binds to specific IPs/Interfaces

Cool, I was playing around with that logic a bit locally. it does seem to build two different lists of adapters which seemed odd, i reworked that a bit to pass the same IPs as the published url but i didnt see a difference either way. maybe ill make a patch to test with since i couldnt get that to reproduce. thats separate than this play to issue though. im not able to reproduce that when im not using the published url.

@spacemanspiff2007
Copy link

I tried it initially without the \24 but it did not work. Then I added it, restarted and it still doesn't work 😕
Both entries also log during startup as "used lan subnets" and "bind addresses".
It would be really nice if there was an example how to fill these boxes, maybe as a tooltip, as a description below or as a last resort in the help.

@Shadowghost
Every time I want to send to my tv (which is properly discovered) I get an error message like above in the logs. Playing from TV works fine. So it somehow must be a different issue. So imho it indeed does work.

@disgustipated
Copy link
Contributor

I have a feeling this one could be closed, my play to functionality has been working fine since i made the changes to the publisher uri and the ssdp discovery in v4.

@spacemanspiff2007
Copy link

It's still not working for me.
With 10.10.0 I can't even select the TV as a target in the APP any more:

System.NullReferenceException: Object reference not set to an instance of an object.
   at Emby.Server.Implementations.Session.SessionManager.<>c.<GetSessions>b__110_2(SessionInfo r)
   at System.Linq.Utilities.<>c__DisplayClass2_0`3.<CombineSelectors>b__0(TSource x)
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.ToList()
   at Emby.Server.Implementations.Session.SessionManager.GetSessions(Guid userId, String deviceId, Nullable`1 activeWithinSeconds, Nullable`1 controllableUserToCheck, Boolean isApiKey)
   at Jellyfin.Api.Controllers.SessionController.GetSessions(Nullable`1 controllableByUserId, String deviceId, Nullable`1 activeWithinSeconds)
   at lambda_method1198(Closure, Object, Object[])
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Jellyfin.Api.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
   at Jellyfin.Api.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
   at Jellyfin.Api.Middleware.IPBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
   at Jellyfin.Api.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Api.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Api.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
   at Jellyfin.Api.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
   at Jellyfin.Api.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
   at Jellyfin.Api.Middleware.ExceptionMiddleware.Invoke(HttpContext context)

I'd be happy to try something out and provide logs if that results in a working play-to functionality.
@crobibero Could you please reopen this issue?

@disgustipated
Copy link
Contributor

@spacemanspiff2007 I's suggest opening a separate issue with details about your setup. make sure youre on v4 of the plugin with 10.10, but that stacktrace does not seem to indicate anything with the dlna plugin and points more to something with your network config.

@spacemanspiff2007
Copy link

@disgustipated When I open the sendto menu from my PC and try to send to the TV I get this:

[2024-10-29 11:45:21.515 +01:00] [ERR] [96] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL "POST" "/Sessions/2dbbe260f9cc71d651b382fc128231f0/Playing".
System.Net.Http.HttpRequestException: Connection refused (192.168.0.233:1766)
 ---> System.Net.Sockets.SocketException (111): Connection refused
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
   at System.Net.Sockets.Socket.<ConnectAsync>g__WaitForConnectWithCancellation|285_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(QueueItem queueItem)
   at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
   at Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.<SendCoreAsync>g__Core|5_0(HttpRequestMessage request, Boolean useAsync, CancellationToken cancellationToken)
   at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.<SendCoreAsync>g__Core|5_0(HttpRequestMessage request, Boolean useAsync, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
   at Jellyfin.Plugin.Dlna.PlayTo.DlnaHttpClient.SendRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Jellyfin.Plugin.Dlna.PlayTo.DlnaHttpClient.SendCommandAsync(String baseUrl, DeviceService service, String command, String postData, String header, CancellationToken cancellationToken)
   at Jellyfin.Plugin.Dlna.PlayTo.Device.SetAvTransport(String url, String header, String metaData, CancellationToken cancellationToken)
   at Jellyfin.Plugin.Dlna.PlayTo.PlayToController2.SetPlaylistIndex(Int32 index, CancellationToken cancellationToken)
   at Jellyfin.Plugin.Dlna.PlayTo.PlayToController2.PlayItems(IEnumerable`1 items, CancellationToken cancellationToken)
   at Emby.Server.Implementations.Session.SessionManager.SendMessageToSession[T](SessionInfo session, SessionMessageType name, T data, CancellationToken cancellationToken)
   at Emby.Server.Implementations.Session.SessionManager.SendPlayCommand(String controllingSessionId, String sessionId, PlayRequest command, CancellationToken cancellationToken)
   at Jellyfin.Api.Controllers.SessionController.Play(String sessionId, PlayCommand playCommand, Guid[] itemIds, Nullable`1 startPositionTicks, String mediaSourceId, Nullable`1 audioStreamIndex, Nullable`1 subtitleStreamIndex, Nullable`1 startIndex)
   at lambda_method1317(Closure, Object)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Jellyfin.Api.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
   at Jellyfin.Api.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
   at Jellyfin.Api.Middleware.IPBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
   at Jellyfin.Api.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Api.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Api.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
   at Jellyfin.Api.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
   at Jellyfin.Api.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
   at Jellyfin.Api.Middleware.ExceptionMiddleware.Invoke(HttpContext context)

@spacemanspiff2007
Copy link

@disgustipated
I've updated to Jeyllfin 10.10.1 and 5.0.0 of the binding. I'm seeing this error:

[2024-11-04 21:17:35.926 +01:00] [INF] [15] Jellyfin.Plugin.Dlna.Main.DlnaHost: DLNA Session created for "[LG] webOS TV" - "LG TV" using profile "LG Smart TV"
[2024-11-04 21:20:32.682 +01:00] [ERR] [14] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request. URL "POST" "/Sessions/2dbbe260f9cc71d651b382fc128231f0/Playing".
System.Net.Http.HttpRequestException: Response status code does not indicate success: 500 (Internal Server Error).
   at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()
   at Jellyfin.Plugin.Dlna.PlayTo.DlnaHttpClient.SendRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at Jellyfin.Plugin.Dlna.PlayTo.DlnaHttpClient.SendCommandAsync(String baseUrl, DeviceService service, String command, String postData, String header, CancellationToken cancellationToken)
   at Jellyfin.Plugin.Dlna.PlayTo.Device.SetAvTransport(String url, String header, String metaData, CancellationToken cancellationToken)
   at Jellyfin.Plugin.Dlna.PlayTo.PlayToController2.SetPlaylistIndex(Int32 index, CancellationToken cancellationToken)
   at Jellyfin.Plugin.Dlna.PlayTo.PlayToController2.PlayItems(IEnumerable`1 items, CancellationToken cancellationToken)
   at Emby.Server.Implementations.Session.SessionManager.SendMessageToSession[T](SessionInfo session, SessionMessageType name, T data, CancellationToken cancellationToken)
   at Emby.Server.Implementations.Session.SessionManager.SendPlayCommand(String controllingSessionId, String sessionId, PlayRequest command, CancellationToken cancellationToken)
   at Jellyfin.Api.Controllers.SessionController.Play(String sessionId, PlayCommand playCommand, Guid[] itemIds, Nullable`1 startPositionTicks, String mediaSourceId, Nullable`1 audioStreamIndex, Nullable`1 subtitleStreamIndex, Nullable`1 startIndex)
   at lambda_method1148(Closure, Object)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
   at Jellyfin.Api.Middleware.ServerStartupMessageMiddleware.Invoke(HttpContext httpContext, IServerApplicationHost serverApplicationHost, ILocalizationManager localizationManager)
   at Jellyfin.Api.Middleware.WebSocketHandlerMiddleware.Invoke(HttpContext httpContext, IWebSocketManager webSocketManager)
   at Jellyfin.Api.Middleware.IPBasedAccessValidationMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager)
   at Jellyfin.Api.Middleware.LanFilteringMiddleware.Invoke(HttpContext httpContext, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Api.Middleware.QueryStringDecodingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.ReDoc.ReDocMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Api.Middleware.RobotsRedirectionMiddleware.Invoke(HttpContext httpContext)
   at Jellyfin.Api.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
   at Jellyfin.Api.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
   at Jellyfin.Api.Middleware.ExceptionMiddleware.Invoke(HttpContext context)

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