FrameFi: Wireless Freedom for Digital Picture Frames
¶
FrameFi transforms a LILYGO T-Dongle S3 into a versatile adapter for any digital picture frame. It enables you to remotely manage your photo library via FTP or access the SD card directly in USB Mass Storage mode.
Development Version
This project is currently in a v0.X.X
development stage. Features and configurations are subject to change, and breaking changes may be introduced at any time.
TL;DR¶
-
Computer: Plug in the LILYGO T-Dongle S3 to a computer USB port while holding the button to put it into boot mode.
-
Flash: Execute the
flash.sh
script remotely from GitHub.
Security Risk
Running a script directly from the internet with bash -c "$(curl...)"
is a potential security risk. Always review the script's source code before executing it to ensure it is safe. You can view the script here.
-
Reboot the Device: Unplug the dongle from your computer and plug it back in to reboot it.
-
Wi-Fi Credentials: Connect to
FrameFi-<MAC>
access point and enter FTP, MQTT (optional), and Wi-Fi credentials.
Tip
If the captive portal does not open automatically, navigate to http://192.168.4.1 in your web browser to configure Wi-Fi.
-
Digital Picture Frame: Plug in dongle to digital picture frame.
-
Check Status: Check the status of the device.
- Mode Switching: A button or API call switches between FTP and USB Mass Storage modes.
FTP Mode
USB MSC Mode
- FTP Access: Connect to the device with an FTP client using the IP on the display and credentials set in
WiFiManager
to upload files.
- FTP Mode: Upload pictures to the dongle via FTP using
lftp
orscripts/sync.sh
.
- MQTT: Publish a message to the MQTT broker to turn the display on or off.
Features¶
- Dual-Mode Operation:
- FTP Server Mode: Wirelessly manage files on the SD card over your Wi-Fi network.
Warning
FTP is an insecure protocol. Only use this feature on a trusted network.
- USB Mass Storage (MSC) Mode: Connect directly to a computer for high-speed file transfers, treating the device like a standard USB drive.
- Connectivity & Remote Management:
- Dynamic Wi-Fi Setup: An initial captive portal (
WiFiManager
) allows for easy configuration of Wi-Fi, FTP, and MQTT credentials without hardcoding. - REST API: A built-in web server provides endpoints to check device status, switch modes, control the display, and restart the device.
- MQTT Integration: Publish device status and control the display via MQTT, enabling seamless integration with Home Assistant or other automation platforms.
- Dynamic Wi-Fi Setup: An initial captive portal (
- User Interface & Experience:
- Onboard LCD Display: A vibrant color display shows the current mode, network information (IP, MAC), and SD card usage with a visual bar graph. Styled with the Catppuccin color theme.
- Simple Physical Controls:
- A single button press toggles between FTP and MSC modes.
- A long press (3 seconds) resets Wi-Fi and device configuration.
- LED Status Indicator: An RGB LED provides at-a-glance feedback on the device's operational state (e.g., booting, connecting, FTP transfer).
- Performance & Storage:
- High-Speed SD Card Access: Utilizes the 4-bit
SD_MMC
interface for significantly faster read/write performance compared to standard SPI. - Persistent Configuration: Device settings are saved to the internal flash storage (
LittleFS
), surviving reboots and power cycles.
- High-Speed SD Card Access: Utilizes the 4-bit
- Developer Friendly:
- OTA Firmware Updates: Flash new firmware remotely using a simple script.
- Serial Monitor Debugging: Provides detailed operational logs over USB serial.
To Do¶
- Use hard-coded Wi-Fi credentials in addition to the captive portal. (#9)
License¶
Author¶
This project was started in 2025 by Nicholas Wilde.