# BCR (Basic Call Recorder): a rooted Android call recorder that refuses to do more

> BCR is a GPL-3.0 Android call recorder for rooted devices and custom firmware, installed as a system app through Magisk or KernelSU. Its scope is deliberately narrow, and the README says so.

**chenxiaolong/BCR** — A Basic Call Recorder for rooted Android devices

- Repository: https://github.com/chenxiaolong/BCR
- Stars: 2,927 · Forks: 172
- Language: Kotlin
- License: GPL-3.0
- Published: 2026-09-24 · Updated: 2026-09-24 · Language: en
- Canonical page: https://hysenlabs.com/projects/chenxiaolong-bcr

## Who BCR is for, and who it will turn away

BCR records incoming and outgoing phone calls in the background on Android 9 and newer, once it has been installed as a system app on a rooted device or a device running custom firmware. That installation requirement is the whole audience filter. The README lists support for stock, unrooted firmware under non-features, so a phone that has never been rooted is not a supported target. The same list rules out workarounds for OEM battery optimisation and app killing, and workarounds for devices that do not expose the VOICE_CALL audio source. If your handset needs either of those, BCR is the wrong tool and the project says so before you install anything.

The intended user is someone who already runs Magisk or KernelSU, or flashes custom firmware, and wants call recording to happen without a persistent notification, without network access, and without a settings screen full of options. The README frames the goal bluntly: the project succeeds if the only updates it ever needs are compatibility fixes for new Android versions. Features that do not serve that goal are declared out of scope in advance, which is unusual and useful, because it tells you not to file the request.

## How recording actually happens: system app, audio source, output directory

BCR is not a normal APK that asks for permissions at runtime. It ships as a zip that places the app in the system partition, which is why the README's first instruction is to flash it as a Magisk or KernelSU module, or to flash it from recovery on unrooted custom firmware. Being a system app is what lets it reach Android's call recording APIs and the VOICE_CALL audio source, and it is also why the app is direct boot aware: it can record calls that arrive before the first unlock after a reboot.

Recordings go to a directory you choose through Android's Storage Access Framework, which is what allows SD cards and USB storage as targets. If no directory is selected, or the selected one becomes unreachable, files land in /sdcard/Android/data/com.chiller3.bcr/files. On Android 12 and newer that path is only reachable over USB or through DocumentsUI, so the fallback is safe but inconvenient. Output format is a real choice with consequences: OGG/Opus is the default on Android 10 and newer, M4A/AAC is the default on Android 9, FLAC is lossless and larger, WAV/PCM is lossless, largest, and uses the least CPU, and AMR-WB/AMR-NB is mono only and produces the smallest files.

Stereo recording splits uplink and downlink into separate channels. The README states this is only known to work on Pixel devices running newer Android versions, and warns that other hardware may show no separation or even no audio at all. That is a hardware-level caveat, not a configuration mistake, and it is the single most important thing to test before trusting the feature.

## Installing BCR and making a first recording

Download the latest version from the releases page. For a Magisk or KernelSU device, flash the zip as a module from inside the root manager, reboot, then open BCR. KernelSU users have two extra steps that the README calls out: a metamodule must be installed, and BCR's app profile must be set to Custom with the Unmount modules option disabled, because the app crashes if its files are not mounted.

If you use any root hiding feature, extract the APK from the zip and install it manually before rebooting. The README explains why: hiding BCR's APK from the system causes crashes.

On LineageOS and LineageOS-based systems there is a documented bug where Android sometimes fails to create BCR's app data directory, producing a crash with a Failed to prepare log message. The README gives the fix directly:

```bash
adb shell mkdir -p /sdcard/Android/data/com.chiller3.bcr/files
adb shell chmod -R 777 /sdcard/Android/data/com.chiller3.bcr
```

On unrooted custom firmware, flash the zip while booted into recovery instead. Android 10 and newer hard-restrict the READ_CALL_LOG permission so it cannot be granted through settings, and the README supplies the command to remove that restriction after rebooting back into Android:

```bash
# If rooted, run inside of `su`:
CLASSPATH=/system/priv-app/com.chiller3.bcr/app-release.apk app_process / com.chiller3.bcr.standalone.RemoveHardRestrictionsKt

# If unrooted, install BCR as both a user app and a system app:
pm install /system/priv-app/com.chiller3.bcr/app-release.apk
```

After rebooting and opening BCR, enable call recording and pick an output directory. The first enable prompts for microphone, notification (Android 13 and newer), call log, contacts, and phone permissions. Only microphone and notification are required for basic recording; the others enrich the output filename, for example adding a contact name. Then place a test call and confirm a file appears in the directory you selected. Before relying on BCR, disable any other call recorder and any AI features in the dialer, because the README states a phone call generally cannot be recorded by two apps at once.

## Limits you should accept before flashing anything

The first limitation is the install method itself. There is no supported path for a stock, unrooted phone, and the README says the erofs filesystem makes the recovery method impossible on firmware whose system partition uses it. If your device falls into either category, stop here.

The second is the audio source. BCR depends on VOICE_CALL, and the project explicitly declines to build a microphone plus speakerphone fallback. Devices that do not expose that source are unsupported, not buggy.

The third is the consent problem, and it is a legal one rather than a technical one. BCR does not announce recording to the other party and never outputs audio into the call stream, unlike some preinstalled dialer recorders. In two-party consent jurisdictions the README places the responsibility on you. Auto-record rules can discard recordings by default, but the README notes a sharp edge: if you decide mid-call to keep the recording, the saved file contains the entire call, not just the portion after the other party agreed.

The fourth is maintenance scope. Because BCR is deliberately basic, OEM battery managers that kill background apps are not worked around. A device that aggressively kills background processes may simply miss calls, and the project considers that out of scope.

## How BCR differs from dialer recorders and from Shizuku-based recorders

The obvious alternative is the built-in call recorder in a preinstalled dialer on devices that have one. The difference is architectural: a dialer recorder lives inside the phone app, while BCR is a separate system app that hooks Android's call recording APIs directly. That separation is why the README tells you to disable the dialer's recorder rather than run both, and why it warns that dialer AI features also compete for the same APIs. A dialer recorder also typically announces recording to the other party, which BCR never does.

A second alternative is a recorder that drives the system through Shizuku rather than installing as a system app. That approach avoids modifying the system partition, but it depends on a helper process being started after each boot and on the app holding the privileges Shizuku grants. BCR takes the opposite trade: a one-time flash that puts the app in /system/priv-app, after which it is direct boot aware and needs no companion process. If you cannot or will not modify the system partition, the Shizuku route is the one to look at, and if your firmware uses erofs, it may be your only option.

## Maintenance, upgrades and the GPL-3.0 licence

The repository is not archived, and the last push was on 2026-09-17, the same day as the v3.9 release. Releases have been frequent: v3.7 on 2026-08-20, v3.8 on 2026-09-05, v3.9 on 2026-09-17. For a project whose stated goal is to need only compatibility updates, that cadence is worth reading as evidence that Android compatibility work is ongoing rather than as evidence of feature growth. CHANGELOG.md sits at the repository root, so the upgrade path is: read the changelog for the release you are moving to, flash the new zip over the old one as a module, and reboot.

The README does not document a rollback procedure, and it does not describe what happens to existing recordings when you upgrade or uninstall. If you keep recordings in the default app data directory, treat them as something to copy off the device before flashing a new version. Anyone who needs a documented rollback path will not find one here.

BCR is licensed GPL-3.0, with the licence file at the repository root. That matters if you plan to redistribute the app, bundle it into a firmware image, or ship a modified build: the GPL's source and copyleft conditions attach to distribution. Installing BCR on your own phone is not distribution. This is a description of the licence, not legal advice; if you intend to ship it inside a ROM, read LICENSE yourself or ask someone qualified.

## Conclusion

Adopt BCR if you have a rooted device or custom firmware, you accept that installing it means flashing a zip as a system app, and you want automatic background recording with no network permission. Do not adopt it if your phone is stock and unrooted, if your firmware's system partition is erofs, or if you need microphone-based fallback on hardware that lacks the VOICE_CALL audio source. Before relying on it, record a test call and confirm the output file in the chosen directory, and if stereo separation matters, verify it on your own device rather than assuming Pixel behaviour. Check the latest release on the releases page and read CHANGELOG.md before upgrading, because the README documents no rollback path.

## FAQ

### Is there a call recording app that works without root, like BCR?

BCR does not support stock, unrooted firmware; the README lists that under non-features. Installation is documented only as flashing the zip as a Magisk or KernelSU module, or flashing it from recovery on custom firmware.

### Where do I get the BCR Basic Call Recorder APK?

From the project's releases page, which the README's usage section names as the first step. The APK also sits inside the zip at system/priv-app/com.chiller3.bcr/app-release.apk, which the README tells root-hiding users to install manually.

### Why is BCR not working on my device?

The README names several causes: a missing metamodule or an enabled Unmount modules option on KernelSU, a root hiding feature that hides the APK from the system, and a LineageOS bug where the app data directory is not created, producing a Failed to prepare log message. Devices without the VOICE_CALL audio source are unsupported by design.

### Can BCR record calls through Shizuku instead of root?

The README describes installation only as a Magisk or KernelSU module, or as a recovery flash on unrooted custom firmware. It does not document a Shizuku-based installation path.

### Does BCR tell the other party that the call is being recorded?

No. The README states that BCR does not announce recording to the other party and never outputs audio of any kind to the call audio stream, and that in two-party consent jurisdictions informing the other party is your responsibility.

## Sources

- [chenxiaolong/BCR on GitHub](https://github.com/chenxiaolong/BCR)
- [Issues](https://github.com/chenxiaolong/BCR/issues)
- [License: GPL-3.0](https://github.com/chenxiaolong/BCR/blob/master/LICENSE)
- [README](https://github.com/chenxiaolong/BCR/blob/master/README.md)
- [Releases](https://github.com/chenxiaolong/BCR/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/chenxiaolong-bcr
