Skip to content
This repository was archived by the owner on Jun 14, 2026. It is now read-only.
Pliable Pixels edited this page Oct 30, 2017 · 141 revisions

Live Streaming issues

zmNinja is suddenly showing Red Xs for images - APIs are working, ZM is working and I did not upgrade ZM either!

It seems the latest update of Chrome (v59) broke access if used with basic credentials. The bug report is here

How this affects you:

  • If you are running zmNinja on Android
  • AND your Chrome version shows version 59.x - 61.x (and possibly later versions, unless google engineers patch it)
  • AND you are using HTTP Basic Authentication

Then your images won't show. According to Chrome developers, a fix will be posted in v61 of Chrome.

Possible Workarounds:

  • Disable HTTP Basic auth for now
  • Downgrade Chrome
  • Wait for v61 to be released (of Chrome) and hope they fix the bug (I can't control when the fix is provided by Google)
  • Shoot me an email for an interim version of the app that uses crosswalk - it essentially bundles its own browser, but you'll have to delete your existing zmNinja app before you install the new APK and it won't auto upgrade (its a sideloaded app)

zmNinja is showing Red X for live view, but I can see events

The chances are very high that you have enabled ZoneMinder's Multi-Server option and you entered something like localhost in server settings. DON'T. You can't enter localhost. If you are not using multi-server, remove any server settings. If you are using multi-server, you need to put in a valid server IP or hostname, not localhost. BTW, if you did put in localhost you will note that your ZM web console also won't work if you try to launch your browser on a different machine from where ZM is running.

Everything works! but live streaming does not in ZMNinja (works in ZoneMinder)

  • Try to use the wizard. If it fails,
  • Go to zmNinja settings and fix your cgi-bin path. the automatic path that is filled in won't work. Here is a hint, go to zoneminder->options->paths and check the value of the cgi-bin path - your zmNinja path will be "base path of your server" + cgi-bin path.

I'm seeing Red Xs and none of the above suggestions work

If you are seeing Red X marks for both live view and events, you likely have a wrong cgi-bin path set in settings. Please run the wizard.

Everything works! but live streaming does not - either in ZoneMinder or ZMNinja

Check if streaming works in the web interface. If it does not work, zmNinja won't work either. Fix ZM first

I upgraded ZoneMinder to 1.30.2 or above and zmNinja stopped working!

ZoneMinder changed API packaging with ZM 1.30.2 and above. You will have to read your distro notes on how to properly update. Read this thread. Before you think zmNinja is the problem, make sure your APIs are working. Summary of reasons why zmNinja might have stopped working:

  • You did not check if your APIs are working after the upgrade
  • You did not upgrade properly (just updating the ZM package without following distro instructions with ZM is not sufficient)
  • You are missing some key CakePHP modules, likely php5-apc which would have been installed if you read all the package instructions. You can install it manually
  • You might need to restart your system after upgrading (properly)

##I am running ZM on a custom port. zmNinja is unable to reach my ZoneMinder server but I tried on a regular browser (Firefox/Opera/IE) and it I can reach it ####

zmNinja on Android and Desktops uses an embedded chrome browser. Chrome marks certain ports as "unsafe" and won't allow connections to go out. The list of ports to avoid are here

The Montage screen is causing issues with my ZM server - I get connection timeout issues or MySQL connection problems

  • zmNinja uses a different approach to display montage than ZoneMinder. In zmNinja montage screen, I display a snapshot of each monitor and refresh it every few seconds. This results in many short TCP connections constantly being opened and closed. The reason I have to do this is Chrome only allows 6 connections to a domain, which means if I don't keep terminating TCP connections, I won't be able to show more than 6 monitors. Each time I open a new TCP connection for a snapshot, the ZM backend invokes mySQL to authenticate the request. You will need to increase mySQL max_connections in my.cnf if you are facing time_wait/timeout issues.

Everything works! but event viewing does not work - I see question marks

  • Look at apache error logs - it often gives you hints

If you are using ZM < 1.30:

  • You don't have php5-gd installed (or php-gd). You need this package. For ubuntu it's sudo apt-get install php5-gd. Make sure you restart apache.
  • It's possible you are not using the latest version of ZM and you need to replace your version of web/views/image.php with this file

The app works great - except it doesn't work on ONE Android phone - works in others!

zmNinja uses an embedded chrome browser in its app. If you have safe browsing enabled, it may affect zmNinja. However, if you are facing this problem, its likely you can't access ZM from a mobile web browser either. The problem that might be occurring is that zmNinja is trying to reach your ZM server and your settings prohibit it from reaching ZM, so it fails. See this discussion

APIs are not working ! ZM console works fine.

Read this

Everything works when I use LAN IP, but I get "not authenticated" when I use WAN IP

This is likely happening if you use self signed SSL certs. If you are using self signed certificated, you should make sure the "common name" matches the hostname (or public IP) of the server you are installing ZM in. If not, zmNinja's SSL handshake will fail.

If you have used 'make-ssl-cert' or a similar tool that automatically generates the cert for you, its very likely you have certificate that uses the 'unix hostname' of your server. That will not work.

Assuming you are usin apache and have SSL enabled, here is how to regenerate the certs (ubuntu specific, may need to tweak it for your distro)

This will create a self-signed certificate/key pair and store it in /etc/apache2/ssl (you may have to create that directory, or store it elsewhere)

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/zoneminder.key -out /etc/apache2/ssl/zoneminder.crt

Next up, edit your apache ssl config (example /etc/apache2/sites-available/default-ssl.conf) And add/modify the following lines:

SSLCertificateFile /etc/apache2/ssl/zoneminder.crt
SSLCertificateKeyFile /etc/apache2/ssl/zoneminder.key

restart apache

sudo service apache2 restart

I use self signed certificates with SSL and zmNinja auth doesn't work! (works with http)

Starting release 1.0.6, you no longer need to install SSL certificates on the phone. If you are running a version less than 1.0.6 the stuff below applies:

For versions <1.0.6: Please read [the SSL guide] (https://github.com/pliablepixels/zmNinja/blob/master/docs/SSL-Configuration.md). Summary:

  • You need to make sure the common name used while generating the cert is the same as the hostname you specify in zmNinja
  • You need to make sure you import the SSL cert into your phone (if you are using the mobile app).

I have 20 monitors but zmNinja only shows 10

Go to developer settings - increase the limit.

zmNinja montage screen shows all my monitors, but in Event Montage, I only see 5?

You are likely using Chrome (Android or desktop version). Chrome allows a total of 6 simultaneous connections to a domain/sub-domain. ZoneMinder uses a long running TCP stream for each monitor display (keeps sending jpeg images). This means you can only display 6 streams at a time in Chrome. I work around this problem by not asking for live streams in montages - I ask for 'snapshots' and keep refreshing snapshots every 2 seconds. This makes montage display non-realtime, but scales to as many monitors you have. In Event Montage however, I am using zms to display long running streams - trying to do snapshots in event montage is a lot of work and I need to keep track of when the event ends, move to next image etc. I limit this to 5 because I need 1 for control messages.

HTTP Basic Auth is not working

The login/password fields of zmNinja are not the same as basic auth credentials. These are for ZM's own OPT_AUTH system. To use basic auth, specify the URLs as user:password@server.com/path in the ZM URL, API URL and cgi-bin URL. Also enable authentication and put in any random login/password in the ZM auth fields (x/x)

It doesn't work

It does. If you need more help, please enable Debug Logs (Developer Settings) then please look at the logs and let me know what you see.

My events list is stale - I don't see the latest events

Tap on the "..." menu option and tap refresh. Alternately, exit events view, load another view, and go back to events.

I'm using mocord/record and I don't see events without alarms

Tap on the "..." menu option and toggle "Show all events". By default, it shows events with at least one alarm frame

Pan/Tilt/Zoom doesn't work

Tilt/Zoom/Presets support has not been added. But for this to work, PTZ needs to work in ZM first. Once it works in ZM, try it in ZMNinja.

What is this Event Server

The Event Server is a contribution I made to ZoneMinder that adds a daemon to the existing list. It listens for new events using shared memory (aka very efficient) and then sends notifications of events to listeners (you can write your own app that listen as well as use zmNinja). This is a chapter on its own, and I have a dedicated page/project for this here. I'd encourage you to install and use it - its very nice.

I am using your event server. I get push notifications to my desktop apps, but not my iPhone/Android phone

Both Apple and Android require that only trusted "servers" can push notifications to your phone. By "trusted", they mean the server needs to use the same SSL certificates that zmNinja uses. That way they can make sure only the author of the app can send the app messages. This makes a lot of sense, because otherwise anyone could spam your phone.

What this means is that you need to enable "usePushProxy" in the event server and have it point to my public push server. If you install the event server, this is enabled by default. If it is not working, check your ZM logs (not ZMNinja) to see if zmeventserver is complaining about anything

It looks like you allow me to modify the frequency of push notifications. Very cool - will it send me all events that I missed if I make the frequency of a monitor event push to say, 600 seconds?

Nope. It only sends the latest events. What it does is before sending push notifications, it checks if the last time a push was sent for this monitor is < the time you specified. If it is, it does not send. That's all.

Oooh. I have 20 cameras and I have 15 phones. I've registered push on all of them and I love getting notifications

Awesome. Happy you liked it. But please help me by configuring zones properly so you don't keep routing a huge number of false alarms to my server. Its running in a VM in an iMac and I'd appreciate you tuning your intervals and zones so my server doesn't die. The push server is now hosted by www.wk-it.net - thanks Kevin!

Weird issue. I'm on Android. When I exit the app via the 'back key' or from the menu, I get a "the connection to the server was unsuccessful" error when I start the app again.

See this proposed workaround. I currently have no clue why that is occuring.

Is this free?

The source code is free, grab it, compile it, use it. The desktop ports are free as of today. I may charge for it some day. The mobile ports are in Appstore/Playstore for a fee.

Who are the developers behind this?

Me.

Is zmNinja an official ZoneMinder product?

No. But the ZM developers are amazing people who have been very helpful.

I want to donate money

You could either donate to to Zoneminder or donate to zmNinja. Donations to ZoneMinder don't contribute to zmNinja, but the ZoneMinder devs will benefit from it, which is fine too.

I want to donate time/expertise/code

Great. Make sure you read the license , read the contributing guidelines and if it works for you, happy to see what you'd like to do.

How to report errors

  • I'm not a magician. I don't know why something is not working if you don't provide sufficient inputs. Enable debug logs in zmNinja Developer options and then email me the logs. Thats a good start.
  • Its often hard to infer a problem especially when its due to some unique apache/nginx mungling you might have done but haven't told me about it. In such cases, try and give me remote access to your ZM for a day. Configure a limited user with just one monitor. It will save hours of frustration (mostly on my side). Thanks

Clone this wiki locally