Skip to main content

Settings

The Settings page is the central configuration hub for the security camera. It's organized into six scrollable sections with a sidebar (desktop) or tab bar (mobile) for quick navigation.

http://<raspberry-pi-ip>:3000/settings
Direct links

You can link directly to a section using a URL hash: /settings#camera, /settings#devices, etc.


Appearance

Theme

ModeBehaviour
SystemFollows your OS light/dark preference
LightAlways light
DarkAlways dark (default)

Saved in localStorage, applied immediately without a page reload.

Language

Five languages are supported:

EnglishDeutschFrancaisEspanolItaliano

Changing the language reloads the page to apply translations everywhere. On first visit, the dashboard detects your browser language and falls back to English if no match is found.

Scan lines

A cosmetic CRT-style scan line overlay on the live video feed. Enabled by default. Toggle it off for a clean image. Saved to the server.

Captive portal

Controls whether the AP captive portal popup appears when devices connect to the Pi's WiFi access point. Enabled by default. When disabled, the iptables redirect rule is removed and devices no longer see the popup. Only relevant when the Pi is running as an access point (see WiFi setup).


Camera

Rotation

Set the camera rotation to match your physical mounting orientation.

Angle: 0 | 90 | 180 | 270 degrees (default 0)

Rotates the image in the browser via CSS transform. Zero CPU cost. Recordings are saved unrotated. Supports all four angles.

Changes auto-save when you select an angle or switch modes.

Stream resolution and framerate

A preset dropdown organizes options by camera module. Recommended presets are marked with a star.

Works with all camera modules.

ResolutionFPSNotes
640x36030Lightweight 16:9
640x48015Lowest resource usage
640x48030Minimal CPU load
1280x72015720p, lower CPU
1280x72030720p, smooth playback
1920x1080151080p, lower CPU
1920x1080301080p, native on all modules
Encoder limit warning

Presets marked "exceeds Zero 2 W encoder limit" may cause encoding failures on the Pi Zero 2 W. They work fine on Pi 4/5.

Custom: Select "Custom" from the dropdown to manually enter width (320-4056), height (240-3040), and FPS (1-120).

Click Apply to save. The stream may briefly interrupt while MediaMTX applies the new configuration.

Image quality (ISP)

The Raspberry Pi camera's hardware Image Signal Processor handles brightness, contrast, white balance, exposure, denoise, and more - all with zero CPU cost. Click Show preview to see the live feed while adjusting.

Sliders and dropdowns are available for: Brightness, Contrast, Saturation, Sharpness, Exposure Compensation (EV), White Balance, Exposure Mode, Denoise, and Metering. See the Image Quality guide for parameter ranges, defaults, tips, and recommended recipes.

Click Apply to save. The stream restarts briefly (~3 seconds). Click Reset to defaults to return all parameters to factory settings. Settings persist in settings.json and mediamtx.yml across reboots.


Storage

Save location

Click Browse to open a directory picker dialog. Navigate the Pi's filesystem by clicking folders to go deeper, or the back arrow to go up. Click Select to confirm.

Default: ./recordings relative to the client directory.

Below the picker, a metadata line shows the SD card name, manufacturing date, and bytes written since boot (when available from the hardware).

Network storage

You can point recordings to a NAS by mounting a network share and selecting the mount point in the directory browser. See network storage for NFS and SMB mount instructions.

Auto-delete

Prevents the SD card from filling up by removing the oldest recordings when disk usage exceeds a threshold.

SettingRangeDefault
Threshold10%-95% (step 5%)85%

The check runs before each new recording and every 5 minutes in the background. When enabled, a disk usage bar shows:

  • Blue - healthy (well below threshold)
  • Amber - approaching (within 10% of threshold)
  • Red - exceeded (oldest recordings being deleted)

A thin vertical marker shows the threshold position on the bar. Click Save after adjusting.

tip

With network storage, you can raise the threshold or disable auto-delete entirely since your NAS likely has much more space than the SD card.

Timelapse

Captures periodic still frames and compiles them into a timelapse video at the end of each day.

SettingRangeDefaultDescription
Interval1-60 min5 minHow often to capture a frame
Output FPS1-60 fps24 fpsFramerate of the compiled video
ResolutionOriginal / 640x480 / 320x240640x480Output frame size

When active, a pulsing green indicator shows the frame count captured today. Click Save after changing settings.


Devices

Manage Bluetooth and WiFi devices for presence detection. When a tracked device is nearby, the system knows someone is home - this gates whether sensor-triggered recordings start. See how auto-recording works for the full flow.

note

Device presence gates sensor-triggered recordings only. You can always start a manual recording regardless of device presence.

Device status indicators

Each configured device shows a real-time status dot (updated via Server-Sent Events):

IndicatorMeaning
Green dot with glowDevice detected nearby
Gray dotDevice not detected
Dim gray dotStatus unknown (not checked yet)

Bluetooth devices

Click Scan for Devices to run a 25-second Bluetooth discovery. Found devices appear with their name (if available) and MAC address. Click Add to track a device.

Phone pairing

When adding a phone, you may need to confirm pairing on the phone itself. A hint appears: "Check your phone to confirm pairing."

Removing: Click the X button on a device row. On desktop it appears on hover; on mobile it's always visible.

Naming: Devices found by scan may not have a name. Type a name in the inline input before clicking Add.

WiFi devices

Same interface as Bluetooth but with a 5-second scan for WiFi stations connected to the Pi's access point. WiFi presence only works when the Pi is running as an access point.


Trigger sensors

Configure a physical sensor connected to the Pi's GPIO pins to automatically trigger recordings.

Auto recording toggle

The main toggle enables or disables the sensor. Status badge shows:

BadgeMeaning
Armed (green)Sensor enabled and actively monitoring
Idle (gray)Sensor enabled, waiting for presence check
Disabled (gray)Sensor is off

Sensor type

Select from a grid of 16 sensor types. Selecting a type resets GPIO to the sensor's default and resets calibration. See the sensors guide for the full list with default GPIO pins, use cases, and wiring diagrams.

Wiring diagram

Each sensor type (except Mock) has an expandable Show Wiring section with a visual SVG diagram, pin-by-pin connection table, and sensor-specific notes. For detailed wiring guidance, see the wiring guide.

Configuration

SettingRangeDefaultDescription
GPIO Pin0-27Varies by typeWhich Pi GPIO pin. The suggested default is shown as a hint below the input.
Hold Timeout0-300 s10 sHow long to keep recording after the trigger clears. Set to 0 to stop immediately.
Invert TriggerOn/OffOffWhen off: LOW-to-HIGH triggers (active high). When on: HIGH-to-LOW triggers (active low).

Calibration

Some sensors expose tuning sliders below the main config (PIR sensitivity, vibration/knock pulse threshold, tilt settle time, touch duration). See the Calibration guide for parameter details and tuning tips.

Testing

Click Start Test to enter live test mode. The sensor pin is read every 500ms showing:

  • A badge with the current value (1 High / 0 Low) and GPIO pin number
  • A sparkline chart of the last 40 readings

Trigger the sensor physically to verify readings change. Click Stop Test when done.

Mock sensor

When Mock is selected and enabled, two buttons replace the wiring test:

  • Simulate Trigger - fires the sensor, starting a recording if armed
  • Simulate Release - releases the trigger, starting the hold timeout countdown

This tests the full pipeline (trigger, record, hold, stop) without hardware.

Save workflow

  1. Select sensor type and configure GPIO, hold time, invert logic, and calibration
  2. Click Save to store the configuration
  3. Toggle Auto Recording to arm the sensor
  4. Status badge changes to Armed

The enable/disable toggle takes effect immediately without a separate save.


Security

Authentication

Toggle API authentication to require login for the dashboard and all API requests. When enabled, visitors must enter a password to access the dashboard. Disable only on isolated networks where authentication adds unnecessary friction.

A default password is generated on first startup and written to client/data/default-password.txt. Read it via SSH:

cat /opt/security-cam/client/data/default-password.txt

The file is automatically deleted once you change the password. Change it using the Change password section below.

API token

The API token field shows a token for programmatic access - use it with scripts, curl, or Home Assistant. Click Copy to copy it to your clipboard.

Regenerate creates a new API token and invalidates the old one. All active browser sessions will be logged out and need to enter the password again.

Password recovery

Locked out? SD card reset

If you forget the password, you can reset auth using the SD card:

  1. Power off the Pi and remove the SD card
  2. Insert it into any computer
  3. Create an empty file called reset-auth on the boot partition (the one with config.txt)
  4. Put the card back and power on

Auth will be disabled on next startup and a new default password written to client/data/default-password.txt.

SSH alternative

If you have SSH access, you can also reset via the command line:

cd /opt/security-cam/client/settings
python3 -c "import json; s=json.load(open('settings.json')); s['Auth']['enabled']=False; s['Auth']['password_hash']=''; json.dump(s,open('settings.json','w'),indent=4)"

Then restart the service.


System

Software update

The dashboard automatically checks for updates every 12 hours in the background. When updates are available, a blue dot appears on the Settings icon in the navigation bar. You can also check manually by clicking Check for updates.

If updates are available, a summary of new commits is shown with the number of commits behind. Click Update & restart to apply - this restarts the security-cam service, which runs the update script (setup/update.sh) automatically before starting. The update script pulls new code, installs dependencies if needed, and rebuilds the frontend.

note

The Pi needs an internet connection to check for and download updates. If the check times out, verify the Pi can reach GitHub. The last check result is cached locally so the badge persists across page reloads.

Restart services

Restarts the Flask API and Astro dashboard without rebooting the Pi. The connection drops briefly (~10 seconds) while systemd restarts the security-cam service. Equivalent to running sudo systemctl restart security-cam via SSH.

Reboot device

Performs a full Raspberry Pi reboot. May take a few minutes if update.sh detects code changes and triggers a frontend rebuild. Equivalent to sudo systemctl reboot via SSH.

All three actions require a confirmation click (auto-cancels after 5 seconds). Restart and reboot log an event to the activity timeline.


Desktop (1024px+): A sticky sidebar highlights the current section as you scroll. Click a section name to smooth-scroll to it. The URL hash updates to match.

Mobile: A horizontal tab bar at the top serves the same purpose. The active section updates automatically based on scroll position.

Data loading

All settings load in parallel on page mount - the settings file, timelapse status, storage status, and system info are fetched simultaneously. Device presence status updates in real time via Server-Sent Events.