[SOLVED] Unable to make LiveView working in ZoneMinder master snapshot from 27-05-2025

Discussions related to the 1.36.x series of ZoneMinder
Post Reply
abg
Posts: 5
Joined: Mon Apr 28, 2025 7:01 pm

[SOLVED] Unable to make LiveView working in ZoneMinder master snapshot from 27-05-2025

Post by abg »

Hi there,

new to ZoneMinder, learned quite a bit by building & configuring it - took a few evenings :shock:
Got it running error free but the live view doesn't want to work.

Some "environmental" details first:
OS - Slackware Linux 15
HW - DELL WYSE 5070 - Celeron J4105 4-Cores, 8GB RAM
ZoneMinder version - git clone master from 27.05.2025
Use case: I own two Tapo c520ws cameras that I isolated from the Internet (allowed only NTP in the firewall for time sync), would like to use their intelligence for motion detection/alarm/motion tracking &co (have no alternative for the Tapo App), would like to use ZoneMinder as a simple storage server for events (motion detection events sent/triggered trough ONVIF) and finally control (PTZ) and view them live/recordings remotely on my phone (VPN home) with zmNinja.

Started my journey with the only ZoneMinder build (2018 - ZoneMinder (1.32.2)) officially supported (and apparently abandoned - not updated) by Slackware:
https://slackbuilds.org/repository/15.0 ... oneMinder/
Configured mysql/apache and started ZM. First tried to configure the cameras on ONVIF (was crucial for me to see if it works) and learned that the GUI doesn't allow me to manually configure the ONVIF parameters and some perl script that probes ONVIF uses an impossible perl module (SOAP::WSDL) I failed to install. Currently running perl v5.34.3 and with 'perl -MCPAN -e 'install SOAP::WSDL'' I got about 30 minutes of downloads/compilations and pages of warnings that the stuff I'm downloading is unstable & co. I had to remove/reinstall perl clean after all that mess, couldn't trust it anymore....

Code: Select all

zmonvif-probe.pl probe
Can't locate SOAP/WSDL/Transport/HTTP.pm in @INC (you may need to install the SOAP::WSDL::Transport::HTTP module) (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at /usr/share/perl5/vendor_perl/ONVIF/Client.pm line 33.
Compilation failed in require at /usr/bin/zmonvif-probe.pl line 30.
Abandoned ZoneMinder 1.32.2 and went for the latest release on git - 1.36.35 only to find out by the experience of a fellow Slacker (Richard Cranium) that the source code is actually incomplete:
https://github.com/ZoneMinder/zoneminder/issues/3781

Went for the master snapshot from 27-05-2025 with:

Code: Select all

git clone https://github.com/ZoneMinder/zoneminder.git
&
git submodule update --init --force --remote
Built (inspired by the Slackware build script) it successfully, created a package and installed & configured it.

Got the cameras manually configured both on RTSP and ONVIF, everything is working fine except the live view (and ONVIF, well the PTZ control works, but motion events/alarms are not received - that's already discussed by @iconnor in another thread and I'll join the conversation there).

Here is a screenshot from the ZM GUI with the broken LiveView (don't mind the broken GUI, looks like crap, but I don't download fonts/icons from the internet :? ):
https://imgur.com/a/RXQFXtw

On the host I can view the RTSP stream with VLC and I also have a VirtualBox VM (Host-Only Networking) with Home Assistant running from where I can watch the RTSP streams and also control the cameras through ONVIF (funny, I also receive the ONVIF events (detection alarms) in Home Assistant).

I spent a lot of time trying to understand why the live view doesn't want to work, been though tens of pages of discussions and suggestions on both this forum and github where issues with the zms streamer were discussed. Checked and double-checked my configuration, time zone is consistent everywhere (mysql, phpi.ini, ZM), disabled OPT_USE_AUTH & AUTH_RELAY, checked the cgi-bin permissions/execution, checked the zms path (ZM_PATH_ZMS in both compilation (recompiled ZM a few times) and /etc/conf.d/01-system-paths.conf)... and still failing to get it working.
The debugging instructions I found a little confusing, but tried many combinations - set LOG_LEVEL_FILE on debug, set _zms in LOG_DEBUG_TARGET, set LOG_LEVEL_WEBLOG o debug and LOG_DEBUG_LEVEL on 9 and was not able to catch any errors - the zms.log was empty, apache-error.log was clean and in the huge debug.log I couldn't' find anything of interest.

Monitored the /var/run/zm/ folder to see if a zms-xxxx.sock file gets generated when I trigger a live view from the ZM GUI and got positive, was generated for a second and disappeared (presumably zms crashed/closed without telling why).

Even executed manually zms from a console to make sure it doesn't crash:

Code: Select all

- executed (apache is the httpd default user)
/var/log/zm# su apache -c "/srv/httpd/cgi-bin/zms"

- and got in ZM log (GUI) - copy/paste:
4/28/25, 9:41:42 PM GMT+3	zmc_m2	5254	INF	UHU-2: 17800 - Capturing at 26.73 fps, capturing bandwidth 33467bytes/sec Analysing at 0.00 fps	zm_monitor.cpp	1845
4/28/25, 9:41:34 PM GMT+3	zmc_m1	5415	INF	UHU-1: 15900 - Capturing at 24.98 fps, capturing bandwidth 30547bytes/sec Analysing at 0.00 fps	zm_monitor.cpp	1845
[b]4/28/25, 9:41:05 PM GMT+3	zms	5517	FAT	No query string.	zms.cpp	114[/b]
4/28/25, 9:40:46 PM GMT+3	zmc_m1	5415	INF	UHU-1: 14700 - Capturing at 24.23 fps, capturing bandwidth 26165bytes/sec Analysing at 0.00 fps	zm_monitor.cpp	1845
4/28/25, 9:40:42 PM GMT+3	zmc_m1	5415	INF	UHU-1: 14600 - Capturing at 25.04 fps, capturing bandwidth 12702bytes/sec Analysing at 0.00 fps	zm_monitor.cpp	1845

- running it on console:
/srv/httpd/cgi-bin/zms
04/28/25 22:16:21.131483 zms[6252].FAT-zms.cpp/114 [No query string.]
I also tried to decrease the FPS & resolution in the camera settings (both camera and ZM GUI) without success.

Worth mentioning that initially when I configured manually the second camera (General/Source/ONVIF), by some interesting glitch when I pressed save and close I got a 1 second recording (false motion detection event). This recording looked OK - image was perfect.

Finally I goofed a little with the cgi execution permission settings in httpd.conf and still couldn't make the live view work.
Running apache 2.4.63 and lectured the "rather weird logic" from the official documentation:
https://httpd.apache.org/docs/trunk/howto/cgi.html

Created a test file as suggested in the apache doc, made it executable and planted it next to the zms binary in /srv/httpd/cgi-bin/
When trying to access it with a browser on http://server-ip/cgi-bin/test i got the content (perl code) displayed instead of "Hello World"
That's with the in httpd.conf already included zm.conf that has the section:

Code: Select all

   ScriptAlias /cgi-bin "/srv/httpd/cgi-bin"
    <Directory "/srv/httpd/cgi-bin">
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        AllowOverride All
        <IfModule mod_authz_core.c>
           # Apache 2.4
           Require all granted
        </IfModule>
        <IfModule !mod_authz_core.c>
            # Apache 2.2
            Order deny,allow
            Allow from all
        </IfModule>
    </Directory>
  
and my httpd.conf default cgi configuration:

Code: Select all

 ScriptAlias /cgi-bin/ "/srv/httpd/cgi-bin/"

<Directory "/srv/httpd/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>
It's only when I uncommented in my httpd.conf the following I got a Hello World displayed in the browser:

Code: Select all

<IfModule !mpm_prefork_module>
      LoadModule cgid_module lib64/httpd/modules/mod_cgid.so
</IfModule>
I left it like this now, shouldn't conflict.

Besides, before uncommentig LoadModule cgid_module lib64/httpd/modules/mod_cgid.so I tried adding in my httpd.conf the following options (pretty much the same ones as in zm.conf) and I wasn't able to get a hello World from the test script, that's why I called it apache devs "weird logic".

Code: Select all

<Directory "/srv/httpd/cgi-bin">
    AllowOverride None
 #   Options None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Require all granted
</Directory>
Final details: the screenshot with the ZM GUI I provided was from Firefox, but I tried it also with a freshly installed Chrome browser and live viewing doesn't work even on my phone in ZMNinja .

I'd be happy to know if the latest git master I'm using now is stable/error free, if not then please advise what source code release to download and how to obtain the submodules for it.
That's pretty much it, I'm out of ideas and I'm really confused about the debugging options in ZM (documentation looks consistent but the logic I find weird/confusing/redundant).

Any help appreciated!
Last edited by abg on Tue Apr 29, 2025 1:14 am, edited 1 time in total.
abg
Posts: 5
Joined: Mon Apr 28, 2025 7:01 pm

Re: Unable to make LiveView working in ZoneMinder master snapshot from 27-05-2025

Post by abg »

Solved!

Apparently I was on the right track with the cgi permissions configuration changes in httpd.conf, but got confused (was really tired) about the status of my changes and the status of the httpd daemon (might have forgotten to restart it in one/some tries).

Live View (zms streamer) is working, that's zms binary is getting properly executed, only when the following httpd.conf statement is uncommented:

Code: Select all

<IfModule !mpm_prefork_module>
	LoadModule cgid_module lib64/httpd/modules/mod_cgid.so
</IfModule>
Even if zm.conf is available and included in httpd.conf with:

Code: Select all

#ZoneMinder
Include /etc/httpd/extra/zm.conf
Still, not sure I'm OK running the latest master (v1.37.66) from 27.04.2025. Looks stable, but it's not doing anything either, ONVIF - alarms (triggering the recording) is not yet functional. But that's for another thread:
viewtopic.php?t=33331&start=30
Post Reply