A simple app to mirror existing TRMNL's content to your Android device (preferably e-ink display).
You must have a valid access-token
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
β¬οΈ Install the APK on your Android device.
- Configure the API
access-token
in the app settings
i. π NOTE: Right now onlyhttps://trmnl.app/api/
service API is supported, custom service URL support will be added later - Save the token and keep the app always-on with the TRMNL's display image showing.
Check installable APK from Assets in latest release.

- Right now, screen lock using Google's recommended
FLAG_KEEP_SCREEN_ON
is 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 min
between jobs. So, if your TRMNL is setup to refresh every5 min
, you will not see it refresh until15 min
is 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.
- This can be overcome by using some clever logic or not using
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.
- Token-based authentication with the TRMNL API
- Automatic periodic image refresh from the server
- Adaptive refresh rate based on server response config
- Manual refresh capabilities
- Image caching for offline viewing
- Refresh history logging for tracking & validation
This guide will help you get started with the TRMNL Display Mirror Android application development.
See technical details on the project
- Android Studio Meerkat or latest Android Studio (https://developer.android.com/studio)
- JDK 17+
- Git
git clone https://github.com/usetrmnl/trmnl-android.git
cd trmnl-android
- Start Android Studio
- Select "Open an existing project"
- Navigate to and select the cloned repository folder
- Wait for the Gradle sync to complete
- Build the project by selecting Build > Make Project or pressing Ctrl+F9 (Windows/Linux) or Cmd+F9 (macOS)
- Connect an Android device or start an emulator
- Click the Run button (green triangle) in the toolbar
- Select your target device and click OK
The app uses a modern Android architecture with the following components:
- UI: Jetpack Compose with Circuit UI architecture
- Background Processing: WorkManager for scheduled image (re)loading
- Networking: Retrofit and OkHttp for API communication
- DI: Dagger with Anvil for dependency injection
- Data Storage: DataStore for preferences and token storage
- Main TRMNL Mirror Display visualization in
TrmnlMirrorDisplayScreen
- Settings management via
AppSettingsScreen
- Image refresh log/history in
DisplayRefreshLogScreen
- Background refresh scheduling with
TrmnlWorkScheduler
&TrmnlImageRefreshWorker