{"id":799,"date":"2026-08-02T14:30:49","date_gmt":"2026-08-02T14:30:49","guid":{"rendered":"https:\/\/jackharvest.com\/?p=799"},"modified":"2026-09-13T23:04:01","modified_gmt":"2026-09-13T23:04:01","slug":"flipfin-jellyfin-client-tcl-flip-phone","status":"publish","type":"post","link":"https:\/\/jackharvest.com\/index.php\/2026\/08\/02\/flipfin-jellyfin-client-tcl-flip-phone\/","title":{"rendered":"FlipFin \u2013 A Jellyfin Client for the TCL 4058G Flip Phone"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"alignleft size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"180\" height=\"180\" src=\"https:\/\/jackharvest.com\/wp-content\/uploads\/2026\/09\/flipfin-icon.png\" alt=\"FlipFin app icon: an open flip phone with a purple play button\" class=\"wp-image-715\" style=\"width:120px\" srcset=\"https:\/\/jackharvest.com\/wp-content\/uploads\/2026\/09\/flipfin-icon.png 180w, https:\/\/jackharvest.com\/wp-content\/uploads\/2026\/09\/flipfin-icon-150x150.png 150w\" sizes=\"auto, (max-width: 180px) 100vw, 180px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><strong>Jellyfin on a flip phone.<\/strong> A text-only Jellyfin client for the TCL 4058G \u2014 a $40 handset with a numeric keypad, a 2.4\u2033 screen and no touchscreen worth the name.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It signs in without a password, finds your server by itself, browses your libraries, streams anything the server can transcode, downloads episodes to watch with the radios off, and reports where you got to so your television picks up in the right place.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"240\" height=\"320\" src=\"https:\/\/jackharvest.com\/wp-content\/uploads\/2026\/09\/flipfin-splash.png\" alt=\"FlipFin splash screen at 240\u00d7320, as shown on the TCL 4058G\" class=\"wp-image-716\" srcset=\"https:\/\/jackharvest.com\/wp-content\/uploads\/2026\/09\/flipfin-splash.png 240w, https:\/\/jackharvest.com\/wp-content\/uploads\/2026\/09\/flipfin-splash-225x300.png 225w\" sizes=\"auto, (max-width: 240px) 100vw, 240px\" \/><figcaption class=\"wp-element-caption\">The splash screen, at the phone\u2019s native 240\u00d7320.<\/figcaption><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/jackharvest\/FlipFin\/releases\/latest\">Download the APK<\/a><\/div>\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/jackharvest\/FlipFin\">View on GitHub<\/a><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Why<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A flip phone is a good media player and a terrible computer. It has a real speaker, a headphone jack, a battery that lasts days, and a hinge that means it survives a pocket. What it doesn\u2019t have is a touchscreen, so every media app written in the last fifteen years is unusable on it \u2014 including Jellyfin\u2019s own, which renders but can\u2019t be driven. FlipFin is built the other way round: one list, one cursor, and every key on the pad doing something you can name.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It\u2019s a port of <a href=\"https:\/\/jackharvest.com\/index.php\/2026\/08\/01\/flipflex-plex-client-tcl-flip-phone\/\">FlipFlex<\/a>, my Plex client for the same phone. Everything above the server layer is the same code.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Read this first: the phone has to be modded<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">FlipFin <strong>cannot<\/strong> be installed on a stock 4058G. TCL ships a patched package manager that refuses every APK install unless a hidden read-only property is set \u2014 and the error even lies about why (<code>INSTALL_FAILED_INSUFFICIENT_STORAGE<\/code>, with 11 GB free). Getting past that means unlocking the bootloader and patching the boot image with Magisk, which is a whole project on its own \u2014 so I wrote it up as one: <a href=\"https:\/\/jackharvest.com\/index.php\/2026\/08\/01\/unlock-root-tcl-4058g-flip-phone-macos\/\">unlocking the TCL flip phone from macOS<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Signing in, without a password<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There is no password entry anywhere in FlipFin, and there never will be \u2014 typing a real password on a T9 keypad is both miserable and worse for your security than the alternatives.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>It finds your server by itself.<\/strong> Every Jellyfin server answers a broadcast on the local network, so if the phone\u2019s on your Wi-Fi the server is already on the screen. Somewhere else? Type the address \u2014 which is just digits and dots, exactly what a keypad is for.<\/li>\n\n<li><strong>Passwordless accounts<\/strong> are one press. On a family server that\u2019s usually most of them.<\/li>\n\n<li><strong>Quick Connect<\/strong>: the phone shows six digits, you type them into any browser already signed in to your server, and the phone signs itself in.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">The keys<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The keypad is the whole interface, and three of these aren\u2019t what a touchscreen has taught you, so FlipFin teaches them once on first launch.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Key<\/th><th>What it does<\/th><\/tr><\/thead><tbody><tr><td><strong>Left soft key<\/strong><\/td><td>Home \u2014 back to the start from any depth<\/td><\/tr><tr><td><strong>Right soft key<\/strong><\/td><td>Options for the highlighted row<\/td><\/tr><tr><td><strong>D-pad left<\/strong><\/td><td>Up one level (a second Back \u2014 the real one is one small key on an old phone)<\/td><\/tr><tr><td><strong>Green call key<\/strong><\/td><td>Search, from anywhere<\/td><\/tr><tr><td><code>1<\/code>\u2013<code>9<\/code><\/td><td>Jump straight to that tab<\/td><\/tr><tr><td><code>*<\/code> <code>#<\/code><\/td><td>Page up and down<\/td><\/tr><tr><td>In the player: \u2190 \u2192<\/td><td>Skip 15 seconds<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What it does<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Continue Watching, first, always<\/strong> \u2014 merging Jellyfin\u2019s \u201cin progress\u201d and \u201cnext up\u201d lists, because either one alone leaves out half of what you meant.<\/li>\n\n<li><strong>Libraries, three ways:<\/strong> Recommended, a full A\u2013Z, and Categories.<\/li>\n\n<li><strong>A page before you press play<\/strong> showing what the file is, what it\u2019ll be converted to, and the subtitle, audio, quality and download controls.<\/li>\n\n<li><strong>Downloads that work with the radios off<\/strong> \u2014 queue an episode or a whole season; they wait for Wi-Fi by default and are fully <em>seekable<\/em> offline.<\/li>\n\n<li><strong>Subtitles burned in<\/strong>, so Blu-ray picture subtitles work like everything else.<\/li>\n\n<li><strong>Search on the green key<\/strong>, using the phone\u2019s own T9 keyboard.<\/li>\n\n<li><strong>Progress reported back<\/strong>, so your TV, laptop and phone agree about which episode you\u2019re on.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">What it doesn\u2019t do<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Said plainly, because a missing feature you were expecting is worse than one you were told about: no posters or artwork (240\u00d7320 isn\u2019t a screen for pictures, and every byte of artwork is a byte of slow radio), no music yet, no live TV, and no autoplay-next yet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Thanks to the Jellyfin project for a server with a real API and a discovery broadcast, so a phone can find it without a cloud service in the middle. MIT licensed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Free and open source, and it\u2019s staying that way. If it saved you some time, you can <a href=\"https:\/\/www.buymeacoffee.com\/jackharvest\">buy me a coffee<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>FlipFin is Jellyfin on a $40 flip phone. It finds your server by itself, signs in without a password, streams anything the server can transcode, and downloads episodes to watch with both radios off \u2014 all from a numeric keypad.<\/p>\n","protected":false},"author":1,"featured_media":834,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"FlipFin \u2013 Jellyfin Client for the TCL Flip Phone (4058G)","_seopress_titles_desc":"Watch Jellyfin on a TCL 4058G flip phone. Keypad-driven, finds your server automatically, Quick Connect sign-in, and offline downloads. Free and open source.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"Jellyfin flip phone,Jellyfin TCL flip,TCL 4058G apps,Jellyfin dumbphone,Jellyfin keypad client,TCL Flip 2 Jellyfin","neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[106,99,77],"tags":[111,110,108,107,112,105,88,113,109],"class_list":["post-799","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-flip-phones","category-media-servers","category-projects","tag-android","tag-dumbphone","tag-flip-phone","tag-jellyfin","tag-kotlin","tag-offline-downloads","tag-open-source","tag-quick-connect","tag-tcl-4058g"],"_links":{"self":[{"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/posts\/799","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/comments?post=799"}],"version-history":[{"count":2,"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/posts\/799\/revisions"}],"predecessor-version":[{"id":824,"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/posts\/799\/revisions\/824"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/media\/834"}],"wp:attachment":[{"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/media?parent=799"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/categories?post=799"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jackharvest.com\/index.php\/wp-json\/wp\/v2\/tags?post=799"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}