explaingit

ackites/nrfr

7,491KotlinAudience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

Android app that changes the country code your phone reads from its SIM card, fixing carrier compatibility issues and regional app restrictions, no root access required.

Mindmap

mindmap
  root((nrfr))
    What it does
      Changes SIM country code
      No root needed
      Dual-SIM support
      Instant revert
    How it works
      CarrierConfigLoader API
      Shizuku permissions
      No Magisk needed
    Setup
      USB debugging
      Desktop companion app
      Shizuku install
    Use cases
      Fix roaming issues
      Unlock regional apps
      Carrier name fix
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Fix carrier settings when using a foreign SIM card while traveling so your phone recognizes the network correctly.

USE CASE 2

Trick region-locked apps into thinking your phone is in a different country by changing the SIM country code.

USE CASE 3

Correct carrier name display on dual-SIM phones where one slot shows the wrong operator name.

USE CASE 4

Test how apps behave with different SIM country codes without swapping physical SIM cards.

Tech stack

KotlinGoReactWailsAndroidADBShizuku

Getting it running

Difficulty · moderate Time to first run · 30min

Requires one-time Shizuku setup via ADB and USB debugging using a desktop companion app.

Use freely for any purpose including commercial use, as long as you include the copyright notice and license text.

In plain English

Nrfr is an Android app that changes the country code associated with your SIM card, without requiring root access. The country code is a piece of information the phone reads from the SIM to decide things like which carrier settings to apply and which regional features to unlock. Changing it can fix compatibility problems when using a foreign SIM card, resolve situations where a phone fails to recognize carrier settings correctly, or allow apps that check the SIM country to behave as if the phone is in a different region. The tool does not modify the SIM card itself. Instead, it calls an internal Android system API called CarrierConfigLoader to change how the operating system interprets the SIM's information. This approach avoids any risk to the SIM card and does not depend on third-party frameworks like Magisk or Xposed. Changes take effect immediately without a restart and persist across reboots. The app includes a restore function to revert to the original country code at any time. Dual-SIM devices are supported, and each slot can be configured separately. Because the app calls privileged system APIs, it needs elevated permissions that are granted through Shizuku, a tool that uses ADB (Android Debug Bridge) to provide those permissions without root. Setting up the whole system involves enabling USB debugging on the phone, connecting it to a computer, and running a desktop companion application that automates the installation of Shizuku and the Nrfr app itself. The README describes several practical use cases in Chinese: fixing operator configuration mismatches during international roaming, correcting display of carrier names, and resolving regional restrictions in apps that read the SIM country code. The Apache 2.0 license applies to the project. The desktop companion tool is built with Go and React using a framework called Wails, while the Android app is written in Kotlin.

Copy-paste prompts

Prompt 1
I have nrfr installed on my Android phone via Shizuku. My foreign SIM is showing the wrong carrier name and settings. Walk me through changing the country code to fix it.
Prompt 2
How do I set up Shizuku on my Android phone using ADB so nrfr gets the permissions it needs to change my SIM country code without root?
Prompt 3
I want to build an Android app that modifies carrier configuration the same way nrfr does using CarrierConfigLoader. Show me the API calls I need and the permissions required.
Prompt 4
My dual-SIM Android phone has two different country codes configured in nrfr. How do I set each SIM slot to a different region independently?
Open on GitHub → Explain another repo

← ackites on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.