# Device Identification — Support Overlay ## Problem When a customer calls support saying "my screen isn't working," we need to know WHICH of their devices we're talking to without relying on them to read a serial number off the back of a Pi. ## Solution Hidden overlay on the player that only appears when triggered. No customer sees it in normal operation. ## How it looks ``` ┌──────────────────────────────────────┐ │ │ │ │ │ │ │ │ │ ┌────────────────────────────┐ │ │ │ 🔍 DEVICE │ │ │ │ Main Lobby Pi │ │ │ │ Serial: 10000000a1b2c3d4 │ │ │ │ IP: 192.168.1.50 │ │ │ │ Playlist: Main Menu Loop │ │ │ │ Last sync: 30s ago │ │ │ │ Model: RPi 4 Model B 4GB │ │ │ └────────────────────────────┘ │ └──────────────────────────────────────┘ ``` ## Trigger Methods (build all 3) ### 1. Keyboard shortcut — Ctrl+I pressed 3 times in 2s On-site tech can trigger it without any tools. ```javascript var keyCount = 0, keyTimer; document.addEventListener('keydown', function(e) { if (e.ctrlKey && e.key === 'i') { keyCount++; clearTimeout(keyTimer); keyTimer = setTimeout(function() { keyCount = 0; }, 2000); if (keyCount >= 3) { showOverlay(); keyCount = 0; } } }); ``` ### 2. Remote API trigger I call this from the ops portal — device polls for the flag. ```javascript // Player polls every 10s setInterval(function() { fetch('/api/device/' + deviceId + '/status') .then(function(r) { return r.json(); }) .then(function(d) { if (d.identify) showOverlay(); }); }, 10000); ``` API endpoint: `POST /api/devices/:id/identify` (returns `{identify: true}`, auto-clears after 30s) ### 3. Boot-time flag For when support asks customer to reboot with a specific trigger: ```bash # On the Pi curl -s https://signage.itpropartner.com/identify.sh | bash -s # Rebooting with this arg causes the player to start in visibility mode ./kiosk.sh --identify ``` ## Overlay Behavior - **Auto-hides** after 30 seconds - Can be dismissed early with another Ctrl+I - **No click-away** — intentionally no close button (onsite tech might fat-finger) - Refresh/DST resets it back to hidden - **No data exfiltration** — shows only device metadata, no passwords or tokens ## Overlay HTML (skeleton) ```html ``` ## Implementation Status 📝 **Not yet built** — queued for player code phase