Repository navigation
Easiest: the web installer
➡ Open the Web Installer
Use Chrome or Edge on a computer, plug the frame in by USB and click the button for your display:
| Installer button | Build file | Display |
|---|---|---|
| 1. CYD | cyd |
ILI9341, normal colours: the standard CYD and many "2 USB" boards. Try this first. |
| 2. CYD2 | cyd2usb |
ST7789: "2 USB" boards with an ST7789 display |
| 3. CYD2 alternate | cyd2b |
ILI9341, inverted colours |
| 4. 3.5" CYD | cyd35 |
ST7796 480×320: the 3.5-inch CYD (touch calibration on first start) |
| 5. Freenove 4" S3 | freenove4 |
Freenove FNK0104S 4.0-inch ESP32-S3 display, ST7796 480×320, capacitive touch (WiFi is set up on its own screen) |
| 6. Freenove 2.8" S3 | freenove28 |
Freenove FNK0104B/AB 2.8-inch ESP32-S3 display, ILI9341 320×240, capacitive touch (answers at photoframe28.local) |
| 7. 4.0" CYD | cyd40 |
Freenove ESP32 Display 4.0-inch (plain ESP32, "FNK0103S" docs), ST7796 480×320, resistive touch (touch calibration on first start) |
Wrong button = white screen or a negative picture. Nothing is damaged, just try another one.
If only the colours are off, you don't need another file: open the frame's web page, go to
Settings and tick Swap red and blue (reds look blue) or Invert colours (negative picture).
Files in this release
*-factory.bin: the complete image. This is what the installer flashes (offset 0).
It erases the saved WiFi login and settings, so you set up WiFi again. Photos on the SD card are never touched.
Or:esptool.py --chip esp32 write_flash 0x0 CYD-PhotoFrame-cyd-factory.bin*-update.bin: firmware only, for a frame that is already running: open
http://photoframe.local/updateand upload it. Keeps your WiFi login and settings.
What's new in 4.7
- New board: the 4.0-inch CYD (Freenove ESP32 Display 4.0", plain ESP32 with resistive touch; installer
button 7, buildcyd40). Same pins as the 3.5-inch CYD, ST7796 480×320. New and lightly tested. - Photos smaller than the screen are now enlarged to fit it (up to 4 times), instead of being shown small
with black borders. This applies to every board; a 320×240 photo now fills a 480×320 screen. - Updating from 4.6.3: upload the
*-update.binfor your build on the frame's/updatepage. That keeps
your WiFi and settings.
What's new in 4.6.3
- Chrome no longer offers to translate the frame's web page. The page already has its own EN / ES
switch (it follows the frame's language), but Chrome saw Spanish text, translated it to English and
left the pop-ups in Spanish. The page now tells Chrome not to translate it. - Updating from 4.6.2: upload the
*-update.binfor your build on the frame's/updatepage. That keeps
your WiFi and settings.
What's new in 4.6.2
- Touch calibration on the CYD boards keeps your best attempt. The calibration used to save only if all
five touches agreed within 12 pixels; on a noisy resistive panel that could fail every time, so the frame
asked again at every start and the WiFi picker used a rough guess and was hard to tap. It now keeps the
best of three tries (within 30 pixels). A clean calibration is still preferred. - Updating from 4.6.1: upload the
*-update.binfor your build on the frame's/updatepage. That keeps
your WiFi and settings.
What's new in 4.6.1
- Fixes the WiFi picker showing "no networks" until the frame was powered off. The ESP32 WiFi code
gives a scan only 6 seconds to finish, but a scan takes 6-7 seconds, so scans kept failing and Rescan
did nothing (TouchWifiProvisioner 1.6.8). Every board. - New board: Freenove FNK0104B/AB 2.8-inch ESP32-S3 (installer button 6, build
freenove28):
ILI9341 320×240 with capacitive touch, same features as the 4-inch. It answers at
http://photoframe28.local. New in this release and lightly tested: the WiFi picker was seen working on a
real board; the rest follows the 4-inch build. - Updating from 4.6: upload the
*-update.binfor your build on the frame's/updatepage. That keeps
your WiFi and settings.
What's new in 4.6
- WiFi button on the address screen. Touch the middle of the picture to show the IP / hostname screen and
tap WiFi: the network picker opens with no time limit and a Cancel row. Your saved networks are kept;
joining a new one restarts the frame on it. (Uses TouchWifiProvisioner 1.6.4.) - The address screen on a 2.8-inch board stood up in portrait now fits (smaller QR code).
- Updating from 4.5.x: upload the
*-update.binfor your build on the frame's/updatepage. That keeps
your WiFi and settings.
What's new in 4.5.4
- Fixes motion sleep on the Freenove 4-inch board. On its chip (ESP32-S3) the WiFi radio does not give the
detailed signal data the CYD boards use, so motion was never detected. The Freenove now watches how its
WiFi signal strength changes instead. This is coarser than on the CYD boards: it reacts best to people
moving near the frame or between it and the router. The CYD boards are unchanged. - Updating from 4.5.3: upload the
*-update.binfor your build on the frame's/updatepage. That keeps
your WiFi and settings.
What's new in 4.5.3
- Motion log (every board): under About on the web page, a short log shows when the screen went to
sleep and when it woke, and why (motion, touch or the BOOT button). It keeps the last 20 events, has a
Clear log button, and starts empty again when the frame restarts. - Updating from 4.5.2: upload the
*-update.binfor your build on the frame's/updatepage. That keeps
your WiFi and settings.
What's new in 4.5.2
- Motion sleep (experimental, every board): the screen can turn off when nobody is around and wake when
someone moves or touches it. It uses the frame's own WiFi signal, no extra hardware. Off by default; turn
it on under Settings on the web page, where a live score helps you tune the sensitivity. - The address screen now also shows the WiFi network the frame is connected to.
- The Freenove 4-inch frame is now http://photoframe4.local, so it can run beside a CYD frame.
- Updating from 4.5.1: upload the
*-update.binfor your build on the frame's/updatepage. That keeps
your WiFi and settings.
What's new in 4.5.1
- Fixes a crash on the 2.8-inch and 3.5-inch CYD boards (
cyd,cyd2usb,cyd2b,cyd35): a photo narrower
than the screen (for example 270 pixels wide on a 320 pixel screen) could make the frame restart each time
it was shown. The frame now draws such photos correctly. The Freenove was not affected. - Updating from 4.5 or 4.4: upload the
*-update.binfor your build on the frame's/updatepage. That keeps
your WiFi and settings.
What's new in 4.5
- The web page is now in English and Spanish. It opens in the language the frame is set to (the one
chosen on the frame's own WiFi screen), and the EN / ES switch in the corner changes the frame's
language too, so both stay together. Translations may need polishing; corrections are welcome. - There is a Spanish README at the bottom of the project page.
- Nothing else changed: updating from 4.4 with the
*-update.binkeeps your WiFi and settings.
What's new in 4.4
- Screen rotation (a setting on the web page; the frame restarts when you change it):
- Every board: 0, 90, 180 and 270 degrees (0 is the usual landscape), so the frame can stand up
for portrait photos or have its USB port on any side. - The CYD boards ask you to touch the calibration targets the first time you use a new orientation (each
orientation keeps its own calibration). The Freenove needs no extra calibration. - The web page's upload Resize option follows the frame's real size in the current rotation.
- Every board: 0, 90, 180 and 270 degrees (0 is the usual landscape), so the frame can stand up
- WiFi is set up on the frame's own screen on every board (the CYD builds now use the same picker as
the Freenove). TheESP32_APhotspot is gone: tap your network and type the password on the on-screen
keyboard. Hidden networks can be typed in, and the frame remembers several networks and joins the
strongest one it knows. A frame updated from 4.3 or older keeps its saved WiFi. - English and Spanish: the on-screen setup asks for a language the first time (a frame that
already has WiFi saved keeps working as before). Translations may need polishing; reports welcome. - Touch calibration on the 2.8-inch boards: the first start asks you to touch five crosshairs
(the 3.5-inch board keeps its four-corner calibration). Recalibrate touch on the web page works
on every CYD. - Tested on real boards:
cyd2usb,cyd(ILI9341), the 3.5-inchcyd35(rotation, portrait photos and
the WiFi picker, by a user) and the Freenove 4-inch (all four rotations, swipes, portrait photos, WiFi
and language screens). Portrait on the 2.8-inch boards is new in this release and has had little testing. Not tested on a real board:cyd2b. Reports are welcome in the issues. - Updating a frame that already runs 4.3 or newer: upload the
*-update.binfor your build on the
frame's/updatepage. That keeps the saved WiFi and settings.
What's new in 4.3
- New board: Freenove FNK0104S 4.0-inch ESP32-S3 (installer button 5, build
freenove4):
ST7796 480×320 screen with capacitive touch. WiFi is set up on the frame's own screen
(no hotspot), the SD card runs over SDMMC, sound plays through the on-board codec, and photos
are scaled to fill the screen (small photos are enlarged too). Sound uploads are checked by
their real format, so a renamed M4A is refused instead of playing silence. Flash it with
installer button 5, or uploadCYD-PhotoFrame-freenove4-update.binon the/updatepage of a
frame that is already running. Use a finger: the screen ignores a plastic stylus. - The CYD firmware is unchanged from 4.2 apart from the version number. Installer
buttons 1-5 all flash 4.3. Confirmed working on the 3.5-inch CYD (issue #3).
What's new in 4.2
- Watchdog: if the main loop ever hangs for 30 seconds, the frame restarts itself instead of freezing.
- Last restart reason in the web page's System panel (power on, crash, watchdog, brownout...),
so crashes can be spotted without a serial cable. - New
cyd35build for the 3.5" CYD (ST7796, 480×320). Its touch controller shares the
display's SPI pins, which froze the display in earlier versions (issue #3). Touch now goes
through TFT_eSPI, with a one-time four-corner calibration on first start (and a
Recalibrate touch button in the web page's System panel).
Confirmed working on a real 3.5" board (issue #3). Flash it with installer button 4, or upload
CYD-PhotoFrame-cyd35-update.binon the/updatepage of a frame that is already on WiFi. - New setting: Invert colours (Settings), next to Swap red and blue.
What's new in 4.1
- New setting: Swap red and blue (Settings). Fixes the colour order on panels wired the other way round.
- Display set-up hardened: the panel-ID read at boot can no longer affect the colour order.
4.0 (major rework)
SD card access is thread-safe, uploads/deletes are reliable, new single-page web interface
(drag-and-drop upload with in-browser resize, thumbnails, settings), touch controls, night mode,
MP3 support, large photos scaled to fit, works without WiFi. See the README.