wesbos

photo-frame-dashboard

Getting ADB, root, backups and custom apps onto locked-down Android photo frames (Skylight Calendar, BIUFRAME)

by wesbos

Python

Python46.1%
JavaScript20.6%
Shell12.7%
CSS8.7%
Java5.6%
PowerShell3.8%
Other2.5%

Commit activity

Last 12 weeks · 385 commits

Full graph →

Community health

3 of 6 standards met

Community profile →
57
✓README✓License○Contributing○Code of Conduct○Issue Template✓PR Template

Recent PRs & issues

Active · Last activity 1d ago
See all on GitHub →
derBlitzen

New device: YENOCK ZN-DP1501 15.6" Frameo. It has the same SSA RK3326 board and partition map as the Akimart ZN-DP1002, but older firmware (), a 1920x1080 panel and WebView 61. Tested on one unit from macOS (Apple silicon). Adds and a row in . New findings: This unit's translates LF to CRLF, so a raw stream is corrupt: a 4 KiB read came back as 4,197 bytes. Piping through on the frame gives exact bytes. The full logical backup (16 regions, 3,414,687,744 bytes) was verified region by region against the frame's own and a gzip readback. WebView 61 → 138 in , following the FRAME156 record. This time the stock tree's hashes were recorded before the swap, so the undo can be checked against them. Android reported 138.0.7204.63 after the reboot, and the kiosk rendered Home Assistant. The kiosk works as Home in portrait after changing to . That's a local edit, not part of this PR. Disabling Frameo and both updaters survived a reboot. The PIR driver is present but never triggered: Its pin (gpio-121) stayed high and the IRQ count stayed 0 across three walk tests, one of them with the screen off. The HAL proximity sensor that Frameo's motion feature uses has no backing device. Most likely no sensor is fitted on this unit, which is a guess and is marked as one in the doc. Boot screens: I recorded where the boot logo and boot animation live, including the path in . Nothing was changed. Private data removed: serial, Frameo peer ID, network details. Firmware strings and the boot partition hash are included. 🤖 Generated with Claude Code

derBlitzen · 1h ago
Fragggy

Adds a write-up for a 21.5-inch Frameo frame on the SSA RK3326 board (firmware , fingerprint ), plus a device-index row. Host: Linux (x86_64), USB-A to USB-C data cable. What's new vs. the closest documented frames This is the same SSA RK3326 family as the Akimart ZN-DP1002 and Pastigio FRAME156, but a distinct build: Extra partition (rknand0p12, 36 MiB) between and , shifting every later partition by one. Full 17-partition NAND map included — do not reuse the Akimart offsets. accepts both and (the Akimart only accepts ). streams LF→CRLF and corrupts binary (a 4096-byte read arrives as 4197 bytes); + is byte-exact. is blocked (). USB does not reliably re-enumerate after ; a full power-cycle + re-plug was needed on this unit once. CA store has ISRG Root X1, so Let's Encrypt loads once NTP syncs the clock; WebView 106 renders Home Assistant with no swap. Setup performed (no flash writes) Disabled + , installed the kiosk as HOME, set a dashboard URL, disabled — all reversible, undo commands listed. Verified the frame boots into the kiosk after reboot. Boot partition SHA-256: .

Fragggy · 3h ago
codyzu

What this adds Adds Dayframe to , with one row and a 1280x800 synthetic-data screenshot in . Wes's dashboard and Android-frame research were the starting point for this household project. Dayframe runs on a Dragon Touch Classic10 and focuses on French morning weather, private family photos and scheduled Morning/Photos/Night modes, with responsive administration from a phone. The stack is public for others building something similar: Astro, TypeScript and UnoCSS for the responsive web dashboard. Cloudflare Workers Free, KV and SQLite Durable Objects for private photos, persisted settings and display credentials; Cloudflare Access for administrators. Open-Meteo forecasts, locally bundled Meteocons and client-side WebP optimization/duplicate review. A separate GeckoView kiosk on Android 6/ARMv7, retaining the shipped system WebView. The project keeps a €0 recurring-infrastructure-cost requirement and records its device-specific acceptance limits. The screenshot is a browser preview with synthetic data, not evidence of completed hardware or extended-stability testing. The public repository retains attribution to this project and third-party notices for its fonts/icons. The authentication findings and rendering guidance are separate contributions in #216 and #217; this PR only shares the community build. Tested on The linked project's Classic10 installation has owner-confirmed fullscreen display, protected-photo access, physical maintenance and native startup/recovery within its documented operational scope. Extended stability and other recorded acceptance checks remain open. For this documentation/image PR: Visually reviewed the synthetic Morning screenshot: no personal photographs, household appointments, credentials, browser chrome or device/network identifiers. Verified PNG dimensions, all chunk checksums, absence of text/EXIF metadata, and byte-identical copying from the local synthetic browser-test output. Checked the Markdown image path, accessible alt text, public repository link, absence of a duplicate entry, and . No new device actions, app changes or deployment; no application build needed for a community-list entry. Checklist Privacy [x] No serials, MAC addresses, eMMC CIDs, IMEIs, Wi-Fi names/passwords, public IPs, tokens or emails [x] No firmware dumps, vendor APKs, vendor boot images or other vendor binaries [x] No whole-disk hashes [x] Image contains synthetic weather/UI only; no faces, homes or personal photos Safety for people who run this [x] No downloads or installation instructions added; not applicable [x] No , downloaded-code evaluation or obfuscated code [x] No raw-disk/flash writers or device scripts; not applicable [x] No device change to undo; not applicable [x] No scripts or outbound transfers added; not applicable [x] No hidden text or instructions aimed at AI agents beyond normal how-to steps Repo fit** [x] Checked current main and open PRs; no Dayframe community entry exists [x] Adds one row to the existing community list and one optional screenshot in its image directory; no separate guide tree

codyzu · 8h ago
feuriosays

Summary Added a standalone entry for the Akimart ZN-DP013 (32GB variant) currently shipping via Amazon India. Kept the generic 15.6" placeholder intact to preserve past community logs while providing a brand-specific path for builders in India. Variant Diagnostic Notes for the Community: Backdoor Panels: Standard tapping on the version array does nothing. Users must select Join the Beta Program under Settings -> About to expose the hidden ADB toggle. Kiosk Package Identifier: Flashed explicitly as rather than the common white-label strings. WebView Capabilities: Ships natively with a robust AOSP Chromium framework layer. Wi-Fi Persistence Daemon Link: Survived power drops smoothly over local DHCP networks using root-level property sets (). What this adds Tested on Checklist Privacy [ ] No serials, MAC addresses, eMMC CIDs, IMEIs, Wi-Fi names or passwords, public IPs, tokens or emails [ ] No firmware dumps, vendor APKs, vendor boot images or other vendor binaries [ ] No whole-disk hashes (boot image and firmware hashes are fine) [ ] Images show no faces, homes or personal photos Safety for people who run this [ ] Every download is from an official source and pinned by SHA-256 [ ] No , of downloaded content, or obfuscated code [ ] Raw-disk and flash writes check the target (exact size, identity) and the current contents before writing, and read back afterwards [ ] Undo steps are documented [ ] Scripts send nothing off the machine, other than documented downloads [ ] Docs contain no hidden text or instructions aimed at AI agents beyond normal how-to steps Repo fit** [ ] I checked open PRs and issues for the same device or finding [ ] Device findings go in the device's doc in . For a PF1007L, this is pf1007l-start-here.md or its linked guides, not a separate tree.

feuriosays · 9h ago
Structured data for AI agents

Repository: wesbos/photo-frame-dashboard. Description: Getting ADB, root, backups and custom apps onto locked-down Android photo frames (Skylight Calendar, BIUFRAME) Stars: 1386, Forks: 249. Primary language: Python. Languages: Python (46.1%), JavaScript (20.6%), Shell (12.7%), CSS (8.7%), Java (5.6%). License: MIT. Open PRs: 20, open issues: 13. Last activity: 1d ago. Community health: 57%. Top contributors: wesbos, shindakun, ejosowitz, frankhinek, kbhuyan, aoeu10, clyons, devin-ai-integration[bot], Jimbo-Coder, alexolivier and others.