ESPN+ & FOX Sports with Custom Channels via EPlusTV

I nuked the container again but this time I enabled the enable uhd/hdr toggle and then authenticated the fox one. It’s currently working again but will check in a few hours. When it was working well a few weeks ago I believe I had that button enabled before I updated to the latest container version. My logs are pretty much identical to yours.

I think this has to do with 4k resolution, that is why I’m trying the uhd toggle this time around.

These are my options

I wonder if enabling Proxy segment files would help or hurt

1 Like

Nope didn’t even make it 30 minutes this time around.

1 Like

I'm pretty sure Fox is dead or will soon be for all of us, any URL that I try in the browser on my server for all Fox channels gets Access denied when I try to load it directly (i.e. not from fox.com). fa.edge, cf.edge, fox-dtc.akamai, none of them work. They are only allowing the redirect from their website, all channels work fine there.

I still have FS1 and 2 via TVE but now my only source for Fox is via HDMI capture from my provider's STB. I need to look into whether I can get a deeplink working for the Fox One app via my other HDMI capture with the onn 4k Android TV device.

EDIT: oops forgot I still have my local Fox via Prismcast, which uses the Fox website in Chrome.

Sent a PM to a few of you having issues...

By BTN+ events stop playing randomly after a few minutes?!??!?

2026/03/14 14:04:07.121010 [TNR] Opened connection to M3U-ESPPLUS for ch17011 EPlusTV 11
2026/03/14 14:06:11.218416 [SNR] Rewriter statistics for 192.168.1.147 (Office) for ch17011 EPlusTV 11: discontinuity_detected=0 transport_errors=0 saw_pcr=true saw_pmt=true highest_pts=126.247333
2026/03/14 14:06:11.218945 [SNR] Buffer statistics for 192.168.1.147 (Office) for ch17011 EPlusTV 11: buf=0% drop=0%
2026/03/14 14:06:11.219481 [SNR] Streaming statistics for 192.168.1.147 (Office) for ch17011 EPlusTV 11: timeouts=0 segment_timeouts=0 playlist_timeouts=0
2026/03/14 14:06:11.225138 [TNR] Closed connection to M3U-ESPPLUS for ch17011 EPlusTV 11
2026/03/14 14:06:11.225138 [TNR] Error during live stream for ch17011 EPlusTV 11: Could not fetch playlist from 192.168.1.180:8000: GET: http://192.168.1.180:8000/chunklist/11/aZ76ZJMa.m3u8: 404 Not Found

I figured out cf.edge still works. The token for it just needs to be updated every so often. However if I use eplustv it doesn't work there and neither does fox sports app which is another website for some reason. I think its because I was using the index_1.m3u8 directly instead of the normal index.m3u8 link which doesn't work.

Interesting, I'll have to try it again. The problem I've been having is I did a ton of refreshes to try to get a cf.edge to play with and all I ever got was foxdtc-video.akamai and fa.edge.

EDIT: Finally got a cf.edge to show up and it works again! I think the last one was good for something like 6 months.

1 Like

Well, this is dead for me. I had a working cf.edge link for a day or two and now it's 403 forbidden again. Doesn't matter what index I use for the M3U, 1, 7 whatever they're all forbidden.

So direct streaming from Fox doesn't work by capturing a link for me.

Is there an issue with the docker or is it me? I can't get any guide information. I've tried both linear and non-linear. I used this docker last year and it was working well for me.

1 Like

What provider(s) are you using?

1 Like

I'm attempting to use it with ESPN+.

ESPN added DRM to all of their streams a few months back, so EPlusTV can no longer support it.

FruitDeepLinks might be a workable replacement for you.

1 Like

Sounds about right that ESPN would do something to make my life just a little more difficult and raise the price. I'll check out that link.

Yeah it only works for 24 hours now.

Time to move to a different setup for Fox stuff.

Is anyone else running into issues tonight? I just updated everything to v4.15.1 and reauthenticated my TV credentials but I cannot get Gotham Sports MSG or YES network or ESPN with TV provider or ISP to work. Am I the only one?

      adapter: [Array],
      transformRequest: [Array],
      transformResponse: [Array],
      timeout: 60000,
      xsrfCookieName: 'XSRF-TOKEN',
      xsrfHeaderName: 'X-XSRF-TOKEN',
      maxContentLength: -1,
      maxBodyLength: -1,
      env: [Object],
      validateStatus: [Function: validateStatus],
      headers: [AxiosHeaders],
      method: 'post',
      url: 'https://api.gothamsports.com/proxy/device/app/register',
      data: '{"uniqueId":"4ea91769-d268-4a18-b7b5-6300995604f6"}'
    },
    request: <ref *1> ClientRequest {
      _events: [Object: null prototype],
      _eventsCount: 7,
      _maxListeners: undefined,
      outputData: [],
      outputSize: 0,
      writable: true,
      destroyed: true,
      _last: false,
      chunkedEncoding: false,
      shouldKeepAlive: true,
      maxRequestsOnConnectionReached: false,
      _defaultKeepAlive: true,
      useChunkedEncodingByDefault: true,
      sendDate: false,
      _removedConnection: false,
      _removedContLen: false,
      _removedTE: false,
      strictContentLength: false,
      _contentLength: 51,
      _hasBody: true,
      _trailer: '',
      finished: true,
      _headerSent: true,
      _closed: true,
      _header: 'POST /proxy/device/app/register HTTP/1.1\r\n' +
        'Accept: application/json, text/plain, */*\r\n' +
        'Content-Type: application/json\r\n' +
        'authorization: Bearer undefined\r\n' +
        'gg-rsn-id: f403f16d\r\n' +
        'user-agent: okhttp/4.11.0\r\n' +
        'x-authorization: eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0..0X3lYxe7ZxqA4b5_._--pw0UH3RS2IfuAhbBXkZsoJd6f3VHMuiEW1uUxJqur83TpruMD9SxzXdnJoUEIVUu4SLLKBP4hjL02QaVKit7MXm8RDSOAwQze7ouOSuxMM9S-QOY_X_Y5aHutz1fRLflg42h0C9eGyAY6uYcRpYPSCJdUqeWYBmPotE-0BeyD1MBBFFYc0Qb2WIANrCJgX0mk4E9oP0EAXVN_vuyFdliR2OYJGmQ18d7n-YRT03u0rycpuBmLo14S9o6MMNPrmc05EsCLq2qVGzH8z0VmsViOoqFuZFERWDKF5BeyrVFvfq--xVzOOd8WXXuYMeNmUy950GcNrwvqMZX6rlohMFs61s2nJPe2Nd3gi0vicjtgR2mJbKYlkdKZqJkbSKrtlw559tyO_4AQkYHHNHGc1I1IzDrTko_WRcxmJAtsmaHZbP_eTCTErb82xunu2ebMg-IR_hk5dWbgZN5ZExK_9rcX-dJxgWIM8XVhtPBBr7mia3qgegIsTTeyqjLGSlgHlnk_YSZNHPnuYRRXAP2F65bteQbqcv_NECgSFYJYTcCjYnDjVQhmpjnx9LfW2vCD0IwwBqfa7E2LyQm7jtvco-P0bJrtA8nUXG5euocS1bZoAFSxUfXsCuekSDBBY4FaFA1KrXfGSJnD37xFZzxZcbEA-JvEUAs1csVwxWz9Dqj7NBnFQL5zGcHCaN7dYlsUwcEGh1yEFqo3j15NDX4EwDQ9zRyBYO9GBA41d44TRSr9G6F0RpC_RPF2rUU2PA_PC-UDP8Id44mRQHADnj8UfPEi6_RC6wdfrBCWkAW3GbDjo9-nCgOQ1qfOwWNJ2yDppeZd6r8fZ4EQgun8nP9eromPJSx3ggx4w77R_8y_sAKy_xryBbgtte6w5O1VyB8O1YcsSfr4GcPnPwNMi-gXytvTmWbra9znRJ8yV8fVK30r_GbX9lddbJWknfQ9jcrgNHRCGkcD74MxQGZZ31tcnFFGk7Vyqc_ZB3sVVyo1-3OAoK9o81b61cku6NM_G3wuaWPAgTHTNTDN0uoubNZdG0Y_S6Q-HSA0hJVNMM2p1w.2sBVOgr5B7rq1cH_6NYggg\r\n' +
        'x-client-id: game-gotham-androidtv\r\n' +
        'Content-Length: 51\r\n' +
        'Accept-Encoding: gzip, compress, deflate, br\r\n' +
        'Host: api.gothamsports.com\r\n' +
        'Connection: keep-alive\r\n' +
        '\r\n',
      _keepAliveTimeout: 0,
      _onPendingData: [Function: nop],
      agent: [Agent],
      socketPath: undefined,
      method: 'POST',
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      joinDuplicateHeaders: undefined,
      path: '/proxy/device/app/register',
      _ended: true,
      res: [IncomingMessage],
      aborted: false,
      timeoutCb: null,
      upgradeOrConnect: false,
      parser: null,
      maxHeadersCount: null,
      reusedSocket: true,
      host: 'api.gothamsports.com',
      protocol: 'https:',
      _redirectable: [Writable],
      Symbol(shapeMode): false,
      Symbol(kCapture): false,
      Symbol(kBytesWritten): 0,
      Symbol(kNeedDrain): false,
      Symbol(corked): 0,
      Symbol(kChunkedBuffer): [],
      Symbol(kChunkedLength): 0,
      Symbol(kSocket): [TLSSocket],
      Symbol(kOutHeaders): [Object: null prototype],
      Symbol(errored): null,
      Symbol(kHighWaterMark): 65536,
      Symbol(kRejectNonStandardBodyWrites): false,
      Symbol(kUniqueHeaders): null
    },
    data: {
      gameSuccess: false,
      gameError: [Object],
      message: 'Request failed with status code 401',
      ggErrorCode: 'INTERNAL'
    }
  }
}
TypeError: Cannot read properties of undefined (reading 'secret')
    at GothamHandler.<anonymous> (/app/services/gotham-handler.ts:732:59)
    at Generator.next (<anonymous>)
    at fulfilled (/app/services/gotham-handler.ts:5:58)
    at processTicksAndRejections (node:internal/process/task_queues:103:5)

ESPN has not worked for awhile (DRM) and there is an open issue on Gotham: Gotham Broken · Issue #245 · tonywagner/EPlusTV · GitHub

Thank you both for the logs.

I identified a potential Fox One streaming issue in them, and I've attempted to address it in EPlusTV version 4.15.2

If anyone was having Fox One issues, try updating, and if your issues reoccur, please share your EPlusTV container log.

3 Likes

Appears to be working.
I updated, did a Re-Authenticate Fox One, did a Rebuild EPG and then played three Fox One Linear channels. Fox, FS1 and FS2.
The only things showing in the log are 76 of these
Invalid Playlist : EXTINF duration, when rounded to the nearest integer, MUST be less than or equal to the target duration