NekokoLPA (NekokoLPA2)
2.4.5 · GitHub
Detected trackers (1)
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
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
- Install the app from an official download channel.
- 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.
- 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,
OTBridgecan 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 / TMAPIandOTBridgeare Android-only paths.OTBridgeis intended for rooted Android setups where Telephony access or OMAPI policy bypass is needed.SE HALis experimental and off by default. It needs Shizuku, and works only where the device letsshellcall 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>andTES-BT-<UID>, plus 9eSIM B0 Plus readers named9eSIMfollowed 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:
OTBridgecan 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
OTBridgeprovider on Android when it is installed. - On rooted Android devices,
OTBridgecan 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
- Use a non-9eSIM-branded build on Windows, macOS or Linux.
- Connect an external SIM/eUICC reader that permits raw APDUs on the basic channel. OMAPI and SE HAL readers are not eligible.
- In Settings, enable VoWiFi and accept the experimental-feature notice.
- 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.
- 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
- GitHub Releases: iebb/NekokoLPA2 releases
- TestFlight: Join TestFlight
- Web: web.lpa.ee — release deployment guide
Star History
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.
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.getServiceandroid.hardware.secure_element.ISecureElementandroid.os.IBinder.transactandroid.os.ParcelQRTR bus socket
Notable details
Only works on Qualcomm devices where the modem bus exists, other phones cannot use the Shizuku QRTR path.
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) | 65D0571854AFEC519A90F92D7C5D8CF8148DA373C47350C7BA682B34A3E584A0D58463EA42B1AD73D1C0F48B370E74D4EA4770ED4C3CD70A3198D31F8F23EE7868BDB19F94CA3EE295E240D71EFA33DC114514191909BEEF280CA91DE875403B03999682 |
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 |
Permissions
15 permissions requested