IP Camera User Guide

Complete guide to the IP Camera Android app and web dashboard.

Quick Start

Installation & Permissions

  1. Install the app from Google Play
  2. Grant permissions when prompted:
    • Camera - required for video
    • Microphone - required for audio and sound detection
    • Notifications - required for foreground service
  3. Optional: Grant battery optimization exemption when prompted (recommended for 24/7 reliability)

Starting the Server

  1. Open the app — the web server starts automatically
  2. Note the URL displayed (e.g., https://192.168.1.100:8443)

Viewing the Stream

  1. On another device connected to the same WiFi network, open a browser
  2. Enter the URL shown in the app
  3. Accept the certificate warning (click “Advanced” → “Proceed”)
  4. Click Start Stream on the dashboard to begin viewing

Pro Features

Most features require a Pro license:

Feature Description
Motion Detection Any motion, person detection, dog detection
Sound Detection Any sound, dog bark, baby cry
Two-Way Audio Push-to-talk and text-to-speech
Activity History Event timeline and analytics charts
RTSP Streaming Stream to VLC, ffmpeg, or NVR systems
MQTT Integration Publish events to Home Assistant, Node-RED
API Documentation Interactive reference for developers
Certificate Download Install HTTPS certificate permanently
Reverse Proxy Mode Access camera through nginx, Caddy, or CloudFlare

Free features: live video streaming via web dashboard and camera controls (resolution, FPS, rotation, torch).


Android App

The Android app runs on the phone and acts as the camera server.

Main Screen

The main screen shows:

Quick Controls (tap to change):

Status Overlay

The status overlay appears on the live preview showing system health. Tap to expand for full details.

Information displayed:

Status States:

State Color Meaning
STANDBY Blue Server running, no viewers
ACTIVE Green Streaming, viewers connected
WARNING Orange Battery ≤20% (unplugged) or temperature ≥45°C
CRITICAL Red Battery ≤15% (unplugged)

App Settings

Access settings via the gear icon or menu.

Power & Performance:

Setting Description
Keep Screen On Prevents screen from sleeping (uses more battery)
Run in Background Keeps streaming when app is minimized or screen turns off. When enabled, the app automatically moves to the background when the screen turns off, so you see your home screen when unlocking (appliance mode)
Auto-start on Boot Starts the service when device powers on. Android 14+: Tap the notification to resume streaming after reboot (see FAQ)

Security:

Setting Description
Password Protect dashboard and API access with a password
Certificate Download the HTTPS certificate for installation (Pro feature)
Crash Reporting Send anonymous crash reports to help fix bugs (enabled by default)

Dashboard Authentication Details: - Sessions use tokens valid for 7 days - Rate limiting: 5 failed attempts triggers 30-second lockout

Network:

Setting Description
Reverse Proxy Mode Trust X-Forwarded-Proto from proxy for HTTPS detection (Pro feature)

Note: Audio can be enabled/disabled via the Camera Settings panel in the web dashboard.


Web Dashboard

The web dashboard is accessed via a browser and provides full control over the camera. It has five pages accessible via the navigation tabs (desktop) or hamburger menu (mobile).


Dashboard Page

The main page for viewing the live stream and configuring detection.

Live Video

The video stream appears at the top of the page with status information below: - Stream status (Buffering, Streaming, or error) - Resolution and frame rate - Bitrate and viewer count

Controls:

Camera Settings

Click to expand. Changes take effect immediately.

Setting Description
Camera Switch between back and front cameras
Resolution Video resolution (higher = better quality, more CPU)
Frame Rate Frames per second
Quality JPEG/H.264 quality level (1-100)
Rotation Rotate video 0°, 90°, 180°, or 270°
Audio Enable/disable microphone audio
H.264 Use H.264 encoding instead of MJPEG (lower CPU and bandwidth)
Torch Turn on flashlight (if available)

Camera Capabilities:

Capability Details
Resolutions Up to 1920x1080 (1080p). Options depend on device.
Frame Rate 1-60 fps. Older (LEGACY) devices capped at 15 fps for stability.
Quality 1-100 quality level. Lower = smaller files, higher = better quality.
Automatic Controls Autofocus, exposure, and white balance are always automatic.
Zoom Not available.

Two-Way Audio [Pro Feature]

Click to expand. Allows you to speak through the camera.

Push to Talk: Press and hold the button, speak, then release. Your voice plays through the phone’s speaker.

Text to Speech: Type a message and click Speak. The phone reads it aloud. Messages are rate-limited to one per 5 seconds.

Note: PTT requires HTTPS (browser security requirement). PTT and TTS require Pro; listening is free.

Motion Detection [Pro Feature]

Click to expand. Configure motion-based alerts.

Detection types:

Settings:

Sound Detection [Pro Feature]

Click to expand. Configure audio-based alerts.

Detection types:

Settings:

Activity Timeline [Pro Feature]

Shows a visual summary of today’s detection events.


RTSP Page [Pro Feature]

Configure RTSP streaming for use with VLC, ffmpeg, or NVR systems.

Server Settings

Setting Default Description
Enabled Off Turn RTSP server on/off
Port 8554 Server port
Stream Path /stream URL path
Authentication Off Require username/password

Stream URL

The page displays the full URL to use:

rtsp://192.168.1.100:8554/stream

Connecting with Players

# VLC
vlc --rtsp-tcp rtsp://192.168.1.100:8554/stream

# ffplay
ffplay -rtsp_transport tcp rtsp://192.168.1.100:8554/stream

# With authentication
vlc --rtsp-tcp rtsp://user:pass@192.168.1.100:8554/stream

Important: Always use TCP transport (--rtsp-tcp or -rtsp_transport tcp).

Limitations

RTSP Authentication Details:


MQTT Page [Pro Feature]

Configure MQTT for integration with Home Assistant, Node-RED, or other IoT platforms.

Connection Settings

Setting Description
Enabled Turn MQTT on/off
Broker URL IP address or hostname of your broker
Port Default 1883 (or 8883 for TLS)
Use TLS Enable encrypted connection
Username/Password Broker authentication (if required)

MQTT Security:

Published Topics

All topics use a configurable prefix (default: ipcamera):

Topic Description
{prefix}/status/online Online/offline state (LWT)
{prefix}/events/motion Motion detected
{prefix}/events/sound Sound threshold exceeded
{prefix}/events/vision/person Person detected (ML)
{prefix}/events/vision/dog Dog detected (ML)
{prefix}/events/sound/dog_bark Dog bark detected (ML)
{prefix}/events/sound/baby_cry Baby cry detected (ML)
{prefix}/telemetry/system CPU, temperature, battery

Control Topics

When enabled, the app subscribes to control topics for remote enable/disable of detection features:

Topic Message
{prefix}/control/motion/enabled {"enabled": true} or "true"
{prefix}/control/sound/enabled {"enabled": true} or "true"
{prefix}/control/vision/person/enabled {"enabled": true} or "true"
{prefix}/control/vision/dog/enabled {"enabled": true} or "true"
{prefix}/control/classification/dog_bark/enabled {"enabled": true} or "true"
{prefix}/control/classification/baby_cry/enabled {"enabled": true} or "true"

Note: Control topics are disabled by default for security. Torch and snapshot are HTTP-only (/torch, /snapshot).


Activity Page [Pro Feature]

View detection event history and analytics.

Time Range

Select a time range using:

Filtering

Click filter chips to show specific event types:

Statistics

Cards showing:

Charts

Export [Pro Feature]

Click Export to download events as CSV.


API Page [Pro Feature]

Interactive API documentation for developers integrating with the camera.

Categories

Usage

The page provides curl examples for each endpoint. Authentication is required when password protection is enabled.


Embedding

MJPEG Stream

Embed the video stream in a web page:

<img src="https://192.168.1.100:8443/stream" />

Remote Access

The app runs on your local WiFi network by default. For remote access, you have two options: a VPN or a reverse proxy.

Do not port-forward the camera directly to the internet. Use a VPN or authenticated reverse proxy instead.

Using a VPN

Connect the phone to your home network via a VPN (e.g., WireGuard, OpenVPN, Tailscale). The phone can be on cellular data — it doesn’t need WiFi. Once connected, access the camera by its VPN address:

https://<phone-vpn-address>:8443

Making LAN Devices Reach VPN Clients

Most VPN setups assign clients an address from a separate VPN subnet (e.g., 10.0.0.x) rather than the main LAN subnet (e.g., 192.168.1.x). This means your LAN devices won’t be able to reach the phone’s VPN address unless you configure routing.

The VPN host acts as a router between the two subnets:

LAN device (browser)
    |
    v
Main router / firewall
    (static route: VPN subnet via VPN host)
    |
    v
VPN host (IP forwarding enabled)
    |
    v
Phone on VPN (camera app running)

What’s needed:

Without the static route, your router sends VPN-subnet traffic to the default gateway (your ISP), which drops it. This is the most commonly missed step.

Note: Some VPN tools (e.g., Tailscale) handle routing automatically and don’t require manual static routes. Check your VPN’s documentation.

Using a Reverse Proxy

A reverse proxy (nginx, Caddy, Cloudflare Tunnel, etc.) forwards HTTPS requests to the camera and provides a proper domain name and TLS certificate — no browser warnings.

  1. Configure the proxy to terminate TLS and forward to the camera’s local address
  2. In the IP Camera app settings, enable Reverse Proxy Mode so the app trusts the X-Forwarded-Proto header (required for secure cookies)

Reverse Proxy Mode is a Pro feature.


Troubleshooting

Stream Won’t Load

  1. Check you’re on the same WiFi network as the phone
  2. Verify the IP address (it changes when the phone reconnects to WiFi)
  3. Make sure streaming is started in the app
  4. Check no other app is using the camera

Certificate Warning

This is normal. The app uses a self-signed certificate. Click “Advanced” → “Proceed” to continue, or download and install the certificate from the app settings for a permanent fix.

Video Lag

Phone Overheating

The app automatically reduces frame rate when the phone gets hot: - 38°C+ → 15 fps max - 42°C+ → 10 fps max - 48°C+ → 5 fps max

To reduce heat manually:

Detection Issues

Too many false alerts:

Not detecting:

Detection stopped working: The app auto-disables detection after 5 consecutive ML inference failures to prevent battery drain. A toast notification appears when this happens. To re-enable: 1. Go to the detection panel 2. Toggle the detection type off and back on 3. If failures persist, restart the app

RTSP Won’t Connect

  1. Check RTSP is enabled on the RTSP page
  2. Use TCP transport (--rtsp-tcp)
  3. Verify the port (default 8554)
  4. Check authentication credentials if enabled
  5. Android 14+ after reboot: Tap the notification or open the app to unlock camera access (see FAQ)

Remote Access

See the Remote Access section above for VPN setup, WireGuard configuration, and reverse proxy options.


FAQ

How many viewers can connect?

No practical limit. Each viewer has an independent queue.

Does it record video?

No. Use an NVR with RTSP to record.

Can I use multiple cameras?

Run the app on multiple phones. Each phone is one camera.

Why does the IP address change?

Your router assigns dynamic IPs. You can reserve a static IP in your router settings.

Does it work when the phone is locked?

Yes, if “Run in Background” is enabled. The app will continue streaming even with the screen off. Additionally, when you lock the phone, the app automatically moves to the background so you see your home screen when you unlock (appliance mode).

Does it need internet?

No. Only local WiFi is required.

Why request battery optimization exemption?

Without it, Android may kill the app to save battery, stopping your stream.

Why doesn’t auto-start work fully on Android 14+?

Android 14 introduced stricter security for camera and microphone access. After a reboot, the app shows a “Tap to resume streaming” notification. Simply tap the notification to enable camera/mic features (streaming, RTSP, detection) - no need to open the full app. Alternatively, open the app normally to unlock full functionality. This is an Android platform restriction, not an app limitation.

Can I zoom the camera?

No. Digital zoom is not implemented.

What’s the difference between listening and PTT?

Listening plays device audio (phone’s mic) through your browser. Push-to-Talk transmits your voice to the phone’s speaker. Both require Pro.

Why did detection stop automatically?

After 5 consecutive ML inference failures, detection auto-disables to save battery. Re-enable it in the dashboard detection panel.