An old budget phone can serve as a smart home dashboard, but it shouldn’t run a media server. At least I thought so until I started wondering what else old Android could do. So I tried to run the Jellyfin server.
The phone in question is the Realme C11 with 4GB of RAM running Android 11. It has no business serving movies, but I figured its Unisoc processor could handle streaming video if it didn’t need to be saved. The media library is on my home server and the phone accesses it via an SMB share over the network.
Jellyfin works on the phone, and everything else stays where it is now. Here’s how I put this together and where the pushback is.
A budget phone is enough
Android 11 and provided root access
Before starting, I root my phone. Root access is more important than it sounds. Since the phone doesn’t store any of the files, it should treat my network share as a regular folder, and only root access allows the phone to write and save the network share configuration. After all, who wants to fill up a budget phone with movies and shows?
Everything runs inside ThermoxA terminal app that provides a small Linux environment for Android. That way, I didn’t need to flash a custom ROM or flash Android. I removed the sim card and uninstalled as many apps as possible to avoid interruptions like calls, notifications and background load.
Termux manages the Jellyfin server
The older Jellyfin release is compatible with the phone
There are many Jellyfin client apps on Android, but no official server app. That’s why Termux does the heavy lifting. However, you need to know the Android version and processor type to determine the correct Jellyfin server version.
My phone’s 32-bit processor meant I needed a server for 32-bit ARM architecture. Jellyfin dropped 32-bit ARM support in 10.11, so new releases are out. So I chose the actual Jellyfin build from the archives that still supports 32-bit ARM devices. I had to dig it up Jellyfin Archive to find the correct build to download. I then installed the ffmpeg and libicu libraries before installing the Jellyfin server and Jellyfin webpacks.
In Termux I used a tool called root-distro To install Debian Linux environment, then install Jellyfin server there. Once the server was up and running, I opened the phone’s IP address and the Jellyfin port (8096) in my laptop’s browser.
I noticed that the installation wizard does not appear by itself. If you have, open up http://phone-ip:8096/web/index.html#!/wizardstart.html directly in the browser to start the installation. If that doesn’t work, stop the server, open the system.xml file in the Jellyfin configuration folder and “IsStartupWizard is complete” is false. Then restart the server.
rclone shows my SMB shares
The media never had to live by the phone
Downloading media files to my phone was never a plan. This is where rclone comes in. It connects to all types of remote storage. In Termux it maps the SMB share on my home server to the folder on the phone. Jellyfin points to that folder and doesn’t know the files are somewhere else. One deal is that the phone expects my home server to always be online.
The part I had the most trouble with was getting the connection details right. When I entered the hostname of my home server, rclone couldn’t find it. So I used his IP address instead. The share name must also match exactly, otherwise you will get a “no file or directory” error for that name. Once sorted like this, the share appeared as a regular folder on the phone.
Scanning the first library was slower than local storage and took over 20 minutes. Because Jellyfin had to read every file on the network. Additionally, metadata provider plugins were not working properly. Thus, editing the metadata was like an ongoing activity.
Installation after installation is important
A few tweaks made it more reliable
Getting Jellyfin running on my phone was the easy part. A few more tweaks were needed to make the installation reliable. First I converted my library directly into the game. Jellyfin sends the files untouched and the TV or player app does the decoding. There is no conversion on the phone, even a budget phone can earn this way.
One thing the phone can’t do is fast encoding. When I tried it the phone froze and restarted. So I stuck with the 1080p files my TV could play as is and skipped the 4K remuxes. I streamed them to my TV via Wi-Fi. The phone got a little hot while streaming. Some high bitrate files are buffered when streaming. Wi-Fi or network sharing may have played a role.
Another important point was to wake up and keep the phone within reach at all times. Since Android tends to close apps running in the background, I turned off battery limits for Termux and used it Wake lock option to save the phone from deep sleep. To make the phone accessible I gave it a static IP and saved it on the router.
The last thing I haven’t installed is the Termux script that reconnects to network shares and restarts Jellyfin after a reboot. For now, I do both by hand.
An old Android phone can be a Jellyfin server
I didn’t expect my old Android phone to boot Jellyfin server. But now it serves a small library over the network and it works better than I thought. It’s a compact device that serves simple media files on my home server. What I would do differently is avoid choosing the bottom of the barrel budget.
If you need a device that can convert video and handle 4K remuxes, a mini PC or NAS is a good option. He took his seat for the live game. Then I want to try remote access.
- Compatible with iOS
-
Yes
- Compatible with Android
-
Yes
- Compatible with desktop
-
Yes