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 with Panasonic DMR-BCT750/755 does not work #109

Open
DSLinuxUser opened this issue Nov 22, 2024 · 8 comments
Open

DLNA with Panasonic DMR-BCT750/755 does not work #109

DSLinuxUser opened this issue Nov 22, 2024 · 8 comments

Comments

@DSLinuxUser
Copy link

DSLinuxUser commented Nov 22, 2024

Hello,

I installed JellyFin on my TrueNAS system and trying for a while now, to access with
a Panasonic DMR-BCT750/755 my JellyFin installation.

I looked into other issues and hints, but nothing worked, the Panasonic always displays the message "Can't connect to
the server".
Today I captured with tcpdump the traffic between the Panasonic and Jellyfin.
I don't know if this is red herring, but JellyFin sends a XML file "description.xml" containing this URL:
http://192.168.0.1:8096/dlna/11111111-2222-3333-4444-555555555555/icons/logo120.png

The Panasonic tries to access it, but gets a 404.
If I access this URL through Firefox I get the same error.

What do I need to do to fix this problem?

Sincerely,
DSLinuxUser

@FelixPetriconi
Copy link
Contributor

The problem is that the icons are not part of the compiled resources.
PR is on its way.

FelixPetriconi added a commit to FelixPetriconi/jellyfin-plugin-dlna that referenced this issue Dec 17, 2024
@DSLinuxUser
Copy link
Author

Thank you in advance, hopefully this is the only issue the Panasonic has.

@FelixPetriconi
Copy link
Contributor

Unfortunately not for me. I see the DLNA source in the player, but when I try to connect then it immediately shows an error that it cannot connect.
I already started comparing the TCP traces between a local installation of Jellyfin and Emby. I hope that I can come up with more information the next days.

@DSLinuxUser
Copy link
Author

DSLinuxUser commented Dec 23, 2024

Sadly you are right.
Now the Panasonic shows the JellyFin icon, but with selection of the JellyFin server,
just the previous "Unable to connect" error appears.

I am not really sure, what I am looking at, the Panasonic sends a Server-ID as SSDP to the JellyFin(?):

Simple Service Discovery Protocol
    HTTP/1.1 200 OK\r\n
        Response Version: HTTP/1.1
        Status Code: 200
        [Status Code Description: OK]
        Response Phrase: OK
    CACHE-CONTROL: max-age=1800\r\n
    DATE: Mon, 23 Dec 2024 16:02:49 GMT\r\n
    EXT:\r\n
    LOCATION: http://192.168.0.2:60607/ABCDEF123456/Server1/ddd\r\n
    SERVER: Linux/4.0 UPnP/1.0 Panasonic-UPnP-MW/1.0\r\n
    ST: urn:schemas-upnp-org:service:AVTransport:1\r\n
    USN: uuid:ABCDEF12-0300-1000-8000-ABCDEF123456::urn:schemas-upnp-org:service:AVTransport:1\r\n
    \r\n

After that, the JellyFin-Server sends to the Panasonic these 3 UDP packets:

HTTP/1.1 200 OK
EXT: 
DATE: Mon, 23 Dec 2024 16:02:56 GMT
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age = 1800
ST: upnp:rootdevice
SERVER: Unix/6.6.32.0 UPnP/1.0 RSSDP/1.0
USN: uuid:12345679-1111-2222-3333-123456790ABC::upnp:rootdevice
LOCATION: http://192.168.0.1:8096/dlna/12345679-1111-2222-3333-123456790ABC/description.xml
HTTP/1.1 200 OK
EXT: 
DATE: Mon, 23 Dec 2024 16:02:56 GMT
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age = 1800
ST: uuid:12345679-1111-2222-3333-123456790ABC
SERVER: Unix/6.6.32.0 UPnP/1.0 RSSDP/1.0
USN: uuid:12345679-1111-2222-3333-123456790ABC
LOCATION: http://192.168.0.1:8096/dlna/12345679-1111-2222-3333-123456790ABC/description.xml
HTTP/1.1 200 OK
EXT: 
DATE: Mon, 23 Dec 2024 16:02:56 GMT
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age = 1800
ST: urn:schemas-upnp-org:device:MediaServer:1
SERVER: Unix/6.6.32.0 UPnP/1.0 RSSDP/1.0
USN: uuid:12345679-1111-2222-3333-123456790ABC::urn:schemas-upnp-org:device:MediaServer:1
LOCATION: http://192.168.0.1:8096/dlna/12345679-1111-2222-3333-123456790ABC/description.xml

After these the Panasonic tries to send 3 ICMP packets to JellyFin,
which Wireshark marks as "Destination unrechable (Port unrechable)":

HTTP/1.1 200 OK
EXT: 
DATE: Mon, 23 Dec 2024 16:02:56 GMT
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age = 1800
ST: upnp:rootdevice
SERVER: Unix/6.6.32.0 UPnP/1.0 RSSDP/1.0
USN: uuid:12345679-1111-2222-3333-123456790ABC::upnp:rootdevice
LOCATION: http://192.168.0.1:8096/dlna/12345679-1111-2222-3333-123456790ABC/description.xml
HTTP/1.1 200 OK
EXT: 
DATE: Mon, 23 Dec 2024 16:02:56 GMT
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age = 1800
ST: uuid:12345679-1111-2222-3333-123456790ABC
SERVER: Unix/6.6.32.0 UPnP/1.0 RSSDP/1.0
USN: uuid:12345679-1111-2222-3333-123456790ABC
LOCATION: http://192.168.0.1:8096/dlna/12345679-1111-2222-3333-123456790ABC/description.xml
HTTP/1.1 200 OK
EXT: 
DATE: Mon, 23 Dec 2024 16:02:56 GMT
HOST: 239.255.255.250:1900
CACHE-CONTROL: max-age = 1800
ST: urn:schemas-upnp-org:device:MediaServer:1
SERVER: Unix/6.6.32.0 UPnP/1.0 RSSDP/1.0
USN: uuid:12345679-1111-2222-3333-123456790ABC::urn:schemas-upnp-org:device:MediaServer:1
LOCATION: http://192.168.0.1:8096/dlna/12345679-1111-2222-3333-123456790ABC/description.xml

If I try to access the description.xml through Firefox, I am getting it delivered.
The URLs for the different logo sizes are working.
I tried the other URLs too:

  • presentationURL: Works, redirects me to the login page of JellyFin, what is okay in a browser
  • contentdirectory/contentdirectory.xml: a XML file, starts and ends with scpd tag, looks okay for me
  • contentdirectory/control: if accessed through web browser, it is just empty
  • contentdirectory/events: is empty too
  • connectionmanager/connectionmanager.xml: a XML file, starts and ends with scpd tag, looks okay for me
  • connectionmanager/control: empty again
  • connectionmanager/events: empty too

Hm.....the Panasonic says in LOCATION port 60606 or 60607 should be used, but the UDP packets are send
to the port 51873, according to Wireshark.
Also I see at least once the LOCATION http://192.168.0.2:61118/ABCDEF123456/dial_srv/ddd/dial.xml
Maybe the Panasonic devs implemented DLNA weirdly?
Because the DMR-BCT750/755 can accept a DLNA stream through push.
This means, that I can take e.g. VLC, start a video and tell it to stream the video to the Panasonic through DLNA.

@FelixPetriconi
Copy link
Contributor

According to my investigation it is a problem of incorrect responses.
This PR contains fixes that correct the responses. It would be great if you could confirm them.

@DSLinuxUser
Copy link
Author

What do I need to do?
Compile the DLNA plugin from scratch and inject it somehow into the Jellyfin-Container on TrueNas?

@FelixPetriconi
Copy link
Contributor

I don't know how to build anything under Linux. But you can build everything under Windows and export it as Linux build. Then copy all into the Linux machine/Docker container, depending on how you are using it.

@DSLinuxUser
Copy link
Author

Was a bit tricky, but I did it.

Don't know if anyone will add this tidied up to documentation, but nonetheless.

To compile it plugin, a compiler environment with netframework 8 is needed.
Tried it with code and codium, but they only generated errors for me, despite having dotnet-8-sdk installed.
VSCode from MS detected it as netframework 8 project, offered to download the needed files, what I accepted,
and was able to compile it through Terminal->Run Task->dotnet:build .
The binary files had been saved to jellyfin-plugin-dlna/src/Jellyfin.Plugin.Dlna/bin/Debug/net8.0/ .

To use the new version, I needed to get a bit creative:

  • I stopped the container through "Apps" in the Truenas Scale UI
  • Uploaded the generated files to a shared directory
  • Opened a Shell on TrueNas and found out, that plugins are treated as user configuration and can be found in the persistent container config folder, for me it was /mnt/mynas/ix-applications/releases/jellyfin/volumes/ix_volumes/config/plugins/DLNA_6.0.0.0
  • Made a backup of the whole folder with tar
  • Copied the modified files into DLNA_6.0.0.0 and started the JellyFin again

I approved the PR and will close this issue, when a new version of the plugin will be released.

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

2 participants