Skip to content

Alexa & voice (first-gen Portals)

Immortal can revive the Portal's original on-device Amazon Alexa client for text, voice, and visual answers. The always-listening "Hey Alexa" wake-word helper is installed by default; it cooperatively yields the microphone during calls, so it no longer disrupts Messenger call audio the way it once did on some Gen-1 hardware. You can still opt out per-device (see below).

First-gen (Android 9) Portals only

Alexa revival and the wake word are supported on first-gen Portals (Android 9) — the Portal/Portal+ Gen-1 and Portal TV.

They are not supported on Android 10 models (Portal Go, Portal Mini, and the 2nd-gen Portal+) at this time. Those Portals hard-block background microphone capture for sideloaded apps, so the revived Alexa never receives audio for the wake word or button hand-off. The Immortal launcher itself installs and works fine on those models — only the Alexa/voice feature is unavailable. (Android 10 support is in research.)

How it works (and why it's allowed)

Alexa support has two pieces:

  • falcon — the Portal's original Amazon Alexa client (com.amazon.alexa.multimodal.falcon), revived so it runs again on the locked, unrooted device.
  • "hey" (Millennium) — an optional wake-word app that drives falcon hands-free and adds the launcher mic button.

Immortal never hosts Amazon's binary. The provisioning kit either downloads a patched-and-signed falcon build, or reconstructs it on your machine from the public Portal firmware dump plus a binary diff (bspatch) — so what's distributed is only the diff, not Amazon's APK.

Setup

Run the Alexa step from the provisioning kit:

./provision.sh --alexa

(Or answer yes when a normal ./provision.sh asks "Restore Amazon Alexa on this Portal?".)

The kit then:

  1. Installs falcon (~115 MB download) and grants it the privileged permissions it needs (microphone, etc.), persisted across reboots. It uses install -r only and never uninstalls falcon — see the warning below.
  2. Opens Alexa to link your Amazon account. A sign-in code appears on the Portal — go to amazon.com/code and enter it. You can do this while the rest of setup runs.
  3. Installs the "hey" (Millennium) wake-word app — to the current release, over any older copy already on the device (install -r, which keeps its settings) — and shows the launcher mic button. This is on by default.
  4. Waits for Alexa to connect (it watches for the device reaching its ready state).

Once linked, you can hide falcon's icon from the launcher — it runs headless.

Opting out of the wake word

The wake word keeps an always-on microphone listener. On at least one Gen-1 Portal+ that once cut Facebook Messenger call audio in and out (#86); the current build cooperatively yields the mic whenever a call is active, so it is on by default. If a specific device still has call trouble, set INSTALL_ALEXA_WAKE_WORD=false in provisioning/config.env and re-run ./provision.sh --alexa — that removes only the wake-word app, never falcon.

Just updating the wake-word app

On a device that already has the wake word, refresh only the "hey" app to the latest release — without the ~115 MB falcon re-download — with ./provision.sh --update-hey (Windows: -UpdateHey). It installs over the existing copy, keeps its settings, and leaves falcon and its Amazon link untouched. Handy for picking up a new hey on a device set up before the app could update itself.

Windows: the reconstruct path needs bspatch

macOS and Linux ship (or can install) bspatch. Windows doesn't, so on Windows use the hosted patched build (the default) or point BSPATCH_EXE at a bspatch.exe in config.env.

Using the "hey" button

When the Millennium wake-word app is installed (the default), a "hey" mic button appears in the home header:

  • Tap — push-to-talk: wakes your assistant without saying the wake word.
  • Long-press — pick which assistant to talk to (the chooser is provided by Millennium; Premium unlocks more than the built-in Alexa).

The trigger is guarded so only the launcher itself can fire it, not other apps on the device.

Removing it

./provision.sh --restore removes only the "hey" wake-word app. Running ./provision.sh --alexa with INSTALL_ALEXA_WAKE_WORD=false (the opt-out) also removes Millennium if it was previously installed.

falcon is left installed on purpose

Uninstalling falcon drops its Amazon registration and would mint a new ghost device with Amazon on the next install. The restore step leaves it in place deliberately — remove it by hand only if you understand that.

Troubleshooting

  • "Skipping Alexa — not supported on this Portal yet" — you're on an Android 10 model; this is expected (see the note at the top).
  • Alexa didn't connect within ~6 minutes — check Wi-Fi and that the Amazon account finished linking at amazon.com/code, then re-run ./provision.sh --alexa.
  • Duplicate-permission conflict with com.amazon.dee.app — the standalone Amazon Alexa app conflicts with falcon's permissions; a coexistence build is needed, so remove that app or skip it.
  • Wake word never triggers — the wake word is on by default; make sure INSTALL_ALEXA_WAKE_WORD isn't set to false in config.env, then re-run the Alexa step so the "hey" (Millennium) app is installed and holds the microphone permission.
  • Messenger calls sound broken — the wake word yields the mic during calls, but if a specific device still has trouble, turn it off by setting INSTALL_ALEXA_WAKE_WORD=false and re-running ./provision.sh --alexa, or run ./provision.sh --restore.