Skip to content

Dumb TT9 (com.offlineinc.dumbtt9) reverts to stock 12-key keyboard on every reboot — IME drops out of enabled list #19

Description

@jameswagar

Summary

com.offlineinc.dumbtt9 (the bundled/rebranded TT9 keyboard) reverts to the stock feature-phone keyboard (com.iqqijni.dvt912key) on every reboot. This isn't just "not selected as default" — the package drops out of the enabled-IME list entirely (ime list -s no longer shows it after reboot), which is why the system falls back to another keyboard.

Root cause found

The launcher installs/enables/grants permissions to/sets-default com.offlineinc.dumbtt9 exactly once, gated by a permanent migration flag:

shared_prefs/voice_engine_setup.xml:
  <boolean name="old_install_migrated_v1" value="true" />

Confirmed via the built APK (decompiled classes.dex from the installed v5.33.0-beta10): the relevant strings (ime set com.offlineinc.dumbtt9/..., ime enable com.offlineinc.dumbtt9/..., pm grant com.offlineinc.dumbtt9 android.permission.RECORD_AUDIO) are all present, run as part of this one-time setup.

Since the flag never resets, that setup step never runs again on subsequent boots. Meanwhile, something (still unclear exactly what — possibly related to how com.offlineinc.dumbtt9 is packaged/installed vs. a stock TT9 build, or a signing/verification quirk) causes Android to drop that specific package's IME-enabled registration on every boot.

Evidence it's package-specific, not a general OS reset

Sideloading the unmodified, stock TT9 (io.github.sspanak.tt9, from F-Droid) alongside com.offlineinc.dumbtt9 and enabling both: after a reboot, io.github.sspanak.tt9 stays enabled, while com.offlineinc.dumbtt9 drops out of the enabled list entirely. Same reboot, same device, different outcome — so this isn't Android broadly resetting IME state at boot, it's specific to this package.

Repro

  1. Fresh setup: com.offlineinc.dumbtt9 gets installed/enabled/set as default (the one-time old_install_migrated_v1 migration).
  2. Reboot.
  3. settings get secure default_input_method → reverted to com.iqqijni.dvt912key/.keyboard_service.view.HDKeyboardService.
  4. ime list -scom.offlineinc.dumbtt9 is no longer listed as enabled at all.

Suggested fix

Either:

  1. Find and fix whatever makes Android drop this specific package's IME-enabled registration at boot (worth checking how com.offlineinc.dumbtt9 is installed/signed relative to the stock TT9 build, and whether its manifest/IME service declaration differs in a way that matters across a fresh process/boot), or
  2. At minimum, don't gate the enable+set-default step behind a permanent one-time flag — re-check/re-apply it on every boot (or at least verify current IME state matches expectation and re-apply if not), so it self-heals regardless of the underlying cause.

Workaround in use

A Magisk service.d boot script that waits for sys.boot_completed=1, then re-runs ime enable + settings put secure default_input_method for com.offlineinc.dumbtt9 on every boot. Confirmed this restores the keyboard correctly immediately when run manually; a full reboot test is in progress to confirm it also fires correctly as an actual boot script.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions