NLPA P (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 via Shizuku `shell` access to the modem bus 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 Android phones the app uses Shizuku to run modem and SIM card operations with shell privileges that can reach the modem bus and the Secure Element HAL.
- Talk to modem bus: Open a modem bus socket and send and receive datagrams to discover modem services and card slots for Telephony and profile work.
- Read eSIM data: Get the card answer to reset and run read only queries through the Secure Element HAL to list profiles and show EID and profile state.
- Download eSIM profiles: Stage and install a bound profile package with authenticated download sequences after checking EID and profile state.
- Enable or disable profiles: Switch the active eSIM profile on or off after verifying the card and target profile state.
- Rename profiles: Change an eSIM profile nickname after verifying the card and profile list.
- Delete profiles: Remove a disabled eSIM profile after verifying it is not enabled.
- Clear notifications: Retrieve and remove a pending eSIM notification after confirming it matches the stored copy.
Android APIs or commands used
android.os.ServiceManager.getService("android.hardware.secure_element.ISecureElement/SIM1")android.os.ServiceManager.getService("android.hardware.secure_element.ISecureElement/SIM2")android.hardware.secure_element.ISecureElementandroid.os.IBinder.transactQRTR socket openQRTR socket sendQRTR socket receiveQRTR socket close
Notable details
QRTR modem access only applies on Qualcomm devices, and the Secure Element HAL reader only lists SIM slots 1 and 2.
Changelog
What's new for version 2.4.5
Added
- Published TYBLE reader support, including eight-digit 9eSIM B0 Plus names and authentication using the advertised device UID.
- Published experimental desktop VoWiFi/SMS for Windows, macOS and Linux, with explicit opt-in and the existing 9eSIM-build restriction.
- Published plain-SIM identity and operator probing for readers that support raw APDUs.
- Added eSTK.me slot selection, Android SE HAL readers and profile database import/export.
Fixed
- Enforced the Android and OMAPI VoWiFi restrictions at reader and service entry points.
- Improved desktop IMS authentication with quoted Digest challenges, MCC-independent qop negotiation, AUTS resynchronization, binary RES handling and nonce counts.
- Matched SIP final responses to their transactions, retained registration service routes, honored Min-Expires and serialized overlapping socket writes.
Documentation
- Added a README banner, getting-started and build instructions, VoWiFi restrictions, troubleshooting and an IMS research/verification guide.
Downloads
The ee.nekoko.nlpa2.open-* packages are built entirely from the public repository: Android community APK, Windows installer/portable ZIP, Linux AppImage/tarball and a static web ZIP. TYBLE readers, SIM probing and experimental desktop VoWiFi/SMS are included in these public builds.
The Android std, multi, sekiu and 9eSIM variants are also attached. Choose a signing certificate accepted by your card's access rules; fingerprints are listed below. Desktop VoWiFi remains opt-in, unavailable in 9eSIM-branded builds, and disabled on Android and OMAPI adapters.
The iOS and macOS 2.4.0 (600) builds were uploaded to TestFlight; availability follows Apple processing. The standard and 9eSIM Android builds were submitted to the Google Play production tracks.
See the README for setup and the IMS guide for protocol behavior and verification limits.
Signing certificates
| 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) |
Permissions
20 permissions requested
Sources
2 sources
Sources
2 sources