ShackScreen is a free launcher dashboard for Android (Android TV, Google TV, Fire TV and Android tablets) that turns the TV or tablet in your shack into a live radio dashboard, for people who love frequencies: hams, LoRa Mesh (Meshtastic and MeshCore) users, satellite chasers, and ADS-B and AIS listeners.
Live widgets across the top: space weather, POTA and DX spots, satellite passes, mesh messages, aircraft and ships nearby, and the weather. Your radio web applications along the bottom: OpenHamClock, ShackBoard, MeshMonitor, WebSDR, Broadcastify, Flightradar24 and more, full-screen with the remote.
All screenshots use the Demo profile that comes with every install, and each theme with the icon style suggested for it.
Home: Black theme, Colour icons. The clock and your call signs, widgets in the middle, your applications along the bottom
All applications: categories with counts down the side
Widgets: Aircraft Nearby, Weather (with the next five hours), DX Cluster
Widgets: Mesh Messages, Heard By SatNOGS, Satellite Passes
Widget: Weather
Ocean theme with Dark icons
Light theme with Light icons
Settings: profiles, widgets, location, appearance, launcher and updates
Get ShackScreen-<version>.apk from Releases.
- Fire TV: install the free Downloader app, allow it to install unknown apps, and open the APK's link.
- Android TV / Google TV: copy the APK with a file-transfer app (e.g. Send files to TV) and open it, or from a computer:
adb connect <tv-ip>
adb install ShackScreen-<version>.apkSpace weather and POTA spots show up straight away, from the public OpenHamClock.
Settings → Location → Pick on a map: the arrows move the map under the crosshair and OK sets it. Menu zooms, finds a place by name, or changes the map style. On a tablet, drag and tap. Or type a grid square (FN31pr) or latitude, longitude (40.7, -74.0).
Needed for Aircraft Nearby, Satellite Passes and Weather.
Map styles: Dark (default), OpenStreetMap, Streets, OpenTopoMap, Humanitarian and Satellite, all free. You can also use your own API key for CARTO, Google Maps (Map Tiles API), Mapbox, MapTiler, Thunderforest or Stadia Maps (Add a map with your API key), or any tile server by its {z}/{x}/{y} address (Add a custom map). Keys are encrypted and stay on the device.
ShackScreen starts with the Demo profile (N0CALL, WRXX000, Night Owl). Select the call signs next to the clock (or Settings → Profiles), then Add profile with your ham call sign, GMRS call sign and CB handle. Add as many profiles as you like, one for each operator in the shack, and switch between them from the same place. They stay on the device.
All applications → Add app: pick an app, then My own server and type its IP. The default port is added for you.
Pick them in Settings → Widgets. Press and hold a widget to move or remove it; select it to open the app its data comes from. Three fit across a TV, two on a portrait tablet, one on a phone. When nobody touches the remote for a minute, the dashboard pages through the rest on its own.
| Widget | Data from |
|---|---|
| Space weather: SFI, sunspots, K and A index, X-ray, HF band conditions | OpenHamClock or ShackBoard |
| POTA spots | OpenHamClock or ShackBoard |
| DX cluster spots | OpenHamClock |
| Contests, on now and coming up | OpenHamClock |
| DXpeditions on the air | OpenHamClock |
| Widget | Data from |
|---|---|
| Satellite passes over you: time, max elevation, downlink | OpenHamClock's orbital data, predicted on the device |
| Satellites just heard, with frequency and mode | SatNOGS |
| Widget | Data from |
|---|---|
| Mesh sources: Meshtastic, MeshCore, MQTT, connected or not | MeshMonitor |
| Mesh nodes heard today | MeshMonitor |
| Mesh messages | MeshMonitor |
In MeshMonitor's settings, create an API token and paste it into the MeshMonitor app in ShackScreen. The token acts as your user, so it only sees what you can see.
| Widget | Data from |
|---|---|
| Aircraft within 25 nm | your own tar1090 / readsb / dump1090, or ADSB.lol, adsb.fi |
| Ships nearby | your own AIS-catcher |
| Widget | Data from |
|---|---|
| Weather | Open-Meteo |
Each widget uses the first of your applications that can supply it, and moves on to the next if a server is down.
The home row holds your favourites, with All applications at the end. Press and hold an app (long-press OK on a remote) to move it, add it to the home row or take it off, edit it or delete it.
Ham radio
OpenHamClock | ShackBoard | APRS.fi | PSKReporter | RepeaterBook | POTA |
HamClock (your own) | DX Summit | Reverse Beacon Network | WSPR Rocks | KC2G Propagation | SOTA (SOTLAS) |
GMRS
GMRS Hub | myGMRS |
Satellites
N2YO | Heavens-Above | AMSAT status | SatNOGS | TinyGS | Satellite map |
ISS Tracker |
Mesh
MeshMonitor | MeshMap | MeshCore Map | Meshtastic node |
SDR & scanners
WebSDR | KiwiSDR map | Broadcastify |
Aviation
Flightradar24 | FlightAware | ADS-B Exchange | adsb.lol | adsb.fi | My ADS-B receiver (tar1090) |
Marine
MarineTraffic | VesselFinder | MyShipTracking | My AIS receiver (AIS-catcher) |
Weather
Windy | Lightning map | NOAA Space Weather |
Other
Other web page |
Names starting with "My" or "your own" are for your own server or device. Applications without their own icon yet show the generic one.
Some applications have several pages. GMRS Hub opens on its home page; Menu on the remote (or the Pages button on a tablet) switches to the Live Node Map, Hub Status, Groups and Get On GMRS Hub.
You can add your own pages to any application, such as more hub URLs or a hub status page for your own nodes: press and hold it, Edit, then Your pages for this application. To have a page as its own icon instead, add the application again with that address.
Each application has its own page size, from 50% to 150%, so a site laid out large fits more on the TV. GMRS Hub starts at 80%. Change it with Menu → Page size, or in the application's settings.
When you sign in to a site inside ShackScreen, it offers to save the login, like a password manager. Next time it fills it in and signs in for you.
- Kept for each profile: switching profile switches the saved logins, and the Demo profile has none of yours.
- Saved encrypted (AES-256-GCM) with a key kept in the Android Keystore, which never leaves it. Nothing is sent anywhere, except inside an encrypted backup if you set one up.
- Filled in only on the site it was saved for.
- If a saved login doesn't work, ShackScreen fills it in but stops pressing the sign-in button, so a wrong password isn't sent over and over.
- Add, change or delete logins, or turn off signing in automatically: press and hold the application, Edit, then Saved logins.
- Needs Android 6 or later.
- Applications you can also run yourself (OpenHamClock, WebSDR, KiwiSDR) ask Public site or My own server when you add them.
- MeshMonitor, tar1090, AIS-catcher and a Meshtastic node are always your own server.
- Type just the IP and the default port is added. You can add the same app more than once (say, the public OpenHamClock and the one on your shack Pi).
- Addresses and tokens are stored only on the device.
To reach servers at home from a TV somewhere else, use a VPN such as Tailscale: no port forwarding, encrypted, works behind NAT.
All applications → Request an app… opens an app request here. On a TV, scan the QR code with your phone. The app list lives in catalog.json and refreshes from this repo, so new applications arrive without a new APK.
- Settings → Appearance: Black (default), Midnight, Ocean, Forest, Plum, Ember, Slate, Light, or follow the TV.
- Every application shows its own icon, fetched from the server you point it at and made square like a phone app icon. A site without a good one gets a coloured tile for its category.
- Settings → Appearance → Application icons: Colour, Dark, Light, or match the theme. The style that suits your theme is marked suggested: Colour on Black, Dark on the tinted themes (Midnight, Ocean, Forest, Plum, Ember, Slate), Light on Light.
- ShackScreen's own icon set lives in
icons/(512 × 512 PNG, in colour, dark and light). The app loads it from this repo, so new icons arrive without an update. Want to design one? See Contributing Icons. - All applications lists them by category, with a count for each, like a TV channel guide.
- To change an icon: press and hold the application, Edit, then Icon. Choose a symbol, an image from a web address, or an image on the device (tablets and TVs with a file picker).
- Have a better icon for everyone? Icon → Suggest a new icon on GitHub opens an icon request; on a TV, scan the QR code with your phone.
| Remote | Touch | |
|---|---|---|
| Open an app or widget | OK | tap |
| Choose what a widget opens | hold OK → Opens | press and hold → Opens |
| Move, remove, edit | hold OK | press and hold |
| Move a widget | arrows, then OK | on-screen arrows, then tap |
| Back a page / home | Back | back |
| Pages, page size, reload | Menu | Pages button |
An app that can't be reached is retried every 30 seconds, and the screen stays on while one is open.
ShackScreen is a launcher dashboard: it can also be the device's home screen. This is off by default.
Settings → Launcher → Use ShackScreen as a launcher:
- Android's Default home app choice opens; pick ShackScreen. Home on the remote then opens the dashboard, and Back stays on it.
- All applications gets an Android apps category: every installed app, plus Android settings. Press and hold an app to add it to the home row next to your radio applications.
- Home screen shows which launcher is in charge, and switches back to the TV's own.
- Turning launcher mode off returns to the TV's own home screen.
Some devices (Fire TV, newer Google TV) don't let you change the home screen; the Android apps list still works there.
Settings → Backup keeps an encrypted copy of your setup on a cloud service, a server on your own network or a USB drive, and puts it back on a new or reset TV.
- What's in it: your profiles and each profile's saved logins, your applications (with their addresses and tokens), widgets, location, theme, map keys and custom icons.
- Encrypted on the TV with a passphrase you choose (PBKDF2, then AES-256-GCM), before it's sent. The service only stores a file it can't read. Write the passphrase down: nobody can recover it, and you need it to restore.
- Services:
| Service | How you connect |
|---|---|
| Google Drive | Scan a QR code with your phone and enter the code shown on the TV. Saved in a ShackScreen folder; ShackScreen can only see its own files. |
| Dropbox | Scan a QR code, allow ShackScreen, then type the code Dropbox shows. Saved in Apps/ShackScreen. |
| S3-compatible | AWS S3, Backblaze B2, Cloudflare R2 or MinIO: an endpoint, bucket and access key. Use a key that can only reach that bucket. |
| WebDAV | Nextcloud, Synology, ownCloud or any WebDAV server: a folder address, user name and password. |
| USB drive | Save a backup to a USB drive and Restore from a USB drive: no account and no network. Where the device has a file picker you choose the folder; otherwise it goes in Android/data/com.maxhayim.shackscreen/files/ShackScreen on the drive. |
-
No internet needed: a USB drive, or a WebDAV or MinIO server on your home network (a Synology, a Nextcloud box, a Raspberry Pi), keeps everything inside your network. Plain
http://192.168.x.xaddresses work. Together with self-hosted applications (MeshMonitor, OpenHamClock, tar1090, AIS-catcher), ShackScreen can run entirely offline from the internet. -
USB backups are saved with the date in the name, so older ones are kept. Copy them somewhere safe: Android deletes ShackScreen's folder on the drive if the app is uninstalled while the drive is plugged in.
-
Back up every day is on once a service and passphrase are set. Back up now does it straight away.
-
Restore from backup: choose the same service, enter the passphrase, and confirm. It replaces what's on the TV, then reopens the dashboard.
-
Sync with other TVs: turn it on in Settings → Backup on each TV, with the same service and passphrase. Profiles, saved logins, applications (with their tokens), map keys and the location then stay the same everywhere: a change on one TV reaches the others when Settings closes or within 15 minutes. Each TV keeps its own theme, icon style, widgets, launcher mode and the profile in use. Changes merge item by item; if the same thing changed on two TVs, the later change wins, and a deletion on one TV deletes it everywhere. A TV joining for the first time takes what the others have and adds anything only it has. It uses its own encrypted file on the service (
shackscreen-sync.ssb), so your backup is untouched, and it works over a home-network WebDAV or MinIO server without the internet. -
Sign-ins to the service, and the passphrase, are kept encrypted on the TV only. Stop backing up forgets them; the backup stays on the service.
-
Needs Android 6 or later.
Settings → Updates:
- Off — never contacts GitHub
- Tell me (default) — checks GitHub Releases daily and shows an Update button
- Install automatically — downloads and installs new versions. Silent on Android 12+ once ShackScreen has updated itself once; one confirm click on older Android and Fire TV.
An update is installed only if it's ShackScreen, newer, and signed with the same key:
a4b212f1b47635da599640c4c61d431b98671833b67f36b97df3a748ef5e8a32 (SHA-256)
- Android TV, Google TV or Fire TV with Android 5.1 or newer (or an Android tablet or phone)
- Internet
- Your own servers and SDR receivers: optional
No Google account.
No root.
No subscriptions.
Needs JDK 17 and the Android SDK (platform 35). Turn on developer options and network debugging on the TV, then:
TV_HOST=192.168.1.50 ./build-and-install.shWithout TV_HOST it only builds app/build/outputs/apk/release/app-release.apk.
Google Drive and Dropbox backups need your own OAuth keys: see docs/BACKUP-KEYS.md. Without them, the build offers S3 and WebDAV only.
This project is licensed under the MIT License.
See the LICENSE file for details.
Full license text: https://opensource.org/licenses/MIT
Application names and the logos in the application icons are trademarks of their respective owners, used only to identify each service (some resized, recoloured or simplified to fit the app); ShackScreen is not affiliated with or endorsed by them, and the MIT License doesn't cover them. See TRADEMARKS.md.
Includes the Outfit font (SIL Open Font License, included in the LICENSE file) and Project Nayuki's QR Code generator (MIT).
Pull requests are welcome. Open an issue first to discuss ideas or report bugs. See CONTRIBUTING.md; adding an app to the menu is usually one entry in catalog.json.
- Inspired by CleanYourTV
- OpenHamClock by K0CJH
- ShackBoard
- MeshMonitor built by Yeraze
- SatNOGS by the Libre Space Foundation
- ADSB.lol and adsb.fi (ODbL)
- AIS-catcher
- Open-Meteo








