Skip to main content
tuliprox can feed live TV channels, EPG data and on-demand content to the three major self-hosted media servers. There are two integration paths:
  • M3U + XMLTV — all three servers support manual M3U tuner and XMLTV EPG entry.
  • HDHomeRun emulation — tuliprox advertises itself as a network tuner; the media server discovers it automatically.

Setting up via M3U and XMLTV

M3U playlist URL

http://TULIPROX_HOST:8901/get.php?username=USER&password=PASS
Or using the REST alias:
http://TULIPROX_HOST:8901/m3u?username=USER&password=PASS

EPG (XMLTV) URL

http://TULIPROX_HOST:8901/xmltv.php?username=USER&password=PASS

Configuration steps

  1. In Plex, go to Settings → Live TV & DVR → Set Up Plex DVR.
  2. Select Other Device when asked for a tuner type.
  3. Enter the M3U URL above.
  4. When prompted for an EPG source, enter the XMLTV URL.
  5. Complete the channel scan.
Set proxy: reverse in api-proxy.yml so Plex receives the stream directly from tuliprox:
api-proxy.yml
user:
  - target: all_channels
    credentials:
      - username: plex
        password: plex.secret
        proxy: reverse
        server: default

HDHomeRun integration path

For automatic device discovery without manual URL entry, enable HDHomeRun emulation. See the HDHomeRun integration guide for the full setup. Once configured, each media server discovers the virtual tuner on the LAN:
  • Plex: Settings → Live TV & DVR → Set Up Plex DVR (picks up the device automatically)
  • Jellyfin: Dashboard → Live TV → Add → HDHomeRun
  • Emby: Dashboard → Live TV → Add Tuner → HDHomeRun → Search

STRM file output for library integration

For VOD and series content, tuliprox can write .strm files that Plex, Jellyfin and Emby scan as local library items.
source.yml
output:
  - type: strm
    directory: /mnt/media/tuliprox-library
    username: plex_user
    style: plex
    flat: false
    cleanup: true
    underscore_whitespace: false
Point a Plex library at /mnt/media/tuliprox-library and set the scanner to Plex Movie or Plex TV Series as appropriate.

STRM output options

FieldDescription
directoryOutput directory for .strm files (required)
usernameCredential username embedded in stream URLs inside .strm files
styleExport style: kodi, plex, emby or jellyfin (default: kodi)
flatWrite all files directly into directory without sub-directories
underscore_whitespaceReplace spaces with underscores in filenames
cleanupRemove .strm files for channels no longer in the playlist
add_quality_to_filenameAppend detected quality label to the filename
strm_propsAdditional properties to write into each .strm file
filterPer-output filter expression
username is required when using STRM output together with an xtream output on the same target. The username must match a credential in api-proxy.yml.

Naming conventions

tuliprox names .strm files and directories from the channel Caption field (the display name). Use the mapping and templates features to normalise names before they reach the STRM output, especially for series content where folder names must match what the media server expects. Enable flat: true to skip sub-directory creation — useful for live TV channels where you want a single flat directory of .strm files.

Build docs developers (and LLMs) love