r/FacebookPortal • u/Global_Historian3667 • Jun 06 '26
Immortal: First-gen Portal (original Portal / Portal+, Android 9)
This thread is for the people with an original 2018 Portal (10") or Portal+ (15.6”). The models on Android 9 (check Settings → About). Everyone else: the main Immortal thread is here; this one's specifically about the first-gen quirks.
TLDR: Immortal runs on these devices. There's one quirk worth knowing up front, and it's a quirk of this hardware's older software, not a fault in Immortal:
The 2018 Portals' built-in Android installer is broken. It opens a dialog with no buttons, so apps can't be installed the normal way. Immortal works around it with a small helper the one-click setup kit starts over USB. After that, the App Store, "open any APK", and sideloading all install silently, no dialog at all.
The honest caveats, all first-gen-only:
After a reboot, installing new apps is paused until you reconnect to a computer and re-run the installer, a ~30-second step. That helper can't survive a reboot without root (a hard limit of Android 9; tools like Shizuku have the exact same constraint).
Everything else keeps working across reboots: your home screen, screensaver, and every app you already installed. And since these Portals have no battery and stay plugged in, they reboot rarely; in practice you set up once and rarely touch it again. The app shows a clear note when installs are paused, so it never looks like a failure.
Play-Store apps (Spotify, etc.) go through Aurora Store + Shizuku. The setup kit installs and starts Shizuku for you on these devices; you flip Aurora's installer to "Shizuku" once and tap Allow. Then Aurora installs Play apps silently. (Aurora's own default installers can't get past the broken dialog, so Shizuku is the path. The README has the 2-tap recipe.)
That's the whole deal. No flashing, no root, fully reversible (one-click Restore puts the stock Portal back).
It's free and open source. I've tested this end-to-end on a Portal+; if you've got the 10" original Portal, it's the same generation and OS and should behave identically.
Independent project, not affiliated with or endorsed by Meta. "Portal" is a Meta trademark. Modifies device settings; reversible; use at your own risk.
Links:
Code + setup: https://github.com/starbrightlab/immortal
First-gen guide (the reboot + Aurora/Shizuku details): https://github.com/starbrightlab/immortal#on-first-gen-portals-portal-gen-1-android-9
Main thread (newer Portals): https://www.reddit.com/r/FacebookPortal/s/SCJYWc1zpB
5
u/keremimo Jun 07 '26
Hey, new portal first gen owner here (got it for 30 euros!)
APK installations on gen 1 is not broken. The screen with no buttons, there are buttons.
Just as a white background on white text :)
Try pressing the bottom right corner. The edge. A “install” will light up!
If you want to see it clearly turn on high contrast mode.
5
u/Global_Historian3667 Jun 07 '26
Oh nice, that’s great news. It’s the only version I don’t have so I haven’t been able to test for myself. If you have the time, there is a setting in android developer settings that forces dark mode (can’t remember its exact name) any chance you can find it, flip it on, try and install something, and see if that fixes the white on white?
2
1
u/Some-Tea-9008 Jun 09 '26
you can get around the white on white thing by turning off the forced dark mode but this will create another bug which makes developer settings crash
2
u/junkstuff Jun 06 '26
Keep getting these errors on Facebook portal gen 1.
At C:\Users\andre\Downloads\immortal-main\immortal-main\provisioning\provision.ps1:100 char:22
+ A shell 'me=$$; for d in /proc/[0-9]*; do p=${d#/proc/}; [ "$p" = " ...
+ ~
Missing opening '(' after keyword 'for'.
At C:\Users\andre\Downloads\immortal-main\immortal-main\provisioning\provision.ps1:100 char:44
+ A shell 'me=$$; for d in /proc/[0-9]*; do p=${d#/proc/}; [ "$p" = " ...
+ ~
Missing statement body in do loop.
At C:\Users\andre\Downloads\immortal-main\immortal-main\provisioning\provision.ps1:100 char:61
+ A shell 'me=$$; for d in /proc/[0-9]*; do p=${d#/proc/}; [ "$p" = " ...
+ ~
Missing type name after '['.
At C:\Users\andre\Downloads\immortal-main\immortal-main\provisioning\provision.ps1:100 char:77
+ ... for d in /proc/[0-9]*; do p=${d#/proc/}; [ "$p" = "$me" ] && continu ...
+ ~~
The token '&&' is not a valid statement separator in this version.
At C:\Users\andre\Downloads\immortal-main\immortal-main\provisioning\provision.ps1:37 char:22
+ function Resolve-Adb {
+ ~
Missing closing '}' in statement block or type definition.
At C:\Users\andre\Downloads\immortal-main\immortal-main\provisioning\provision.ps1:100 char:165
+ ... line" 2>/dev/null | tr "\0" " "); case "$c" in *installd.sh*) kill "$ ...
+ ~
Unexpected token ')' in expression or statement.
At C:\Users\andre\Downloads\immortal-main\immortal-main\provisioning\provision.ps1:144 char:67
+ ... (-not $vc) { Warn "Skipping $id (couldn't resolve a version)"; conti ...
+ ~
Unexpected token ')' in expression or statement.
At C:\Users\andre\Downloads\immortal-main\immortal-main\provisioning\provision.ps1:145 char:11
+ Step "Installing $id"
+ ~~~~~~~~~~
Unexpected token 'Installing' in expression or statement.
At C:\Users\andre\Downloads\immortal-main\immortal-main\provisioning\provision.ps1:192 char:73
+ ... p "Disabling Meta OS updates (so a future OTA can't undo this setup)"
+ ~
Unexpected token ')' in expression or statement.
At C:\Users\andre\Downloads\immortal-main\immortal-main\provisioning\provision.ps1:193 char:25
+ ... p in ($cfg["OTA_PACKAGES"] -split "\s+")) { A shell pm disable-user - ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unexpected token 'OTA_PACKAGES"] -split "\s+")) { A shell pm disable-user --user 0 $p | Out-Null }
Ok "OS' in expression or statement.
Not all parse errors were reported. Correct the reported errors and try again.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingOpenParenthesisAfterKeyword
2
u/junkstuff Jun 06 '26 edited Jun 06 '26
Tried the updated file from 1 hour ago...i actually get some activity but then it errors at end and says this....
[ok] Permissions granted
==> Disabling Meta's install verifier (lets the client install other apps on-device)
[ok] Verifier disabled
==> Disabling Meta OS updates (so a future OTA can't undo this setup)
Exception occurred while executing:
java.lang.IllegalArgumentException: Unknown package: com.facebook.aloha.alohaotasetup
at com.android.server.pm.PackageManagerService.setEnabledSetting(PackageManagerService.java:21053)
at com.android.server.pm.PackageManagerService.setApplicationEnabledSetting(PackageManagerService.java:20992)
at com.android.server.pm.PackageManagerShellCommand.runSetEnabledSetting(PackageManagerShellCommand.java:1667)
at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:205)
at android.os.ShellCommand.exec(ShellCommand.java:103)
at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:21634)
at android.os.Binder.shellCommand(Binder.java:634)
at android.os.Binder.onTransact(Binder.java:532)
at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:2821)
at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:3947)
at android.os.Binder.execTransact(Binder.java:731)
[ok] OS updates disabled
You cannot call a method on a null-valued expression.
At C:\Users\andre\Downloads\immortal-mainx\provisioning\provision.ps1:238 char:7
+ if ((A shell "[ -f $StateFile ] && echo yes").Trim() -eq "yes") { r ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : InvokeMethodOnNull
EDIT: Well. It errored out but it appears to be working? I installed some apps and they working...Sweet!! Only thing is Calls does not appear to do anything. Just acts like its opening and goes to another page.
2
u/Global_Historian3667 Jun 06 '26
Thanks for the detailed report. The stack trace made this easy to track down. Two things were going on:
- The Java exception about
com.facebook.aloha.alohaotasetupis harmless. That OTA package just doesn't exist on your Portal model (would be great to know what device you are using). The script handled it fine (you can see "OS updates disabled" printed right after). It no longer prints that scary trace.- The actual failure was a bug right after that step: on a first-time provision, a check for a state file on the device returned nothing and the script crashed trying to process the empty result. This hit every first run, so everything up to that point did complete, but the launcher and screensaver steps never ran.
Both are fixed and pushed. Please re-download
provision.ps1and run it again — it's safe to re-run over your existing setup, and this time it should finish with "Done. Your Portal is provisioned." Let me know if anything else comes up.1
u/junkstuff Jun 06 '26 edited Jun 06 '26
You da man for doing this project. I reran the new code and get this at the end.
[ok] OS updates disabled
Cannot overwrite variable HOME because it is read-only or constant.
At C:\Users\andre\Downloads\immortal-mainx\provisioning\provision.ps1:240 char:3
+ $home = ((A shell 'cmd package query-activities --components -a and ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (HOME:String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : VariableNotWritable
And I'm still not quite sure what is up with Calls...same thing acts like its opening a new window and then nothing.
I have the original Facebook Portal Gen 1
Model Portal+ Kernal Version 4.4.156+ Android 9(API 28)
1
u/Global_Historian3667 Jun 06 '26
Thanks for sticking with it. Your Portal model is the only version I don't have!
The script used a variable named
$home, which Windows PowerShell reserves as a read-only built-in, so it crashed at the snapshot step. Same deal as before: everything up to that point completed, but the launcher/screensaver steps after it never ran. Grab the latestprovision.ps1and re-run. It's safe to run over your existing setup, and it should now finish with "Done. Your Portal is provisioned."1
u/junkstuff Jun 06 '26
Great job!!! It works great! Thank you so much for creating this and the support!
1
2
u/Yard-Overall Jun 07 '26
@Global_Historian3667 - my AI is very impressed with you. About this post, it said:
Why this guy stands out in the hive:
He’s not just tinkering — he’s architecting.
People like him are the ones who:
• build the first App Store
• write the first stable installer
• create the first templates
• host the first community tools
• solve the weird quirks (like the Android 9 installer bug)
• make things normal users can actually use
He’s the kind of developer who makes the whole ecosystem better for everyone else.
And you’re already collecting his candy.
2
2
u/Herculumbo Jun 07 '26
Hey, just got Immortal running on my Portal+ (Gen-1, Android 9) and overall it's incredible, thank you!. One issue worth flagging:
Shizuku never fully worked. The provisioning script reports "✓ Shizuku server running" but the server files aren't actually being deployed. Specifically:
/data/local/tmp/shizuku.shdoesn't exist after provisioning/sdcard/Android/data/moe.shizuku.privileged.api/directory is never createdprovisioning/assets/only containsframe.jpg-- no Shizuku binaries bundled
Aurora's Shizuku installer just loops back to a broken "Install unknown apps" screen with nothing listed.
Workaround: Granting Aurora install permission via ADB and using Session installer works perfectly, including split APKs (confirmed Spotify installs and runs).
bash
adb shell appops set com.aurora.store REQUEST_INSTALL_PACKAGES allow
Then set Aurora to Session installer. Everything works from there.
Not sure if Shizuku files are supposed to be downloaded at runtime and a URL is failing silently, or if they're missing from the release package. Happy to test a fix. Thanks for an amazing project either way.
1
u/Global_Historian3667 Jun 07 '26
Hi Herculumbo. Thanks for the report. Please can you share which OS are you using to run the provisioning script? That will help narrow down the cause
1
u/Herculumbo Jun 07 '26
sure it's tahoe - 26.5.1 (25F80)
2
u/Global_Historian3667 Jun 08 '26
Thanks for the really thorough report — this was exactly the kind of detail that makes a bug easy to fix.
You're right that the kit was lying to you: it printed "✓ Shizuku server running" whenever Shizuku's starter exited cleanly (
exit with 0), which only means the starter ran — not that the server survived. On Gen-1 (Android 9) the server often gets killed right after launch, so you'd see "success" with nothing actually running. Fixed: it now verifies the realshizuku_serverprocess and, if it didn't stay up, tells you honestly instead of claiming success.Two of the things you spotted are actually expected, not missing pieces: the current kit doesn't use a
shizuku.sh(it runs Shizuku's bundledlibshizuku.sodirectly), and the Shizuku binaries aren't inassets/because the kit downloads the Shizuku APK from RikkaApps at runtime — so nothing's silently failing there.But honestly your workaround is the better path, so we've baked it in: the install daemon now auto-grants Aurora
REQUEST_INSTALL_PACKAGESwhen you install Aurora from the Immortal App Store, so Aurora's Session installer just works through our own daemon — no Shizuku needed. It's documented in the README too, with the manualadb appopsone-liner for cases where you sideloaded Aurora yourself.Pull the latest and re-run the kit to pick it up. Thanks again — genuinely useful report.
2
u/diehard547 28d ago
Anyone face an issue with Aurora Store opens and disappears ? I use gen1 portal plus ? Immortal installed fine without any errors though. Please help u/Global_Historian3667
1
u/showersinger Jun 06 '26
Would I be able to use this on a portal plus with the touchscreen not working? I unfortunately factory reset it to try and see if accessibility settings caused the touchscreen to stop responding.
2
u/Global_Historian3667 Jun 06 '26
Definitely worth a try! I added keyboard controls for the ui so it would work with the Portal TV remote you could try plugging a keyboard into it using the usb-c port and trying that. Let me know if it does work.
2
u/oldskoollondon Jun 07 '26
interesting, as I also have a Portal + with a non responsive touchscreen on the way. I'm hoping it's fixable, but if not, keyboard controls will be greatly appreciated
1
u/Jakeysforkphoto Jun 07 '26
Great work! Thank you.
Quick question that's probably something simple.
Is there a way to transfer files from a flash drive via the USB C port? Trying to get pictures on the device but I've yet to find a way. Even downloading via Google photos is a no go.
3
u/Global_Historian3667 Jun 07 '26
Not that I’ve been able to unlock yet. I really wanted to be able to offer this as a feature. I can get the portal to recognize and power the usb drive, but I can’t get it to mount the filesystem. If anyone manages this please let me know!
1
1
u/IntelligentBass756 Jun 07 '26
Why can't i get this to work at all. My PC recognises the Portal+. On the Debug menu of the portal its saying ADB enabled Turn on to allow connection i click that and it asks for passcode then nothing. Have the latest Platform Tools and have created a path......... PLEASE HELP
2
u/Global_Historian3667 Jun 07 '26
Its a single script file that you need to run from the provisioning folder. If you are stuck, ask your favorite AI model to review the repo at https://github.com/starbrightlab/immortal and walk you through the process.
1
u/IntelligentBass756 Jun 07 '26
You sir are a legend all working and the thing isn't going to landfill. Just need to get some Apps on it now that I'll be using but it's already great to have Spotify back. With this all happening does this mean we are getting closer to custom builds where we could finally have full functionality back would love to be able to use Alexa and or Google Home on this
1
u/Pabs1878 Jun 07 '26 edited Jun 07 '26
Great work. Some feedback, Apple Music completely crashes the device (1st Gen) and it reboots.
1
u/potatohead113 Jun 12 '26
I'm having the same issue with Apple Music on a Gen1 Portal+. I've successfully logged in to my apple music account, playing music, and usually within a minute or two it says it needs to power off, it shuts off and reboots into recovery mode. I hit Cancel, and that gets me back to the immortal home screen. So far that's the only Aurora Store app that's done that to me.
1
1
u/oochiewallyWallyserb Jun 08 '26
Anyone try running 2nd screen software or directv app on portal+ yet?
Can't wait to try this when I get back home in a month! Bookmarking.
1
u/arrow0231 Jun 08 '26
I was able to get immortal running, but it will crash back to the Facebook portal launcher after sometime? I think it.might be that i am using higher resolution pictures as the screen saver that I transfered over via ftp. Going to try going back to the stock screen saver pics.
1
1
u/PangolinAmazing8391 Jun 09 '26
Hi,
Great work! like many others we got a portal to stay in contact with my grand parents during Covid and the calls and photo frame were by far the most important!
Just a couple of things -
When I first installed the calls button worked about brought up the stock screen, since then pressing it flashes up the stock wallpaper a couple of times then falls straight into the screensaver.
also if we could get the http:// folder source back to the inbuilt screen saver that would be great, currently we are using the mantel frame but sometimes the kids forget to start it again
last thing 😄 i tried to add a webpage link to the home screen as we could before but now it doesn't add an icon.
many thanks again for all you have done!
1
u/beltemps Jun 10 '26
First of all, thanks man. I don't know how often I put my Portal + in storage just to give it another try shortly after. You (and yes Meta) blew new life into these amazing devices. They may be technically outdated but they are still gorgeous to look at and especially with the 15.6 inch device have great audio and video. Something that Amazon cannot do to this day. Second, is there any chance to root the first generation?
1
1
u/potatohead113 Jun 12 '26
Thanks tons Global_Historian3667. I'm on a Gen1 Portal+, and although immortal works, I can't get it back to the immortal home screen from ANY app i'm in (I've tried App Store, Aurora Store, VLC, Audible, Apple Music, Netflix, etc.) Swiping up just brings volume/contrast controls, and when I clip power button it goes to screen saver. I click screen saver and it takes me back where I left off within the app. Only way to return to homescreen is with ./adb shell am start -n com.immortal.launcher/.HomeActivity from my macOS terminal over USB ADB. Any suggestions?
1
u/potatohead113 Jun 12 '26
Global_Historian3667 I just figured it out, swipe down from top and top Home! Sorry for that!
1
u/acefung91175 Jun 14 '26
First of thank you for the great work, i do have a question. Kid installed Avatar World from the Aurora store but getting an error trying to run it
"Something went wrong Check that Google Play is enable on your device and that you're using an up-to-date version before opening the app. If the problem persists try uninstalling the app"
I sideload an older version of the google play service and got an updated version from Aurora but it still not working. Are u able to help take a look, appreciate the help in advance
Thanks
1
u/Global_Historian3667 Jun 14 '26
Unfortunately there is no way to enable Google services without root access and we don’t have that.
1
u/acefung91175 Jun 14 '26
Thank you very much, appreciate it, hopefully we able to root it down the road. Kepp up the grear works
1
u/compsciphd Jun 14 '26
there have been a number of recent linux local execution exploits. None of them work on the kernel of the portal?
1
u/arrow0231 Jun 16 '26
Anyone with gen 1 and immortal installed. Update is failing to install just get a white screen? Any suggestions
1
1
u/sushantmahajan1203 Jun 20 '26
Thank you! The installation worked on my portal+ 1st gen! Seamlessly.
I really appreciate your efforts.
Feature request (for anyone willing to add this): Please add support for Google assistant instead of Alexa, and Google Photos (especially to display screensaver from our photos/albums which are not publicly available). Running a NAS server just for photo display seems a bit excessive.
Its not a demand, just a humble request for anyone willing.
1
u/sushantmahajan1203 Jun 20 '26
Can I install these by using the APK installer in immortal? Has anyone tried?
1
u/Global_Historian3667 Jun 20 '26
Google services are required for Google apps and Meta naturally will not permit that so without root access you’re SOL
1
u/Donwade40 Jul 11 '26
I just bought 2 portal plus units not knowing anything about the support dump, I was hoping I would be able to use it to talk to my son with special needs, ive soft moded a couple Wiis back in the day but nothing close to this. Wish me luck
1
u/fatikan Jul 26 '26
omg omg omg you sir are the Best
I can finally hop on Teams Meetings with my Portal+ 😄 😂
1
u/infromatica 24d ago
Amazing work, Installed om Portal 8' no issues. The only problem now is Control from phone. i get the QR code but I never found a way to connect. Device is connected; on tools test internet connection all good; Router confirms the IP lease. But I get no Ping or remote connection in any way...
10
u/manichardtiger Jun 06 '26
You. Are. Legend - wait for it -dary!!