*** Disclaimer
I am not responsible for any bricked devices, dead SD cards, thermonuclear war, or you getting fired because the alarm app failed. YOU are choosing to make these modifications, and if you point a finger at me for messing up your device, I will laugh at you.
Normal boot:
Backup your data first
Flash any HyperOS 3 version (preferably the latest available version from any region)
Flash DFE NEOv2 using the configuration described in the DFE NEOv2 section below (Reboot!)
(Reboot!) is reboot into Recovery, don't boot into system!
I said "Download" items on every line but download everything before start and do not keep them in your device.
Dual Boot (with HyperOS)
Due to some issues and extra workload I removed the dual boot method with another super image. Still you can dual boot HyperOS and Droidian if the system has HyperOS.
Backup your data first
Flash any HyperOS 3 version (preferably the latest available version from any region)
Flash DFE NEOv2 using the configuration described in the DFE NEOv2 section below (Reboot!)
Halium boot should not be in the slot where the main system is. Therefore, the firmware and vendor_boot should also be in the other slot, in other words, we should copy them. I have a small script file for this, copy it and use it in recovery:
#!/system/bin/sh
if [ $# -ne 1 ]; then
echo "Usage: $0 <A|B>"
exit 1
fi
MODE="$1"
if [ "$MODE" != "A" ] && [ "$MODE" != "B" ]; then
echo "Error: Invalid slot. Use 'A' or 'B'"
exit 1
fi
PARTITIONS="
abl
aop
aop_config
bk41
bluetooth
cpucp
devcfg
dsp
dtbo
featenabler
hyp
imagefv
keymaster
mdtp
mdtpsecapp
modem
multiimgoem
multiimgqti
qupfw
qweslicstore
recovery
shrm
tz
uefi
uefisecapp
vbmeta
vbmeta_system
vendor_boot
xbl
xbl_config
xbl_ramdump
"
for part in $PARTITIONS; do
if [ "$MODE" = "B" ]; then
SOURCE="/dev/block/by-name/${part}_a"
TARGET="/dev/block/by-name/${part}_b"
echo "[SLOT B] ${part}_a -> ${part}_b"
else
SOURCE="/dev/block/by-name/${part}_b"
TARGET="/dev/block/by-name/${part}_a"
echo "[SLOT A] ${part}_b -> ${part}_a"
fi
if [ ! -e "$SOURCE" ]; then
echo " ERROR: $SOURCE not found! Skipped."
continue
fi
if [ ! -e "$TARGET" ]; then
echo " ERROR: $TARGET not found! Skipped."
continue
fi
dd if="$SOURCE" of="$TARGET"
if [ $? -eq 0 ]; then
echo " SUCCESS: Process completed.."
else
echo " ERROR: An error appeared while copying $part !"
fi
done
echo "Script done."
If your main system installed on slot A, use this script with B arg or if slot B use with A arg
(Reboot!) is reboot into Recovery, don't boot into system!
I said "Download" items on every line but download everything before start and do not keep them in your device.
WARNING: System updates are generally not recommended due to compatibility issues. If you absolutely must update the system, please remember that the slot where the system is installed may change during system updates and that the operations performed by DFE NEOv2 will be undone (you will encounter a boot loop problem because the userdata is still unencrypted). After the update process is complete, repeat the required slot preparation steps before booting Droidian.
DFE NEOv2:
When installing DFE NEOv2, answer the installer questions like this:
Install a patch to hide the lack of encryption? — Yes
Remove system integrity check? — Yes
When it finally asks to install, choose Yes
Answer No to everything else.
After DFE NEOv2 is installed, first open the Wipe Data screen in your Recovery, select everything available there and wipe data. Then use the normal Format Data option/button and format data too.
If you get any error while wiping or formatting, do not boot into system. Reboot directly back into Recovery, wipe the partitions again and do Format Data again.
Things to know
Plymouth requires a kernel with the patched initramfs setup for the required display modules. The upstream PR is still pending. Until it is merged, write to me in our Telegram group for the kernel with the patched initramfs.
Dual SIM and MTP not working(USB tethering fixed but same fix method not worked with MTP)
FINGERPRINT NOT WORKING !!! (don't try to fix it if you are dual booting)
It is not possible to access custom Recovery in the slot with Halium boot.img. Make sure that there is a custom Recovery in the other slot (the slot with Android for dual boot) and that it is functional, just in case. You need to use fastboot to change the slot. If Droidian is running, you can also use android_bootctl (you need to use it to switch to Android in dual boot)
On some recoveries, rootfs.img cannot be mounted. You can find the latest boot.img in this link. Also you must resize the rootfs manually.
cd $LOCATIONOFBOOTIMAGE
# $LOCATIONOFBOOTIMAGE is location of boot image. Replace it.
dd if=boot.img of=/dev/block/by_name/boot_?
# Replace ? with correct slot letter.
e2fsck -fv /data/rootfs.img
resize2fs -f /data/rootfs.img xG
# x is how much GB you want. Replace it.
If have some problems about call and messaging functions, restart oFono and ofono2MM (ofono.service ModemManager.service)
If have some problems about audio, restart PulseAudio and audiosystem-passthrough with systemctl --user (pulseaudio.service audiosystem-passthrough.service)