IC Realtime NVR (Monitor Layout)
Layout control for IC Realtime NVRs and multiviewers over the Dahua-style split.cgi interface. This driver switches the split-screen layout and the block of cameras shown on the NVR's own monitor output — the HDMI or BNC "spot monitor" wired directly to the recorder. One NVR becomes one GEM device.
Because split.cgi is the same endpoint Dahua-OEM recorders expose, this driver also drives many rebadged Dahua NVRs.
Communication is a single plain HTTP request to the NVR on port 80.
What this driver covers
- Layout switching — set the NVR's local monitor to a 1-, 4-, 9-, 16-, 25-, 36-, or 64-camera grid.
- Camera page — choose which block of cameras fills that grid (for example cameras 1–4 versus 5–8 in a 4-up).
What this driver does NOT cover
- No camera video in GEM. This driver never pulls camera streams into GEM — it only rearranges what the physical monitor wired to the NVR shows. To view cameras inside GEM, bring the camera or NVR streams in through GEM's own camera streaming.
- No zones. The NVR is added as a device only; there is nothing to turn on or off. You drive it entirely with the
split_viewcommand. - No PTZ, recording, playback, snapshots, motion, or events. The driver sends layout commands and reads nothing back — the NVR reports no status to GEM.
What this driver actually sends — and the login caveat
Each layout change is sent as an unauthenticated request to http://<NVR-IP>/cgi-bin/split.cgi on port 80 — plain HTTP, no login.
The device form asks for a Username and Password because the NVR account is where you confirm you have the layout privilege, but those credentials are not attached to the layout request — it always goes out unauthenticated. The Port field is likewise ignored; the command always uses port 80 over plain HTTP.
On a job this means:
- It works out of the box on NVRs and firmware that accept
split.cgiwithout a login on port 80. - If your NVR requires a login on that endpoint, the command comes back 401 Unauthorized and the layout never changes — and entering the correct username and password will not fix it, because they are not sent. Confirm the recorder accepts the request without a login before relying on it.
A quick way to confirm before you wire anything up: paste http://<NVR-IP>/cgi-bin/split.cgi?action=setMode&channel=0&mode=split4&group=0 into a browser. If the NVR's monitor switches to a 4-up without prompting for a login, this driver will drive it.
Prerequisites
- An IC Realtime / Dahua-OEM NVR reachable on the LAN whose firmware exposes the
/cgi-bin/split.cgilayout endpoint (most do). - The NVR's local HDMI or BNC monitor output connected to a display — this driver changes what that display shows, nothing else.
- The
split.cgiendpoint reachable on port 80 without a login (see the caveat above).
Setup
- Confirm you can change the NVR's monitor layout from its own front-panel or mouse interface first, and note the NVR's LAN IP.
- (Recommended) In a browser, load
http://<NVR-IP>/cgi-bin/split.cgi?action=setMode&channel=0&mode=split4&group=0and confirm the monitor switches to a 4-up without asking for credentials. - Open Devices (System → Devices) and click Add Device.
- Choose the IC Realtime NVR driver. GEM shows the matching device fields, and a View integration guide toggle links to this page.
- Fill in the device attributes below and Save. Place the device in whichever subsystem you use for surveillance gear — Cameras or Security both work; because this driver has no zones, the subsystem is only for organization.
- There is no zone to create. Send a
split_viewcommand from the Commands page (or a quick test macro) to confirm the monitor layout changes.
Device attributes
| Attribute | Required | Default | Description |
|---|---|---|---|
ip | yes | — | LAN IP or hostname of the NVR. |
username | yes | — | An NVR account. Collected for reference only — not sent with the layout command (see the login caveat). |
password | yes | — | The NVR account password. Stored encrypted. Not sent with the layout command (see the login caveat). |
port | no | 80 | HTTP port field. The layout command ignores this and always uses port 80. |
Commands
| Command | Args | Notes |
|---|---|---|
split_view | output, count, group | Switch the NVR's monitor to a count-tile grid showing camera page group on output output. |
Argument reference:
output— the NVR video output to change (HDMI/BNC channel). Default 0 = the primary output. Many models only accept0; secondary outputs may be locked depending on the recorder.count— number of tiles in the grid. Must be one of 1, 4, 9, 16, 25, 36, 64. Any other value is silently ignored by the NVR, so the layout simply does not change. Default 4.group— which page of cameras fills the grid, zero-based. Each page holdscountcameras: withcount4,group0 shows cameras 1–4,group1 shows 5–8,group2 shows 9–12, and so on. Default 0. The exact camera-to-tile assignment is set on the NVR, not in GEM.
On the Commands page these are three plain text fields — type the number for each.
Running the layout from automation
Because there are no zones, you drive the monitor entirely with the split_view command:
- From Commands (System → Commands) — pick the NVR device and the
split_viewcommand, enteroutput/count/group, and run it. This is the quickest way to confirm wiring. - From a macro — add a device-command step that sends
split_viewwith fixed arguments, for example "Lobby monitor → cameras 1–4" (count4,group0) and "Lobby monitor → cameras 5–8" (count4,group1). Put those macros on touchpanel buttons so staff can flip the guard-monitor view with one tap. - From a trigger — switch the monitor automatically, for example a full-screen entry camera (
count1) when the doorbell rings, or a 4-up of the perimeter cameras when the alarm arms.
GEM has its own Multiview feature for composing camera and source tiles onto a display GEM controls. That is a different thing from this driver, which only rearranges the NVR's own built-in monitor output. Use whichever matches where the video actually comes from.
Troubleshooting
| Symptom | Check |
|---|---|
| The layout never changes | Confirm count is one of 1 / 4 / 9 / 16 / 25 / 36 / 64 — any other number is ignored. Confirm output matches a real monitor output (start with 0). And confirm split.cgi works without a login in a browser (see the login caveat) — if it prompts for credentials, this command cannot supply them. |
| Every command returns 401 | The NVR is enforcing a login on split.cgi. This driver sends the layout request unauthenticated, so the stored Username and Password do not help. Drive the layout from the NVR's own interface, or use a recorder/firmware that leaves the CGI open. |
| The wrong cameras appear in the grid | group is a zero-based page of count cameras; raise or lower it to page through the camera list. The exact camera order is set on the NVR, not in GEM. |
| No camera video shows up in GEM | Expected — this driver only controls the NVR's local monitor layout. Bring camera streams into GEM through its camera streaming, and add a Dahua (RPC2) or ONVIF device for motion and events. |
Related documentation
- Devices — adding and configuring the NVR device row.
- Subsystems — the Cameras / Security subsystem the device is organized under.
- Commands — running
split_viewfrom the admin UI, macros, and triggers. - Macros — building one-tap "show these cameras" layout presets.
- Triggers — switching the monitor automatically on alarm or door events.
- Multiview — GEM's own multi-tile view for displays GEM drives (distinct from the NVR's built-in monitor output).
- Dahua (RPC2) — the event and monitoring integration for the same Dahua-OEM hardware; pair it for motion, alarm, and intercom events.
- ONVIF — the vendor-neutral camera integration for motion and event ingestion.