OctoLab Classic VoLTE Ecosystem: Qcom32 VoLTE targets 32-bit Qualcomm Android 11 (first verified profile: BlackBerry Passport LineageOS 18.1). Running stock BlackBerry 10 (OS 10.3.3) on Q10 / Q20 / Passport / P’9983? Visit our sister project BB10 VoLTE · GitHub

QUALCOMM 32-BIT (MSM8974) · ANDROID 11 · VERIFIED: BLACKBERRY PASSPORT

Native 4G VoLTE & Android 11
ImsService for 32-bit Snapdragon.

Qualcomm ended official Snapdragon 800/801 (MSM8974) support at Android 6.0, leaving Android 11 custom ROMs with LTE data but no voice calls after 2G/3G shutdowns. Qcom32 VoLTE provides a clean-room 32-bit Android 11 ImsService stack paired with profile-guarded Hexagon modem EFS provisioning—with BlackBerry Passport (wolverine) live-verified end to end.

Current release: v1.1.0-r1 (generic Qcom32VolteIms v2.4 + Qcom32VolteManager v1.1.0 + blackberry-passport-wolverine profile). Read the Setup Guide

QCOM32 VOLTE STACK · OCTOLAB
Qcom32 VoLTE 32-bit Qualcomm Android 11 VoLTE stack overview
QMI_IMSA Registered · Stock Dialer HD Voice · Working Caller IDv1.1.0-r1
01

Generic Stack + Profile GuardReusable Android 11 ImsService with device-gated EFS writes

02

No Magisk + Auto SIM SwapRooted Debugging setup & automatic CarrierConfig re-bind

03

Pre-Backup & Full RollbackRestores all 54 modem EFS items on demand

Compare vs Reference Project
01 / CLEAN-ROOM ARCHITECTUREReusable 32-bit Android 11 telephony framework decoupled from per-device modem EFS profiles.

Generic framework bridge,
profile-locked baseband writes.

Across 32-bit Qualcomm platforms, the Android 11 ImsService and rild_ims0 protobuf call engine are shared, while baseband PDP profile slots must be strictly gated per device.

DEVICE PROFILE / 01

Profile-Guarded EFS Provisioning

Matches devices/*/profile.json before touching /dev/diag; writes 405B dynamic-PCO qp_ims_reg_config + 789B IPV4V6 profile4 on verified Passport hardware.

GENERIC 32-BIT IMS / 02

Qcom32VolteIms Stack

Package org.octolab.qcom32ims running in UID 1001 with zero manifest permissions, persistent CarrierConfig binding, MO/MT call engine, and read-only VolteStatusProvider.

NATIVE VOICE / 03

Stock Dialer 4G HD Voice

No VoIP apps or background daemons. Survives USB unplugging, normal reboots, and multi-carrier SIM swaps while keeping LTE active during calls.

Device Profile Registry

Zero Blind EFS Writes

Qcom32VolteIms and read-only libimsa_probe.so work generically across 32-bit Qualcomm targets, while modem EFS mutations strictly require a verified devices/*/profile.json match and CRC-16 checks.

Zero Permission Drift

Protects System Phone State

Declaring extra permissions in a runtime-installed android.uid.phone APK breaks telephony on Android 11; bytecode gates enforce zero manifest permissions.

Zero-su Live Telemetry

Unplugged SIM-Swap Dashboard

Exposes a zero-PII read-only content://org.octolab.qcom32ims.status endpoint so Qcom32VolteManager displays live QMI_IMSA & IMS status on-screen without Magisk su.

02 / FOUR USAGE METHODSAll 4 delivery workflows are live-verified end to end on real hardware.

Four ways to deploy,
one clean-room stack.

Most users should run Method 1 (Windows EXE) once over USB, and click “Install Mobile Companion App” so live status is always visible on the phone screen while unplugged.

METHOD 01 · WINDOWS X64Recommended · No Magisk

Standalone Windows Desktop Activator

qcom32-volte-1.1.0-r1-windows-x64.exe

Single-file GUI bundling Python/Tk, official adb.exe, device profiles, and all signed phone payloads—zero external setup required.

  • Enable USB debugging + Rooted debugging in LineageOS Developer Options
  • Saves pre-deployment EFS snapshots to %LOCALAPPDATA%\qcom32-volte\backups\
  • Automates backup, Stage 6A provisioning, Qcom32VolteIms install, reboot, and verification
METHOD 02 · ON-DEVICE APKZero-su Dashboard + Magisk

Android Companion Manager App

Qcom32VolteManager-1.1.0-r1.apk (org.octolab.qcom32volte)

Standalone user-space app (signed with its own key so it never collides with UID 1001) embedding SHA-256-verified payloads.

  • Works without Magisk or USB: displays live carrier PLMN, rild_ims0, QMI_IMSA VoIP, and framework IMS status directly on-screen
  • If Magisk (su) is installed, provision Stage 6A, upgrade the APK, or roll back modem EFS directly on the device
METHOD 03 · PORTABLE CLI & GUImacOS / Linux / Power Users

Cross-Platform Portable Bundle

qcom32-volte-1.1.0-r1-portable.zip

Zero-dependency Python 3 CLI and Tkinter GUI paired with prebuilt ARM32 binaries, signed APKs, and devices/ profiles.

  • python3 cli/volte_ctl.py status — Read-only live telemetry
  • python3 cli/volte_ctl.py deploy / upgrade-apk / install-manager / rollback
  • python3 cli/gui.py — Cross-platform desktop GUI
METHOD 04 · ROM & 32-BIT PORTINGROM Maintainers

LineageOS 18.1 Source Kit & Porting Guide

rom-integration/Android.bp + device-qcom32-volte.mk

Drop-in Soong build rules to bake Qcom32VolteIms into /system/priv-app/, plus device profile onboarding docs for fellow 32-bit Snapdragon flagships.

  • Integrates cleanly into any 32-bit Qualcomm LineageOS 18.1 tree
  • Includes porting roadmap for OnePlus One, Xperia Z2/Z3, Galaxy S5, Mi 4, LG G3, and HTC One M8
03 / TECHNICAL COMPARISONCode-level & live-hardware audit vs ikimi615/qualcomm-volte-enabler.

How this differs from
qualcomm-volte-enabler.

ikimi615/qualcomm-volte-enabler inspired initial /dev/diag exploration on BlackBerry KEY2 (SDM660 Android 8.1), whereas 32-bit MSM8974 on Android 11 required solving five structural gaps.

Dimension qualcomm-volte-enabler (KEY2 Reference) qcom32-volte (32-Bit Qualcomm Android 11 Stack)
SoC, ABI & OS Snapdragon 660 (arm64-v8a), stock Android 8.1 already ships Qualcomm’s proprietary ims.apk stack. 32-bit Qualcomm (MSM8974, armeabi-v7a), bridging LineageOS 18.1 (Android 11) where ImsService is completely absent.
/dev/diag Contract Ships prebuilt 64-bit efs_Write; pointer-style ioctl returns EINVAL (-22) on MSM8974 kernel, and MEMORY_DEVICE_MODE blocks EFS ops. Open-source 32-bit C pp_regconfig_provision_v6 (549 unit assertions) using scalar ioctl, sequence16+errno32 headers, and CCITT CRC-16.
Baseband EFS Scope Writes 1 byte (IMS_enable=01). Live-tested on Passport (1.61/1.62/1.81): still fails with CAUSE_CODE 54 READ_FAILED & NOT_REGISTERED. Decompressed 11.7MB Q6ZIP Hexagon firmware to build Stage 6A: 54 coordinated EFS/DS items (405B qp_ims_reg_config + 789B IPV4V6 profile4 + standalone DCM).
Android Stack & Caller ID Zero Android app code (README mentions of qcril.db and boot scripts are unimplemented in its 4 shell scripts). Clean-room Qcom32VolteIms.apk v2.4 (rild_ims0 protobuf engine, persistent CarrierConfig, 3GPP CLIP→OIR + TOA=145 Caller ID fix).
Root & Rollback Safety Requires Magisk; auto_enable_volte.sh performs no backup, writes even after read failure, and has no rollback tool. No Magisk required (LineageOS Rooted Debugging + zero-su on-phone status dashboard), mandatory pre-backup, and verified --rollback-all.
Full source-by-source audit and live device evidence are published in the repository. Read Full Comparison Document
04 / VERIFIED DEVICES & CARRIER BANDSFirst verified device profile, 3-carrier RF band notes, and fellow 32-bit Snapdragon flagships.

Verified profiles, SIMs,
and fellow 32-bit flagships.

Live-verified device profiles and community porting targets are documented transparently.

PROFILE 01First Verified Profile

BlackBerry Passport (wolverine)

BlackBerry Passport (SQW100-1 / SQW100-3 / SQW100-4) running LineageOS 18.1-UNOFFICIAL-wseries (API 30), backed by blackberry-passport-wolverine.

Live-Verified Carrier
China Unicom 460-01 (MO/MT calls, AMR-WB HD voice, Caller ID, LTE retention, reboot survival, and all 4 delivery workflows)
Multi-Carrier & RF Notes
Software is carrier-agnostic (mode=0 dynamic PCO). Note SQW100-1 RF supports FDD-LTE B1/B2/B3/B4/B5/B7/B8/B13/B17/B20 (no TDD B38-41 or CDMA 1x): Unicom & Telecom work across FDD LTE; China Mobile works in FDD B3/B8 cells and falls back to 2G GSM in TDD-only cells
MSM8974Generic Stack Ready

2014–2015 Snapdragon 800 / 801 Flagships

OnePlus One (bacon), Xiaomi Mi 4 / Note (cancro), Sony Xperia Z1/Z2/Z3, Samsung Galaxy S5 (klte), LG G2/G3, and HTC One M8 on Android 10/11.

Directly Reusable
Qcom32VolteIms.apk (on any ROM exposing rild_ims0), Qcom32VolteManager.apk, read-only libimsa_probe.so, and scalar /dev/diag EFS codecs
Onboarding a New Device
Audit target /nv/item_files/pdp_profiles/ read-only to confirm its ims slot index and add a verified devices/<id>/profile.json
BB10 OSSister Project

Stock BlackBerry 10 OS Users

Still running stock BlackBerry 10 OS 10.3.3.3216 (QNX microkernel) on your Passport, Classic (Q20), Q10, or Porsche Design P’9983?

Project
BB10 VoLTE (Desktop bootstrap + native on-device BAR app)

Zero-PC SIM Swapping: Stage 6A modem EFS settings use dynamic PCO (mode=0), and CarrierConfigBootstrapReceiver automatically binds VoLTE to any newly inserted SIM’s subId on boot—no PC needed when swapping SIM cards!

SIM Swap & Porting Details
05 / DOWNLOADDirect Cloudflare R2 edge downloads + GitHub Releases mirror with identical SHA-256 checksums.

Pick your package,
verify its checksum, and start.

Current Release
v1.1.0-r1 · Generic Stack

Release Notes
METHOD 01 · RECOMMENDED

Windows Desktop

Windows 10 / 11 · x64No Magisk · Bundled Python/ADB

Double-click to launch. Connect your phone with USB Debugging + Rooted Debugging enabled to inspect status, back up EFS, activate VoLTE, push the Companion App, or roll back.

Unsigned independent open-source binary; verify the SHA-256 hash before running if Windows SmartScreen prompts.
METHOD 02 · ON-DEVICE COMPANION

Android Companion

Qcom32VolteManager.apkAndroid 11 ARM32 · Zero-su Status

Install on your phone: view live carrier PLMN, rild_ims0, QMI_IMSA, and framework IMS status anytime without root, or provision/rollback on-device with Magisk.

Embeds SHA-256-verified Qcom32VolteIms.apk v2.4 and pp_regconfig_provision_v6.

macOS / Linux / ROM Maintainers: Portable CLI/GUI bundle, platform-signed generic IMS APK, and clean open-source archive.

Portable CLI/GUI ZIP Qcom32VolteIms Platform APK Source ZIP SHA256SUMS.txt

Served directly via Cloudflare R2 (qcom32-downloads.octoooo.com). Identical files and checksums are also mirrored on GitHub Releases:

GitHub Windows EXE · GitHub Companion APK · GitHub Portable ZIP · GitHub IMS APK · GitHub SHA-256

06 / OPEN SOURCE100% auditable source code—zero closed-source phone binaries.

Keeping 32-bit Snapdragon hardware alive?
Star Qcom32 VoLTE on GitHub.

Every line of C, Java, and Python—from Q6ZIP baseband findings to the generic Android 11 ImsService—is published under Apache-2.0. Carrier test reports and new MSM8974 device profiles are welcome.

Apache-2.0 License 700+ Automated Host C/Java Assertions 100% Offline, Zero Telemetry, PII-Redacted Logs Browse Source Code
07 / FAQKey questions before you begin.

Common questions
& safety boundaries.

Follow the complete step-by-step guide for Rooted Debugging setup, activation, multi-carrier SIM swaps, and factory rollback.

Open Complete Guide
Do I need to install Magisk?

No! LineageOS 18.1 includes built-in “Rooted debugging” under Developer Options, allowing our Windows EXE or cross-platform CLI to run adb root over USB once. After activation, unplug USB, reboot, and swap SIMs freely—and Qcom32VolteManager.apk displays live telemetry on-screen without Magisk.

How does upgrading from legacy org.passport.volteims work?

Automatically. Deploying or upgrading with v1.1.0-r1 cleans up legacy org.passport.volteims overrides and migrates cleanly to org.octolab.qcom32ims (v2.4).

Does incoming Caller ID work properly?

Yes. Qcom32VolteIms v2.4 translates 3GPP CLIP presentation values into Android’s ImsCallProfile.OIR_* constants, normalizes TOA=145 international numbers, and pushes callSessionUpdated so incoming numbers match Contacts cleanly.

Can I completely revert my modem EFS back to factory state?

Yes. Every deployment saves a local pre-activation snapshot first, and “Restore Factory Modem EFS & Uninstall” (or volte_ctl.py rollback) restores all 54 EFS items, runs EFS_SYNC, uninstalls the APK, and reboots cleanly.

Can I rely on this for emergency calls (911/112/110)?

No. This is an experimental community hardware-preservation project and has not undergone emergency services certification (E911 / IMS Emergency PDN). Do not rely on modified legacy devices as your sole emergency phone.