mirror of
https://github.com/usetrmnl/trmnl-android.git
synced 2026-04-29 13:35:26 -07:00
bc9db7ecfb0e2edb1ee87c1371d4c05ac8aa78e6
Android - TRMNL Display Mirror 🪞
A simple app to mirror existing TRMNL's content to your Android devices like Phone, Tablet, e-Ink Display.
Application Overview
The TRMNL Display Mirror app serves as a digital display mirror for TRMNL e-ink devices. The app connects to the TRMNL API, fetches display data, and shows it on Android devices.
Key Features
- Token-based authentication with the TRMNL/BYOS API
- Automatic periodic image refresh from the server
- Adaptive refresh rate based on server response config
- Manual refresh capabilities and option to load next playlist image
- Support for custom server URLs for your BYOS installations
- Refresh history logging for tracking & validation
📜 Preconditions
You must have a valid access-token or ID (MAC Address) to access the screen content using TRMNL server API.
Here are some of the known ways you can get access to the access-token.
- You must own a TRMNL device with "developer edition" add-on purchased
- You have purchased their BYOD product.
- You have self-serve installation of TRMNL service using BYOS
How to try
⬇️ Install the APK on your Android device.
- Configure the API
access-tokenorID(MAC Address) in the app settings - Save the token and keep the app always-on with the TRMNL's display image showing.
Download Release
Check installable APK from Assets in latest release.
📱 F-Droid
The app will soon be available on F-Droid, providing a free and open source Android app repository.
- Add the F-Droid repository to your F-Droid client
- Search for "TRMNL Display Mirror"
- Install the app
Limitations 🚧
- Right now, screen lock using Google's recommended
FLAG_KEEP_SCREEN_ONis not working on e-Ink tablet due to strict battery optimization. So, if you plan to keep the screen on indefinitely, you should set that in the device settings.- On normal Android tablet or device, screen wake lock should work. However it's not recommended to use it without device being always plugged-in 🔌.
- Currently the app uses Android WorkManager to schedule refresh job and it has minimum interval of ⏰
15 minbetween jobs. So, if your TRMNL is setup to refresh every5 min, you will not see it refresh until15 minis elapsed.- This can be overcome by using some clever logic or not using
WorkManager. However, this is a OS optimized and reliable way to refresh image periodically. - Imagine a user running the app on an Android phone or tablet. When the app is in the background (e.g., the screen is off), it avoids unnecessary image refresh calls, conserving the user's battery. These optimizations are built into
WorkManager.
- This can be overcome by using some clever logic or not using
Android Development & Contribution Guide
See CONTRIBUTING.md for more details on how to get started and contribute to the project.
Related References 📖
Languages
Cython
81.8%
Kotlin
18%
Shell
0.2%