> ## Content Index
> Fetch the complete content index at: https://bjornsblog.nl/llms.txt
> Use this file to discover other available public pages before exploring further.

# Giving an old Android photo frame a second life with Codex
- URL: https://bjornsblog.nl/android-photo-frame-second-life-codex/
- Published: 2026-10-26T18:24:38.000Z
- Updated: 2026-10-26T18:24:38.000Z
- Description: I used Codex and ADB to turn a forgotten Android photo frame into a native home dashboard, without writing a line of code myself.
- Author: Björn
- Tags: Projects, Hardware, Software

I found an old Denver Frameo photo frame in a box of forgotten electronics in my garage. It had probably been there for years. The screen still worked, it had Wi-Fi and it was already designed to stay switched on, so throwing it away seemed a bit of a waste.

I thought it might make a useful home dashboard. There was only one problem: I knew almost nothing about the hardware, its Android installation or how to build an app for it. This seemed like a good project for Codex.

## Finding out what was inside

I connected the frame to my Mac and asked Codex to investigate it through Android Debug Bridge (ADB). It identified the device as a Denver PFF-1027BLACK, internally called PFF-1037, running Android 6.0.1 on a Rockchip RK312x processor.

Before changing anything, I used Codex to make backups of the important Android partitions, the original Frameo app and its data. The copies were checked against the originals on the device. This made the experiment a little less likely to end with a black screen and some awkward explaining about why I had broken a perfectly good photo frame.

## Building the dashboard without writing code

I then described what I wanted: a clear full-screen dashboard with the time, our calendars, the weather, rain for the next two hours and the output of the solar panels.

Codex created a native Android app called **FrameDash**. I did not write a line of code myself. I looked at the result on the actual frame, explained what I liked or what needed changing, and let Codex adjust the app, run its tests and install the next version through ADB.

That back-and-forth process worked surprisingly well. Details such as text sizes, touch targets, graph labels and the amount of information on screen are difficult to judge on a computer. Seeing each version on the old display made it easy to say things like “make this graph larger” or “show the calendar name as well” and have Codex work out the implementation.

![The custom FrameDash home dashboard showing the time, calendar, solar output, weather forecast and rain radar](https://bjornsblog.nl/content/images/2026/10/codex-clipboard-647c717a-e2a6-48b1-9b70-0f4369491e6c.png)

FrameDash running on the old photo frame in my kitchen.

## What it does now

The finished app runs directly on Android 6\. It does not need a Raspberry Pi, cloud dashboard or external web server. The frame itself retrieves weather information from Open-Meteo, rain data from Buienradar, calendar appointments through iCloud CalDAV and solar data from a HomeWizard meter on my local network.

The four sections can be opened for more detail. The calendar shows appointments from multiple calendars with their own colours. The weather screen combines the hourly forecast with the two-hour Buienradar graph. The solar screen keeps a local history of the day's production.

![FrameDash calendar showing a monthly overview and appointments from multiple calendars](https://bjornsblog.nl/content/images/2026/10/agenda-detail.png)

The calendar combines a monthly overview with appointments from the selected day.

![FrameDash weather page showing current conditions, the Buienradar graph and an hourly forecast](https://bjornsblog.nl/content/images/2026/10/weer-detail.png)

Current weather, the next twelve hours and a rather more urgent two-hour rain graph.

![FrameDash solar page showing current power, daily energy and a production graph](https://bjornsblog.nl/content/images/2026/10/solar-detail.png)

The solar page reads a HomeWizard meter and keeps the day's graph locally.

The dashboard can be configured on the frame itself or from another device through a small password-protected settings page hosted by the frame. I can change the location, widgets, brightness, calendars and solar meter without rebuilding the app.

![FrameDash settings page for location, display and remote configuration](https://bjornsblog.nl/content/images/2026/10/instellingen.png)

The settings can be changed on the frame or through its local web interface.

FrameDash can start automatically after boot and can be selected as the Home app. I kept the original Frameo software installed, so I can still switch back if I want to.

Not every old Android device will offer usable ADB access, and this particular frame was unusually cooperative. But the interesting part for me is that I did not need to understand its hardware or write an Android application myself. I only needed an idea, a USB connection and quite a few rounds of “almost, but can you change this?”

The frame that was gathering dust in my garage now sits in the kitchen showing information we actually use. Not bad for something I had already forgotten I owned.