Late last year I bought myself a PS Vita for remote play and to run as a DLNA client. I read on the official store that the network media player supported certain types of video and audio codec so I presumed it would work with Serviio through its DLNA support.
Ah presumptions, a common mistake and in my case it was to trust the media application. No matter what I did, it wouldn’t connect to the Serviio media server. I know the description mentions it won’t work with some media servers but Serviio implements open source software with standards and I had a hunch the PS Vita application wasn’t working correctly. How did I figure it out? Eh well after a few frustrating tests.
The first test was to see if the media application could see other media servers such as windows and yes it could.
Next, I spun up a FreeBSD VM on my lab and ran some packet traces, again the media application could see the lab Serviio instance. Now that I had the correct packet flow of the DLNA/UPnP service, I ran the same packet traces for my Serviio instance. After a brief analysis I noticed two issues but before I go into those I want to quickly mention that in this case the DLNA service will advertise itself using UPnP messaging via multicast Simple Service Discovery Protocol (SSDP). There are two main packets of interest, the server packet which is a NOTIFY and the client packet which is a M-SEARCH.
Firstly, Serviio was advertising its services but the media application never responds its interest (the NOTIFY packet).
The second issue was the PS Vita’s media application would send out a query for a DLNA service but Serviio wouldn’t respond (the M-SEARCH packet). However, I’ve already tested a Serviio lab instance so I know that Serviio normal works.
So the media application is broken in that it won’t respond to DLNA services which I can’t fix but for some reason the server won’t respond to the media applications query which would normally allow it to join the multicast group. I focused on this and after some research I figured out that my NAS4Free jail manager instance doesn’t forward multicast packets it receives because the jail is sharing the network stack with the NAS4Free instance To fix this TheBrig needs to support the virtual network stack (VNET) for Jails.
But the latest beta does support this feature:
I haven’t tested the beta yet but I will soon!