- my Linux "PC" for this installation is
Orange Pi 5 Pro
mbohun@orangepi5pro:~$ dmesg -T
...
[Wed Jul 22 20:47:23 2026] usb 1-1: new high-speed USB device number 3 using xhci-hcd
[Wed Jul 22 20:47:23 2026] usb 1-1: New USB device found, idVendor=22b8, idProduct=2e81, bcdDevice= 5.04
[Wed Jul 22 20:47:23 2026] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[Wed Jul 22 20:47:23 2026] usb 1-1: Product: motorola edge 30
[Wed Jul 22 20:47:23 2026] usb 1-1: Manufacturer: motorola
[Wed Jul 22 20:47:23 2026] usb 1-1: SerialNumber: ZY22G4PPWC
- check if you have
adbandfastbootinstalled
mbohun@orangepi5pro:~$ sudo apt install android-sdk-platform-tools-common
mbohun@orangepi5pro:~$ cd /etc/udev/rules.d/
mbohun@orangepi5pro:~$ sudo cp /lib/udev/rules.d/51-android.rules .
mbohun@orangepi5pro:~$ ls -lahF
# 0x22b8 is Motorola
mbohun@orangepi5pro:~$ grep 22b8 51-android.rules
mbohun@orangepi5pro:~$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
mbohun@orangepi5pro:~$ sudo udevadm control --reload-rules
mbohun@orangepi5pro:~$ sudo udevadm trigger
mbohun@orangepi5pro:~$ adb --version
Android Debug Bridge version 1.0.41
Version 34.0.4-debian
Installed as /usr/lib/android-sdk/platform-tools/adb
Running on Linux 6.1.115-vendor-rk35xx (aarch64)
mbohun@orangepi5pro:~$ adb devices
List of devices attached
ZY22G4PPWC device
mbohun@orangepi5pro:~$ fastboot --version
fastboot version 34.0.4-debian
Installed as /usr/lib/android-sdk/platform-tools/fastboot
mbohun@orangepi5pro:~$ fastboot devices
ZY22G4PPWC fastboot
mbohun@orangepi5pro:~$ fastboot oem get_unlock_data
(bootloader) Unlock data:
(bootloader) 3A__REMOVED_REMOVED_REMOVED__50
(bootloader) 50__REMOVED_REMOVED_REMOVED__35
(bootloader) 4B__REMOVED_REMOVED_REMOVED__A7
(bootloader) 9B__REMOVED_REMOVED_REMOVED__#5
(bootloader) 65__REMOVED_REMOVED_REMOVED__00
OKAY [ 0.028s]
Finished. Total time: 0.028s
- This unlock data is submitted at Motorola support page:
- You should receive an email with the
$UNLOCK_CODE
mbohun@orangepi5pro:~$ fastboot oem unlock $UNLOCK_CODE
(bootloader) Already unlocked
FAILED (remote: '')
fastboot: error: Command failed
- The unlocked bootloader is showing "Panel" info, this is required by
pmboostrap - My "Panel" is:
csot
- Install
pmbootstrapas described here: https://wiki.postmarketos.org/wiki/Pmbootstrap/Installation - Boot your
Motorola Edge 30into the fastboot mode for flashing
mbohun@orangepi5pro:~$ pmbootstrap init
mbohun@orangepi5pro:~$ pmbootstrap install
mbohun@orangepi5pro:~$ pmbootstrap flasher flash_vbmeta
[22:44:17] (native) flash vbmeta.img with verity disabled flag
[22:44:18] (native) install android-tools
Sending 'vbmeta_b' (4 KB) OKAY [ 0.001s]
Writing 'vbmeta_b' (bootloader) WARNING: vbmeta_b anti rollback downgrade, 0 vs 21
OKAY [ 0.114s]
Finished. Total time: 0.121s
[22:44:20] NOTE: chroot is still active (use 'pmbootstrap shutdown' as necessary)
[22:44:20] DONE!
- NOTE: "You can't just
fastboot erase dtbobecause of Motorola's creative decisions :) Instead, create a blank file and flash it:"
mbohun@orangepi5pro:~$ dd if=/dev/zero of=blank.dtbo.img bs=25165824 count=1
1+0 records in
1+0 records out
25165824 bytes (25 MB, 24 MiB) copied, 0.0529354 s, 475 MB/s
mbohun@orangepi5pro:~$ fastboot flash dtbo blank.dtbo.img
Sending 'dtbo_b' (24576 KB) OKAY [ 0.743s]
Writing 'dtbo_b' OKAY [ 0.070s]
Finished. Total time: 0.819s
mbohun@orangepi5pro:~$
mbohun@orangepi5pro:~$ pmbootstrap flasher flash_kernel
[22:54:00] (rootfs_motorola-dubai) install device-motorola-dubai device-motorola-dubai-kernel-csot
[22:54:01] (rootfs_motorola-dubai) install postmarketos-mkinitfs
[22:54:02] (rootfs_motorola-dubai) mkinitfs
[22:54:11] (native) flash kernel postmarketos-qcom-sc7280
[22:54:11] (native) install android-tools
Sending 'boot_b' (27928 KB) OKAY [ 0.701s]
Writing 'boot_b' OKAY [ 0.056s]
Finished. Total time: 0.804s
[22:54:13] You will get an IP automatically assigned to your USB interface shortly.
[22:54:13] Then you can connect to your device using ssh after pmOS has booted:
[22:54:13] ssh user@172.16.42.1
[22:54:13] NOTE: If you enabled full disk encryption, you should make sure that Unl0kr has been properly configured for your device
[22:54:13] NOTE: chroot is still active (use 'pmbootstrap shutdown' as necessary)
[22:54:13] DONE!
⚠️ DON'T run any otherpmbootstrapcommands while in the fastboot mode; this is only to runpmbootstrap flasher flash_rootfsfrom the fastboot mode!
As of "now" (2026-07-23) you can't simply run pmbootstrap flasher flash_rootfs.
The following steps are describing a workaround:
- Change the active slot. There are two slots:
aandb. Usefastboot getvar current-slotto get the currently active slot, and then change the active slot to the other one:- if the current active slot is
a, change it tob - if the current active slot is
b, change it toa
- if the current active slot is
example:
mbohun@orangepi5pro:~$ fastboot getvar current-slot
current-slot: a
Finished. Total time: 0.000s
mbohun@orangepi5pro:~$
mbohun@orangepi5pro:~$ fastboot set_active b
Setting current slot to 'b' OKAY [ 0.295s]
Finished. Total time: 0.295s
- Download and flash the following LineageOS files:
- download the latest https://download.lineageos.org/devices/dubai/builds
- boot.img
- dtbo.img
- vendor_boot.img ...and flash them as follows:
mbohun@orangepi5pro:~$ fastboot flash boot boot.img Sending 'boot_b' (98304 KB) OKAY [ 3.633s]
Writing 'boot_b' OKAY [ 1.627s]
Finished. Total time: 5.264s
mbohun@orangepi5pro:~/LineageOS/test$ fastboot flash dtbo dtbo.img
Sending 'dtbo_b' (24576 KB) OKAY [ 5.701s]
Writing 'dtbo_b' OKAY [ 0.157s]
Finished. Total time: 6.012s
mbohun@orangepi5pro:~/LineageOS/test$ fastboot flash vendor_boot vendor_boot.img
Sending 'vendor_boot_b' (98304 KB) OKAY [ 3.097s]
Writing 'vendor_boot_b' OKAY [ 0.281s]
Finished. Total time: 3.380s
- REBOOT to fastboot:
mbohun@orangepi5pro:~/LineageOS/test$ fastboot reboot fastboot
- You should see the fastboot screen: https://gist.github.com/mbohun/10dab097eb0cbf9b11f175a8fc622b81?permalink_comment_id=6292393#gistcomment-6292393
- Now while in fastboot (resume the pmOS installation and) flash the postmarketOS rootfs:
mbohun@orangepi5pro:~$ pmbootstrap flasher flash_rootfs
[18:54:45] (native) flash rootfs image
[18:54:46] (native) install android-tools
[sudo] password for mbohun:
Warning: skip copying userdata image avb footer due to sparse image.
Sending sparse 'userdata' 1/9 (258224 KB) OKAY [ 7.912s]
Writing 'userdata' OKAY [ 2.565s]
Sending sparse 'userdata' 2/9 (260615 KB) OKAY [ 7.597s]
Writing 'userdata' OKAY [ 2.124s]
Sending sparse 'userdata' 3/9 (236806 KB) OKAY [ 6.634s]
Writing 'userdata' OKAY [ 1.555s]
Sending sparse 'userdata' 4/9 (237517 KB) OKAY [ 6.167s]
Writing 'userdata' OKAY [ 0.552s]
Sending sparse 'userdata' 5/9 (255818 KB) OKAY [ 6.829s]
Writing 'userdata' OKAY [ 0.993s]
Sending sparse 'userdata' 6/9 (261909 KB) OKAY [ 6.869s]
Writing 'userdata' OKAY [ 0.903s]
Sending sparse 'userdata' 7/9 (257196 KB) OKAY [ 6.933s]
Writing 'userdata' OKAY [ 1.695s]
Sending sparse 'userdata' 8/9 (262014 KB) OKAY [ 7.198s]
Writing 'userdata' OKAY [ 2.549s]
Sending sparse 'userdata' 9/9 (79459 KB) OKAY [ 2.104s]
Writing 'userdata' OKAY [ 0.553s]
Finished. Total time: 74.839s
[18:56:18] NOTE: chroot is still active (use 'pmbootstrap shutdown' as necessary)
[18:56:18] DONE!
mbohun@orangepi5pro:~$
- Set active slot back to what was it set to before this WORKAROUND:
mbohun@orangepi5pro:~$ fastboot set_active a
Setting current slot to 'a' OKAY [ 0.295s]
Finished. Total time: 0.295s
- In fastboot mode:
mbohun@orangepi5pro:~$ pmbootstrap shutdown
[sudo] password for mbohun:
[14:45:17] DONE!
- REBOOT
mbohun@orangepi5pro:~$ fastboot reboot
Rebooting OKAY [ 0.000s]
Finished. Total time: 0.151s

Uh oh!
There was an error while loading. Please reload this page.