ShizuStore

NekokoLPA (NekokoLPA2)

iebb

2.4.5 · GitHub

Download APK
Miscellaneous Android 7.0+ 1 day ago MIT
21 ShizuStore
66.5k GitHub
359 Stars
45 MB Size
Detected trackers (1)
Sentry Crash reporting

Matched by Exodus Privacy code signatures. Not a complete list.

More about this app

Cross-platform eSIM/eUICC manager; on Android it asks Shizuku to open the shell-only QRTR socket for Telephony/TMAPI profile operations

NekokoLPA2 — cross-platform eSIM manager

NekokoLPA2

Crowdin

Download on the App Store Get it on Google Play

Language: English | 日本語 | 简体中文

NekokoLPA2 is a cross-platform eSIM management app for working with local eUICCs, external readers, and remote reader endpoints. It is designed for users who need more control over profile operations, transport choices, and card visibility than a typical carrier app exposes.

Get started · Readers and platforms · VoWiFi and IMS · Build from source · Troubleshooting

Choosing a download: Android variants and desktop builds · OTBridge versus the rooted app.

Android OMAPI: restart regression and recovery.

Get started

  1. Install the app from an official download channel.
  2. Connect an eUICC reader and enable its connection type in reader settings. For Bluetooth, allow the requested Bluetooth permissions and scan for the advertised reader name.
  3. Select the reader and load its profiles. Use an activation code or QR code to download a profile; enable, rename, or delete profiles from the reader's profile list.

An external reader manages the card connected to that reader. It does not turn an iPhone's internal eSIM into an externally accessible card. Android's internal-card access depends on the available OMAPI, bridge, or modem interface and the card's access rules.

Highlights

  • Works across Android, iOS, macOS, Linux, Windows, and Chrome
  • Supports BLE readers, USB CCID readers, OMAPI, Telephony/TMAPI, remote readers, and browser-side WebUSB paths
  • Includes profile organization tools such as custom icons, notes, tags, and scheduled notifications
  • On rooted Android devices, OTBridge can enable Telephony support and help bypass OMAPI ARA-M restrictions without requiring NekokoLPA2 itself to be installed as a privileged app

Platform Support

Experimental reader-backed Wi-Fi calling is available through the iOS Manage screen. It requires an external SIM reader, not the phone's internal SIM; see build instructions and limitations.

Experimental desktop VoWiFi/SMS is also included on Windows, macOS and Linux. VoWiFi is disabled on Android and for OMAPI adapters. Desktop sessions require a reader with direct raw basic-channel APDUs; see setup and restrictions.

Connection Type Android iOS macOS Linux Windows Chrome
BLE readers ✅ ✅ ✅ ❌ ✅ ✅
USB CCID readers ✅ ✅ ✅ ✅ ✅ ❌
Remote readers ✅ ✅ ✅ ✅ ✅ ✅
OMAPI ✅ ❌ ❌ ❌ ❌ ❌
Telephony / TMAPI ✅ ❌ ❌ ❌ ❌ ❌
OTBridge provider ✅ ❌ ❌ ❌ ❌ ❌
SE HAL (Shizuku) ✅ ❌ ❌ ❌ ❌ ❌
WebUSB SCRP / WebCard ❌ ❌ ❌ ❌ ❌ ✅

Notes:

  • Telephony / TMAPI and OTBridge are Android-only paths.
  • OTBridge is intended for rooted Android setups where Telephony access or OMAPI policy bypass is needed.
  • SE HAL is experimental and off by default. It needs Shizuku, and works only where the device lets shell call the Secure Element HAL.
  • Chrome support refers to the web build running in a Chromium browser with the required browser APIs available.

Translation

Translations are managed on Crowdin.

Features

  • Multi-reader support: BLE, USB CCID, OMAPI, Telephony API, remote readers, and browser-based transports
  • TYBLE readers: Tianyu readers with names such as SCT-BT-<UID> and TES-BT-<UID>, plus 9eSIM B0 Plus readers named 9eSIM followed by eight digits. Six-character 9eSIM suffixes continue to use the NineESIM protocol. TYBLE uses the BLE platforms listed above.
  • SIM probing: Plain SIMs can show their operator and identity details on the unsupported-card screen when the connected reader permits raw APDUs.
  • Desktop VoWiFi/SMS: Optional experimental SMS sessions backed by an external SIM reader on Windows, macOS and Linux
  • Rooted Android path: OTBridge can enable Telephony support and bypass OMAPI ARA-M restrictions while keeping the main app unprivileged
  • Provider integrations: eSIM.cc rewards/portal, eSIM.gg number/balance/package status, and 3HK number/expiry/package status are maintained here in the public repository.
  • Profile organization: Custom icons, notes, tags, and compact management tools
  • Scheduled notifications: Reminders for expiry and other profile-related events
  • Cross-platform UI: Responsive layout with platform-aware reader flows

Android Notes

  • The public Android edition is NekokoLPA 2 Community, using the dolphin/sekiu artwork. It replaces the Open name while retaining the existing package and signing identity for updates. Compare the Android variants.
  • NekokoLPA2 prefers the external OTBridge provider on Android when it is installed.
  • On rooted Android devices, OTBridge can expose Telephony/TMAPI access and help bypass OMAPI ARA-M restrictions while keeping NekokoLPA2 itself on the normal app path.
  • OTBridge source and builds now live in this repository: source, release downloads.
  • The separate full rooted app/module is also maintained. Compare OTBridge and the rooted app, with installation/build instructions.
  • VoWiFi remains disabled on Android, including when an external reader or bridge is available. OMAPI profile management remains available separately.

VoWiFi and IMS

Feature Windows / macOS / Linux iOS Android Browser
Experimental desktop SMS over IMS Opt-in, external raw-APDU reader — Disabled —
Reader-backed Wi-Fi calling — External USB CCID or supported RED BLE reader Disabled —

Desktop setup

  1. Use a non-9eSIM-branded build on Windows, macOS or Linux.
  2. Connect an external SIM/eUICC reader that permits raw APDUs on the basic channel. OMAPI and SE HAL readers are not eligible.
  3. In Settings, enable VoWiFi and accept the experimental-feature notice.
  4. On the reader page, choose Load current SIM to VoWiFi. The app derives the IMS realm, ePDG address and SMSC from the SIM where available.
  5. Use the VoWiFi tab to view sessions and exchange SMS. Disable VoWiFi or disconnect a session to stop it.

The desktop implementation provides SMS. The iOS Manage screen uses a separate reader-backed calling implementation; see its build instructions, background limits and verification notes.

Protocol behavior and limits

The desktop IMS client handles AKA resynchronization with AUTS, binary RES values, quoted Digest challenges, auth/auth-int quality-of-protection negotiation, nonce counts, and supported MD5/SHA-256 digest variants. It correlates final SIP responses to the outstanding transaction, retains the registrar's ordered Service-Route values, and honors a valid 423 Min-Expires response with one bounded retry.

These paths have unit and local SIP-peer regression tests. Carrier provisioning, ePDG access, SIM policy and network behavior still determine whether a real subscription registers and exchanges SMS. This is experimental software, and the project does not claim universal carrier compatibility. See implementation details, research references and remaining limits.

Build from source

The public repository includes TYBLE readers, SIM probing and desktop VoWiFi/SMS without a private overlay. Use the Flutter version pinned in CI, currently 3.47.2. Android's QRTR transport also requires Rust 1.89 or later. Native desktop builds require that platform's Flutter build toolchain.

git clone --branch master https://github.com/iebb/NekokoLPA2.git
cd NekokoLPA2
flutter pub get
flutter devices
flutter run -d macos  # choose an available device from flutter devices

For reader-backed iOS calling, first follow the source-built Go framework and codec instructions. GM_PSK_URL can be supplied as a non-secret --dart-define; leaving it empty still builds the app, with GM PSKs limited to those already cached.

Validate a change

dart analyze lib test
flutter test --no-pub
flutter build web --release --no-pub

Format the Dart files you change. Add user-facing strings only to l10n/app_en.arb, then run flutter gen-l10n; Crowdin owns the translated ARB files. When adding a plugin, regenerate its registry with dart run scripts/generate_plugin_registry.dart. Maintainers working with a private overlay should use --public for the committed registry.

Troubleshooting

Symptom Check
Bluetooth reader is missing Enable Bluetooth, allow the platform permissions, enable that reader type and scan again. Linux has no BLE transport in this app.
An Android card refuses OMAPI Check its access rules or use a supported bridge/reader. VoWiFi is unavailable through OMAPI.
The VoWiFi setting is absent Desktop VoWiFi is unavailable on Android, iOS and 9eSIM-branded builds. iOS calling has its own Manage entry.
IMS registration or SMS fails Check reader eligibility, SIM carrier provisioning, the reported SIP status and the IMS limitations. A passing build does not establish carrier support.

When reporting a problem, include the app version, operating system, reader model and a redacted error. Remove subscriber identities, activation codes, phone numbers, raw APDUs and authentication material from shared logs.

Download

Star History

Star History Chart

Changelog

See CHANGELOG.md for release history and user-facing changes.

Wiki

Support

For issues, feature requests, or questions, please visit our GitHub Issues.

License

NekokoLPA2 is released under the MIT License.

The NekokoLPA cat mascot artwork was created by @sanzennami. Reference use is OK, but the mascot SHOULD NOT be used as your own logo, app icon, shop avatar, or dominant brand mark without agreement. You may include it as part of a logo or image only when it does not exceed 10% of the entire logo or image and the use does not imply official endorsement. See NOTICE and BRANDING.md.


© 2026 Nekoko.

Public build and service tooling

Community/Open Android builds can use the secret-free reproducible recipe, with the committed public signing key. The shared build tools, lineage helper, Windows installer helpers and update/config service are maintained in this repository. Branding overlays provide configuration and artwork separately.

Close

How Shizuku is used

Can manage eSIM profiles on Qualcomm phones through Shizuku using `QRTR bus socket` and `Secure Element HAL`.

This is an AI-assisted analysis of Shizuku-related usages in the app's public source code. It is best effort, so it may not catch every single usage.

How this app uses Shizuku

On Qualcomm phones the app uses Shizuku to run modem and SIM card access as the shell user, which unlocks full eSIM profile management.

  • Talk to modem bus: Open a shell only channel to the modem and exchange datagrams with it through Shizuku, which lets the app drive Qualcomm Telephony profile operations a normal app cannot reach.
  • Read eSIM status: Query card answers and send read only card commands through the Secure Element HAL via Shizuku to show profile lists, profile status and card identity.
  • Download new eSIMs: Install a purchased eSIM package the user provides by staging it and sending it to the card through the Secure Element HAL via Shizuku.
  • Enable or disable profiles: Turn a chosen eSIM profile on or off on the selected SIM slot through the Secure Element HAL via Shizuku.
  • Delete and rename profiles: Remove a disabled eSIM profile, change a profile nickname, and clear pending eSIM notifications on the selected slot through the Secure Element HAL via Shizuku.

Android APIs or commands used

  • android.os.ServiceManager.getService
  • android.hardware.secure_element.ISecureElement
  • android.os.IBinder.transact
  • android.os.Parcel
  • QRTR bus socket

Notable details

Only works on Qualcomm devices where the modem bus exists, other phones cannot use the Shizuku QRTR path.

Close

Changelog

What's new for version 2.4.5

Fixed

  • Confirmation codes are hashed over the transaction identifier itself rather than its text form, so a server that issues a short identifier no longer rejects a correct code.
  • Carrier eSIM transfers send the device IMEI in the right digit order; carriers that validate it no longer refuse the transfer.
  • USB card readers release their connection when disconnected, instead of leaking one per session until connecting stopped working.
  • Profile downloads give up on an unresponsive server instead of waiting indefinitely, and the screen now explains why it cannot be dismissed mid-operation.
  • Rejecting a previewed profile ends the session with the server, so the next attempt is not refused as already in progress.
  • Reader actions such as loading the current SIM to VoWiFi act on the profiles currently on the card rather than a stale list.

Artifacts

Package / Artifact Platform ARAM SHA-1 Description
ee.nekoko.nlpa.flavor1 Android (apk) D1C0F48B370E74D4EA4770ED4C3CD70A3198D31F 9eSIM Signature with 9eSIM features
ee.nekoko.nlpa2.multi Android (apk) 65D0571854AFEC519A90F92D7C5D8CF8148DA373
C47350C7BA682B34A3E584A0D58463EA42B1AD73
D1C0F48B370E74D4EA4770ED4C3CD70A3198D31F
8F23EE7868BDB19F94CA3EE295E240D71EFA33DC
114514191909BEEF280CA91DE875403B03999682
Multi-signer build
ee.nekoko.nlpa2.std Android (apk) D1C0F48B370E74D4EA4770ED4C3CD70A3198D31F 9eSIM Signature
ee.nekoko.nlpa2.sekiu Android (apk) C47350C7BA682B34A3E584A0D58463EA42B1AD73 Community Signature
ee.nekoko.nlpa2.open Android (apk) C47350C7BA682B34A3E584A0D58463EA42B1AD73 Community Signature (open-source build from NekokoLPA2)
ee.nekoko.nlpa2.windows Windows — Windows desktop installer + portable zip
ee.nekoko.nlpa2.linux Linux — Linux tar.gz + AppImage
Close

Permissions

15 permissions requested

  • android.permission.INTERNET
  • android.permission.BLUETOOTH
  • android.permission.BLUETOOTH_ADMIN
  • android.permission.BLUETOOTH_SCAN
  • android.permission.BLUETOOTH_CONNECT
  • android.permission.ACCESS_FINE_LOCATION
  • android.permission.ACCESS_COARSE_LOCATION
  • android.permission.RECEIVE_BOOT_COMPLETED
  • android.permission.VIBRATE
  • android.permission.POST_NOTIFICATIONS
  • android.permission.SCHEDULE_EXACT_ALARM
  • android.permission.CAMERA
  • ee.nekoko.nlpa2.std.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
  • moe.shizuku.manager.permission.API_V23
  • android.permission.ACCESS_NETWORK_STATE
Close