nPhoneCLI
nPhoneKIT as a interfaceable and easy-to-implement Python PYPI package.
Legal Warning: FRP Unlocking is only legal on your own devices. I am not responsible for misuse of this package. Only use it on your own devices.
Usage
[!NOTE] On your system, to use nPhoneCLI, you will also need ADB and Python3 installed. Also, please report any unexpected errors/issues by opening a GitHub issue.
[!IMPORTANT] If you have any contributions to make, feel free to fork, modify, and submit a PR to get it pushed to the main repo!
First, install nphonecli:
pip install nphonecli
Then, import nphonecli into your code:
import nphonecli
Then, use whatever functions are neccesary:
Example:
import nphonecli
try:
# Save the status to check whether it succeeded later
status = nphonecli.reboot(verbose=False)
except ConnectionAbortedError:
# Catch the ConnectionAbortedError if the device couldn't connect.
print("Error, the device could not reboot.")
if status = "Success"
# Print success message if status indicates a successful reboot.
print("Success, device rebooted")
List of all functions and purposes:
| Title | Function | Params | Uses | Successful | Unsuccessful | Method(s) |
|---|---|---|---|---|---|---|
| Get Version Info | verinfo(gui: bool) | gui: bool | Fetch version info from a device. | Returns a dict which contains version info, or prints the dict if the gui bool is true. | Raises a ConnectionError. | AT |
| Reboot (Android) | reboot(verbose: bool) | verbose: bool | Force-reboot a device (excl. Samsung). | Returns "Success". | Raises a ConnectionAbortedError. | AT |
| Reboot (Samsung) | reboot_sam(verbose: bool) | verbose: bool | Force-reboot a device (incl. Samsung). | Returns "Success". | Raises a ConnectionAbortedError. | AT |
| Reboot Download Mode (Samsung) | reboot_download_sam(verbose: bool) | verbose: bool | Force-reboot a Samsung device to Download Mode. | Returns "Success". | Raises a ConnectionRefusedError. | AT |
| Open WIFITEST (Samsung) | wifitest(verbose: bool) | verbose: bool | Open WIFITEST menu on Samsung devices. | Returns "Success". | Raises a RuntimeError. | AT |
| LG Screen Unlock | lg_screen_unlock(verbose: bool) | verbose: bool | Unlock the screen of older LG devices. | Returns "Success". | Raises a ConnectionRefusedError. | AT |
| Motorola Fastboot FRP Unlock | moto_frp(verbose: bool) | verbose: bool | Remove FRP lock from Motorola devices. | Returns "Success". | Raises a ConnectionError. | Fastboot |
| FRP Unlock 2024 (Samsung, USA Only) | frp_unlock_2024(verbose: bool) | verbose: bool | Remove FRP lock from 2024-patch Samsung USA devices. | Returns "Success". | Raises a ConnectionError or ConnectionRefusedError. | AT, ADB |
| FRP Unlock 2022-2023 (Samsung) | frp_unlock_2022_2023(verbose: bool) | verbose: bool | Remove FRP lock from 2022-2023-patch Samsung devices. | Returns "Success". | Raises a ConnectionError or ConnectionRefusedError. | AT, ADB |
| FRP Unlock Pre-2022 (Samsung) | frp_unlock_pre2022(verbose: bool) | verbose: bool | Remove FRP lock from pre-2022-patch Samsung devices. | Returns "Success". | Raises a ConnectionError or ConnectionRefusedError. | AT, ADB |
| Set Battery Percentage | setBatteryPercent(percent: int, verbose: bool) | percent: int, verbose: bool | Set a battery percentage (faked). | Returns "Success". | Raises a ConnectionRefusedError. | ADB |
| Reset Battery Percentage | resetBatteryPercent(verbose: bool) | verbose: bool | Reset the battery percent to normal. | Returns "Success". | Raises a ConnectionRefusedError. | ADB |
| Remove Bloatware | bloatRemove(verbose: bool) | verbose: bool | Remove bloatware on Samsung devices. | Returns "Success". | Raises a ConnectionError or ConnectionRefusedError. | ADB |
Final Notes
I expect this to be somewhat the "future" of open-source device unlocking & right-to-repair, as it can now be used in virtually any Python project! If you do use it, you can attribute a small message such as "nPhoneCLI provided by NlckySolutions (https://github.com/nlckysolutions)"
That's about it! You can inspect the code in src/nphonecli/core.py! Remember, do not use this on devices you do not own or have explicit permission from the owner to unlock.
[!TIP] Use verbose=True/gui=True in order to provide detailed instructions, if using the package with an end user. Automation should not need this, but the instructions will still need to be performed.
Happy New Year 2026 from NlckySolutions™!
This will be the final NlckySolutions™ project to be released in 2025.
Released on Dec. 31st 2025.
Metadata
Release files for nphonecli 1.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nphonecli-1.5.1.tar.gz | 55.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nphonecli-1.5.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 97.8 kB
Release files / nphonecli-1.5.1.tar.gz
| Download URL | nphonecli-1.5.1.tar.gz |
|---|---|
| Size | 55.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d29ed030fc220ab764250de338525e2d62fd95c7273bb21889f7c13254d1fa5b
|
|
BLAKE2b-256 checksum How to use checksums |
d093387e0e0834943293bd272a07a3ace7c020ef43e216ae9b4b789aa8a05714
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.14
|
Release files / nphonecli-1.5.1-py3-none-any.whl
| Download URL | nphonecli-1.5.1-py3-none-any.whl |
|---|---|
| Size | 42.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e09f10912cbe92234969748a20f84c60b3b42ca6f4dc64f385fba49ef9e1ecea
|
|
BLAKE2b-256 checksum How to use checksums |
42eca4902b631a6f89b4fbf7541402217384d45599129344ae69e7ce5be29def
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.14
|