Jan 27, 2026

How to Bring Any Security NVR Into Ring Using ONVIF and a J‑TECH ENCH4 Encoder

Using a JTECH‑ENCH4 to encode the HDMI output of a security NVR into an ONVIF‑compatible H.264 stream is a powerful way to bring a non‑IP or closed‑ecosystem surveillance system into the Ring platform. This allows you to view your entire NVR’s live display, including all of its cameras, directly inside the Ring app. The encoder converts any HDMI feed, such as a multi‑camera grid, into a standard ONVIF camera stream that Ring Alarm Pro can recognize. This approach lets you preserve your existing cameras and NVR while gaining unified monitoring through Ring, making it ideal for users who want to integrate legacy security hardware with modern smart‑home systems without replacing their entire infrastructure.

Ring Alarm Pro requires ONVIF‑compatible cameras to provide:
  • A valid ONVIF username
  • A valid password
  • A stream encoded with H.264 at 1080p or lower
  • NVR must be on the same network as Ring Alarm Pro

However, the J‑Tech Digital JTECH‑ENCH4 does not expose ONVIF user management in its web interface. Common login attempts (admin, root, blank username) did not work for me because the ENCH4 internally uses an undocumented ONVIF account.

Through troubleshooting and elimination, I discovered the correct ONVIF username is:
username: viewer
password: <your password>

Ring authorization succeeded.

Ensure in the ENCH4 web interface, ONVIF Password is Disabled. 

Network settings:

  • Enable DHCP
    1. Find the IP in your router
    2. Reserve the IP so the router assigns a static IP for the device
    3. Access the web interface via the new static IP

My Main Stream settings
  • FPS 30
  • GOP 60
  • Bitrate 4096
  • Encoding size 1920x1080
  • Bitrate CBR

Ring will sometimes say the device is not connected during Live View, just tap on the device again to reconnect and the device will display.

Enjoy



For reference Factory Reset:

  • Hold RESET button 10 seconds until all three LEDs turn off, then release.
  • Device reboots to default IP 192.168.1.168 and clears internal ONVIF state

Mar 10, 2025

Polar H10 HRM Bluetooth Android connection issues [FIXED]

Latest firmware for the Polar H10 is version 3.3.1 as of this post. 

If you're having connectivity issues with your phone, use the Polar Beat app to check if your Polar H10 has the latest firmware. If the firmware is older the 3.3.1, the Polar Beat app should provide you with an option to update the firmware.

For me, I was on an older firmware, and the H10 kept dropping the connection with my OnePlus phone. I tried using Polar Flow, but the update never successfully completed, and the percentage status bar went up beyond 100% to 160% before failing.

Use the Polar Beat app and update the firmware. If you're still having issues, use another device like a tablet and download the Polar Beat app to update. 

Once you see firmware 3.3.1 on your Polar Beat app, then you've successfully updated the firmware to the latest, and the connection issues will be resolved.

Jul 3, 2024

fail2ban whitelisting an IP address

From a terminal:

sudo ls -l /etc/fail2ban/jail.conf

sudo nano jail.conf

Add the IP address to whitelist to the ignoreip = <your_ip_address>

sudo systemctl restart fail2ban

Sep 7, 2022

fail2ban unban command

fail2ban-client -i
then in interactive mode type read the status of a jail:
status sshd
you'll get:
Status for the jail: ssh
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 3
|  `- File list:    /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned: 2
   `- Banned IP list:   192.168.0.100
then type in fail2ban interactive mode:
set sshd unbanip 192.168.0.100
you'll get:
192.168.0.100
it means no longer 192.168.0.100 in ban list.

Nov 28, 2020

Keto Resources

Introduction to low carb:

Carbohydrate Restriction-Induced Elevations in LDL-Cholesterol and Atherosclerosis: The KETO Trial

Dr. Stephen Phinney on Nutritional Ketosis and Ketogenic Diets (Part 1) Watch Part 2 and 3 as well:

History of Cholesterol and it's influence - David Diamond- Demonization and Deception in Cholesterol Research

Additional data points:

Dr. David Diamond - 'An Assessment of Cardiovascular Risks of a Low Carbohydrate, High Fat Diet'

Dr. Z interviews researcher Dave Feldman on his research into lipoprotein and their effects on the human body:

Journal article based off of 9,570 people tested to see if replacing a diet of Saturated Fat with Vegetable Oil rich in Linoleic Acid would reduce coronary heart disease and death. It decreased cholesterol but increased death--authors conclusion: this was due to the negative oxidative effects on lipoprotein from the consumption of Vegetable Oil.

Journal article discussing the Sugar industry's demonization of fat during the 1950's. The industry singled out fat and cholesterol as the dietary causes of CHD and downplayed evidence that sucrose consumption was also a risk factor. This alone caused decades of issues for American dietary education.

Statins for Primary Prevention The Debate Is Intense, but the Data Are Weak

Conflict of Interest in Seminal Hepatitis C Virus and Cholesterol Management Guidelines


 


Oct 11, 2019

Fixed: Dell iDRAC6 SMTP Email Alert Settings

Goal: get email notifications sent from a Dell Poweredge with iDRAC6 when a server issue occurs.

Problem: "Email not sent." is the message displayed after clicking Send Test Email.

Solution: 
  1. iDRAC Settings > Network/Security > Enter your DNS Domain Name (ex. yourdomain.com)
  2. iDRAC Settings > Network/Security > Set DNS Servers (this is so external SMTP domains can be translated)
  3. Apply
  4. System > Alerts > Click Enabled for Enable Platform Event Filter Alerts
  5. Apply
  6. System > Alerts > Email Alert Settings > Enter destination email and Email Description
  7. System > Alerts > Email Alert Settings > Enter in either your internal email server or external email relay. iDRAC 6 does work with external email relays outside of your organization.
  8. Apply
  9. System > Alerts > Email Alert Settings > Click Send to Test E-Mail
A successful email will be sent:

Subject: Alert from iDRAC

Message: [DELL IDRAC WARNING]
Message: TEST PAGE
Event: Email paging test to user.
Date: 10/11/2019
Time: 13:41
Severity: Info/Normal

Jun 28, 2019

Fixed: Jira server.xml special characters error

Issue:
When starting up Jira, an error is displayed blocking the startup. The error says server.xml has an issue with special characters then directs the admin to go https://confluence.atlassian.com/jirakb/changing-server-xml-to-handle-requests-with-special-characters-958453799.html.

Server setup:

Self-signed certificate for https
Https Port 8443

Here is the server.xml file that worked for me. I inserted at all Connector lines: relaxedPathChars="[]|" relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;"
<?xml version="1.0" encoding="UTF-8"?><!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
--><Server port="8005" shutdown="SHUTDOWN">
    <Listener className="org.apache.catalina.startup.VersionLoggerListener"/>
    <Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
    <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>

    <Service name="Catalina">
    <Connector acceptCount="100" bindOnInit="false" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" port="8080" protocol="HTTP/1.1" redirectPort="8443" relaxedPathChars="[]|" relaxedQueryChars="[]|{}^\`&quot;&lt;&gt;" useBodyEncodingForURI="true"/>
        <!--
         ==============================================================================================================
         DEFAULT - Direct connector with no proxy for unproxied access to Jira.

         If using a http/https proxy, comment out this connector.
         ==============================================================================================================
        -->

        <!-- Relaxing chars because of JRASERVER-67974 -->
        

        <!--
         ==============================================================================================================
         HTTP - Proxying Jira via Apache or Nginx over HTTP

         If you're proxying traffic to Jira over HTTP, uncomment the below connector and comment out the others.
         Ensure the proxyName and proxyPort are updated with the appropriate information if necessary as per the docs.

         See the following for more information:

            Apache - https://confluence.atlassian.com/x/4xQLM
            nginx  - https://confluence.atlassian.com/x/DAFmGQ
         ==============================================================================================================
        -->

        <!--
        <Connector port="8080" relaxedPathChars="[]|" relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;"
                   maxThreads="150" minSpareThreads="25" connectionTimeout="20000" enableLookups="false"
                   maxHttpHeaderSize="8192" protocol="HTTP/1.1" useBodyEncodingForURI="true" redirectPort="8443"
                   acceptCount="100" disableUploadTimeout="true" bindOnInit="false" scheme="http"
                   proxyName="<subdomain>.<domain>.com" proxyPort="80"/>

        -->
        <!--
         ==============================================================================================================
         HTTPS - Proxying Jira via Apache or Nginx over HTTPS

         If you're proxying traffic to Jira over HTTPS, uncomment the below connector and comment out the others.
         Ensure the proxyName and proxyPort are updated with the appropriate information if necessary as per the docs.

         See the following for more information:

            Apache - https://confluence.atlassian.com/x/PTT3MQ
            nginx  - https://confluence.atlassian.com/x/DAFmGQ
         ==============================================================================================================
        -->

        <!--
        <Connector port="8080" relaxedPathChars="[]|" relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;"
                   maxThreads="150" minSpareThreads="25" connectionTimeout="20000" enableLookups="false"
                   maxHttpHeaderSize="8192" protocol="HTTP/1.1" useBodyEncodingForURI="true" redirectPort="8443"
                   acceptCount="100" disableUploadTimeout="true" bindOnInit="false" secure="true" scheme="https"
                   proxyName="<subdomain>.<domain>.com" proxyPort="443"/>
        -->

        <!--
         ==============================================================================================================
         AJP - Proxying Jira via Apache over HTTP or HTTPS

         If you're proxying traffic to Jira using the AJP protocol, uncomment the following connector line
         See the following for more information:

            Apache - https://confluence.atlassian.com/x/QiJ9MQ
         ==============================================================================================================
        -->

        <!--
        <Connector port="8009" URIEncoding="UTF-8" enableLookups="false" protocol="AJP/1.3"/>
        -->

        <Engine defaultHost="localhost" name="Catalina">
            <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">

                <Context docBase="${catalina.home}/atlassian-jira" path="" reloadable="false" useHttpOnly="true">
                    <Resource auth="Container" factory="org.objectweb.jotm.UserTransactionFactory" jotm.timeout="60" name="UserTransaction" type="javax.transaction.UserTransaction"/>
                    <Manager pathname=""/>
                    <JarScanner scanManifest="false"/>
                    <Valve className="org.apache.catalina.valves.StuckThreadDetectionValve" threshold="120"/>
                </Context>
            </Host>
                    <Valve className="org.apache.catalina.valves.AccessLogValve" pattern="%a %{jira.request.id}r %{jira.request.username}r %t &quot;%m %U%q %H&quot; %s %b %D &quot;%{Referer}i&quot; &quot;%{User-Agent}i&quot; &quot;%{jira.request.assession.id}r&quot;"/>
 </Engine>
        <Connector relaxedPathChars="[]|" relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;" SSLEnabled="true" acceptCount="100" clientAuth="false" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" keyAlias="jira" keystoreFile="/opt/atlassian/jira/jira.jks" keystorePass="2102#Commerce#Drive" keystoreType="JKS" maxHttpHeaderSize="8192" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true" sslProtocol="TLS" useBodyEncodingForURI="true"/></Service>
</Server>