Known issues
Faults we know about — including the ones that are not ours
Most of what is on this page is not a bug in Kestrel. Kestrel is a client. It asks your camera, NVR or controller for things, and when one of them answers with something other than what was asked for, what you see is a Kestrel screen going wrong. The distinction matters, because it decides who can fix it.
Each entry says which it is. Things Kestrel deliberately does not do are not here — those are the limitations list and the FAQ. If what you are seeing is not on any of the three, tell us; that is how it gets here.
1. Reolink NVR: a camera wall with every name and no pictures
The symptom
Every camera appears, with the right name and the right count, and every tile stays empty. Opening a camera full screen is blank too. Connecting, signing in and listing the cameras all work — it is only the pictures that never arrive.
Seen on: a Reolink RLN16-410 on firmware
3.6.4.473_26030344 (a March 2026 build), with six B800 cameras and an admin
account. An RLC-1224A on the same recorder, in the same wall, has a picture.
What is established, and what is still a guess
Worth separating, because the two lead to different actions. Three things are settled on the recorder above, by watching it rather than by reading somebody else's report:
- It is not Kestrel, and it is not the recorder as a whole. The picture in the RLC-1224A tile and the refusals for the six beside it arrive in the same pass, over the same connection, on the same sign-in. Whatever will not produce a still for one camera hands one over for another a moment later.
- It follows the camera model. Every failing camera is a B800; the one that works is not. That used to be an inference drawn from two reports about other people's recorders. It is now something seen on this one.
- It is not the encoding. The B800 channels and the working RLC-1224A are set identically — H.265 on the clear stream, H.264 on the fluent one — and the B800s refuse a still on both of them.
What has not been established is why the recorder cannot get a frame from these
cameras. The closest public reports are a Reolink NVR answering the snapshot command with its
own error text — "detail" : "rcv failed", "rspCode" : -17 — instead of a JPEG,
which is the recorder saying it could not receive a picture from the camera. The symptom is
identical, but those reports are older than this firmware:
-
home-assistant/core#132361,
December 2024 — RLN8-410 on
v3.5.1.356_24110154, B800 cameras. -
home-assistant/core#150128,
2025 — RLN8-410 on
v3.6.0.384_25051916, D800 cameras. Closed “not planned”.
Both are a different recorder on older firmware, so the wording above is the most likely explanation rather than something read off the device in front of us. Kestrel prints the recorder's own words across the wall when every camera on it fails, and that message is the thing worth reading. Note one gap, which is ours rather than the recorder's: a wall with even one working camera on it does not show that message today, so a mixed wall goes quiet in exactly the case this section describes.
What to try, cheapest first
- Work out whether it is all your cameras or only some. This is the discriminator and it costs nothing but a look at the wall. On the recorder above the split is by model — every B800 blank, the RLC-1224A beside them fine — and a mixed wall like that says the recorder, the network and your credentials are all healthy. All of yours failing at once is consistent with all of them being the same model.
- Reboot the NVR. Unglamorous, and cheap enough to do early. Kestrel asks for a still every couple of seconds per camera, which is a good deal harder than most things ask a recorder to work, and a recorder up for weeks is the ordinary case where that starts to tell. On the system above it changed nothing — so if it fixes yours, yours is a different fault and we would like to hear about it.
- Slow the wall down. Settings → Camera wall refresh. If the pictures come back at a slower rate, the recorder is struggling rather than refusing, which is again a different fault from the one described here. Also not the case above, and also worth reporting if it is the case for you.
- Check it outside Kestrel. If Reolink's own web interface cannot show a still from that camera either, the recorder is the problem and no client can work round it. One caution: a capture button pressed while live video is on screen may simply be saving the frame already playing, which tests the video path rather than the snapshot one.
- Settings → More settings → Devices → your NVR → Check the picture now. Asks for one snapshot on each of the two streams and reports what came back, in the device's own words. This is the one that turns the guessing above into an answer.
If it is the camera firmware
Both reports were resolved by downgrading the camera — a B800 has no web interface of its own, so it is updated through the NVR it is attached to, or through Reolink's desktop client over the local network. Read that as a last resort rather than a fix, and read the warning below before trying it.
Those builds may not run on a recent camera
The version the reports name is a mid-2023 build — v3.1.0.2379_23062702 for a
B800, …03 for a D800. Flashing it onto a recent B800 here took the camera's
video away altogether: settings still reachable, no picture on any client, and the NVR would
not re-add it. Reolink has shipped these cameras under one hardware string for years, and an
older build evidently no longer drives every one of them.
It was recoverable — the current build, v3.1.0.4057_2409132131, went back on
through Reolink's desktop client and the camera returned — but that needs a computer on the
same network as the camera. Do not attempt this on a camera you cannot reach in
person. Rolling back also means giving up three years of camera firmware to recover
a still image, and Reolink has published nothing about the fault. Try everything above first.
Live view can be recovered; the wall cannot
Snapshots travel over the recorder's HTTP API. RTSP is a separate path and is not affected, which is why a camera you cannot get a still from is often still recording and still watchable in Reolink's own app. Kestrel HLS takes RTSP rather than snapshots, so it can give you a camera full screen, with motion and sound, on a device whose snapshots fail.
The add-on does not rescue the wall
The camera wall is built from stills and only from stills — that is what lets one screen carry sixteen cameras at once. There is no HLS path behind it, so on a recorder that will not produce snapshots the wall stays empty however the add-on is set up. Live view is the part that can be recovered, and end-to-end playback through the add-on is not yet confirmed, so this is worth trying rather than something we can promise.
What was ours, and is fixed
None of the above is Kestrel's fault, but the silence was. The recorder refuses this
with a perfectly normal 200 OK and puts the reason in the body, and Kestrel was
taking the 200 at its word and filing an error message where a photograph should
have been — so the tile simply stayed blank. It now decides whether it received a picture by
looking at the file rather than at the status code, and shows the device's own reason across
the wall. A blank wall with nothing written on it is itself a bug now;
report one.
2. H.265 the add-on cannot repackage
Kestrel HLS turns your camera's stream into something a Roku can play. Where a camera sends H.264 it copies the stream straight through, which is cheap and adds no delay of its own. Where it sends H.265 it has to re-encode, and re-encoding means decoding first.
One Reolink RLN36 was found producing H.265 that ffmpeg cannot parse at all. That
stream cannot be re-encoded, however much processor is available, so its main stream cannot be
used — while its sub stream, which is H.264, copies through perfectly. Whether other cameras
share the fault is not known.
What to do: set Stream to repackage to Sub, or set that camera to H.264 in the NVR's encoding settings. Kestrel registers both of a camera's streams with the add-on, so it can fall back to the one that works. Snapshot mode is unaffected — it does not go through the add-on at all.
3. The Radar range hint disagrees with the radar
In the Roku channel's weather settings, the hint under Radar range describes the closest setting as “about 50 miles across”. The radar actually draws about 120 km top to bottom, which is nearer 75 miles. The picture is right and the sentence describing it is wrong; nothing misbehaves. The weather and radar section quotes the real figures.
4. The Roku channel shows no version number
There is nowhere in the channel that displays which build you are running, which is awkward
when the answer to a support question is “that was fixed”. Until there is,
the support page asks roughly when you installed or last
updated it instead. The Linux client does show its version, under
⋯ → About Kestrel.
5. Things that are unproven rather than broken
These are not faults. They are parts of Kestrel that have been built and reviewed but have not been run against the real thing, and we would rather say so than let you find out. They are described where they belong rather than repeated here:
- Frigate, ZoneMinder and QNAP QVR were written from published API documentation and have never talked to an actual install. UniFi Protect has been run far enough on the Roku channel to log in and draw a wall, and no further. See what Kestrel does not do.
- Kestrel HLS has not been confirmed playing end to end. Real hardware has been in front of it and real faults were found and fixed that way, but the last step is not proven, which is why the channel keeps it behind an Untested features switch. See the add-on's page.
- The weather and radar layout has never been drawn on a television. Both sources and the radar are confirmed against the live services, and the geometry is checked arithmetically, but the code that runs on the TV has not yet run on one. See weather on the TV.
When any of these is finally run against real equipment, it moves off this list and the pages above change in the same breath.