diff options
| author | Pliable Pixels <pliablepixels@gmail.com> | 2019-03-15 09:27:24 -0400 |
|---|---|---|
| committer | Pliable Pixels <pliablepixels@gmail.com> | 2019-03-15 09:27:24 -0400 |
| commit | b87f575ca55220a6d7066d6c96e6895ea4721e04 (patch) | |
| tree | 2ec4f92c7d0433e002907dd0e984144146dcaf1e /docs/_build/html/guides/FAQ.html | |
| parent | 39af2422f657f8b5e53af59c7d0dd4fb8d741c38 (diff) | |
moved dirs
Diffstat (limited to 'docs/_build/html/guides/FAQ.html')
| -rw-r--r-- | docs/_build/html/guides/FAQ.html | 987 |
1 files changed, 987 insertions, 0 deletions
diff --git a/docs/_build/html/guides/FAQ.html b/docs/_build/html/guides/FAQ.html new file mode 100644 index 00000000..fe38493e --- /dev/null +++ b/docs/_build/html/guides/FAQ.html @@ -0,0 +1,987 @@ + + +<!DOCTYPE html> +<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> +<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> +<head> + <meta charset="utf-8"> + + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + + <title>zmNinja FAQ — zmNinja documentation</title> + + + + + + + + + + + + + + + + + + <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> + + + + + + <link rel="index" title="Index" + href="../genindex.html"/> + <link rel="search" title="Search" href="../search.html"/> + <link rel="top" title="zmNinja documentation" href="../index.html"/> + <link rel="next" title="Validating APIs" href="validating-api.html"/> + <link rel="prev" title="Welcome to zmNinja’s documentation!" href="../index.html"/> + + + <script src="../_static/js/modernizr.min.js"></script> + +</head> + +<body class="wy-body-for-nav" role="document"> + + + <div class="wy-grid-for-nav"> + + + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search"> + + + + <a href="../index.html" class="icon icon-home"> zmNinja + + + + </a> + + + + + + + +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + + + </div> + + <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> + + + + + + + <ul class="current"> +<li class="toctree-l1 current"><a class="current reference internal" href="#">zmNinja FAQ</a><ul> +<li class="toctree-l2"><a class="reference internal" href="#what-is-the-minimum-supported-version-of-zoneminder-android-and-ios">What is the minimum supported version of ZoneMinder, Android and iOS?</a></li> +<li class="toctree-l2"><a class="reference internal" href="#zmninja-help">zmNinja Help</a></li> +<li class="toctree-l2"><a class="reference internal" href="#asking-for-refunds">Asking for refunds</a></li> +<li class="toctree-l2"><a class="reference internal" href="#things-you-should-own-up-to">Things you should own up to</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#read-the-app-description">Read the app description</a></li> +<li class="toctree-l3"><a class="reference internal" href="#try-before-buy">Try before buy</a></li> +<li class="toctree-l3"><a class="reference internal" href="#zmninja-doesn-t-work-actually-even-zoneminder-web-console-doesn-t-work-you-should-fix-this">zmNinja doesn’t work. Actually, even ZoneMinder web console doesn’t work. You should fix this!</a></li> +<li class="toctree-l3"><a class="reference internal" href="#zmninja-doesn-t-work-zoneminder-works-but-i-have-no-idea-why-apis-don-t-work-you-should-fix-this">zmNinja doesn’t work. Zoneminder works, but I have no idea why APIs don’t work. You should fix this!</a></li> +<li class="toctree-l3"><a class="reference internal" href="#i-can-t-compile-zmninja-help-me">I can’t compile zmNinja, help me!</a></li> +<li class="toctree-l3"><a class="reference internal" href="#how-to-report-errors">How to report errors</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#profile-information-storage-related">Profile information storage related</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#zmninja-is-not-saving-my-information-it-keeps-asking-me-to-re-enter-all-my-data">zmNinja is not saving my information. It keeps asking me to re-enter all my data</a></li> +<li class="toctree-l3"><a class="reference internal" href="#i-updated-my-zmninja-app-and-all-my-server-settings-were-cleared-why">I updated my zmNinja app and all my server settings were cleared. Why?</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#connection-authentication-issues">Connection/Authentication issues</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#general-tips">General tips</a></li> +<li class="toctree-l3"><a class="reference internal" href="#server-redirects">Server Redirects</a></li> +<li class="toctree-l3"><a class="reference internal" href="#self-signed-certs">Self signed certs</a></li> +<li class="toctree-l3"><a class="reference internal" href="#ssl-settings">SSL settings</a></li> +<li class="toctree-l3"><a class="reference internal" href="#everything-works-when-i-use-lan-ip-but-i-get-not-authenticated-when-i-use-wan-ip">Everything works when I use LAN IP, but I get “not authenticated” when I use WAN IP</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#live-streaming-issues">Live streaming issues</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#summary-of-everything-works-but-i-can-t-see-live-feed">Summary of Everything works, but I can’t see live feed</a></li> +<li class="toctree-l3"><a class="reference internal" href="#general-note">General note</a></li> +<li class="toctree-l3"><a class="reference internal" href="#i-can-t-see-stream-and-i-can-t-see-streams-in-zoneminder-webconsole-either">I can’t see stream: And I can’t see streams in ZoneMinder webconsole either</a></li> +<li class="toctree-l3"><a class="reference internal" href="#i-can-t-see-streams-i-use-basic-auth">I can’t see streams: I use basic auth</a><ul> +<li class="toctree-l4"><a class="reference internal" href="#skipping-auth-for-nph-zms-urls">Skipping auth for <code class="docutils literal"><span class="pre">nph-zms</span></code> URLs</a></li> +<li class="toctree-l4"><a class="reference internal" href="#authorization-with-a-reverseproxy">Authorization with a ReverseProxy</a></li> +</ul> +</li> +<li class="toctree-l3"><a class="reference internal" href="#i-can-t-see-streams-multi-server-is-enabled">I can’t see streams: Multi-server is enabled</a></li> +<li class="toctree-l3"><a class="reference internal" href="#i-can-t-see-streams-you-have-cgi-bin-issues">I can’t see streams: you have cgi-bin issues</a></li> +<li class="toctree-l3"><a class="reference internal" href="#zmninja-montage-does-not-seem-smooth-feeds-seem-a-little-delayed-compared-to-zm-console">zmNinja montage does not seem smooth - feeds seem a little delayed compared to ZM console</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#event-images-streaming-related">Event images/streaming related</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#id1">General note</a></li> +<li class="toctree-l3"><a class="reference internal" href="#event-stream-viewing-does-not-work">Event stream viewing does not work</a></li> +<li class="toctree-l3"><a class="reference internal" href="#video-not-playable">Video Not Playable</a></li> +<li class="toctree-l3"><a class="reference internal" href="#event-thumbnails-images-don-t-show">Event thumbnails/images don’t show</a></li> +<li class="toctree-l3"><a class="reference internal" href="#when-viewing-individual-frames-some-event-frames-show-but-some-don-t">When viewing individual frames, some event frames show, but some don’t</a></li> +<li class="toctree-l3"><a class="reference internal" href="#zmninja-montage-screen-shows-all-my-monitors-but-in-event-montage-i-only-see-5">zmNinja montage screen shows all my monitors, but in Event Montage, I only see 5?</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#other-misc-issues">Other misc. issues</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#i-suddently-see-an-error-message-saying-i-need-to-enable-zm-auth-hash-logins-this-wasn-t-there-before">I suddently see an error message saying I need to enable ZM_AUTH_HASH_LOGINS. This wasn’t there before</a></li> +<li class="toctree-l3"><a class="reference internal" href="#zmninja-1-2-515-and-beyond-says-need-api-upgrade-for-the-24hr-review-feature-what-does-that-mean">zmNinja 1.2.515 and beyond says “Need API Upgrade” for the 24hr review feature. What does that mean?</a></li> +<li class="toctree-l3"><a class="reference internal" href="#i-upgraded-zoneminder-to-1-30-2-or-above-and-zmninja-stopped-working">I upgraded ZoneMinder to 1.30.2 or above and zmNinja stopped working!</a></li> +<li class="toctree-l3"><a class="reference internal" href="#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">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</a></li> +<li class="toctree-l3"><a class="reference internal" href="#the-montage-screen-is-causing-issues-with-my-zm-server-i-get-connection-timeout-issues-or-mysql-connection-problems">The Montage screen is causing issues with my ZM server - I get connection timeout issues or MySQL connection problems</a></li> +<li class="toctree-l3"><a class="reference internal" href="#the-app-works-great-except-it-doesn-t-work-on-one-android-phone-works-in-others">The app works great - except it doesn’t work on ONE Android phone - works in others!</a></li> +<li class="toctree-l3"><a class="reference internal" href="#apis-are-not-working-zm-console-works-fine">APIs are not working ! ZM console works fine.</a></li> +<li class="toctree-l3"><a class="reference internal" href="#i-m-using-mocord-record-and-i-don-t-see-events-without-alarms">I’m using mocord/record and I don’t see events without alarms</a></li> +<li class="toctree-l3"><a class="reference internal" href="#taking-snapshots-or-downloading-videos-don-t-work-in-android">Taking snapshots or downloading videos don’t work in Android</a></li> +<li class="toctree-l3"><a class="reference internal" href="#pan-tilt-zoom-doesn-t-work">Pan/Tilt/Zoom doesn’t work</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#what-is-this-event-server">What is this Event Server?</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#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">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?</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#is-zmninja-free">Is zmNinja free?</a></li> +<li class="toctree-l2"><a class="reference internal" href="#who-are-the-developers-behind-this">Who are the developers behind this?</a></li> +<li class="toctree-l2"><a class="reference internal" href="#the-code-needs-improvement">The code needs improvement</a></li> +<li class="toctree-l2"><a class="reference internal" href="#is-zmninja-an-official-zoneminder-product">Is zmNinja an official ZoneMinder product?</a></li> +<li class="toctree-l2"><a class="reference internal" href="#i-want-to-donate-money">I want to donate money</a></li> +<li class="toctree-l2"><a class="reference internal" href="#how-does-zmninja-use-my-personal-data">How does zmNinja use my personal data?</a></li> +<li class="toctree-l2"><a class="reference internal" href="#i-want-to-donate-time-expertise-code">I want to donate time/expertise/code</a></li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="validating-api.html">Validating APIs</a></li> +<li class="toctree-l1"><a class="reference internal" href="source.html">Building from Source</a></li> +<li class="toctree-l1"><a class="reference internal" href="desktop.html">Desktop port tips</a></li> +<li class="toctree-l1"><a class="reference internal" href="contributing-language.html">Contributing a new language</a></li> +</ul> + + + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"> + + + <nav class="wy-nav-top" role="navigation" aria-label="top navigation"> + + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">zmNinja</a> + + </nav> + + + + <div class="wy-nav-content"> + <div class="rst-content"> + + + + + + + + + + + + + + + + +<div role="navigation" aria-label="breadcrumbs navigation"> + + <ul class="wy-breadcrumbs"> + + <li><a href="../index.html">Docs</a> »</li> + + <li>zmNinja FAQ</li> + + + <li class="wy-breadcrumbs-aside"> + + + <a href="../_sources/guides/FAQ.rst.txt" rel="nofollow"> View page source</a> + + + </li> + + </ul> + + + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <div class="section" id="zmninja-faq"> +<h1>zmNinja FAQ<a class="headerlink" href="#zmninja-faq" title="Permalink to this headline">¶</a></h1> +<div class="section" id="what-is-the-minimum-supported-version-of-zoneminder-android-and-ios"> +<h2>What is the minimum supported version of ZoneMinder, Android and iOS?<a class="headerlink" href="#what-is-the-minimum-supported-version-of-zoneminder-android-and-ios" title="Permalink to this headline">¶</a></h2> +<p>You need a minimum of ZM 1.30.4 with APIs working. You may get it to run +in previous versions, but I don’t support them, so you are on your own.</p> +<p>Starting version 1.3.26 of zmNinja, only IOS 10+ and Android 5.0+ +devices are supported.</p> +</div> +<div class="section" id="zmninja-help"> +<h2>zmNinja Help<a class="headerlink" href="#zmninja-help" title="Permalink to this headline">¶</a></h2> +<p>I’ve just started uploading instructional videos for zmNinja. I’ll add +more over time. See them +<a class="reference external" href="https://github.com/pliablepixels/zmNinja/wiki/Help-Videos-for-zmNinja">here</a></p> +</div> +<div class="section" id="asking-for-refunds"> +<h2>Asking for refunds<a class="headerlink" href="#asking-for-refunds" title="Permalink to this headline">¶</a></h2> +<p>If you have bought the iOS version of the app, it doesn’t look like I +can process a refund anymore. If any developer knows how, please let me +know. Apple wants you to contact them directly using +<a class="reference external" href="https://support.apple.com/en-us/HT204084">this</a> link.</p> +<p>For Android: If you’re not happy with zmNinja and have bought the app, +please <a class="reference external" href="mailto:pliablepixels%40gmail.com">send me an email</a> <strong>with your +order id</strong>.</p> +<p>Note that depending on how long ago you made the order, I may not be +able to refund. Its not my policy - The app/play stores disable the +refund option. For example, I could not refund an app a user purchased 2 +years ago.</p> +<p>Also, please read <a class="reference external" href="#things-you-should-own-up-to">Things you should own up +to</a></p> +</div> +<div class="section" id="things-you-should-own-up-to"> +<h2>Things you should own up to<a class="headerlink" href="#things-you-should-own-up-to" title="Permalink to this headline">¶</a></h2> +<div class="section" id="read-the-app-description"> +<h3>Read the app description<a class="headerlink" href="#read-the-app-description" title="Permalink to this headline">¶</a></h3> +<p>Both the Apple and Android stores have a clearly visible note on the app +description that it requires a working API for ZoneMinder. If you are +not willing to ensure the API works, please save yourself and me time. +I’m sorry this is the first post, but I get emails from too many +entitled/rude folks about APIs not working. Not my problem. Read below. +Breathe.</p> +</div> +<div class="section" id="try-before-buy"> +<h3>Try before buy<a class="headerlink" href="#try-before-buy" title="Permalink to this headline">¶</a></h3> +<p>Some users legitimately look around for an option to try before they buy +and they are not savvy enough to <a class="reference external" href="https://github.com/pliablepixels/zmNinja">download the +code</a> and +<a class="reference external" href="https://github.com/pliablepixels/zmNinja/wiki/Running-zmNinja-from-Source">compile</a> +themselves. Fair enough. In that case, <a class="reference external" href="https://github.com/pliablepixels/zmNinja/releases">download the Desktop +version</a> of +zmNinja. It’s free and is the same code as mobile. Make sure the desktop +version works before you buy the mobile version.</p> +<p>The reason I don’t have a “trial mobile version” is that I find the +process too complex using in-app-purchases and chose not to do it to +make life simpler for me. As a substitute, I do make the full code +available for free and offer a desktop binary version free too.</p> +</div> +<div class="section" id="zmninja-doesn-t-work-actually-even-zoneminder-web-console-doesn-t-work-you-should-fix-this"> +<h3>zmNinja doesn’t work. Actually, even ZoneMinder web console doesn’t work. You should fix this!<a class="headerlink" href="#zmninja-doesn-t-work-actually-even-zoneminder-web-console-doesn-t-work-you-should-fix-this" title="Permalink to this headline">¶</a></h3> +<p>Yeah, look - I understand zmNinja won’t work if ZoneMinder web console +doesn’t work. That being said, I really don’t have time to help you +debug ZoneMinder issues. I only develop the app (zmNinja). If you can’t +set up ZoneMinder properly, please post your questions in the <a class="reference external" href="https://forums.zoneminder.com">ZM +forum</a>. You’ll find more qualified +people to help you. I don’t develop nor control ZoneMinder. It’s a +different set of folks. Now, I’ll help you, but only after you have +spent sufficient time trying your best and provide sufficient logs of +what you have done. Also remember, if you buy zmNinja, <strong>I’m happy to +refund it anytime - just send me an email.</strong></p> +<p>In short, I don’t have the time to support ZoneMinder install issues - +sorry about that</p> +</div> +<div class="section" id="zmninja-doesn-t-work-zoneminder-works-but-i-have-no-idea-why-apis-don-t-work-you-should-fix-this"> +<h3>zmNinja doesn’t work. Zoneminder works, but I have no idea why APIs don’t work. You should fix this!<a class="headerlink" href="#zmninja-doesn-t-work-zoneminder-works-but-i-have-no-idea-why-apis-don-t-work-you-should-fix-this" title="Permalink to this headline">¶</a></h3> +<p><em>Sigh</em>. I don’t maintain ZoneMinder. I only develop the app. <em>You</em> need +to make sure ZoneMinder APIs work. ZoneMinder web console doesn’t use +APIs. Neither does zmView. zmNinja does. It says so in the description +of the app in the store. So feel free to fix your APIs, or ask me for a +refund. Just don’t whine to me, please, if your APIs are broken. I’m +<em>not</em> going to fix them for you, especially if you act like its not your +problem. <a class="reference external" href="https://medium.com/zmninja/no-soup-for-you-42ac0927952">I’m perfectly fine if you choose not to use my +app</a>, which +is why I refund, anytime.</p> +</div> +<div class="section" id="i-can-t-compile-zmninja-help-me"> +<h3>I can’t compile zmNinja, help me!<a class="headerlink" href="#i-can-t-compile-zmninja-help-me" title="Permalink to this headline">¶</a></h3> +<p>I put out the source code, so people who know how to compile are able to +do it themselves. I also hope this will encourage folks to PR changes +(though this has rarely happened). The problem however, is that +dependencies/libraries keep changing. I just don’t have the time to help +debug. If it happens to me, I’ll fix it. If it doesn’t I have very +limited time to remotely debug your setup issues. I’d much appreciate if +you figured it out on your own. Feel free to create an issue after +you’ve tried enough, but I can’t guarantee I’ll spend a lot of time on +source code compile issues.</p> +</div> +<div class="section" id="how-to-report-errors"> +<h3>How to report errors<a class="headerlink" href="#how-to-report-errors" title="Permalink to this headline">¶</a></h3> +<ul class="simple"> +<li>I don’t know why something is not working if you don’t provide +sufficient inputs. Start by creating a <a class="reference external" href="https://github.com/pliablepixels/zmNinja/issues">GitHub +issue</a> and please +fill in the template correctly. If you don’t want to post debug logs +in the issue, <a class="reference external" href="mailto:pliablepixels+zmNinja%40gmail.com">email</a> them +to me and mention in the issue you’ve emailed them (you can email by +going to logs screen and tapping on the envelope button (mobile) or +you can download logs (cloud icon, desktop version)</li> +<li>If zmNinja was working, but it stopped after you upgraded ZoneMinder +be sure to mention which version was working and which was not. In +this case, please make sure you have validated the APIs work</li> +<li>Before you create an issue, please make sure you have read the +sections on <a class="reference external" href="https://github.com/pliablepixels/zmNinja/wiki/FAQ#connectionauthentication-issues">connection +issues</a> +and +<a class="reference external" href="https://github.com/pliablepixels/zmNinja/wiki/FAQ#live-streaming-issues">streaming</a> +issues and <a class="reference external" href="https://github.com/pliablepixels/zmNinja/wiki/Validating-if-APIs-work-on-ZM">Step 6 of +validating</a> +APIs.</li> +<li>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</li> +<li>I have released the desktop version free - download it +<a class="reference external" href="https://github.com/pliablepixels/zmNinja/releases">here</a>. Its +always easier to debug on the desktop version - give it a try. If you +hit Shift+Cmd/Ctrl+D it brings up a debug window - it helps debugging</li> +<li>Always tell me what your ZoneMinder & zmNinja versions are</li> +<li>If your app suddenly stopped working:<ul> +<li>Send me DEBUG logs of the app</li> +<li>tell me what changed (got to be something. You updated the app, +you upgraded ZM)</li> +<li>What exactly is not working?</li> +</ul> +</li> +</ul> +</div> +</div> +<div class="section" id="profile-information-storage-related"> +<h2>Profile information storage related<a class="headerlink" href="#profile-information-storage-related" title="Permalink to this headline">¶</a></h2> +<div class="section" id="zmninja-is-not-saving-my-information-it-keeps-asking-me-to-re-enter-all-my-data"> +<h3>zmNinja is not saving my information. It keeps asking me to re-enter all my data<a class="headerlink" href="#zmninja-is-not-saving-my-information-it-keeps-asking-me-to-re-enter-all-my-data" title="Permalink to this headline">¶</a></h3> +<p>I’ve seen this happen in two cases: * You are running out of space. +Clean up some space and try again * On specific Android devices, +typically running Android OS less than 6.0, some (2-3) users have +reported this issue. I still don’t have a good answer. Please update to +the latest app version and send me debug logs, please</p> +</div> +<div class="section" id="i-updated-my-zmninja-app-and-all-my-server-settings-were-cleared-why"> +<h3>I updated my zmNinja app and all my server settings were cleared. Why?<a class="headerlink" href="#i-updated-my-zmninja-app-and-all-my-server-settings-were-cleared-why" title="Permalink to this headline">¶</a></h3> +<p>Sorry. I’ve made several releases where due to programming errors, +settings got wiped out. However, starting v1.3.021 for Android and +v1.3.025 for Android, I’ve introduced the facility to sync with the +cloud (Google Drive/iCloud). This is the settings option. It is enabled +by default. This means if you uninstall the app and install again, the +settings should get restored. Note that both in iOS and Android, backup +schedule is managed by the OS. You can force a backup going to settings +and forcing a backup, or wait till the OS backups (typically a few +hours/phone plugged in/not being used)</p> +<p>Do also note that 1.3.027 and beyond use a new WebView called WKWebView +(because iOS deprecated the old webview). If you disabled iCloud you +will have to re-enter your settings again (only once). This may not +affect Android, but I don’t know for sure.</p> +</div> +</div> +<div class="section" id="connection-authentication-issues"> +<h2>Connection/Authentication issues<a class="headerlink" href="#connection-authentication-issues" title="Permalink to this headline">¶</a></h2> +<div class="section" id="general-tips"> +<h3>General tips<a class="headerlink" href="#general-tips" title="Permalink to this headline">¶</a></h3> +<ul class="simple"> +<li>Disable server redirects like 302 and then try if using the mobile +app</li> +<li>To make sure there are no connection issues, launch your <strong>phone +browser</strong> and try to reach ZoneMinder. If that doesn’t work, neither +with zmNinja. Many users try to access ZoneMinder from a desktop +browser and/or on the same server it is running and forget the phone +is a different device!</li> +<li>Some phones need the SSL certificate installed in the device</li> +<li>Specific SSL settings can cause issues with Android or iOS</li> +<li>Don’t use funky/special characters in passwords - try changing it to +a complex password without funky characters and try</li> +<li>Use the wizard - I’ve seen many examples of typos when the user +thinks they don’t have a typo</li> +<li>If you are using basic authentication, make sure your credentials are +correct. A good way to test is to first disable basic auth and enable +it after you are sure things work without basic auth.</li> +<li>Please note zmNinja does NOT support Digest authentication. So please +don’t put in digest auth info when zmNinja asks for basic +authentication</li> +<li>Look at your ZM logs and zmNinja logs - they help isolate the problem</li> +</ul> +</div> +<div class="section" id="server-redirects"> +<h3>Server Redirects<a class="headerlink" href="#server-redirects" title="Permalink to this headline">¶</a></h3> +<p>If the Wizard fails to connect in the mobile app but works in the +desktop app, it may be that your server is sending redirects. +Unfortunately, the current mobile HTTP stack doesn’t handle cookies with +redirects well. Till this bug is fixed by the plugin author Wizard won’t +work. Note that if you are running ZM 1.32 or above, you can directly +enter your settings without using the wizard and it will work because it +will try and use the new ZM 1.32 <code class="docutils literal"><span class="pre">login.json</span></code> API first.</p> +</div> +<div class="section" id="self-signed-certs"> +<h3>Self signed certs<a class="headerlink" href="#self-signed-certs" title="Permalink to this headline">¶</a></h3> +<p>A lot of people use self-signed certs. I’d strongly recommend you use +<a class="reference external" href="https://letsencrypt.org">LetsEncrypt</a> if you can. It’s free. That +being said zmNinja does support self signed certs. Make sure “Enable +Strict SSL” is off in Developer settings. You will need to restart the +app.</p> +</div> +<div class="section" id="ssl-settings"> +<h3>SSL settings<a class="headerlink" href="#ssl-settings" title="Permalink to this headline">¶</a></h3> +<p>If you are getting <code class="docutils literal"><span class="pre">SSL</span> <span class="pre">protocol/handshake</span> <span class="pre">errors</span></code> in your logs, you +very likely have specific ssl settings enabled server side that your +device network stack does not support. Note that just because it works +with the device browser does not mean it will work with zmNinja as +zmNinja does not use the browser HTTP implementation in mobile devices.</p> +<p>One use reported that a setting of <code class="docutils literal"><span class="pre">ssl_ecdh_curve</span> <span class="pre">secp384r1</span></code> in his +nginx config was resulting in zmNinja Android not being able to connect +to the server. Changing it to +<code class="docutils literal"><span class="pre">ssl_ecdh_curve</span> <span class="pre">secp521r1:secp384r1:prime256v1;</span></code> worked for him.</p> +<p>I’d strongly recommend you remove all special ssl settings except the +certificate and key file locations, make it work and then add the +settings back one by one and see what works/does not work.</p> +</div> +<div class="section" id="everything-works-when-i-use-lan-ip-but-i-get-not-authenticated-when-i-use-wan-ip"> +<h3>Everything works when I use LAN IP, but I get “not authenticated” when I use WAN IP<a class="headerlink" href="#everything-works-when-i-use-lan-ip-but-i-get-not-authenticated-when-i-use-wan-ip" title="Permalink to this headline">¶</a></h3> +<p>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.</p> +<p>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.</p> +<p>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)</p> +<p>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)</p> +<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">openssl</span> <span class="n">req</span> <span class="o">-</span><span class="n">x509</span> <span class="o">-</span><span class="n">nodes</span> <span class="o">-</span><span class="n">days</span> <span class="mi">365</span> <span class="o">-</span><span class="n">newkey</span> <span class="n">rsa</span><span class="p">:</span><span class="mi">2048</span> <span class="o">-</span><span class="n">keyout</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">apache2</span><span class="o">/</span><span class="n">ssl</span><span class="o">/</span><span class="n">zoneminder</span><span class="o">.</span><span class="n">key</span> <span class="o">-</span><span class="n">out</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">apache2</span><span class="o">/</span><span class="n">ssl</span><span class="o">/</span><span class="n">zoneminder</span><span class="o">.</span><span class="n">crt</span> +</pre></div> +</div> +<p>Next up, edit your apache ssl config (example +/etc/apache2/sites-available/default-ssl.conf) And add/modify the +following lines:</p> +<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">SSLCertificateFile</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">apache2</span><span class="o">/</span><span class="n">ssl</span><span class="o">/</span><span class="n">zoneminder</span><span class="o">.</span><span class="n">crt</span> +<span class="n">SSLCertificateKeyFile</span> <span class="o">/</span><span class="n">etc</span><span class="o">/</span><span class="n">apache2</span><span class="o">/</span><span class="n">ssl</span><span class="o">/</span><span class="n">zoneminder</span><span class="o">.</span><span class="n">key</span> +</pre></div> +</div> +<p>restart apache</p> +<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">service</span> <span class="n">apache2</span> <span class="n">restart</span> +</pre></div> +</div> +</div> +</div> +<div class="section" id="live-streaming-issues"> +<h2>Live streaming issues<a class="headerlink" href="#live-streaming-issues" title="Permalink to this headline">¶</a></h2> +<div class="section" id="summary-of-everything-works-but-i-can-t-see-live-feed"> +<h3>Summary of Everything works, but I can’t see live feed<a class="headerlink" href="#summary-of-everything-works-but-i-can-t-see-live-feed" title="Permalink to this headline">¶</a></h3> +<p><em>Please</em> be diligent in reviewing this list. You’d be surprised how many +times I’ve had users tell me ‘they have checked this list’ only to find +out later they skimmed details.</p> +<ul class="simple"> +<li>Please enable <code class="docutils literal"><span class="pre">AUTH_HASH_LOGINS</span></code> as well as set <code class="docutils literal"><span class="pre">AUTH_RELAY</span></code> to +“hashed”</li> +<li>You think your APIs are working, but they are really not. If you open +a browser and type in <code class="docutils literal"><span class="pre">https://yourserver/zm/api/monitors.json</span></code> and +you see some text on top followed by monitor data, your APIs are +<em>not</em> working. You need to search the forums and figure out how to +get rid of that text.</li> +<li>Your ZoneMinder live view from the web console doesn’t work either. +If this is the case, fix ZoneMinder first. Before you say “web +console works fine”, make sure you are running it from a different +computer from where ZM is running.</li> +<li>The phone/computer running zmNinja does not have access to your ZM +server. For example, many people test the web console on their LAN +but test zmninja on a WAN connection</li> +<li>Always try with the <a class="reference external" href="https://github.com/pliablepixels/zmNinja/releases">free desktop +version</a> first. +Enable debug view by hitting Ctrl/Cmd+Alt+D and you can see debug +logs in the console view. I can’t emphasize enough how useful this +is.</li> +<li>Your <code class="docutils literal"><span class="pre">cgi-bin</span></code> setting in zmNinja is incorrect. Please run the +wizard. There are times when the wizard can fail. In those cases, +open up ZM web console, go to view the monitor and do an “Inspect +Source” in the browser. That will show you the cgi-bin link that you +can use in zmNinja.</li> +</ul> +<p>For example:</p> +<p>In the above case my zmNinja cgi-bin setting is +<code class="docutils literal"><span class="pre">https://myserver:myport/zm/cgi-bin</span></code></p> +<ul class="simple"> +<li>You are using Basic Authentication. See +<a class="reference external" href="#i-cant-see-streams-i-use-basic-auth">here</a></li> +<li>You have ‘multi-server’ configuration enabled and you have done it +wrong. Go to ZM Web Console->Options->Servers - if you see any +entries there and you don’t know what multi-server is, or you don’t +use it, please disable multi-server</li> +<li>When trying to view live images, look at your <em>webserver</em> error logs +- example Apache’s <code class="docutils literal"><span class="pre">error.log</span></code> - see any image/jpg errors? That +means you are missing libraries</li> +<li>You have set up a multi-server install of ZM without knowing you did +See <a class="reference external" href="#i-cant-see-streams--multi-server-is-enabled">here</a></li> +<li>Look at zmNinja, ZoneMinder and web server error logs at the time of +error - one of them should give more clues. Please send me <em>all</em> the +logs if you ask for help</li> +<li>Read the set of notes below</li> +</ul> +</div> +<div class="section" id="general-note"> +<h3>General note<a class="headerlink" href="#general-note" title="Permalink to this headline">¶</a></h3> +<p>To debug streaming notes, always try with the free desktop version +first. When trying to stream simultaneously look at the debug logs of +zmNinja (<code class="docutils literal"><span class="pre">Ctrl/Cmd+Alt+D</span></code> in desktop build, console and/or network +tab) and your webserver error logs.</p> +</div> +<div class="section" id="i-can-t-see-stream-and-i-can-t-see-streams-in-zoneminder-webconsole-either"> +<h3>I can’t see stream: And I can’t see streams in ZoneMinder webconsole either<a class="headerlink" href="#i-can-t-see-stream-and-i-can-t-see-streams-in-zoneminder-webconsole-either" title="Permalink to this headline">¶</a></h3> +<p>Check if streaming works in the web interface. If it does not work, +zmNinja won’t work either. Fix ZM first</p> +</div> +<div class="section" id="i-can-t-see-streams-i-use-basic-auth"> +<h3>I can’t see streams: I use basic auth<a class="headerlink" href="#i-can-t-see-streams-i-use-basic-auth" title="Permalink to this headline">¶</a></h3> +<p>Starting Chrome v59, the browser changed basic credential behavior. The +issue report is +<a class="reference external" href="https://bugs.chromium.org/p/chromium/issues/detail?id=435547#c33">here</a>. +Here is the core issue: zmNinja constructs URLs as +<code class="docutils literal"><span class="pre">http://user:password@server</span></code> when you have basic auth (and starting +v1.3 uses the <code class="docutils literal"><span class="pre">Authorization</span></code> header). However, since images are +rendered using <code class="docutils literal"><span class="pre"><img</span> <span class="pre">src></span></code> there is no option but to put in a +<code class="docutils literal"><span class="pre">user:password</span></code> in the URL. Chrome allows this format for direct +requests (such as API calls) but will strip out the <code class="docutils literal"><span class="pre">user:password</span></code> +part for <em>embedded</em> requests (like <code class="docutils literal"><span class="pre"><img</span> <span class="pre">src=""></span></code> tags inside a page). +So what happens is your APIs work, but you won’t see images. There is a +reason why Chrome does this - its bad to pass on a user :password in a +URL as its clear text (even if you are on HTTPS, as its in the URL). As +I said earlier, The <em>right</em> way to do this is to replace the +<code class="docutils literal"><span class="pre">user:pass</span></code> with an <code class="docutils literal"><span class="pre">Authorization</span></code> header but there is no way to do +that with images that are rendered with <code class="docutils literal"><span class="pre"><img</span> <span class="pre">src></span></code> (There are several +plugins that attempt to do this, but don’t work with streaming MJPEG +images). Bottom line, this is a problem for apps like zmNinja and it +affects you.</p> +<p>How this affects you: * If you are using HTTP Basic Authentication</p> +<p>Then your images won’t show.</p> +<p>Possible Workarounds: * Configure your web server to skip basic +authentication for <code class="docutils literal"><span class="pre">nph-zms</span></code> URLs * If you are using a ReverseProxy, +you can insert the authorization header inside the apache proxy * +Disable HTTP Basic auth for now * Downgrade Chrome</p> +<div class="section" id="skipping-auth-for-nph-zms-urls"> +<h4>Skipping auth for <code class="docutils literal"><span class="pre">nph-zms</span></code> URLs<a class="headerlink" href="#skipping-auth-for-nph-zms-urls" title="Permalink to this headline">¶</a></h4> +<p>Here is what I’ve used that works with basic-auth. This requires a basic +auth portal login and once logged in allows skipping of image URLs (the +idea comes from <a class="reference external" href="https://github.com/adamoutler">Adam Outler</a> - he +uses a different approach using reverse proxies, which I link to later)</p> +<div class="code apache highlight-default"><div class="highlight"><pre><span></span> <span class="c1"># this configuration assumes your server portal is server:port/zm</span> + <span class="c1"># and cgi-path is /zm/cgi-bin. Please change it to your specific environment</span> + <span class="c1"># Also requires Apache 2.4 or above</span> + +<span class="o"><</span><span class="n">Location</span> <span class="o">/></span> + <span class="n">SetEnvIf</span> <span class="n">Request_URI</span> <span class="o">^/</span><span class="n">zm</span><span class="o">/</span><span class="n">cgi</span><span class="o">-</span><span class="nb">bin</span><span class="o">/</span> <span class="n">noauth</span><span class="o">=</span><span class="mi">1</span> + <span class="n">SetEnvIf</span> <span class="n">Request_URI</span> <span class="o">^/</span><span class="n">zm</span><span class="o">/</span><span class="n">index</span><span class="o">.</span><span class="n">php</span> <span class="n">noauth</span><span class="o">=</span><span class="mi">1</span> + <span class="n">AuthType</span> <span class="n">Basic</span> + <span class="n">AuthName</span> <span class="s2">"Auth Required"</span> + <span class="n">AuthUserFile</span> <span class="s2">"/etc/apache2/.htpasswd"</span> + <span class="o"><</span><span class="n">RequireAny</span><span class="o">></span> + <span class="n">Require</span> <span class="n">valid</span><span class="o">-</span><span class="n">user</span> + <span class="n">Require</span> <span class="n">env</span> <span class="n">noauth</span> + <span class="o"></</span><span class="n">RequireAny</span><span class="o">></span> +<span class="o"></</span><span class="n">Location</span><span class="o">></span> +</pre></div> +</div> +</div> +<div class="section" id="authorization-with-a-reverseproxy"> +<h4>Authorization with a ReverseProxy<a class="headerlink" href="#authorization-with-a-reverseproxy" title="Permalink to this headline">¶</a></h4> +<div class="section" id="simple-starter"> +<h5>Simple starter<a class="headerlink" href="#simple-starter" title="Permalink to this headline">¶</a></h5> +<p><strong>STEP 1</strong>: Enable “Append basic auth tokens in images” option in +zmNinja->Developer Settings and save. What this does is that image URLs +will append a “basicauth” token parameter with your basic authentication +credentials. This token can then be parsed by Apache and inserted as a +valid Authorization header. Don’t enable this option if you are not +using HTTPS because the request-URI will be transmitted without +encryption and it will contain your basic auth credentials, encoded in +base64, which is trivial to decode.</p> +<p><strong>STEP 2 (Apache)</strong>: Use mod_rewrite and mod_header to convert the +token into an authorization in your Apache config. Add this to the +relevant section (<code class="docutils literal"><span class="pre">VirtualHost</span></code> or others)</p> +<div class="code apache highlight-default"><div class="highlight"><pre><span></span>RewriteEngine on +RewriteCond %{QUERY_STRING} (?:^|&)basicauth=([^&]+) +RewriteRule (.*) - [E=QS_TOKEN:%1] +RequestHeader set Authorization "Basic %{QS_TOKEN}e" env=QS_TOKEN +</pre></div> +</div> +<p><strong>STEP 2 (Nginx)</strong>: Thanks to user [@ysammy](<a class="reference external" href="https://github.com/ysammy">https://github.com/ysammy</a>)</p> +<div class="code nginx highlight-default"><div class="highlight"><pre><span></span><span class="n">location</span> <span class="o">/</span><span class="n">zm</span><span class="o">/</span><span class="n">cgi</span><span class="o">-</span><span class="nb">bin</span><span class="o">/</span><span class="n">nph</span><span class="o">-</span><span class="n">zms</span> <span class="p">{</span> + <span class="n">proxy_pass</span> <span class="n">http</span><span class="p">:</span><span class="o">//<</span><span class="n">IP</span><span class="o">></span><span class="p">:</span><span class="o"><</span><span class="n">PORT</span><span class="o">>/</span><span class="n">zm</span><span class="o">/</span><span class="n">cgi</span><span class="o">-</span><span class="nb">bin</span><span class="o">/</span><span class="n">nph</span><span class="o">-</span><span class="n">zms</span><span class="p">;</span> + <span class="n">proxy_set_header</span> <span class="n">Authorization</span> <span class="s2">"Basic $arg_basicauth"</span><span class="p">;</span> + <span class="p">}</span> +</pre></div> +</div> +</div> +<div class="section" id="a-more-complete-and-more-secure-option"> +<h5>A more complete and more secure option<a class="headerlink" href="#a-more-complete-and-more-secure-option" title="Permalink to this headline">¶</a></h5> +<p>User <a class="reference external" href="https://github.com/adamoutler">Adam Outler</a> has contributed the +following process: see +<a class="reference external" href="https://github.com/pliablepixels/zmNinja/wiki/Apache-Proxy-Authorization-with-HTTPS,-Basic-Auth,-and-ProxyPass">HERE</a>. +Adam also has this to say about why proxies should be recommended for +HTTPS enabled ZoneMinder instances:</p> +<blockquote> +<div>A proxy server should be on the list of recommendations for +Zoneminder. HTTPS requires processing to encrypt and decrypt. This +takes processor cycles away from Zoneminder’s recording. Since HTTPS +is now basically a requirement, there should be a page dedicated to +proxy, https, auth, and their nuances. I just picked up 2-4K cameras +and processing suddenly became an issue :).</div></blockquote> +</div> +</div> +</div> +<div class="section" id="i-can-t-see-streams-multi-server-is-enabled"> +<h3>I can’t see streams: Multi-server is enabled<a class="headerlink" href="#i-can-t-see-streams-multi-server-is-enabled" title="Permalink to this headline">¶</a></h3> +<p>The chances are very high that you have enabled ZoneMinder’s +<a class="reference external" href="http://zoneminder.readthedocs.io/en/stable/installationguide/multiserver.html">Multi-Server</a> +option and you entered something like <code class="docutils literal"><span class="pre">localhost</span></code> in server settings. +<strong>DON’T. You can’t enter localhost</strong>. 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 <code class="docutils literal"><span class="pre">localhost</span></code>. BTW, if you did +put in <code class="docutils literal"><span class="pre">localhost</span></code> 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.</p> +</div> +<div class="section" id="i-can-t-see-streams-you-have-cgi-bin-issues"> +<h3>I can’t see streams: you have cgi-bin issues<a class="headerlink" href="#i-can-t-see-streams-you-have-cgi-bin-issues" title="Permalink to this headline">¶</a></h3> +<ul class="simple"> +<li>Try to use the wizard. If it fails,</li> +<li>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.</li> +</ul> +</div> +<div class="section" id="zmninja-montage-does-not-seem-smooth-feeds-seem-a-little-delayed-compared-to-zm-console"> +<h3>zmNinja montage does not seem smooth - feeds seem a little delayed compared to ZM console<a class="headerlink" href="#zmninja-montage-does-not-seem-smooth-feeds-seem-a-little-delayed-compared-to-zm-console" title="Permalink to this headline">¶</a></h3> +<p>zmNinja does not use <code class="docutils literal"><span class="pre">nph-zms</span></code> to display live feeds in montage. This +is because Chrome only allows a maximum of 6 connections per (sub)domain +which means you can’t have more than 6 active TCP connections to a +single domain at the same time. This also means that you can’t display +more than 6 monitors together. To avoid this, I use the zoneminder +“snapshot” feature that displays a still from the monitor and then +refresh it every X seconds (by default X=2 unless you switch to low +bandwidth mode. You can change X in developer settings)</p> +<p>That being said, starting v1.3.0 of zmNinja onwards, I now support +multi-port (available in ZM 1.32 onwards) that lets you stream as many +monitors as you need. Read +<a class="reference external" href="https://medium.com/zmninja/multi-port-storage-areas-and-more-d5836a336c93">this</a> +post for more details.</p> +</div> +</div> +<div class="section" id="event-images-streaming-related"> +<h2>Event images/streaming related<a class="headerlink" href="#event-images-streaming-related" title="Permalink to this headline">¶</a></h2> +<div class="section" id="id1"> +<h3>General note<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3> +<p>To debug streaming notes, always try with the free desktop version +first. When trying to stream simultaneously look at the debug logs of +zmNinja (<code class="docutils literal"><span class="pre">Ctrl/Cmd+Alt+D</span></code> in desktop build, console and/or network +tab) and your webserver error logs.</p> +<p>Also, Starting ZM 1.32 and beyond, please enable <code class="docutils literal"><span class="pre">AUTH_HASH_LOGINS</span></code> as +well as set <code class="docutils literal"><span class="pre">AUTH_RELAY</span></code> to “hashed”</p> +</div> +<div class="section" id="event-stream-viewing-does-not-work"> +<h3>Event stream viewing does not work<a class="headerlink" href="#event-stream-viewing-does-not-work" title="Permalink to this headline">¶</a></h3> +<ul class="simple"> +<li>Look at apache error logs - it often gives you hints</li> +</ul> +</div> +<div class="section" id="video-not-playable"> +<h3>Video Not Playable<a class="headerlink" href="#video-not-playable" title="Permalink to this headline">¶</a></h3> +<ul class="simple"> +<li>Mobile devices have more restrictions to video playback than +destkops. Make sure you first check if the video is playable in +Chrome using the same phone you are using zmNinja on</li> +<li>There could be other reasons due to which the video is not playable:</li> +<li>There is an encoding issue in the video generated</li> +<li>The video resolution is too big (see <a class="reference external" href="https://forums.zoneminder.com/viewtopic.php?f=33&p=108788#p108774">this +thread</a>)</li> +<li>In general, to get to the root of what is going on, you’ll need +device logs using ADB (see +<a class="reference external" href="https://forums.zoneminder.com/viewtopic.php?f=33&p=108788#p108753">this</a>)</li> +</ul> +</div> +<div class="section" id="event-thumbnails-images-don-t-show"> +<h3>Event thumbnails/images don’t show<a class="headerlink" href="#event-thumbnails-images-don-t-show" title="Permalink to this headline">¶</a></h3> +<p>Starting zmNinja 1.3.26 and beyond, if you are using OPT_AUTH you need +to enable AUTH_HASH_LOGINS or you won’t be able to see image snapshots +and thumbnails. Only applicable for mobiles.</p> +</div> +<div class="section" id="when-viewing-individual-frames-some-event-frames-show-but-some-don-t"> +<h3>When viewing individual frames, some event frames show, but some don’t<a class="headerlink" href="#when-viewing-individual-frames-some-event-frames-show-but-some-don-t" title="Permalink to this headline">¶</a></h3> +<p>This can happen if you are using Video Storage (Passthru or X264 Encode) +and have disabled frame (JPEG) storage completely. What happens is +ZoneMinder uses <code class="docutils literal"><span class="pre">ffmpeg</span></code> to extract frames from timestamps and +sometimes it is unable to extract a frame for a specific timestamp, +resulting in this issue. If you see HTTP 404 messages for some frames, +but the video plays fine, then this is why.</p> +</div> +<div class="section" id="zmninja-montage-screen-shows-all-my-monitors-but-in-event-montage-i-only-see-5"> +<h3>zmNinja montage screen shows all my monitors, but in Event Montage, I only see 5?<a class="headerlink" href="#zmninja-montage-screen-shows-all-my-monitors-but-in-event-montage-i-only-see-5" title="Permalink to this headline">¶</a></h3> +<p>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 <em>not</em> 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.</p> +</div> +</div> +<div class="section" id="other-misc-issues"> +<h2>Other misc. issues<a class="headerlink" href="#other-misc-issues" title="Permalink to this headline">¶</a></h2> +<div class="section" id="i-suddently-see-an-error-message-saying-i-need-to-enable-zm-auth-hash-logins-this-wasn-t-there-before"> +<h3>I suddently see an error message saying I need to enable ZM_AUTH_HASH_LOGINS. This wasn’t there before<a class="headerlink" href="#i-suddently-see-an-error-message-saying-i-need-to-enable-zm-auth-hash-logins-this-wasn-t-there-before" title="Permalink to this headline">¶</a></h3> +<p>Yes. Starting 1.3.027 onwards, due to a new UI web rendering engine that +enforces CORS, I’ve had to change my strategy on how network calls are +made. Briefly, on mobile devices, I now use a native HTTP stack and not +the browser HTTP stack. However, images are rendered using the browser +HTTP stack which causes this message. In short, you need to enable it, +and restart ZM.</p> +</div> +<div class="section" id="zmninja-1-2-515-and-beyond-says-need-api-upgrade-for-the-24hr-review-feature-what-does-that-mean"> +<h3>zmNinja 1.2.515 and beyond says “Need API Upgrade” for the 24hr review feature. What does that mean?<a class="headerlink" href="#zmninja-1-2-515-and-beyond-says-need-api-upgrade-for-the-24hr-review-feature-what-does-that-mean" title="Permalink to this headline">¶</a></h3> +<p>You need to update an API file in Zoneminder server. ZoneMinder folks +haven’t yet (as of Apr 2018) made a release with that API change. To do +it manually,simply replace your <code class="docutils literal"><span class="pre">EventsController.php</span></code> (typically in +<code class="docutils literal"><span class="pre">/usr/share/zoneminder/www/api/app/Controller</span></code>) with <a class="reference external" href="https://raw.githubusercontent.com/ZoneMinder/zoneminder/85b7baa13178a838fe9fae94405c99fe7d2c669c/web/api/app/Controller/EventsController.php">this +one</a>.</p> +</div> +<div class="section" id="i-upgraded-zoneminder-to-1-30-2-or-above-and-zmninja-stopped-working"> +<h3>I upgraded ZoneMinder to 1.30.2 or above and zmNinja stopped working!<a class="headerlink" href="#i-upgraded-zoneminder-to-1-30-2-or-above-and-zmninja-stopped-working" title="Permalink to this headline">¶</a></h3> +<p>ZoneMinder changed API packaging with ZM 1.30.2 and above. You will have +to read your distro notes on how to <strong>properly</strong> update. Read +<a class="reference external" href="https://forums.zoneminder.com/viewtopic.php?f=36&t=26002&start=30&hilit=api+broken">this</a> +thread. Before you think zmNinja is the problem, make sure your <a class="reference external" href="https://github.com/pliablepixels/zmNinja/wiki/Validating-if-APIs-work-on-ZM">APIs +are +working</a>. +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 <code class="docutils literal"><span class="pre">php5-apc</span></code> 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)</p> +</div> +<div class="section" id="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"> +<h3>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<a class="headerlink" href="#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" title="Permalink to this headline">¶</a></h3> +<p>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 +<a class="reference external" href="http://tech-stuff.org/which-ports-are-considered-unsafe-in-browsers/">here</a></p> +</div> +<div class="section" id="the-montage-screen-is-causing-issues-with-my-zm-server-i-get-connection-timeout-issues-or-mysql-connection-problems"> +<h3>The Montage screen is causing issues with my ZM server - I get connection timeout issues or MySQL connection problems<a class="headerlink" href="#the-montage-screen-is-causing-issues-with-my-zm-server-i-get-connection-timeout-issues-or-mysql-connection-problems" title="Permalink to this headline">¶</a></h3> +<ul class="simple"> +<li>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 <code class="docutils literal"><span class="pre">max_connections</span></code> in <code class="docutils literal"><span class="pre">my.cnf</span></code> if +you are facing time_wait/timeout issues.</li> +</ul> +</div> +<div class="section" id="the-app-works-great-except-it-doesn-t-work-on-one-android-phone-works-in-others"> +<h3>The app works great - except it doesn’t work on ONE Android phone - works in others!<a class="headerlink" href="#the-app-works-great-except-it-doesn-t-work-on-one-android-phone-works-in-others" title="Permalink to this headline">¶</a></h3> +<p>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 +<a class="reference external" href="https://forums.zoneminder.com/viewtopic.php?f=33&t=25946">this</a> +discussion</p> +</div> +<div class="section" id="apis-are-not-working-zm-console-works-fine"> +<h3>APIs are not working ! ZM console works fine.<a class="headerlink" href="#apis-are-not-working-zm-console-works-fine" title="Permalink to this headline">¶</a></h3> +<p>Read +<a class="reference external" href="https://github.com/pliablepixels/zmNinja/wiki/Validating-if-APIs-work-on-ZM">this</a></p> +</div> +<div class="section" id="i-m-using-mocord-record-and-i-don-t-see-events-without-alarms"> +<h3>I’m using mocord/record and I don’t see events without alarms<a class="headerlink" href="#i-m-using-mocord-record-and-i-don-t-see-events-without-alarms" title="Permalink to this headline">¶</a></h3> +<p>Tap on the “…” menu option and toggle “Show all events”. By default, +it shows events with at least one alarm frame</p> +</div> +<div class="section" id="taking-snapshots-or-downloading-videos-don-t-work-in-android"> +<h3>Taking snapshots or downloading videos don’t work in Android<a class="headerlink" href="#taking-snapshots-or-downloading-videos-don-t-work-in-android" title="Permalink to this headline">¶</a></h3> +<p>If you are unable to download/save, look at your logs. If you see +something like +<code class="docutils literal"><span class="pre">"exception":"java.security.cert.CertPathValidatorException:</span> <span class="pre">Trust</span> <span class="pre">anchor</span> <span class="pre">for</span> <span class="pre">certification</span> <span class="pre">path</span> <span class="pre">not</span> <span class="pre">found."</span></code> +, chances are you are using self-signed certs. You need to install the +certificate on your phone. Installing is as easy as emailing yourself +the “.crt” file and tapping on it from your device to install it. In +general, both Apple and Google have been incrementally tightening rules +for self signed certificates - they generally discourage usage of such +certs and over time both Chrome (Android) and WkWebView (iOS) have added +new restrictions/checks which affects usage.</p> +</div> +<div class="section" id="pan-tilt-zoom-doesn-t-work"> +<h3>Pan/Tilt/Zoom doesn’t work<a class="headerlink" href="#pan-tilt-zoom-doesn-t-work" title="Permalink to this headline">¶</a></h3> +<p>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. Also +note that you may need to disable CSRF in your Options in ZoneMinder - +it seems to cause all sorts of issues.</p> +</div> +</div> +<div class="section" id="what-is-this-event-server"> +<h2>What is this Event Server?<a class="headerlink" href="#what-is-this-event-server" title="Permalink to this headline">¶</a></h2> +<p>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 +<a class="reference external" href="https://github.com/pliablepixels/zmeventserver">here</a>. I’d encourage +you to install and use it - its very nice.</p> +<div class="section" id="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"> +<h3>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?<a class="headerlink" href="#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" title="Permalink to this headline">¶</a></h3> +<p>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.</p> +</div> +</div> +<div class="section" id="is-zmninja-free"> +<h2>Is zmNinja free?<a class="headerlink" href="#is-zmninja-free" title="Permalink to this headline">¶</a></h2> +<p>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.</p> +</div> +<div class="section" id="who-are-the-developers-behind-this"> +<h2>Who are the developers behind this?<a class="headerlink" href="#who-are-the-developers-behind-this" title="Permalink to this headline">¶</a></h2> +<p>Me.</p> +</div> +<div class="section" id="the-code-needs-improvement"> +<h2>The code needs improvement<a class="headerlink" href="#the-code-needs-improvement" title="Permalink to this headline">¶</a></h2> +<p>You are being nice. I know the code is terrible. I’m not a coder by +profession. This was my first project to learn how to write a mobile +app. So the app evolved from no knowledge to some knowledge. It +comprises of terrible to passable to reasonable code. There is a reason +why my <a class="reference external" href="https://github.com/pliablepixels">profile</a> says what it says. +But hey, if you can improve it, please PR!</p> +</div> +<div class="section" id="is-zmninja-an-official-zoneminder-product"> +<h2>Is zmNinja an official ZoneMinder product?<a class="headerlink" href="#is-zmninja-an-official-zoneminder-product" title="Permalink to this headline">¶</a></h2> +<p>No. But the ZM developers are amazing people who have been very helpful.</p> +</div> +<div class="section" id="i-want-to-donate-money"> +<h2>I want to donate money<a class="headerlink" href="#i-want-to-donate-money" title="Permalink to this headline">¶</a></h2> +<p>You could either <a class="reference external" href="https://www.bountysource.com/teams/zoneminder">donate to to +Zoneminder</a> or <a class="reference external" href="https://salt.bountysource.com/teams/zmninja">donate +to zmNinja</a>. Donations +to ZoneMinder don’t contribute to zmNinja, but the ZoneMinder devs will +benefit from it, which is fine too.</p> +</div> +<div class="section" id="how-does-zmninja-use-my-personal-data"> +<h2>How does zmNinja use my personal data?<a class="headerlink" href="#how-does-zmninja-use-my-personal-data" title="Permalink to this headline">¶</a></h2> +<p>Please read +<a class="reference external" href="https://medium.com/zmninja/zmninja-privacy-and-your-data-5489a5974baf">this</a></p> +</div> +<div class="section" id="i-want-to-donate-time-expertise-code"> +<h2>I want to donate time/expertise/code<a class="headerlink" href="#i-want-to-donate-time-expertise-code" title="Permalink to this headline">¶</a></h2> +<p>Great. Make sure you read the +<a class="reference external" href="https://github.com/pliablepixels/zmNinja/blob/master/LICENSE">license</a> +, read the <a class="reference external" href="https://github.com/pliablepixels/zmNinja/blob/master/CONTRIBUTING.md">contributing +guidelines</a> +and if it works for you, happy to see what you’d like to do.</p> +</div> +</div> + + + </div> + <div class="articleComments"> + + </div> + </div> + <footer> + + <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation"> + + <a href="validating-api.html" class="btn btn-neutral float-right" title="Validating APIs" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a> + + + <a href="../index.html" class="btn btn-neutral" title="Welcome to zmNinja’s documentation!" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a> + + </div> + + + <hr/> + + <div role="contentinfo"> + <p> + © Copyright 2019, Pliable Pixels. + + </p> + </div> + Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. + +</footer> + + </div> + </div> + + </section> + + </div> + + + + + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT:'../', + VERSION:'', + COLLAPSE_INDEX:false, + FILE_SUFFIX:'.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + + + + + + <script type="text/javascript" src="../_static/js/theme.js"></script> + + + + + <script type="text/javascript"> + jQuery(function () { + SphinxRtdTheme.StickyNav.enable(); + }); + </script> + + +</body> +</html>
\ No newline at end of file |
