Skip to content
Leandro Ferreira da Silva edited this page May 31, 2024 · 14 revisions

Reolink

Pros:

  • All cameras from this brand are very affordable.
  • Responsive support. When Moonfire NVR's author reported the stale TCP session bug to them, they prepared new RLC-420-5MP firmware that incorporated the fix.
  • Not believed to be involved in the Uyghur genocide.

Cons:

  • Their firmware is buggier and less configurable than some other brands.
  • The 8MP cameras come with firmware that uses a H.265 main stream. This is not compatible with Moonfire NVR; see #33. Image quality is also likely to be poor, particularly at night. There are too many pixels on too small a sensor.
  • The models Moonfire NVR's author has tried don't offer a mid-resolution stream that would be ideal for on-NVR analytics.
  • No models with large sensors, so night image quality will suffer.
  • Not well-loved on the ipcamtalk.com forums.

Recommendations:

  • Prefer Reolink's 5MP models over their 8MP models.
  • Contact Reolink support for updated firmware if Moonfire NVR logs warnings like the following: Connecting via TCP to known-broken RTSP server "LIVE555 Streaming Media v2013.04.08"; See <https://github.com/scottlamb/retina/issues/17>. Consider using UDP instead!

Reolink cameras support three streaming protocols:

  • RTSP (newer models) via the live555 server. Note that all versions of live555 are somewhat buggy, and the ancient versions of live555 used by many Reolink cameras are even more so.
  • Their proprietary "Baichuan" protocol. There's a third-party, Free Software proxy called Neolink that can speak RTSP to clients and Baichuan to some Reolink models.
  • RTMP.

Moonfire NVR currently only supports RTSP, but older models may work via Neolink.

RTSP URLs:

  • main (aka "clear") stream: rtsp://ip:554/h264Preview_01_main
  • sub (aka "fluid") stream: rtsp://ip:554/h264Preview_01_sub

Reolink RLC-410, hardware version IPC_3816M

Not recommended! This model is discontinued and won't get any updates for its buggy firmware. The final firmware version v2.0.0.1441_19032101, released 2019-03-21, uses the ancient LIVE555 Streaming Media v2013.04.08.

Basic RTSP streaming support:

  • serious bug: based on the ancient LIVE555 Streaming Media v2013.04.08 which doesn't properly clean up RTSP TCP sessions, as described in retina#17.
  • common bug: RTP timestamps jump forward or backward when the clock is adjusted (periodically via SNTP). This violates RFC 3550 section 5.1, which says "The sampling instant MUST be derived from a clock that increments monotonically and linearly in time to allow synchronization and jitter calculations (see Section 6.4.1)". Currently Moonfire NVR drops the connection on backward time jumps.
  • minor bug: the RTSP implementation sends the ssrc as an attribute in the PLAY response's RTP-Info header, where it should be an attribute of the SETUP response's Transport header.
  • The sub stream is a very low resolution (640x352) which may be inadequate for good on-camera analytics.
  • has a gap of several seconds between video frames when transitioning between day and night (IR) mode.
  • sends RTCP Sender Reports but not the ONVIF RTP 0xABAC timestamp extension.

Configuration:

  • Web UI: depends on Adobe Flash, which is end-of-lifed. The preview and motion alert configuration are broken.
  • Desktop software: There's a desktop app for Windows and macOS which still works.
  • ONVIF: unsure if basic configuration works.

On-camera motion detection:

  • ONVIF/RTSP metadata streams: broken. GetMetadataConfigurations returns a SOAP fault with no debugging information.
  • ONVIF PullPoint stream: broken. PullMessagesRequest drops the HTTP connection without responding.
  • ONVIF / WS Base Notifications (callbacks): seems to work in limited testing. This is an awkward API, though.
  • Reolink proprietary API: /api.cgi?cmd=GetMdState is a polling-based API. Untested but probably works.

Reolink RLC-420-5MP, hardware version IPC_51516M5M

As of 2021-09-16, the latest released firmware uses LIVE555 Streaming Media v2013.04.08 with the stale TCP session bug described at retina#17. However, they've prepared an unreleased firmware v3.0.0.589_21091583 based on LIVE555 Streaming Media v2020.08.12.

  • Main stream can be configured to 2560x1920, 2560x1440, 2048x1536, or 2304x1296.
  • Sub stream is fixed at 640x480.
  • No third stream support.

Reolink RLC-822A, hardware version IPC_523128M8MP

Not currently recommended. May improve with updated firmware.

Basic compatibility: the firmware this camera ships with (v3.0.0.177_21012107, as of 19 Aug 2021) doesn't support H.264 on the main stream, only H.265. Browsers don't support H.265, and so neither does Moonfire NVR (see #33). However, if you write to Reolink support, they will send you a beta firmware which uses H.264 on the main stream, and so Moonfire NVR can support it. This beta firmware appears to be fairly buggy, though. When viewing through VLC, sometimes only there's only an image in the top third of the window, and/or the frame rate drops to near-zero.

Future on-NVR analytics support: this planned feature will need a "Goldilocks" stream: high enough resolution to zoom in on a portion of the image and run an object detection model, low enough resolution and frame rate that the NVR machine can decode streams from all cameras in real time. This camera doesn't have one:

  • the "clear" stream is too expensive. The only resolution choices are 3840x2160, 2560x1440, or 2304x1296.
  • the "fluent" stream is too low-quality, at a fixed resolution of 640x360.

Ideally Reolink would support three configurable streams (as some other brands' cameras do):

  • a full-resolution, high-frame rate stream for forensics
  • a medium-resolution, low-frame rate (or temporal SVC-enabled) stream for on-NVR analytics. 1280x720 or 1920x1080 at 5 fps might be about right.
  • a low-resolution stream for mobile live streams.

Reolink Video Doorbell PoE

Both main and sub streams work with the improvements added in moonfire-nvr v0.7.16 using the RTSP URIs streams specified below.

It was tested on Reolink Video Doorbell PoE model, with recording only and no audio, both live view and recording works as expected.

RTSP URIs:

  • main stream: rtsp://<ip>:<port>/h264Preview_01_main (eg: rtsp://192.168.3.40:554/h264Preview_01_main).

  • sub stream: rtsp://<ip>:<port>/h264Preview_01_sub (eg: rtsp://192.168.3.40:554/h264Preview_01_sub).

Camera details;

  • Model: Reolink Video Doorbell PoE
  • UID: < redacted >
  • Item No.: D340P
  • Build No.build: 2401262241
  • Hardware No.: DB_566128M5MP_P
  • Config Version: v3.0.0.0
  • Firmware Version: v3.0.0.3215_2401262241
  • Details: DB_566128M5MP_PS10E1W0111

Running custom firmware on the camera

  • Hacking Reolink cameras for fun and profit, describe George Hilliard's "pwning" [owning] the operating system within a Reolink camera by desoldering the flash and replacing it with a socket. He then proceeded to reverse-engineer the Baichuan protocol.
  • hn/reolink-camera describes how to alter the firmware to add SSH access. This technique involves less soldering: just adding wires to the serial console header.
  • hn/reolink-camera#5 adds an option to the script to alter a .pak file so altered firmware can be simply uploaded to the camera through its UI. No hardware modification required. hn wrote "I'm not merging zengelan's repack-script into the main tree because the update mechanism in all its entirety hasn't been understood well (at least by me). For those who are brave of heart there is no known reason for not using the script."