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.

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