dopeIPTV

Help

Everything is on this page with its answer open. Type to narrow it down — press “/” anywhere on the page to jump to the box.

Install and set up

How do I install it on Linux?

Three formats, all self-contained — Python, Qt, libmpv and ffmpeg are inside the download, so there is nothing to install alongside it.

AppImage — the one to take if you are not sure. It runs on any distribution:

chmod +x dopeIPTV-*.AppImage
./dopeIPTV-*.AppImage

.deb on Debian or Ubuntu:

sudo apt install ./dopeiptv_*_amd64.deb

Flatpak:

flatpak install --user dopeIPTV-*.flatpak

There are arm64 builds of all three for a Raspberry Pi or an ARM server.

How do I install it on macOS?

Open the .dmg and drag dopeIPTV to Applications. It needs macOS 15 or later and runs on Apple Silicon — 1.2.10 was the last release with an Intel build.

The first launch is refused because the app is not notarised by Apple. Right-click the app and choose Open, then Open again in the dialog. See “macOS says the app cannot be opened” below if that does not clear it.

How do I install it on Windows?

There is no installer. Unzip dopeIPTV-*-windows-x64.zip anywhere you like — your user folder is fine, no admin rights needed — and run dopeiptv.exe inside it.

There is a native arm64 build for Snapdragon laptops; the x64 one also runs there under emulation, just slower.

For a Start-menu or desktop shortcut: Settings → Interface → Maintenance → Create shortcut. The README.txt in the zip lists everything to delete if you want the app gone without a trace.

How do I connect my provider?

On first launch you are asked for three things from your Xtream Codes account:

  • Server — the address with the port, like http://example.com:8080. Not a full playlist URL, just the host.
  • Username and Password — the ones your provider gave you.

They are saved. To add another account later, or edit this one: Settings → Playlists. You can switch between playlists while the app is running, and favourites and history are kept separately for each.

Can I use an M3U playlist instead?

Yes. Choose M3U when adding a playlist and paste the URL your provider gave you.

An Xtream account gets more out of the app — catch-up, account expiry, the provider's own guide — because those come from an API an M3U list does not have. An M3U list plays and can be given its own XMLTV guide address, which covers most of the gap.

Can I try it without an account?

Yes. The setup wizard offers demo channels: a handful of free, public test streams from Mux, Apple and Bitmovin, so you can see the app work before typing anything in. They are official test assets, not anybody's TV service, and you can switch to a real playlist whenever you like.

Watching

How do I play something?

Double-click it in the middle list, or press ▶ Play in the panel on the right. Picking another channel switches the stream in place rather than tearing the player down and building it again, which is what makes zapping quick.

The Back and Next buttons in the player bar move through whatever list you are in — channels, a series' episodes, recordings or history.

How do I skip forward and back?

For films, episodes, recordings and catch-up — anything with a known length:

  • Move the pointer over the picture and a scrubber slides up, with the timeline, the elapsed and total time, and −10s / +30s buttons.
  • Click the video once and use the arrow keys: a tap jumps ten seconds, holding one down seeks continuously.

Live channels are not seekable and deliberately show no scrubber. To move around inside a live channel you need timeshift — see below.

Fullscreen and the controls

Double-click the picture, or press F. Esc leaves it — and so does the explicit Exit fullscreen button in the floating control bar, which is there so nobody has to know about Esc.

The controls and the mouse pointer hide themselves after a few seconds of stillness and come back on the smallest movement.

Can I move the video to a second screen?

Yes — pop the player out into its own window and drag it wherever you like.

It is frameless by default: drag anywhere on the picture to move it. Right-click for always-on-top, a title bar, or Exit. Esc also brings it home. The main window keeps working while it is out.

Audio language, subtitles and picture settings

The button in the player bar — it is in the fullscreen controls too — holds everything about the stream you are watching:

  • Audio track and subtitle track
  • Audio delay, when the sound is out of step
  • Aspect ratio (16:9, 4:3, stretch and so on)
  • Network buffer size
  • Stats for nerds: codecs, resolution, frame rate, hardware decoding, A/V sync, dropped frames, cache and network speed, live over the picture

A track you pick is remembered, and for a series it carries over to the next episode. To set a preference for every stream instead, see Settings below.

Keyboard shortcuts

  • Space — pause and resume
  • F — fullscreen, Esc to leave
  • ← / → — seek ten seconds, hold to keep going
  • M — mute

They work in the main window, in fullscreen and in the popped-out window alike.

Does it remember where I stopped?

Yes, for films, series episodes, recordings and your own local files. Starting one again asks whether to resume at that point or start from the beginning.

Positions very close to the start or the end are ignored on purpose, so it does not offer to resume something you had only just begun or had actually finished.

Guide, timeshift and recording

Where does the programme guide come from?

From your provider. Every live channel in the list shows what is on now with a progress bar, and the detail panel shows what is next.

The guide is cached on disk for each playlist, so it is on screen the moment you start the app — the fresh copy downloads in the background and replaces it. If that download fails, the cached guide stays rather than leaving you with nothing.

Is there a full guide?

Yes. The Guide button in the sidebar opens a searchable programme grid covering every channel, with a timeline you can scroll through. Search finds a programme by name across all channels.

On a channel with catch-up, double-clicking a programme that has already aired plays it from the archive.

The guide is wrong, empty, or for the wrong country

Give that playlist its own guide instead of the provider's:

  1. Settings → Playlists
  2. Select the playlist and edit it
  3. Put an XMLTV URL in the custom guide field

It replaces whatever the provider sends. The app matches your channels to that guide by EPG id first and by channel name second, so a guide from a different source usually still lines up.

Everything is shifted by an hour or two

Some providers publish times that do not match what they actually broadcast. Two separate corrections live in Settings → Playback:

  • EPG delay shifts every time the guide displays.
  • Replay delay shifts where catch-up and timeshift start playing, without touching the listings.

They are separate because providers get these two wrong independently of each other.

What is timeshift and catch-up?

Some providers keep a recording of each channel for a few days. Where yours does, the channel gets a marker in the list, and the detail panel says how many days deep the archive goes.

If a channel has no marker, the provider is not offering an archive for it. That is their setting and nothing in the app can turn it on.

How do I watch something that already started?

Press the button in the player — it is in the fullscreen controls too — or right-click the channel and choose Timeshift. Then pick from the start.

What plays is a piece of the archive, so it seeks like a film: the scrubber and the arrow keys both work inside it.

Can I go back to yesterday?

Yes. The timeshift menu lists past programmes grouped by day — double-click one to watch it. You can also jump back in fixed steps, and those steps scale to how deep your provider's archive actually is, from thirty minutes up to a week.

Some providers accept an archive request and quietly serve the live feed instead. The app checks and tells you when that happens rather than letting you think you are watching yesterday.

How do I record?

Two ways in:

  • The REC button in the player, for what you are watching now.
  • Right-click any channel → Record, for one you are not watching.

Unless you choose a length it records until you stop it. You can watch a recording while it is still being written.

Can I set a length, or schedule one?

Yes to both. The REC menu offers 30 minutes, 1, 2 or 4 hours, and a scheduled recording takes a start and a stop time.

Scheduled jobs survive restarting the app, but the app has to be running when they fire — it is a program, not a background service. Recordings → Active & scheduled shows what is pending.

Will recording use up my second connection?

Not if you record the channel you are watching: that taps the player's own stream, so it costs nothing extra and works on the usual accounts that allow only one stream at a time.

Recording a different channel, or a scheduled job starting later, does open its own connection to the provider.

One thing to know about an in-player recording: it is finalised when the recording stops, so stopping playback, zapping to another channel or a stream error ends it.

Can I stop a recording filling the disk?

Yes, at two levels. Settings → Recording takes a size limit that applies to every recording — a number plus MB, GB or TB. And the player's REC menu has a quick limit for the current session only, from 250 MB to 10 GB.

Where are my recordings?

Wherever you set under Settings → Recording. The Recordings section in the sidebar browses them, with subfolders as categories: create folders, rename, move things between them, and select several to delete at once.

Multiview, casting and Trakt

What is multiview?

A separate window showing 2, 4, 6 or 9 live channels at once in a grid, each one an independent stream. They can come from different playlists and even different accounts.

Open it from the sidebar; the grid size is under Settings → Multiview. Double-click a window to maximise it.

Which window do I hear, and how do I change one?

Click a window to give it the audio — a red border marks the one you are hearing.

Right-click any window for: mute, audio and subtitle track, move or swap it with another, or remove it. A channel with catch-up gets its own archive timeline inside its window, so you can rewind one channel while the others stay live.

Why does multiview say it will use several connections?

Because it does — one per window. Most IPTV accounts allow only one or two streams at a time, so a nine-window grid will simply be refused by most providers.

The app says this once, before you find out from a wall of failing streams. If you see “connection limit reached”, this is usually why.

How do I cast to a Chromecast?

Right-click a channel, film or episode → Cast to Chromecast…, then pick the device. Live channels are sent as HLS, which is what a Cast receiver expects.

Casting stops local playback — the two would be a second connection to your provider. A strip above the player names the device and what is on it, with a stop button. Playing something in the app also ends the cast and hands playback back.

The television refuses a channel

Some channels are ordinary H.264 video with Dolby Digital Plus audio. A Chromecast that is not an Ultra or a Google TV has no decoder for that and rejects the stream without saying why.

The app converts those on this computer and serves the result on your own network: the video is copied through untouched — only the audio is re-encoded, which is cheap — and it only happens after the device has actually refused the stream. A channel your device can play always gets the provider's own stream, unaltered.

This needs ffmpeg, which is inside every packaged download.

How do I connect Trakt?

Settings → Trakt. You create an application on trakt.tv, paste in the two keys it gives you, and authorise in the browser that opens.

After that, what you watch is scrobbled, and your watchlist and history can be browsed inside the app. Your own local files are scrobbled too, whenever TMDB could identify the file.

Your own files

Can I watch my own files?

Yes. Local files in the sidebar browses folders you add under Settings → Local files.

A network share your system has already mounted appears by itself — a gvfs SMB mount on Linux, a share under /Volumes on macOS, a mapped drive on Windows. These are ordinary paths as far as the app is concerned, so there is no SMB client inside it to misbehave.

Folders or a library?

Both, toggled in the middle column.

  • Folders shows the tree exactly as it is on disk.
  • Library reads the file names and builds series with seasons and episodes out of them, with films under Movies — the same shape as the provider's own sections.

Where do the posters come from?

TMDB, for anything that can be matched by name and year. What cannot be matched gets a frame grabbed from the video itself, and music gets its cover from the file's tags or a cover image in the folder.

A file with no year and no release tag in its name is never guessed at. That is deliberate: a wrong poster is worse than a thumbnail. Rename the file to include the year if you want it matched.

Does it play music?

Yes. Albums are shelved together, artist, album and title come from the tags, and there is a play queue: add a track, queue a whole folder, or play something next. It moves to the next track by itself when one ends.

There is also a visualiser and a ten-band equaliser.

A file in History will not play

It has been moved, renamed, or its share is not mounted. History says which, and offers to remove the entry, instead of failing silently.

If it is a share, mount it and try again — the entry will work as it did before.

Settings

Language and appearance

Settings → Interface. The interface is translated into 27 languages and switches immediately, with no restart. Arabic, Persian, Hebrew and Urdu mirror the entire layout.

The same tab has five colour themes and seven accent colours, applied live.

Defaults for every stream

Settings → Playback sets what should happen without you asking each time:

  • Preferred audio language
  • Subtitles on or off, with a first and second preferred language
  • Default aspect ratio and network buffer
  • How early the “Next episode” card appears — off, or one to ten minutes

The ⚙ menu in the player still overrides any of these for the stream you are watching.

Can I lock things away from other people?

Yes. A PIN protects locked categories and locked favourite groups. A locked group does not reveal which channels are in it until the PIN is entered — hiding the contents, not just the playback.

The PIN is stored salted and hashed, not in plain text.

Can I hide or rename channels?

Right-click any channel, film or series to rename or hide it. The result is effectively your own edited playlist, saved per playlist, and Restore default channels… puts everything back exactly as the provider sends it.

Whole categories can be hidden, renamed or locked from the category right-click menu. A hidden category's channels are left out of “All” as well.

Several providers at once

Add as many playlists as you like under Settings → Playlists and switch between them while the app runs. Each one keeps its own favourites, history, hidden channels and renames.

Each can also have its own XMLTV guide URL and its own refresh schedule — never, at startup, every 2, 6 or 12 hours, daily or weekly.

When something goes wrong

How do I get a log?

The log is what turns “it does not work” into something fixable, and credentials are masked out of it automatically, so it is safe to attach to an issue.

Run the app from a terminal with DOPEIPTV_LOG_FILE set and it writes one there as well as to the screen.

Linux — AppImage

DOPEIPTV_LOG_FILE=/tmp/dopeiptv.log ./dopeIPTV-*.AppImage

Linux — .deb or pipx

DOPEIPTV_LOG_FILE=/tmp/dopeiptv.log dopeiptv

macOS

DOPEIPTV_LOG_FILE=/tmp/dopeiptv.log \
  /Applications/dopeIPTV.app/Contents/MacOS/dopeiptv

Windows — PowerShell, in the unzipped folder

$env:DOPEIPTV_LOG_FILE="$env:TEMP\dopeiptv.log"
.\dopeiptv.exe

Reproduce the problem, close the app, and attach the file. For much more detail add DOPEIPTV_LOG=debug in front of the same command.

The app will not start

Start it from a terminal — see the answer above for the exact command on your system — and read what it prints. That names the cause far more often than not.

The packaged builds carry everything they need. If you installed from source with pipx you also need mpv and ffmpeg from your distribution:

sudo apt install mpv ffmpeg     # Debian/Ubuntu
sudo dnf install mpv ffmpeg     # Fedora
sudo pacman -S mpv ffmpeg       # Arch

Sound plays but there is no picture

The embedded player is not getting a video surface.

  1. Open ⚙ → Stats for nerds and see whether frames are arriving at all — that separates a stream problem from a display one.
  2. On Wayland, try Settings → Playback → Run via X11 backend and restart the app.
  3. Run from a terminal and look for lines mentioning GL or mpv.

macOS says the app cannot be opened

It is not notarised by Apple yet. Right-click the app and choose Open, then Open in the dialog — or allow it under System Settings → Privacy & Security → Open Anyway.

If macOS instead says the app is “damaged”, that is the quarantine flag from the download. Clear it:

xattr -dr com.apple.quarantine /Applications/dopeIPTV.app

Neither warning means anything is wrong with the app — only that the build is not code-signed, which needs a paid Apple certificate.

Defender deleted dopeiptv.exe

A false positive. Two of its causes were fixed in 1.2.10: the launcher is now compiled from source instead of being the stock prebuilt one that antivirus engines hold signatures for, and the executable carries a proper version resource.

If your engine still flags it, allow the folder in your antivirus and report the false positive to Microsoft — that is what eventually clears it for everybody, not just for you.

A channel will not play

The app probes the provider and tells you why in plain language rather than showing a bare failure: account expired, connection limit reached, stream missing, server unreachable, and so on.

If other channels play, it is that channel. If nothing plays, check Settings → Playlists — the account panel shows the expiry date and how many connections the account allows.

“Connection limit reached”

Your account allows a certain number of streams at the same time and they are all in use. In order of likelihood:

  1. Multiview is open — each window is a connection.
  2. A recording of a different channel is running.
  3. Another device or another person is using the account.
  4. A previous session has not timed out yet at the provider; waiting a minute often clears it.

Recording the channel you are watching does not count as a second connection.

Linux: the taskbar shows a blank icon

On Wayland, GNOME and KDE take a window's icon from a desktop entry matching it and ignore what the application sets for itself. An AppImage has no such entry until something installs one.

  1. The app offers to add one the first time it starts. Say yes — then restart the app, because the window you are looking at keeps the icon it opened with.
  2. The same switch is under Settings → Playback if you said no.
  3. If the icon still does not appear, a stale icon cache is hiding it. GTK reads that file instead of the folder:
rm ~/.local/share/icons/hicolor/icon-theme.cache

Installed from the .deb, the entry is already there and none of this applies.

“Open externally” does nothing

That option launches a standalone mpv or vlc from your system, so one of them has to be installed — the built-in player needs nothing extra and is unaffected.

sudo apt install mpv vlc        # Debian/Ubuntu
sudo dnf install mpv vlc        # Fedora
sudo pacman -S mpv vlc          # Arch

Not here? Open an issue on GitHub. Include the version from Settings → About and the log — the “How do I get a log?” answer above has the exact command for your system.