Skip to content

titiansxd/android_device_ports

Repository files navigation

Cross-Device ROM Ports

Porting ROMs from one Android device to another — by titiansxd


What is a Port?

A ROM port means taking a ROM built for Device A and making it work on Device B.

Device A (Source)          Device B (Target)
ROM built for A     →    Adapted to run on B
e.g. Xiaomi Mi 11   →    Xiaomi Redmi Note 10

Since both devices may share similar hardware (same SoC, same chipset family), a port can work with the right modifications to the device tree and vendor blobs.


Ports Available

ROM Source Device Target Device Android Status
LineageOS 21 Device A Device B Android 14 ✅ Stable
crDroid 10 Device A Device B Android 14 🔧 Beta
PixelOS Device A Device B Android 13 ⚠️ Alpha

Structure

cross-device-port/
├── README.md
├── guides/
│   ├── 01-requirements.md       # What you need before starting
│   ├── 02-extract-blobs.md      # How to pull vendor blobs
│   ├── 03-adapt-device-tree.md  # Editing device tree for target
│   ├── 04-fix-common-issues.md  # Common port bugs & fixes
│   └── 05-testing.md            # How to test your port
├── patches/
│   └── port-fixes/              # Patches specific to porting fixes
├── scripts/
│   ├── extract-blobs.sh         # Pull blobs from source device
│   └── check-compatibility.sh   # Check if devices are compatible
└── compatibility/
    └── device-matrix.md         # Which devices can port to which

Before You Start

Devices must share:

  • ✅ Same SoC (e.g. both Snapdragon 678)
  • ✅ Same chipset family (e.g. both SM6150 series)
  • ✅ Same architecture (arm64)
  • ✅ Similar partition layout

Tools needed:

  • Linux PC (Ubuntu 20.04+ recommended)
  • ADB & Fastboot
  • Python 3
  • Git

Quick Start

# 1. Clone this repo
git clone https://github.com/titiansxd/cross-device-port

# 2. Extract blobs from source device (connect Device A via USB)
cd scripts
chmod +x extract-blobs.sh
./extract-blobs.sh

# 3. Check compatibility between devices
./check-compatibility.sh <source_codename> <target_codename>

# 4. Follow the guides in order
cat guides/01-requirements.md

Common Issues & Fixes

Issue Likely Cause Fix
Bootloop Wrong kernel Use target device kernel
No Wi-Fi Wrong blobs Re-extract Wi-Fi blobs from target
No sound Audio HAL mismatch Copy audio configs from target tree
No SIM RIL mismatch Use target device RIL blobs
Camera FC Camera blob mismatch Port camera configs separately
Touch not working Wrong touch firmware Copy touchscreen driver from target

Porting Steps (Summary)

1. Get ROM source for Device A
        ↓
2. Extract vendor blobs from Device B (target)
        ↓
3. Adapt Device A tree → Device B tree
   - Change codename, model, fingerprint
   - Update partition sizes
   - Swap kernel (use Device B kernel)
        ↓
4. Build ROM with adapted tree
        ↓
5. Flash & test on Device B
        ↓
6. Fix bugs → repeat from step 4

Guides


Credits

  • LineageOS team
  • crDroid team
  • All device maintainers whose work helped these ports

Disclaimer

Flashing custom ROMs voids warranty and may brick your device. Always take a full backup before flashing. I am not responsible for any damage.


License

Apache 2.0

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages