Power Management and Screensaver Configuration

Optimization for 24/7 operation: Burn-in protection and power management

20 min readLast updated: 1/15/20240

Power Management and Screensaver Configuration

For 24/7 display operation, power management and burn-in prevention are critical for longevity and reliability. This guide shows optimal configurations.

Understanding Burn-In Risk

What is Burn-In?

Burn-in occurs when static image elements leave permanently visible shadows.

OLED Displays (High Risk):

  • Organic pixels degrade at different rates
  • Static elements burn in within 100-1000 hours
  • Particularly susceptible: White and blue pixels
  • Irreversible damage
  • LCD Displays (Lower Risk):

  • Image retention (temporary) instead of true burn-in
  • Can usually be fixed through pixel refresh
  • Occurs after 2000-5000 hours
  • Usually reversible
  • IPS-LCD (Recommended for Digital Signage):

  • Very low burn-in risk
  • Better viewing angles than TN panels
  • Longer lifespan
  • Ideal for 24/7 operation
  • Vulnerable Areas in LobbyFlight

    Highest risk (permanently visible):

  • Header with hotel logo
  • Tab bar (Departures/Arrivals)
  • Time display
  • Status badges (On Time, Delayed)
  • Medium risk (often visible):

  • Airport codes
  • Gate numbers
  • Airline names
  • Low risk (changes frequently):

  • Flight times
  • Flight numbers
  • Weather data
  • Burn-In Prevention Strategies

    1. Automatic Content Rotation

    LobbyFlight already rotates between:

  • Departures ↔ Arrivals (every 30 sec)
  • Optional: Hotel info slides
  • This reduces static display by 50%
  • 2. Pixel Shift (Hardware)

    Modern displays slightly shift the image:

  • 1-2 pixels in all directions
  • Every 10-30 minutes
  • Not noticeable to users
  • 3. Reduced Brightness

  • OLED: Max 60% brightness
  • LCD: Max 80% brightness
  • Night: 30-40% sufficient
  • 4. Dark Themes

  • Black background on OLED saves energy
  • Dark colors reduce pixel stress
  • LobbyFlight already uses dark theme
  • Android Display Settings

    Basic Display Configuration

    Optimal Brightness Settings

    Navigation: Settings → Display → Brightness

    Recommended values:

    LCD Displays:
    - Day (6:00-22:00): 70-80%
    - Evening (22:00-24:00): 50%
    - Night (0:00-6:00): 30%
    
    OLED Displays:
    - Day: 50-60%
    - Evening: 40%
    - Night: 20-30%

    Disable Adaptive Brightness:

  • Settings → Display → Adaptive Brightness → OFF
  • Reason: Inconsistent brightness disturbs guests
  • Manual control preferred
  • Prevent Display Timeout

    Navigation: Settings → Display → Screen timeout

    Options:
    - Screen timeout: "Never" or Maximum (30 min)
    - Screen saver: Disabled
    - Daydream: OFF

    Alternative via ADB:

    adb shell settings put system screen_off_timeout 2147483647

    Blue Light Filter Settings

    Navigation: Settings → Display → Night Light/Blue Filter

    Recommendation: DISABLED

    Why?

  • Distorts brand colors
  • Makes display yellowish
  • Irritates guests during daytime
  • Exception: Displays in sleeping areas (night operation)

    Power Saving Settings

    Disable Battery Optimization

    For Fully Kiosk Browser:

  • Settings → Apps → Fully Kiosk Browser
  • Battery → Battery optimization
  • Select "Don't optimize"
  • For Chrome:

  • Settings → Apps → Chrome
  • Battery → Allow background activity
  • Disable optimization
  • Why important?

  • Prevents app sleep mode
  • Guarantees constant performance
  • No unexpected restarts
  • Disable Doze Mode

    Android's Doze Mode can disrupt kiosk operation.

    Disable via ADB:

    # Completely disable Doze Mode
    adb shell dumpsys deviceidle disable
    
    # Whitelist specific app
    adb shell dumpsys deviceidle whitelist +com.fullykiosk.browser

    Via Developer Options:

  • Enable Developer Options (tap Build number 7 times)
  • "Standby apps" → Fully Kiosk → "Active"
  • WiFi Optimization

    Navigation: Settings → WiFi → Advanced

    Important settings:
    ✓ Keep WiFi on during sleep: ALWAYS
    ✗ WiFi scanning: OFF (saves energy)
    ✗ Auto-switch to mobile data: OFF
    ✓ Network notification: OFF

    WiFi power saving mode via ADB:

    # WiFi always active
    adb shell settings put global wifi_sleep_policy 2

    Fully Kiosk Screensaver Configuration

    Screensaver Basics

    Navigation: Fully Kiosk → Settings → Screensaver

    Option A: Black Screen (Maximum Burn-In Protection)

    Enable Screensaver: ON
    Screensaver Timer: 600 seconds (10 minutes)
    Screensaver Type: Black Screen
    Brightness in Screensaver: 0%
    Show Clock: OFF
    Wake Screen on Motion: ON (if camera available)

    Advantages:

  • Best burn-in prevention
  • Maximum energy savings
  • OLED pixels completely off
  • Disadvantages:

  • Display appears "turned off"
  • Guests might think it's broken
  • Option B: Dim Mode (Recommended for Lobbies)

    Enable Screensaver: ON
    Screensaver Timer: 900 seconds (15 minutes)
    Screensaver Type: Dim Screen
    Dimming Level: 20%
    Keep Content Visible: ON
    Screensaver Overlay: None

    Advantages:

  • Flight data remains visible
  • Reduced brightness protects display
  • Guests see system is running
  • Disadvantages:

  • Less burn-in protection
  • Higher energy consumption
  • Option C: Moving Content (For OLED)

    Enable Screensaver: ON
    Screensaver Timer: 600 seconds
    Screensaver Type: Website
    URL: https://yourdomain.com/screensaver
    Motion: Slow Drift
    Movement Range: 50 pixels

    Create custom screensaver page:

    <!DOCTYPE html>
    <html>
    <head>
      <style>
        body {
          background: black;
          display: flex;
          align-items: center;
          justify-content: center;
          overflow: hidden;
        }
        #content {
          animation: drift 60s infinite;
        }
        @keyframes drift {
          0%, 100% { transform: translate(0, 0); }
          25% { transform: translate(30px, -30px); }
          50% { transform: translate(-30px, -30px); }
          75% { transform: translate(-30px, 30px); }
        }
        .clock {
          color: #333;
          font-size: 4em;
          font-family: monospace;
        }
      </style>
    </head>
    <body>
      <div id="content">
        <div class="clock" id="clock"></div>
        <img src="/logo-dark.png" style="opacity: 0.1">
      </div>
      <script>
        setInterval(() => {
          document.getElementById('clock').textContent =
            new Date().toLocaleTimeString('en-US')
        }, 1000)
      </script>
    </body>
    </html>

    Motion Detection (Plus Version)

    Fully Kiosk Plus Version only

    Navigation: Settings → Motion Detection

    Enable Motion Detection: ON
    Camera for Detection: Front Camera
    Detection Mode: Motion
    Sensitivity: Medium (3-5)
    Turn Screen On on Motion: ON
    Turn Screen Off Delay: 600 seconds
    Detection Schedule: 06:00 - 22:00

    Testing motion detection:

  • Wave hand in front of camera
  • Screen should wake up
  • Adjust sensitivity if too slow/sensitive
  • Privacy notice:

  • No recording, only motion detection
  • Notice still recommended
  • "This display uses motion detection"
  • Scheduled Brightness

    Fully Kiosk Brightness Scheduler

    Navigation: Settings → Scheduled Actions

    Time-Based Brightness

    Morning (6:00) - Full brightness:

    Action: Set Screen Brightness
    Brightness: 80%
    Time: 06:00
    Days: All Days

    Noon (12:00) - Maximum for sunlight:

    Action: Set Screen Brightness
    Brightness: 100%
    Time: 12:00
    Days: All Days

    Evening (18:00) - Reduce:

    Action: Set Screen Brightness
    Brightness: 60%
    Time: 18:00
    Days: All Days

    Night (22:00) - Dim:

    Action: Set Screen Brightness
    Brightness: 30%
    Time: 22:00
    Days: All Days

    Late night (1:00) - Minimum:

    Action: Set Screen Brightness
    Brightness: 15%
    Time: 01:00
    Days: All Days

    Alternative: Tasker Automation

    For extended automation:

    Create Tasker profile:

    Profile: Lobby Hours
    Time: 6:00 - 22:00
    Task:
      - Display Brightness: 75%
      - Screensaver: Disabled
    
    Profile: Night Mode
    Time: 22:00 - 6:00
    Task:
      - Display Brightness: 30%
      - Screensaver: 5 min timeout
      - Notification Volume: 0

    Ambient Light Sensor (if available)

    Some displays have light sensors:

    // JavaScript for adaptive brightness
    if ('AmbientLightSensor' in window) {
      const sensor = new AmbientLightSensor()
      sensor.onreading = () => {
        const lux = sensor.illuminance
        let brightness = 50 // Default
    
        if (lux < 50) brightness = 30      // Dark
        else if (lux < 200) brightness = 50 // Dim
        else if (lux < 500) brightness = 70 // Normal
        else brightness = 90                // Bright
    
        setBrightness(brightness)
      }
      sensor.start()
    }

    Nightly Restart

    Why Daily Restart is Important

    Clear memory leaks:

  • Browser memory grows over time
  • JavaScript garbage collection incomplete
  • Android system cache grows
  • Restore performance:

  • Fresh start = optimal speed
  • Temporary files deleted
  • Network stack reset
  • Reload Service Worker:

  • Current version guaranteed
  • Cache consistency
  • Offline data updated
  • Fully Kiosk Auto-Restart

    Navigation: Settings → Scheduled Actions

    Action Type: Restart Application
    Time: 04:00
    Days: All Days
    Enabled: YES
    Clear Cache on Restart: YES

    Alternative times by hotel type:

    Business Hotel: 03:00 (before early checkouts)

    Vacation Hotel: 05:00 (consider late guests)

    Airport Hotel: 04:30 (between night and morning flights)

    System-Level Restart (Android)

    Via ADB command:

    # Set up cron job on server
    adb connect [display-ip]:5555
    adb shell reboot

    Via Root (if available):

    # In Fully Kiosk Terminal
    su
    reboot

    Hardware-Based Restart (Smart Plug)

    Kasa Smart Plug Schedule:

    Schedule 1: Power OFF
    Time: 04:00
    Duration: 30 seconds
    
    Schedule 2: Power ON
    Time: 04:00:30
    Action: Turn On

    Advantages:

  • 100% reliable
  • Works on system freeze
  • Remote management possible
  • Power consumption monitoring
  • Setup with Home Assistant:

    automation:
      - alias: "Display Daily Restart"
        trigger:
          platform: time
          at: "04:00:00"
        action:
          - service: switch.turn_off
            entity_id: switch.display_plug
          - delay: "00:00:30"
          - service: switch.turn_on
            entity_id: switch.display_plug

    Monitoring and Notifications

    Fully Kiosk Remote Admin

    Set up access:

  • Settings → Remote Administration → Enable
  • Set password
  • Note IP address
  • Web interface: http://[display-ip]:2323

    Available functions:

  • Live screenshot
  • Remote control
  • Settings changes
  • Restart/Reload
  • JavaScript console
  • System information
  • Health Monitoring

    What to monitor:

    Critical:
    - Display online status
    - Last successful data update
    - CPU temperature (< 70°C)
    - Memory usage (< 80%)
    
    Warning:
    - Uptime > 7 days (restart needed)
    - Cache size > 200MB
    - Error rate > 5%
    - WiFi signal < -70dBm

    Set Up Alert System

    Option 1: Fully Kiosk Cloud (Plus):

  • Automatic monitoring
  • Push notifications on offline
  • Centralized management of multiple displays
  • Option 2: Custom Monitoring:

    # Python monitoring script
    import requests
    import smtplib
    from email.mime.text import MIMEText
    
    DISPLAYS = [
      {"name": "Lobby", "ip": "10.0.0.101"},
      {"name": "Reception", "ip": "10.0.0.102"}
    ]
    
    for display in DISPLAYS:
        try:
            r = requests.get(f"http://{display['ip']}:2323/api/status",
                            timeout=5, auth=('admin', 'password'))
            if r.status_code != 200:
                send_alert(f"Display {display['name']} not responding")
        except:
            send_alert(f"Display {display['name']} offline")

    Performance Metrics

    KPIs to track:

    Daily:
    - Restart Success Rate (Target: 100%)
    - Average CPU Usage (Target: < 40%)
    - Memory Usage Trend
    - Cache Hit Rate
    
    Weekly:
    - Total Downtime (Target: < 10 min)
    - Error Count
    - WiFi Disconnections
    - Temperature Max Values
    
    Monthly:
    - Brightness Hours (for burn-in calculation)
    - Power Consumption (kWh)
    - Software Update Status

    Best Practices Summary

    For OLED Displays

  • Brightness: Max 60% daytime, 20% night
  • Screensaver: Black screen after 10 min
  • Pixel shift: Enable if available
  • Content: Maximum rotation, dark themes
  • Restart: Daily mandatory
  • For LCD Displays

  • Brightness: 80% daytime, 40% night
  • Screensaver: Dim to 20% after 15 min
  • Backlight: Check for even illumination
  • Content: Standard rotation sufficient
  • Restart: Daily recommended
  • For Energy Efficiency

  • Scheduled brightness: -40% power consumption
  • Screensaver: -60% during inactivity
  • Motion detection: Active only when needed
  • Hardware: Energy Star certified displays
  • Network: Ethernet instead of WiFi (-10W)
  • For Longevity

  • Temperature: < 35°C environment
  • Humidity: 20-80%
  • Direct sunlight: Avoid
  • Cleaning: Weekly with microfiber cloth
  • Updates: Monthly security updates
  • Troubleshooting

    Display Turns Off

    Diagnosis:

  • Check power settings
  • Verify Fully Kiosk "Keep Screen On"
  • Android Doze Mode status
  • Solution:

    # Keep permanently awake
    adb shell svc power stayon true

    Burn-In Already Visible

    Immediate measures:

  • Reduce brightness to minimum
  • Run pixel refresh (if available)
  • Inverse colors for 24h
  • Shift content position
  • Long-term: Plan display replacement

    Overheating

    Symptoms:

  • Display dims automatically
  • Performance issues
  • Spontaneous restarts
  • Solutions:

  • Reduce brightness
  • Better ventilation
  • External cooling system
  • Change display location
  • Screensaver Not Activating

    Diagnostic steps:

  • Check timer setting
  • Disable motion detection
  • Debug touch events
  • Check JavaScript errors
  • Fix: Clear Fully Kiosk cache and reconfigure

    Was this article helpful?