Kodi NextPVR Client 22.6.2.1 — Custom Channel Group Missing Despite Valid API Response
Environment
NextPVR Server: 7.1.1.260616
NextPVR Docker container on Synology DS925+
Kodi: 22.0 RC1, running on CoreELEC (Ugoos AM9 Pro)
Kodi NextPVR PVR Client: 22.6.2.1
IPTV source: Xtream Codes
Problem:
A manually created channel group named NFL Sunday Ticket is visible and functional in the NextPVR web interface but does not appear in Kodi's channel group selector.
All other channel groups imported from the IPTV provider appear normally.
Confirmed Behavior
Created a custom channel group named NFL Sunday Ticket in Next PVR
Added 17 channels to the group.
Confirmed that the group appears in NextPVR's web TV Guide with the correct channels.
Confirmed through NextPVR's authenticated API that channel.groups includes the custom group.
Confirmed through the authenticated API that channel.list&group_id=NFL%20Sunday%20Ticket returns 17 channels.
Restarted Kodi and cleared all PVR data to force a fresh import. The custom group remains missing.
Deleted an unrelated IPTV provider group in NextPVR. That deletion was subsequently reflected in Kodi, confirming that other group changes are being recognized.
Kodi Debug Log
The NextPVR client successfully retrieves the channel group list:
The client continues loading other channel groups normally.
Expected Behavior
Kodi should display the custom NFL Sunday Ticket group containing its 17 channels, just as NextPVR's web TV Guide does.
Actual Behavior:
The group is omitted from Kodi's channel group list, even after a complete PVR data reset.
Question:
Is there a known limitation or bug in the Kodi NextPVR PVR Client concerning manually created channel groups?
In particular, could the client be filtering or skipping certain entries returned by channel.groups, even though those entries are valid and their channel membership is accessible through channel.list&group_id=...?
I can provide the complete Kodi debug log and API responses if needed.
Not so much looking for a solution as ideas for what/how/where to begin diagnosis. Obviously, a solution would be great ;-)
In all other respects, Npvr works great!
I'm using a bridge/portal to enable pluto tv (as a std iptv source). I've also tried the (unsupported, I know) pluto extra with various streamlink/ffmpeg combos with the same results. I'm relatively sure the bridge developer is tweaking things before they get to Npvr because different versions of his bridge provide slightly different results. Sometimes, some channels play in Npvr, other times not so much. But they always work when pulled directly into vlc. I'm sure this is the underlying cause to the audio only issue, BUT, the bottom line for me is that if I take the bridge stream(s) directly to vlc (eg http://<bridge-ip>:7777/pluto/us_east/watch/561d7d484dc7c8770484914a), bypassing Npvr they play fine. Trying to play the same stream(s) in vlc via Npvr (eg http://<Npvr-server>:8866/live?channel=30) or the npvr clients I have (kodi, web/desktop) provides audio only.
I was hoping to try something similar with Tubi, but, wanted to see if this could be resolved first.
"Stop beating the Pluto dead horse" is a perfectly reasonable response. I have a bad habit of beating my head against things that really don't have that much value.
No idea if the logs show anything helpful.
So.... First steps, ideas, addtnl info I should gather, etc.. I don't know how to capture a raw stream snippet coming from the bridge program, but, certainly will do that if someone explains how to do it.
Or, if anyone knows of other Pluto/Tubi/etc bridge programs that play better with Npvr that would be great too.
============
Other things I came across when trying to diagnose: I'm not sure if these are old or AI and were never valid responses
Audio ONLY - results said to change decoder in settings/decoder - I find no such setting
VLC setup - results say entering this, "http://<nextpvr-server-ip>:8866/channels", will provide vlc with an m3u of channels (or download an m3u in browser). - neither worked for me
Attempting to install NextPVR to a new system and keep getting install error then install aborts. Most dependencies installed but NextPVR and .net runtime not installed.
Terminal output shows the error. Is there a new installer available?
Code:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'nextpvr-helper' instead of './nextpvr-helper.deb'
The following NEW packages will be installed:
nextpvr-helper
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
14 not fully installed or removed.
Need to get 0 B/4,626 B of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 /home/ken/nextpvr-helper.deb nextpvr-helper all 3.1 [4,626 B]
(Reading database… 518525 files and directories currently installed.)
Preparing to unpack /home/ken/nextpvr-helper.deb…
preinst install
Online 3.2
Version 3.1 nextpvr-helper.deb mismatch
dpkg: error processing archive /home/ken/nextpvr-helper.deb (--unpack):
new nextpvr-helper package pre-installation script subprocess returned error exit status 1
postrm called with args= abort-install
Errors were encountered while processing:
/home/ken/nextpvr-helper.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
I've identified what appears to be a bug in the NextPVR web player's elapsed-time display when seeking within a recording using transcoded HLS playback.
Environment
NextPVR 7.1.1.260616
Docker: nextpvr/nextpvr_amd64:stable
Firefox on Windows
MPEG-2 TS recording, approximately 58 minutes
Playback through recording.transcode.m3u8
Issue
After seeking within a recording, the elapsed-time indicator on the left side of the timeline shows a position significantly ahead of the actual playback position.
For example, seeking to approximately 10 minutes can result in the elapsed-time indicator showing approximately 20 minutes, even though playback is occurring at the correct location.
Steps to reproduce
Open a recorded .ts program in the NextPVR web player.
Seek to approximately 10 minutes into the recording.
Allow transcoded playback to resume.
Observe that the elapsed-time label is ahead of the actual recording position.
Suspected cause
In /app/wwwroot/player.html, around line 1593, the playback position is calculated as:
var time = player.currentTime + startSeconds;
However, the displayed position is subsequently calculated using:
var position = display(time + startSeconds);
Since time already includes startSeconds, the seek offset is effectively added twice when formatting the elapsed-time label.
The internal lastPosition value uses time directly, which appears to be correct.
Tested fix
Changing:
var position = display(time + startSeconds);
to:
var position = display(time);
corrected the elapsed-time display in my local testing.
After applying this change, I sought to approximately 10 minutes and captured the following values from Firefox DevTools:
player.currentTime = 1.923291
startSeconds = 601.414791
lastPosition = 603
displayedTime = 00:10:03
This is consistent with the actual playback position:
1.923291 + 601.414791 = 603.338082 seconds
With the original expression, these same values would produce 1204.75 seconds (20:05) instead of 10:03.
Verification
After applying the one-line correction and refreshing the web player, the elapsed-time indicator correctly reflected the recording position during seeking. I also compared commercial boundaries against recording-relative timestamps, which were consistent after the correction.
The modification was made directly inside the running Docker container and is not a persistent fix.
I've confirmed this behavior with Firefox and transcoded HLS playback. I haven't tested other browsers or playback methods.
It appears the display calculation simply needs to use display(time) rather than adding startSeconds again.
This is a vibe-coded an Android TV client for JellyFin that also works with NextPvr. It is called (for now) JDVR. If you have the time and are willing to help test, I would appreciate. I have tested so far on a Nvidia Sheild and an Onn 4k google box. What works with NextPVR: - Sign in with your PIN (it automatically detects servers on your network) - Guide with channel logos, program art and your channel groups - Live TV with pause and rewind from NextPVR's buffer - Recordings: browse by show or by date, resume, watched, delete, and play recordings that are still recording - Record, series recordings with NextPVR's options, keyword rules, manual recordings, series priority - Home screen with tuners in use, drive space and failed recordings - Commercial marks, a Skip prompt and ad-time badges from the .edl beside each recording. If you already run Comskip with output_edl=1, it just works. If you don't, there's an optional scanner service in the repo (tools/nextpvr-comskip). That scanner has a status page. - There is a NextPVR inspired theme and a couple of others. Trying to get done: renaming recordings, Forget recording, choosing artwork, and genre colors. Download and install steps: https://github.com/mackandall/jdvr-clien...vr-preview JDVR is GPL and free. Bug reports are welcome here or as GitHub issues. Please mention your device and NextPVR version.
So I have the latest nextPVR. I went to check my scheduled recordings and there wasn't anything there. I checked to see if the programs I have always set up to record were there but nope. How does the scheduler get completely emptied? I am having to go back and set up everything again.
Any help would be greatly appreciated.
Thanks
Hadn’t noticed it before. I’m sure I watched all of Bathurst last year (6+ hours via iptv)
But in the newer version with two different tvOS clients I notice the stream stop after a period of time. It’s feels like it’s the same amount of time each time. Maybe 10
Mins.
Just running it again to time it. I think it’s both HDHomeRun and iptv channels. It just freezes then drops back to menu.
Managed to capture some errors on the logs
Code:
2026-10-27 18:08:41.836 [DEBUG][30] Got request [192.168.40.77]: /service (channel.transcode.lease)
2026-10-27 18:08:41.836 [DEBUG][30] parameters:
2026-10-27 18:08:41.836 [DEBUG][30] method: channel.transcode.lease
2026-10-27 18:08:41.836 [DEBUG][30] sid: 538954322353470aa7d6b69d15773e16
2026-10-27 18:08:41.836 [DEBUG][30] client_ip: 192.168.40.77
2026-10-27 18:08:41.836 [DEBUG][30] client_local: true
2026-10-27 18:08:41.836 [DEBUG][30] user_agent: NextPVR%20TV/25 CFNetwork/3860.700.1 Darwin/25.6.0
2026-10-27 18:08:41.836 [DEBUG][30] host_callback: ...
2026-10-27 18:08:41.836 [DEBUG][30] Renew lease ok (0x1600D2)
2026-10-27 18:08:41.836 [DEBUG][30] <?xml version="1.0" encoding="utf-8" ?>
<rsp stat="ok">
</rsp>
2026-10-27 18:08:42.215 [ERROR][126] IsComplete():: Object reference not set to an instance of an object.
2026-10-27 18:08:42.215 [ERROR][126]
2026-10-27 18:08:42.216 [DEBUG][126] stream@2 got zero bytes
2026-10-27 18:08:43.218 [ERROR][126] IsComplete():: Object reference not set to an instance of an object.
2026-10-27 18:08:43.218 [ERROR][126]
2026-10-27 18:08:43.219 [DEBUG][126] stream@2 got zero bytes
2026-10-27 18:08:44.223 [ERROR][126] IsComplete():: Object reference not set to an instance of an object.
2026-10-27 18:08:44.223 [ERROR][126]
2026-10-27 18:08:44.223 [DEBUG][126] stream@2 got zero bytes
2026-10-27 18:08:45.226 [ERROR][126] IsComplete():: Object reference not set to an instance of an object.
2026-10-27 18:08:45.226 [ERROR][126]
2026-10-27 18:08:45.226 [DEBUG][126] stream@2 got zero bytes
2026-10-27 18:08:46.235 [ERROR][126] IsComplete():: Object reference not set to an instance of an object.
2026-10-27 18:08:46.235 [ERROR][126]
2026-10-27 18:08:46.236 [DEBUG][126] stream@2 got zero bytes
2026-10-27 18:08:47.252 [ERROR][126] IsComplete():: Object reference not set to an instance of an object.
2026-10-27 18:08:47.252 [ERROR][126]
2026-10-27 18:08:47.252 [DEBUG][126] stream@2 got zero bytes
2026-10-27 18:08:48.255 [ERROR][126] IsComplete():: Object reference not set to an instance of an object.
2026-10-27 18:08:48.255 [ERROR][126]
2026-10-27 18:08:48.255 [DEBUG][126] stream@2 got zero bytes
2026-10-27 18:08:48.600 [DEBUG][199] Have received 152675740 bytes from rtp source
2026-10-27 18:08:49.258 [ERROR][126] IsComplete():: Object reference not set to an instance of an object.
2026-10-27 18:08:49.259 [ERROR][126]
2026-10-27 18:08:49.259 [DEBUG][126] stream@2 got zero bytes
2026-10-27 18:08:50.263 [ERROR][126] IsComplete():: Object reference not set to an instance of an object.
2026-10-27 18:08:50.263 [ERROR][126]
2026-10-27 18:08:50.264 [DEBUG][126] stream@2 got zero bytes
2026-10-27 18:08:50.837 [DEBUG][30] Got request [192.168.40.77]: /service (channel.transcode.lease)
2026-10-27 18:08:50.837 [DEBUG][30] parameters:
2026-10-27 18:08:50.837 [DEBUG][30] method: channel.transcode.lease
2026-10-27 18:08:50.837 [DEBUG][30] sid: 538954322353470aa7d6b69d15773e16
2026-10-27 18:08:50.837 [DEBUG][30] client_ip: 192.168.40.77
2026-10-27 18:08:50.837 [DEBUG][30] client_local: true
2026-10-27 18:08:50.837 [DEBUG][30] user_agent: NextPVR%20TV/25 CFNetwork/3860.700.1 Darwin/25.6.0
2026-10-27 18:08:50.837 [DEBUG][30] host_callback: ...
2026-10-27 18:08:50.837 [DEBUG][30] Renew lease ok (0x1600D2)
2026-10-27 18:08:50.838 [DEBUG][30] <?xml version="1.0" encoding="utf-8" ?>
<rsp stat="ok">
</rsp>
2026-10-27 18:08:51.266 [ERROR][126] IsComplete():: Object reference not set to an instance of an object.
2026-10-27 18:08:51.266 [ERROR][126]
2026-10-27 18:08:51.267 [DEBUG][126] stream@2 got zero bytes
2026-10-27 18:08:52.270 [ERROR][126] IsComplete():: Object reference not set to an instance of an object.
2026-10-27 18:08:52.270 [ERROR][126]
2026-10-27 18:08:52.270 [DEBUG][126] stream@2 got zero bytes
2026-10-27 18:08:53.276 [ERROR][126] IsComplete():: Object reference not set to an instance of an object.
2026-10-27 18:08:53.276 [ERROR][126]
2026-10-27 18:08:53.276 [DEBUG][126] stream@2 got zero bytes
2026-10-27 18:08:54.280 [ERROR][126] IsComplete():: Object reference not set to an instance of an object.
2026-10-27 18:08:54.280 [ERROR][126]
2026-10-27 18:08:54.280 [DEBUG][126] stream@2 got zero bytes
2026-10-27 18:08:55.285 [ERROR][126] IsComplete():: Object reference not set to an instance of an object.
2026-10-27 18:08:55.285 [ERROR][126]
2026-10-27 18:08:55.285 [DEBUG][126] stream@2 got zero bytes
2026-10-27 18:08:56.289 [ERROR][126] IsComplete():: Object reference not set to an instance of an object.
2026-10-27 18:08:56.289 [ERROR][126]
2026-10-27 18:08:56.289 [DEBUG][126] stream@2 got zero bytes
2026-10-27 18:08:57.294 [ERROR][126] IsComplete():: Object reference not set to an instance of an object.
2026-10-27 18:08:57.294 [ERROR][126]
2026-10-27 18:08:57.294 [DEBUG][126] stream@2 got zero bytes
2026-10-27 18:08:58.297 [ERROR][126] IsComplete():: Object reference not set to an instance of an object.
2026-10-27 18:08:58.297 [ERROR][126]
I did wonder if it was disk space related, but don’t think this is the case.
I am using NextPVR version 7.1.1.260616 in a Debian LXC container on Proxmox with HDHomeRun FLEX QUARTRO. (using this script)
I am unable to add channels with guide data, despite having a Schedule Direct subscription.
In the 'Scan Channels Guide' window, the Guide drop-down menu stays stuck on '...loading...'.
Furthermore, when I try to edit a channel in the 'Channel' window, I cannot access Schedule Direct as a source; the drop-down menu is blank. (I have also tried AutoMap, but it didn't work either).
Even after reconnecting my Schedule Direct account, the lineups do not appear in the guide window.
I've tried reinstalling on a real VM and followed the Linux install directions, but I still have the same problem.
I then tried restoring a backup, and everything works normally in version 7.0.5.260307, where I can add channels and see the mapping.
Is it possible to install an older version in my LXC container?
Can I download the old version from an old machine and re-upload it to the new machine? Using scp? Which files would need to be transferred?
Just an FYI, not a big deal. In the UK our clocks changed in the early hours of this morning, and as a result the guide starts at 0:00, shows two 1:00, and stops at 23:00. So I've a recording due to start at 23:35 which is not visible in the TV Guide. I'm sure it will record, it's just a display issue, and as it will only occur once in every 8760 hours... meh.
Oh, looks like the 'other client' displays ok, ie /uiclient.html is good, it's /guide.html which isn't.
Hello,
I am now trying nlite again. I have downloaded onto a different computer that has nextpvr installed. How do I point my nlite to look to a different server. I know you can do it as a command prompt. I am confused as whick command prompt. Could you enlighten me?
Thank you,
Bruce