Using a Legacy Tablo Device on Linux

If you’re like me, you still enjoy your legacy Tablo device. We can watch and record live broadcast TV from a single device anywhere you have a smart device or TV like a Roku in the house. There are phone apps and an application in the Windows store that allow watching on phones and PCs running Windows.

But what about Linux?

In the past, I would just go to a magic web address that worked only in the local area network, and it presented a single-page web app that would allow me to control the Tablo including watching, scheduling, and deleting recordings. However, somehow just about each major browser has started to not be able to show this embedded web page. The last holdout had been Firefox which I used to watch my Tablo, but recently I have found that not to work well any longer.

I looked around and found a couple of repos on GitHub which showed how that the Tablo serves a RESTful API that other devices can use to present information and control the device, so I created Tabloid. Tabloid is a service application that works in Zorin (and I’m sure other Debian-based distros), keeps track of what is happening on the Tablo, and shares a single-page web application that allows you to use the Tablo to, at this time, see what Tablo devices are on your LAN, what channels are available, review the upcoming six hours of scheduling, and of course watch live TV. Furthermore, any number of devices on your LAN can tune in and watch programs provided your Tablo(s) provide enough tuners.

Future releases will add features like watching and managing recordings, a universal search and automatic recording. Ever try to search by actor? Ever wish that you could tell the Tablo to record anything with your favorite actor, or anything that has key words?

Currently, Tabloid is still in development, so if you’re a developer and you love your legacy Tablo, check it out at: TabloWatcherService.

A prerelease is here: Release v0.1.0-preview3 · Alfetta159/TabloWatcherService · GitHub

Upcoming features include:

  • Watching and managing recordings
  • :white_check_mark: Universal Search - search by keyword, title, or actor’s name
  • Automated Recordings - record anything with a keyword in it.
  • Bulk Deletions - ever want to just delete mark watched a whole season?

This page will be updated with the application.

Tabloid is not associated with Tablo or Nuvyyo in any official capacity. It is an independent effort to preserve the functionality of legacy Tablo devices.

Tabloid is based on .NET and Typescript and was written primarily with an A.I. application.

2 Likes

Hello Alfetta159 - have a legacy quad here purchased new many years ago. Saw your post and thought to give tabloid a try so installed on up to date debian trixie 13.7 system. The gui looks plenty intuitive so thanks for that and as you documented in github the first time accessing via localhost:8080 it did sit on “loading listings…” for a long time. After about 10 minutes I took a look with journalctl at what was being logged. Here is 1 minute of logged messages:

Oct 02 12:47:00 rich-m90n1 TabloWatcherService.Api[12390]: TabloWatcherService.Api.Services.Tablo.CurrentTabloDeviceResolver[0] The association server returned no Tablo servers
Oct 02 12:47:16 rich-m90n1 TabloWatcherService.Api[12390]: TabloWatcherService.Api.Services.Tablo.CurrentTabloDeviceResolver[0] The association server returned no Tablo servers
Oct 02 12:47:23 rich-m90n1 TabloWatcherService.Api[12390]: TabloWatcherService.Api.Services.Tablo.CurrentTabloDeviceResolver[0] The association server returned no Tablo servers
Oct 02 12:47:23 rich-m90n1 TabloWatcherService.Api[12390]: TabloWatcherService.Api.Services.Tablo.AiringsRefreshService[0] Couldn’t resolve a Tablo device; skipping guide grid refresh
Oct 02 12:47:23 rich-m90n1 TabloWatcherService.Api[12390]: TabloWatcherService.Api.Services.Tablo.AiringsRefreshService[0] Retrying guide grid refresh in 00:01:00
Oct 02 12:47:23 rich-m90n1 TabloWatcherService.Api[12390]: TabloWatcherService.Api.Services.Tablo.CurrentTabloDeviceResolver[0] The association server returned no Tablo servers
Oct 02 12:47:23 rich-m90n1 TabloWatcherService.Api[12390]: TabloWatcherService.Api.Services.Tablo.RecordingsRefreshService[0] Couldn’t resolve a Tablo device; skipping recordings refresh
Oct 02 12:47:31 rich-m90n1 TabloWatcherService.Api[12390]: TabloWatcherService.Api.Services.Tablo.CurrentTabloDeviceResolver[0] The association server returned no Tablo servers
Oct 02 12:47:46 rich-m90n1 TabloWatcherService.Api[12390]: TabloWatcherService.Api.Services.Tablo.CurrentTabloDeviceResolver[0] The association server returned no Tablo servers

I may be misinterpretting these but it looks like app.tablotv.com is not redirecting tabloid to my legacy quad. I can access the quad via firefox web browser using my.tablotv.com on the same system where tabloid is install and I can access the quad via gen4 app on both smartphone and roku device.

Any idea what might be going on here?

Thanks.

1 Like

Wow, I was beginning to think no one would try it! :grin:

Let me ask you if this is a Tablo device that you use consistently now, or is it something that has been offline? I’m wondering if it’s not up to date or not initialized.

Another thing I would like you to try is to add this URL to any old browser running on a computer on your home network (LAN).

https://api.tablotv.com/assocserver/getipinfo/

If I’m not mistaken, that goes out to a Tablo server in their cloud and returns information for devices that are on the public IP they got from the request. Then it returns the private IP address which is what the Tabloid app uses to show the devices that you have, but also to show the recordings and configuration. Don’t share your public IP, that is not important. Feel free to just copy and paste the text (JSON) that comes back (sans public IP) or send it in a direct message. Please note whether valid data is being returned or whether it is laid out in a radically different schema that this:

I have used this legacy quad regularly for years albeit until a few days ago with firefox web browser and the legacy app on both smartphone and roku stick. Earlier this week the legacy app on roku which is where I access it most often began acting flakey often crashing on connect. So after taking a look around tablotv.com and this community I reluctantly decided to go the gen4 app route. I reset the quad to factory and used the gen4 smartphone app to do setup and place it on the home network via wifi. After getting over my grief from losing all my recordings and schedules I then installed the gen4 app on a roku stick and scheduled a bunch or recordings. That and live tv all worked fine and has been for several days now.

The only issue I have now is that firefox web browser access shows scheduled broadcasts as empty even though the roku and smartphone both show all the new schedules. I have no issue watching live tv or recordings via firefox. This issue is why I am trying out tabloid. Although infrequent compared to the roku stick on a tv I do still use web access depending where I am at the time.

I am aware of the option to query tablotv.com for relevant IP addresses although I think it was something other than api at the last time. Regardless here is the cleansed output from the url above:

success true
cpes
0
serverid “SID_The-quad-mac-address”
host “”
name “Tablo”
board “giv”
server_version “2.2.60rc2610615”
public_ip “My-external-IPv4”
private_ip “The-quad-internal-IPv4”
http null
slip null
last_seen “2026-10-02 16:37:15.255906+00:00”
modified “2026-10-02 16:37:15.257508+00:00”
inserted “2020-05-11 20:07:26.434370+00:00”
relay false

So as you can see the firmware is the latest available for this old quad. In a way I am sorry I ever updated to this. I go back to the days when we were able to use our own scripts to pull recordings as a bunch of .ts files then process them into a mp4 or similar. The ports we used to do that with or now blocked by the 2.2.60 firmware … or at least I have not found a way to get around it.

Not sure if any of the above helps to point at a cause. I have temporarily stopped and disabled the watcherservice as it is just spinning on the same messages I already provided but I can enable and start again any time if there is anything else you might need.

Thanks.

1 Like

A new version is in place with a fix that considers that the http and slip properties might be null or an integer value. I had it where i expected an integer value always. The application doesn’t do anything w/ these values, but it has to know what to expect in order to deserialize the response body into an object.

Please try: Release v0.1.0-preview6 · Alfetta159/TabloWatcherService · GitHub

First launch shows:

Journalctl shows:
Oct 02 17:55:09 ripa-m93p1 systemd[1]: Starting tablowatcherservice.service - TabloWatcherService…
Oct 02 17:55:09 ripa-m93p1 TabloWatcherService.Api[25030]: Microsoft.Hosting.Lifetime[14] Now listening on: http://0.0.0.0:8080
Oct 02 17:55:09 ripa-m93p1 TabloWatcherService.Api[25030]: Microsoft.Hosting.Lifetime[0] Application started. Hosting environment: Production; Content root path: /opt/tablowatcherservice
Oct 02 17:55:09 ripa-m93p1 systemd[1]: Started tablowatcherservice.service - TabloWatcherService.
Oct 02 17:55:12 ripa-m93p1 TabloWatcherService.Api[25030]: TabloWatcherService.Api.Services.Tablo.AiringsRefreshService[0] Found 0 airing paths
Oct 02 17:55:12 ripa-m93p1 TabloWatcherService.Api[25030]: TabloWatcherService.Api.Services.Tablo.AiringsRefreshService[0] Refreshed guide grid: 0 airings across 0 channels, 0 series, 0 movies, 0 sports (0 chunk(s) failed after retries)
Oct 02 17:55:12 ripa-m93p1 TabloWatcherService.Api[25030]: TabloWatcherService.Api.Services.Tablo.RecordingsRefreshService[0] Refreshed recordings (full): 17 recordings, 17 fetched (0 chunk(s) failed after retries)

Curiously since journalctl indicated finding some recordings I clicked the recordings option on the left and among others now see:

I can select these and see the video but there is no sound. After “migration” to gen4 apps there was also no sound when using firefox to my.tablotv.com but that was easily fixed by deselecting Surround Sound in Settings.

I should probably note given the sound issue that I use alsa straight up - no pulseaudio. I use sound devices connected to radio receivers and transmitters and the overhead of pulse sometimes makes it difficult to parse lots of RF packets on a busy frequency. Does tabloid expect pulseaudio on linux systems?

Settings is the only other option on the left that shows anything. In there the channel lineup looks correct as does the storage detail so some progress…

This seems to be kind of odd. Finding no airing paths means that your Tablo has no information on shows of any type coming up. You mentioned that you don’t have commercial skip. Did you say you don’t have the upcoming schedule either? You say that in the settings, you see channel, but perhaps the TV grid won’t set up w/o airings details.

Have you clicked in the left most cell in the Live TV grid? That will tune in that channel:

In the meantime, I’m going to connect my old dual tuner and to some testing w/ various settings.

A new version is up: Release v0.1.0-preview7 · Alfetta159/TabloWatcherService · GitHub

The more I think about it, it might be because you are not paying for listings. Hence the line:
TabloWatcherService.Api.Services.Tablo.AiringsRefreshService[0] Found 0 airing paths
Oct 02 17:55:12 rich-m90n1 TabloWatcherService.Api[25030]:

All of the Live TV listing grid, Movies, Sports and TV Shows all use that airing detail data to create the views. Recordings on the other hand are retrived from a different API endpoint.

This version should allow you to watch Live TV w/o listing what’s on and continue to play recordings.

Did I mention that I haven’t implemented manual recording yet?

Correct - no pay for services just straight up quad. Sorry, didn’t think that was important to clarify.

To answer the guide question yes there is guide data available. I can see guide data in the new gen4 apps and in a web browser. Without paying for a subscription and using the legacy apps there was only 24 hours worth and there was no description of the shows or movies only the titles. Now after “migration” to the gen4 apps it looks like I am getting about a weeks worth of guide data. If the gen4 apps behave like the legacy apps then I may have only 30 days before the guide drops back to 24 hours with minimal detail. I don’t know if the quad is getting the guide data from the received digital signals which other devices do easily or from tablotv.com.

Manual recordings can wait. I can set those up using a web browser while you work on that part.

To answer you question about the left most cell the only options there that did anything were Recordings and Settings. The others show the basic gui “template?” with no data from the quad. This behavior remains the same with your latest preview7.

I’m not clear on what this means. As for Linux system accessing my premium legacy tablo: Firefox, Chrome & Palemoon all still work for complete control and viewing.
Third-party apps including Tablo-Tools, APL Tablo Client and lesser degree Capto for Tablo (CLI Grabber) all continue to function via my Debian system.

I don’t mean to discount your work. Yet it’s a bit futile, work on a discontinued device. I do understand, the tablo UI doesn’t quite let me do what I really want.
Now the newest firmware block direct access via http://tablo/:18080/pvr is disappointing.

Just you seem to suggest Lunux users are :poop:SOL, which is a bit misleading.

Ya not that it will make any difference in their decision but tablo should take note that I’ll not purchase any new units as long as port 18080 remains blocked. It was very convenient to access the .ts files for recordings and manipulate them with tools like ffmpeg into whatever format worked best for the situation at the time. I really really really miss this functionality.

1 Like

Not at all, I believe that you did say that. It just didn’t occur to me the how the program would handle that. I must say that your feedback has been priceless. Thank you again.

It’s apparent that the device is getting its listings for its live TV grid from somewhere which I haven’t figured out, so instead I put it together by first, getting a list of metadata for the upcoming airings, and then making as many calls to get all of the details using that metadata list but in chunks, hence the initial delay.

On a side note, the Tablo for our house is a very important. Oh, we have subscriptions to things like AppleTV, HBO/DIsney/Hulu, Paramount and maybe half a dozen others (off and on), but I would rather watch network primetime or sports on the Tablo versus say, Paramount or Hulu because while I pay for listings on Tablo, I don’t pay for commercial free on the others, and I don’t have to tell you that OTA DTV looks great. Another thing we do is record all the local news and some nat’l too for our favorite local channel but only keep the last recording. I like knowing that I have the latest news at my convenience and not theirs.

I’m curious how the 4gen is working out for you. If I didn’t mention it, I sent mine back after about a week. It was pretty early after its release, and I found it very buggy and inconsistent. While they touted that listings were now free, I really missed commercial skip, and the fact that it doesn’t run over web/LAN was another deal breaker. I felt like they insisted on completely revamping their technology stack which doesn’t allow web streaming or commercial skip, and then tried to say that listings are free and here are a bunch of free streaming lesser channels. Let me know if you’ve found it to be as much of a consistent performer as the legacy device is. I might have to join the dark side if these firmware updates keep making my Tablo worse.

I should clarify my references to gen4… I do not have any gen4 devices… and I will not purchase any unless tablo opens up port 18080 like it used to be.

What I did was reset my legacy quad back to factory and then use the gen4 smartphone app to place it back on the home wifi and complete initial set up. FWIW the gen4 app on both smartphone and roku stick work just fine but at least for how I use the legacy quad with perhaps one exception do not provide anything that the legacy apps didn’t already. That one exception being how series recordings are handled. The legacy apps locked into the exact channel and day(s) and time specified whereas the gen4 apps parse the guide data looking for everywhere it can find the movie or tvshow regardless of the channel or time of day.

The only thing that migrating the legacy quad for access by gen4 apps broke was accessing the legacy quad via web browser. Web browsers now show a blank page when trying to view scheduled recordings but everything else works as before.

1 Like

I clearly preface that subtitle by mentioning all of the native applications that can be run on phones and Windows. There is no official native application for Linux. If I open my software manager (apt), nothing for the keyword, ‘tablo’ comes up.

Chrome? I can’t, and many people complain that they cannot any longer. When is the last time that you tried Chrome? and as I said, I have found Firefox to be hit and miss lately. When I got tired of checking to see if Firefox was going to work w/ the Tablo today or not, I was happy to uninstall it as that was the only thing that I used it for.

Frankly, this project was intended to create a native Linux app that offered more features that the other native apps including universal search, batch deletes and automatic recording (i.e. record everything with Morgan Freeman in the cast). Just being able to delete a season of some show. Ever wonder which TV show is taking up all of the room on your hard drive?

As I studied the Tablo device API, I realized that I would have to create a proxy service that could keep track of airings and recordings to allow things like search, sorting and reporting. So, I focused more on the proxy service and a single-page web app served up by that same service that all of my home devices could use including my work computer which runs Windows but is not allowed to install any Windows Store apps. I wrote this application for me, but I thought I would share it as others might be in the same boat.

I still might create that native app as I would like to experiment with a more Windows/.NET approach to developing an application for Linux. I’ve been a Windows person for decades (actually, Tandy, Commodore, PC-DOS before that) but the with the advent of SPAs, SaaS (as opposed to more classic ‘web’ sites like Wikipedia), and the immense cross-platform support that Microsoft brings to Windows, MacOS and Linux, (oh, and A.I. to help with the details of Linux/Debian) have found it interesting to try things in Linux. For example, one of the most popular applications for ripping CDs in Linux is a CLI based app. I use Zorin, an Ubuntu spin-off, and the phone connect application is garbage. It looks bad, doesn’t have basic features that it needs, and is clunky to use.

I do pay for listings for my legacy device, and I can just tell it to record everything on any channel for a title. Even with sports, I tell it to record all showings of NFL football but only keep the last two. I think that might be a major benefit for the listings subscription.

I have found that as channel line ups change (here in the Sacramento area, we had Comet, then we didn’t, then it came back on a different channel) and it took Tablo a while to show data for that channel. Once in a while, one or two channels simply have a blank line in the listings. :angry:

I am wondering if the 1.9.35 build 1041 HTML Application apparently from back in 2024 that is specified in the legacy quad settings along with firmware version 2.2.60 is why web browsers are no longer able to show scheduled recordings… perhaps that old html code is incompatible with what the gen4 apps do when setting up and using with a legacy device.

If Mr. Tablo is watching here I would gladly pay for a subscription service if only port 18080 was opened up again…

Well, there’s the web app. As with other 3rd party apps… this still is not official.


today. I have little to no issue with Firefox. At least it’s not from a corp generating all it’s profit from data mining and demographic profiling.

I can find out with Tablo-Tools and/or APL Tablo.

I concur, your project is likely a valuable asset to the tablo. Just note, Linux systems are not left out nor limited.

I beg to differ. There is no official Tablo application for Linux. And I tried Tablo Tools, which doesn’t use a package manager for installation. It was one of the reasons that I started writing my own if you know what I mean.

djk44883 - Thanks for the reminder about Tablo Tools. I had completely forgot about it. I played with it some years ago but ditched it only because I preferred playing with my own scripts via port 18080/pvr. Although Tablo Tools does not provide anything related to recording schedules it does provide downloads as .mp4 which can then be manipulated with tools like ffmpeg and gopchop etc. which is more important to me than anything else. I’ll stop whining about 18080/pvr now :wink:

Alfetta159 - if you are still interested in putting in any effort to make tabloid work with a legacy quad without any paid services I’ll continue testing.

1 Like

There is the web app. As for package manager for installation,

I use apt install ./tablo-tools the same as your personal. Yours is installed via apt locally in the same fusion, not from a repository.

You can still, kind of, via scripts. I use an out dated Capto for Tablo (CLI Grabber), for example, to get the numbers, then

ffmpeg -loglevel warning -i '$1' -bsf:a aac_adtstoasc -vcodec copy -acodec copy -crf 18 "${2}".mp4

or

smplayer http://192.168.0.100:18080/pvr/$1/pl/playlist.m3u8

Will still work. I haven’t really done much of this anymore, just did a trial to check. Yea, it’s a PITA :poop: method.

I do somewhat know what you mean. Prior to tablo I had built my HTPC / DVR. It was very manually interactive. We didn’t always have much option, well any. So I’m not discounting your project. But there are or were options available for Linux systems.