Wrapping other video cards with HDHomeRun APIs

I love that DVR capabilities are coming to Plex. It’s the feature that pushed me into purchasing a lifetime Plex Pass <3.

I currently have a couple internal Hauppauge cards that I used to use with MythTV. I realize that Plex currently only support HDHomeRun devices at the moment, likely because their server model is agnostic of any specific system. But that got me thinking. Could I make Plex use my Hauppauge card if I wrote a wrapper that implemented HDHomeRun APIs?

If a Plex engineer or anyone has some feedback on the feasibility of this I’d like to hear it before I get into it :). I found a development document here https://www.silicondust.com/hdhomerun/hdhomerun_development.pdf. Might do some more research this weekend.

Hi,

from my understanding plex uses a different approach based on a restful api, with .json structures involved and then calls a URL to receive a stream (mpegts or h264-mkv). This seems to be the newer models of hdhr only (hence some elder ones are not supported).

This api I have not found any documentation. But @elan posted in another thread that they will post what they did once the flaws are ironed out.

If you know someone with hdhr hardware that is supported, we could some start working on hacking some wrapper code by tracking what are the responses to the calls from plex.

I would love to see a discover.json that the hdhr devices show and the next steps of course as well.

Then we can work on using either a sat->ip implementation or tvheadend, vdr, enigma, etc to achieve the same as what hdhr delivers.

Cheer
Alex

This will also help for DVB-S people too :wink:

Wouldn’t it be easier if they just implemented TVHeadEnd support, then you could pretty much call it a day, since that’ll cover pretty much everything that the HDHR doesn’t (Including the HDHR)

@karbowiak said:
Wouldn’t it be easier if they just implemented TVHeadEnd support, then you could pretty much call it a day, since that’ll cover pretty much everything that the HDHR doesn’t (Including the HDHR)

…and Win32/64 comes from…?

:slight_smile:

@iPhonedation said:
Hi,

from my understanding plex uses a different approach based on a restful api, with .json structures involved and then calls a URL to receive a stream (mpegts or h264-mkv). This seems to be the newer models of hdhr only (hence some elder ones are not supported).

This api I have not found any documentation. But @elan posted in another thread that they will post what they did once the flaws are ironed out.

If you know someone with hdhr hardware that is supported, we could some start working on hacking some wrapper code by tracking what are the responses to the calls from plex.

I would love to see a discover.json that the hdhr devices show and the next steps of course as well.

Then we can work on using either a sat->ip implementation or tvheadend, vdr, enigma, etc to achieve the same as what hdhr delivers.

Cheer
Alex

Thanks for the info. I’ll have to start looking at tvheadend and try to find a specification to work from. I’d prefer to not need to reverse engineer the proxy (if I can avoid it).

@JasonMeudt said:

@karbowiak said:
Wouldn’t it be easier if they just implemented TVHeadEnd support, then you could pretty much call it a day, since that’ll cover pretty much everything that the HDHR doesn’t (Including the HDHR)

…and Win32/64 comes from…?

:slight_smile:

We only need one protocol. I don’t care what it is as long as it’s well documented. Afterwards we can have separate, decoupled server solutions to wrap a specific implementation. I haven’t had to chase these things in a while since Myth had it all in one box. My biggest complaint with Myth is the server side still practically required a GUI to configure. Anyway, I wonder if Docker could pose a potential solution for a Linux-centric software or if the native drivers would pose too much of a challenge making the translation from a Windows platform to a virtualized Linux one.

Having a server to wrap specific implementations wouldn’t just solve my problem of making my Hauppagge card usable with Plex, but someone could also wrap multiple HDHRs and report it as a single device w/ 4 tuners. Plex could really benefit by having an open protocol here.

Edit: I forgot to mention, I found SiliconDust’s GH repo here Silicondust · GitHub. I can probably start with reverse engineering libhdhomerun and start looking through the documentation.

+1 for Tvheadend, it supports a lot of different sources and should be an easy fit for most people

http://docs.tvheadend.org/features/

Edit: Seem’s the Tvheadend API isn’t documented very well. But the source is published here, and most API url’s are at the bottom of the .c files

Would probably be easier just reading the source of one of the Tvheadend Plugins, eg. this one

We’re still looking into how to support additional tuners/hardware. There are a number of options we’re looking into, just figuring which is best. And at some point we’ll definitely have a backend API to plug in something custom.

(And to be clear, we don’t use libhdhomerun, we use the super-simplistic HTTP-based interface which modern HDHR devices support for scanning and recording channels.)

I think TVHeadend is the way to go. That would basically add support for almost every tuner (which has unix drivers) out there at once.

@elan said:
(And to be clear, we don’t use libhdhomerun, we use the super-simplistic HTTP-based interface which modern HDHR devices support for scanning and recording channels.)

I kept on saying that as well … And I agree, a modern Restful API is the way to go. I suggest you guys set up some meta API for yourselves and the various systems can connect to that, rather then building an implementation per provider.

But of course, that is up to you :wink:

@iPhonedation said:
I suggest you guys set up some meta API for yourselves and the various systems can connect to that, rather then building an implementation per provider.

That’s essentially already what we have :slight_smile: But it’ll need to be enhanced for European systems.

@elan said:
(And to be clear, we don’t use libhdhomerun, we use the super-simplistic HTTP-based interface which modern HDHR devices support for scanning and recording channels.)

@elan said:
(And to be clear, we don’t use libhdhomerun, we use the super-simplistic HTTP-based interface which modern HDHR devices support for scanning and recording channels.)

Really? Bad news for me then. I’ve started writing a little proxy that implements the old UDP/TCP protocol with the aim of implementing real-time transcoding on a Pi. Looks like I need to so something different…

what about dvblogic support? - I’ve been using it flawlessly for many years on windows backend with a mix DVBT, DVBS, DVBS2, and even subscription DVBS2 via oscam.
Rather than limiting to tvheadend, you should perhaps rather look at the PVR backends supported natively in Kodi (as there are a few).
Kodi itself has a number off issues around time-shifting in the client which makes it not ideal as a front end client - Plex on the other hand doesn’t need to be like that…

The best way to add sat support is the integration of sat>ip. And not only for dvb-s, also for dvb-t and dvb-c. This will be also a solution to get legal access to crypted content (example: Octopus NET with Common Interface slots).
It’s an open standard and well documented. satip.info/sites/satip/files/resource/satip_specification_version_1_2_2.pdf