[DEV][GUIDE] Building Qualcomm modem from sources (msm8626) - Android Software/Hacking General [Developers Only]

This instruction is only valid for modems without a digital signature (or modems with Qualcomm testing signature).
New modem has been tested on my phone Innos D10F (msm8228).
1. Install dependencies:
PHP:
sudo apt-get install p7zip-full
sudo apt-get install lib32z1 lib32ncurses5
sudo apt-get install scons
sudo apt-get install libxml-parser-perl
2. Download all sources:
PHP:
ROOTDIR=$HOME/dev/qcom/msm8626
mkdir -p $ROOTDIR
cd $ROOTDIR
git clone --branch "master" --progress -v "https://v2.pikacode.com/jsr-d10/qcom_msm8626_modem_proc.git" modem_proc
git clone --branch "master" --progress -v "https://v2.pikacode.com/jsr-d10/qcom_msm8626_adsp_proc.git" adsp_proc
git clone --branch "master" --progress -v "https://v2.pikacode.com/jsr-d10/qcom_msm8626_wcnss_proc.git" wcnss_proc
Mirror: magnet:?xt=urn:btih:61e8b8a520181ade801c251e5ec9352e33a7bb8c
3. Copy hexagon_tools_6.4.06.a.7z (this file is present in the torrent) into directory: $HOME/Downloads
4. Install HEXAGON Tools:
PHP:
HEXAGON_ROOT=$HOME/Qualcomm/HEXAGON_Tools
7za x -y -o$HEXAGON_ROOT $HOME/Downloads/hexagon_tools_6.4.06.a.7z
5. Start modem build:
PHP:
ROOTDIR=$HOME/dev/qcom/msm8626
cd $ROOTDIR/modem_proc/build/ms/
./build.sh 8626.gen.prod BUILD_ID=AAAAANAZ -k
For clean repo type:
PHP:
ROOTDIR=$HOME/dev/qcom/msm8626
cd $ROOTDIR/modem_proc/build/ms/
./build.sh 8626.gen.prod BUILD_ID=AAAAANAZ --clean
6. Start ADSP build:
PHP:
ROOTDIR=$HOME/dev/qcom/msm8626
cd $ROOTDIR/adsp_proc/build/ms/
./build.sh msm8x26 msm8x26_MPD BUILD_VER=1234 -k
7. WCNSS module is distributed without sources.
8. Download pil-splitter.py :
PHP:
ROOTDIR=$HOME/dev/qcom/msm8626
cd $ROOTDIR
wget http://github.com/remittor/qcom-mbn-tools/raw/master/pil-splitter.py
9. Copy NON-HLOS.bin image from stock ROM to ROOTDIR directory. Rename NON-HLOS.bin to NON-HLOS-BASE.bin
10. Create file makeimg.sh into ROOTDIR directory and insert following content:
PHP:
cd `dirname $0`
ROOTDIR=$(pwd)
TMPDIR=mbn_images
rm -rf $ROOTDIR/$TMPDIR
mkdir -p $ROOTDIR/$TMPDIR
cd $ROOTDIR/$TMPDIR
MODEM_STK=$ROOTDIR/NON-HLOS-BASE.bin
MODEM_NEW=$ROOTDIR/NON-HLOS.bin
BUILD_ID=AAAAANAZ
IMAGE_DIR=$ROOTDIR/modem_proc/build/ms/bin/$BUILD_ID
python $ROOTDIR/pil-splitter.py $IMAGE_DIR/qdsp6sw.mbn modem
python $ROOTDIR/pil-splitter.py $IMAGE_DIR/mba.mbn mba
BUILD_ID=AAAAAAAA
IMAGE_DIR=$ROOTDIR/adsp_proc/build/ms/bin/$BUILD_ID
python $ROOTDIR/pil-splitter.py $IMAGE_DIR/dsp2.mbn adsp
BUILD_ID=8x26
IMAGE_DIR=$ROOTDIR/wcnss_proc/build/ms/bin/$BUILD_ID
python $ROOTDIR/pil-splitter.py $IMAGE_DIR/wcnss.mbn wcnss
MODEMVERSTR=`grep -aohPz "QC_IMAGE_VERSION_STRING=.*" ./modem.*`
MODEMVER=`echo $MODEMVERSTR | cut -d "=" -f 2`
echo $MODEMVER > $ROOTDIR/ver_info.txt
MODEM_VDISK=/media/vdisk
cp -f $MODEM_STK $MODEM_NEW
sudo mkdir -p $MODEM_VDISK
sudo mount -t vfat $MODEM_NEW -o rw,umask=0000,shortname=lower $MODEM_VDISK
rm -f $MODEM_VDISK/image/modem.*
rm -f $MODEM_VDISK/image/mba.*
rm -f $MODEM_VDISK/image/adsp.*
rm -f $MODEM_VDISK/image/wcnss.*
cp -f ./* $MODEM_VDISK/image/
rm -f $MODEM_VDISK/verinfo/ver_info.txt
mkdir -p $MODEM_VDISK/verinfo
cp -f $ROOTDIR/ver_info.txt $MODEM_VDISK/verinfo/
sudo umount $MODEM_NEW
cd $ROOTDIR
11. Run script makeimg.sh (result: NON-HLOS.bin)
12. New image NON-HLOS.bin should flash in the relevant section of eMMC.
My test result:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}

BONUS
Qualcomm Developers Tools (2016)
QXDM 3.14.1144 (76 MB) (with license and patch)
After installation, you must do:
1) Copy qlms.txt to a directory %PUBLIC%\Documents\Qualcomm\QXDM
2) Replace QXDM.exe file to the patched version
QCAT 6.30.30 (140 MB) (with license and patch)
After installation, replace QCAT.exe to the patched version.

wow
you came back with another great thread :fingers-crossed:
thank you for sharing
i have a question
i still confused, where you got those files?

faizauthar12 said:
where you got those files?
Click to expand...
Click to collapse
Chinese Internet contains a lot of closed sources (qcom & MTK).

Sir, can I have source for msm8916 ?
Btw, greet guide sir

@bugerxXx
Check this thread. Post # 3.
Rename the file to .gz or .zip to get it to extract right.
https://forum.xda-developers.com/de...-rom-msm8909-service-rom-source-qpst-t3544178
Code-8916.gz is the link you are looking for.
Dont forget to hit the thanks button.

BigCountry907 said:
@bugerxXx
Check this thread. Post # 3.
Rename the file to .gz or .zip to get it to extract right.
https://forum.xda-developers.com/de...-rom-msm8909-service-rom-source-qpst-t3544178
Code-8916.gz is the link you are looking for.
Dont forget to hit the thanks button.
Click to expand...
Click to collapse
Thank you sir :highfive:

Sir, I need your help
How to solve this ?
Error : tools are untested for QuRT, please contact qurt.support
I'm try to build 8916 modem_proc

The method and instruction can be found here.
https://translate.google.com/transl.../2016/08/build-qualcomm-modem.html&edit-text=
The original page is in russian.
Use google translate.
http://syshwid.blogspot.com/2016/08/build-qualcomm-modem.html
You will need the untranslated page to see the "code" that is in code boxes.
And the translated page to read the instruction.
Dont forget to hit the thanks button.
This stuff is hard to find.

BigCountry907 said:
The method and instruction can be found here.
https://translate.google.com/transl.../2016/08/build-qualcomm-modem.html&edit-text=
The original page is in russian.
Use google translate.
http://syshwid.blogspot.com/2016/08/build-qualcomm-modem.html
You will need the untranslated page to see the "code" that is in code boxes.
And the translated page to read the instruction.
Dont forget to hit the thanks button.
This stuff is hard to find.
Click to expand...
Click to collapse
if the chip suports ,can we enable LTE using this?

redfeast said:
if the chip suports ,can we enable LTE using this?
Click to expand...
Click to collapse
I would lean more towards thinking that to enable LTE would require the driver to be included in the kernel.
Secondary to that some of the NV Items may need switched.

Install file: "/home/test/dev/qcom/msm8626/modem_proc/core/bsp/mba_img/build/AAAAANAZ/MBA_CORE_IMG_AAAAANAZQ.mbn" as "/home/test/dev/qcom/msm8626/modem_proc/core/bsp/mba_img/build/mba.mbn"
=== Generating mba/qdsp6/AAAAANAZ/MBA_CORE_IMG_AAAAANAZQ_wrap.elf
=== Generating mba/qdsp6/AAAAANAZ/MBA_CORE_IMG_AAAAANAZQ_wrap.elf
=== Generating mba/qdsp6/AAAAANAZ/MBA_CORE_IMG_AAAAANAZQ_wrap_reloc.elf
Install file: "/home/test/dev/qcom/msm8626/modem_proc/core/bsp/mba_img/build/AAAAANAZ/wp/MBA_CORE_IMG_AAAAANAZQ_wrap.elf" as "bin/AAAAANAZ/wp/mba.mbn"
Install file: "/home/test/dev/qcom/msm8626/modem_proc/core/bsp/mba_img/build/AAAAANAZ/MBA_CORE_IMG_AAAAANAZQ_wrap_reloc.elf" as "bin/AAAAANAZ/reloc/mba.mbn"
Install file: "/home/test/dev/qcom/msm8626/modem_proc/core/bsp/mba_img/build/AAAAANAZ/MBA_CORE_IMG_AAAAANAZQ_wrap.elf" as "bin/AAAAANAZ/mba.mbn"
scons: done building targets (errors occurred during build).
scons: *** Found dependency cycle(s):
Internal Error: no cycle found for node /home/test/dev/qcom/msm8626/modem_proc/core/bsp/devcfg_img/build/devcfg_img/qdsp6/AAAAANAZ/M8x26AAAAANAZQ00772_relocflags.elf (<SCons.Node.FS.File object at 0x14ece610>) in state pending
Internal Error: no cycle found for node /home/test/dev/qcom/msm8626/modem_proc/core/bsp/devcfg_img/build/devcfg_img/qdsp6/AAAAANAZ/M8x26AAAAANAZQ00772_reloc.elf (<SCons.Node.FS.File object at 0x14ecd960>) in state pending
Internal Error: no cycle found for node /home/test/dev/qcom/msm8626/modem_proc/core/bsp/devcfg_img/build/devcfg_img/qdsp6/AAAAANAZ/devcfg_def.h (<SCons.Node.FS.File object at 0x15aedf30>) in state pending
File "/usr/lib/scons/SCons/Taskmaster.py", line 1043, in cleanup
==============================================================================
SCons build summary
==============================================================================
** Build errors...
/home/test/dev/qcom/msm8626/modem_proc/build/bsp/modem_proc_img/build/AAAAANAZ/MODEM_PROC_IMG_AAAAANAZQ.elf failed: Error 126
** Build time...
Build start : Wed Jan 3 10:57:20 2018
Build end : Wed Jan 3 11:07:50 2018
Elapsed time : 0:10:30
/home/test/dev/qcom/msm8626/modem_proc/tools/build/scons/SCons/scons command returned error: 2
#-------------------------------------------------------------------------------
# BUILD END: AAAAANAZ
#-------------------------------------------------------------------------------
Build AAAAANAZ: Start Time: Wed Jan 3 10:57:20 2018, End Time: Wed Jan 3 11:07:52 2018
Build AAAAANAZ: Delta Time: 10 minutes, 31 seconds
#-------------------------------------------------------------------------------
Overall Start Time: Wed Jan 3 10:57:20 2018, Overall End Time: Wed Jan 3 11:07:52 2018
Overall Delta Time: 10 minutes, 31 seconds
#-------------------------------------------------------------------------------

Hi!
Thanks for these tools, Do you have the last version patched? QXDM 4.0? With 3.14.1144 version, some message shown "unknown" and I can read the information.
Thanks in advance!
Marco.

Update links in first post:
1) qcom_msm8x26_modem: magnet:?xt=urn:btih:61e8b8a520181ade801c251e5ec9352e33a7bb8c&dn=qcom_msm8x26_modem
2) qcom_msm8x26_vendor: magnet:?xt=urn:btih:313a2f9bc1f2b1fe3ad830e9dfbf4d4432fea384&dn=qcom_msm8x26_vendor

remittor said:
Update links in first post:
1) qcom_msm8x26_modem: magnet:?xt=urn:btih:61e8b8a520181ade801c251e5ec9352e33a7bb8c&dn=qcom_msm8x26_modem
2) qcom_msm8x26_vendor: magnet:?xt=urn:btih:313a2f9bc1f2b1fe3ad830e9dfbf4d4432fea384&dn=qcom_msm8x26_vendor
Click to expand...
Click to collapse
Thank you.

Big question about building a image. I know the plmn are in the image.im looking for a way to bypass the simlock check. I proven with a Dev build there are no plmn's and this in turn locks all sim cards. Even one's that should be carrier unlocked for the phone. If this can be accomplished we can just flash the modem.img to simunlock like back in the day.

Related

[HOW TO] Install Debian with GUI on any G1 (Any ROM!) ☻☻☻

Okay installing Debian on G1 was a pain in the ass when people make auto installers and never update them -_- I had so much problem trying to use the bootdeb script so heres a manual way to do it and should take like 10 minutes and when done, like 3minutes to start it up.
Feel free to PM me if you get stuck!
What you need:
A Debian Image (debian.img)
Get it here.
ext2.ko
Get it here. If dead, from this page.
unionfs.ko
Get it here. If dead, from this page.
busybox
Get it here. If dead, from this page.
Android Apps you'll need:
Terminal Emulator (Get the free one, even if you have a terminal app!)
VNC Viewer (Free or Paid, anything should work)
Initial Setup
Stuff you need to put in SD card and where.
Put all the files (debian.img, ext2.ko, unionfs.ko & busybox) in one folder named kit and put kit in the root of your SD Card.
Before we start please note this may look looong but Part 1 takes like 10 minutes and Part 2 like 5 mins. So try it out, its worth it!
​Part 1
We will install the base system in this part.
Please Note
You can run the commands below on your computer via ADB Shell but you may have trouble doing Part 2 on your computer. If you understand what you do in Part 1 you may proceed in ADB Shell.​
Click to expand...
Click to collapse
Step One
Open Terminal paste these in order:
Code:
export kit=/sdcard/kit
Press Enter​
Code:
export bin=/data/local/bin
Press Enter​
Code:
export mnt=/data/local/mnt
Press Enter​
Code:
export PATH=$bin:/usr/bin:/usr/sbin:/bin:$PATH
Press Enter​
Code:
export TERM=linux
Press Enter​
Code:
export HOME=/root
Press Enter​
Code:
insmod $kit/ext2.ko
If this gives you a error, ignore it!
Press Enter​
Code:
mkdir $bin #-p
Press Enter​
Code:
cat $kit/busybox >$bin/busybox
Press Enter​
Code:
chmod 755 $bin/busybox
Press Enter​
Code:
alias _=busybox
Press Enter​
Code:
_ mknod /dev/loop0 b 7 0
Press Enter​
Code:
_ mkdir -p $mnt
Press Enter​
Code:
echo 'nameserver 4.2.2.2' >$mnt/etc/resolv.conf
Press Enter​
Code:
_ chroot $mnt /bin/bash
Part 1 Done​
It shoud now say #localhost: || If not then something went wrong...
Part 2
Installing the GUI.
In your Debian Shell (#localhost) type this:
Code:
cd /etc/apt
Press Enter​
Code:
nano sources.list
Press Enter​Now add these two lines below the 1st source:
deb-src ftp://ftp.uk.debian.org/debian/ lenny main contrib non-free
deb ftp://ftp.uk.debian.org/debian/ lenny main contrib non-free
Click to expand...
Click to collapse
Hit Trackball+O to save and then Trackball+X to exit.
Now type:
Code:
apt-get install tightvncserver
After its done type:
Code:
apt-get install icewm
After its done type:
Code:
export USER=root
After its done type:
Code:
vncserver -geometry 480x320
You will be asked to setup the VNC Password after this. Set it and remember it!
Now type:
Code:
cd /root
then
Code:
cd .vnc
then
Code:
nano xstartup
Now edit out the file to look like this:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Hit Trackball+O and Trackball+X to exit
Now type:
Code:
cd /root
then
Code:
nano .bashrc
And add these lines to it:
Code:
export USER=root
cd /
rm -r -f tmp
mkdir tmp
cd /
vncserver -geometry 480x320
It should look like this:
Now go to Terminal Setting and type this in the Initial Command:
Code:
su
export kit=/sdcard/kit
export bin=/data/local/bin
export mnt=/data/local/mnt
export PATH=$bin:/usr/bin:/usr/sbin:/bin:$PATH
export TERM=linux
export HOME=/root
alias _=busybox
_ mknod /dev/loop0 b 7 0
_ mount -o loop $kit/debian.img $mnt
_ chroot $mnt /bin/bash
mount -t devpts devpts /dev/pts
mount -t proc proc /proc
mount -t sysfs sysfs /sys
Heres a screenshot:
We use this to save time and boot Debian swiftly!
Now reboot the phone!
After its rebooted, just open Terminal and let it do its thing. If it did it right you should see the Debian Shell launched...
Part 3
Playing around in the GUI!
Go to androidVNC (or any VNC client you have)
Enter the floowing details:
Address: localhost
Port: 5901
Password: the one you set while setting up tightvncserver...
Press connect!
Troubleshoot
If you get a blank window and a X on VNC Connection, goto terminal emulator>settings>reset term. And then reopen terminal. Now goto your VNC Viewer and change the port to 5902 and hit connect!
You should now be in the GUI!! Video of the whole thing coming up soon!​
Stuff you may wanna note!
You may not be able to mount your SD Card while Debian is running so you have to restart your phone to mount your SD Card!
Every time you wanna boot debian just open terminal Emulator and install it as a Debian Boot App or something!
There are a few flaws and I am a design guy and not a coder, if you find something wrong or wanna revise anything PM me or reply. I know its not perfect!
Nothing was done by me I just copyed and pasted stuff from sources. Special Thanks to Jay Freeman (saurik) for coming up with Part 1 and dangermouse over at AndroidFanatic for coming up with Part 2!​
Nice! I'm so excited to see that.
if you are trying this reply! I wanna know how it goes!
its the same thing i did months ago! it works fine but too slow :/ on g1
this thread is very organized, great job
aBsolutex3 said:
this thread is very organized, great job
Click to expand...
Click to collapse
Thanks, wanted it to be user friendly as its not that easy to understand
try it.Do‘’t know to ask you
mkdir $bin #-p
Gives me an error.
cctv35 said:
try it.Do‘’t know to ask you
Click to expand...
Click to collapse
Ummm what?
jatokor said:
mkdir $bin #-p
Gives me an error.
Click to expand...
Click to collapse
Are you sure you entered this:
Code:
export bin=/data/local/bin
Should work
Thank you for this thread
aBsolutex3 said:
this thread is very organized, great job
Click to expand...
Click to collapse
+1
got debian on my g1 for the first time using this walk-through.
Wait, so how do I run this within my mod? will everything on my phone be intact?
ForTehWolf said:
Wait, so how do I run this within my mod? will everything on my phone be intact?
Click to expand...
Click to collapse
Saurik on his website said:
This does not replace Android. This also gives you access to the full plethora of programs available in Debian and let's you continue using your phone as it was intended to be: as an Android device with all the capabilities thereof.
Please note that this is not a "port": Debian already supports ARM EABI, which is the underlying architecture of Android.
Click to expand...
Click to collapse
Its completely safe
error
echo 'nameserver 4.2.2.2' >$mnt/etc/resolv.conf
gives me this error: cannot create datalocalmntetcresolv.conf: directory non existent
sorry for my English i'm spanish boy
s0e0r0a said:
echo 'nameserver 4.2.2.2' >$mnt/etc/resolv.conf
gives me this error: cannot create datalocalmntetcresolv.conf: directory non existent
sorry for my English i'm spanish boy
Click to expand...
Click to collapse
check in /data/local/bin ... is bin a file or a folder? if a file delete it and make a folder manually...
SilentRazor said:
check in /data/local/bin ... is bin a file or a folder? if a file delete it and make a folder manually...
Click to expand...
Click to collapse
theres a busybox file in there, and thats it
echo 'nameserver 4.2.2.2' >$mnt/etc/resolv.conf
no such file or directory
chmod 755 $bin/busybox
gives me:
chmod: not found
and I can't go forward.
sickleman said:
chmod 755 $bin/busybox
gives me:
chmod: not found
and I can't go forward.
Click to expand...
Click to collapse
umm are u rooted?
_ chroot $mnt /bin/bash
gives cannot execute /bin/bash: No such file or directory
Well I dont have my G1 as its gone 4 repairing so... well wait up 4 a few days...

[GUIDE]To Unpack/Repack livesuit flashable images

While browsing XDA i didn't find anything for unpacking Livesuite images so i created this THREAD.
Things you need
Allwiner kitchen
Stock Firmware
Linux image tool
Ubuntu 64 bit
Click to expand...
Click to collapse
Lets start
Step 1
Extracting and building the stock image (Windows)
Extract a10_flash_kitchen_v1.zip and look inside the directory, you'll see packer_gb and packer_ics. packer_ics is for Android ICS, so that is the one you will be using.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Open packer_ics and you will notice a bunch of directories and a couple of .bat scripts. We will spend a lot of time in these directories.
Extract the stock firmware you downloaded earlier, and copy the .img file into this directory. Rename the file to original.img.
Run the extract_image.bat script, and a command window will pop up while it is extracting.
The command window will output like the following, it will display Press any key to continue . . . when it is complete. Press a key to close the window.
Once the command window is closed, open the _extract directory and all of the extracted files will be there. The three following files are the ones we are interested in: RFSFAT16_BOOT_00000000000.fex (the boot partition), RFSFAT16_RECOVERY_0000000.fex (the recovery partition), RFSFAT16_SYSTEM_000000000.fex (the system partition, ext4 sparse).
NOTE and WARNING Some systems may also have a RFSFAT16_BOOTLOADER_00000.fex, which may also be required for your device to boot properly. There are some vague instructions @ this TechKnow forums post. I (the reader) will attempt to clarify and modify this page with the updated additional instructions for these devices to aid in making these instructions more universal for anyone using LiveSuit.
Click to expand...
Click to collapse
Step 2
Extracting, modifying and building partitions (Linux)
Copy your Extracted files to ubuntu
Rename the files as follows:
RFSFAT16_BOOT_00000000000.fex -> boot.img
RFSFAT16_RECOVERY_0000000.fex -> recovery.img
RFSFAT16_SYSTEM_000000000.fex -> system.fex
Click to expand...
Click to collapse
Copy the tools.tar.gz archive you downloaded earlier into the same directory.
To extract the tools, right click on the file and click Extract here.
This will extract the tools into a tools subdirectory.
Type terminal to show the terminal application. Hit enter and the terminal will appear.
Boot partition
Code:
$ cd "custom image"
$ tools/split_bootimg.pl boot.img
$ ls
Now extract the ramdisk file into a ramdisk subdirectory.
Code:
$ mkdir ramdisk
$ cd ramdisk
$ gunzip -c ../boot.img-ramdisk.gz | cpio -i
$ ls
You are now able to modify the files as needed.
Once you have finished modifying the file, we will rebuild the image. Run the following commands.
Code:
$ cd ..
$ tools/mkbootfs ramdisk | gzip > ramdisk-new.gz
$ tools/mkbootimg --base 0x40000000 --kernel boot.img-kernel --ramdisk ramdisk-new.gz --cmdline 'console=ttyS0,115200 rw init=/init loglevel=8' -o new-boot.img
$ ls
Recovery partition
his follows the same process as the boot partition. Execute the following commands to extract the image:
Code:
$ tools/split_bootimg.pl recovery.img
$ rm -rf ramdisk
$ mkdir ramdisk
$ cd ramdisk
$ gunzip -c ../recovery.img-ramdisk.gz | cpio -i
$ ls
rebuild the image with the following commands:
Code:
$ cd ..
$ tools/mkbootfs ramdisk | gzip > ramdisk-new.gz
$ tools/mkbootimg --base 0x40000000 --kernel recovery.img-kernel --ramdisk ramdisk-new.gz --cmdline 'console=ttyS0,115200 rw init=/init loglevel=8' -o new-recovery.img
$ ls
System partition
The process for the system partition is different, because it is not bootable and because it is ext4 sparse, so it cannot be mounted straight away. Execute the following commands to convert and mount the image:
Code:
$ tools/simg2img system.fex system.img
$ mkdir system
$ sudo mount -o loop system.img system
$ cd system
$ ls
Once you are done, execute the following commands to rebuild the system image:
Code:
$ cd ../tools
$ sudo ./mkuserimg.sh -s ../system ../new-system.fex ext4 ../tmp 300M
$ cd ..
$ sudo umount system
$ ls
Now switch back to the file browser and you will see many new files in your directory. The three files that you are interested in are new-boot.img, new-recovery.img, new-system.fex
Copy these to your Windows drive to the directory a10_flash_kitchen_v2/packer_ics/_input
Click to expand...
Click to collapse
Step 3
Building the new image (Windows)
Once the files are copied, jump back to Windows and rename the files as following:
new-boot.img -> root.fex
new-recovery.img -> recovery.fex
new-system.fex -> system.fex
Click to expand...
Click to collapse
http://i.imgur.com/klTA5.png/img]
Now we need to make some modifications to the image config file. Navigate to the files directory and you should see image.cfg.
[img]http://i.imgur.com/Wg6Ov.png/img]
Open this file using your text editor that supports Unix line endings. Using Notepad will break this file. Locate the two lines that reference OEM and VOEM as is highlighted below.
[img]http://i.imgur.com/YxczH.png
Comment these lines by adding a semicolon ( to the start of each line. Do not make any other modifications. Save the file once you have made the change.
http://i.imgur.com/urMMN.png/img]
Go back to the packer_ics root directory and find the create_image.bat script. It will open a console while it is creating the new image.
[img]http://i.imgur.com/X2O6l.png
Once the process is complete, you will see Press any key to continue . . . and you will have a new image called output.img.
AND JUST FLASH IT AND YOU ARE DONE
Click to expand...
Click to collapse
Credits
miniandwiki
To ME
To Everyone who helped me creating this one
do i have to use 64bit liux?? i only have a 32 bit computer?? thnx
Permission denied
Hey....
I installed Ubuntu on an external disk. But even logged at su (also tried sudo su) I dont have the permission to perform with the Linux-tool. When I click at the roo-folder, it is already set to rw permission for root.
What am I doing wrong?
Links are broken, can you kindly update them.
Links are broken Pls Upload to another host

[GUIDE]DualBootPatcher Use, Build from Source/using Docker/Travis And Add New Devices

Hi all DualBootPatcher fans, in this thread i'll try to explain all things about DualBootPatcher, so if your user please read this post carefully then continue to other posts, and if you developer you can skip it and go to post #2 directly
Part 0: Introduction & How to use DualBootPatcher?
What is DualBootPatcher?
DualBootPatcher is an open-source app that allows multiple ROMs to be installed on a single Android device. It does its best to work with existing code and does not require explicit support from ROMs. There are currently 270+ supported devices and their variations.
It's originally developed by the amazing developer @chenxiaolong with help of many contributors
Click to expand...
Click to collapse
What does the app do ?:
It patches...
Custom kernels for dual boot support
ROMs so that they can be installed as secondary
Google Apps packages for AOSP-based ROMs
SuperSU so that it can be used in the secondary ROM
Where can i find it?
Website
XDA Main Thread
Github
What's supported ?
Except Toaster and Alarm clocks pretty much everything is supported.
Click to expand...
Click to collapse
How to use the App?
- Download, install and open the app.
- Swipe to the right to open the menu. Click "ROMS". Now if this is the first time you use it, it will ask you if you want to set kernel. Do so!
- After it has finished go to ROM Settings (primary ROM 3 dot menu) and select Update Ramdisk. It will update it and will ask you to reboot. Press Reboot Now, or Reboot later.
- Now Download any ROM you like and open the app again and open the menu and open Patch Zip File from the menu. Ensure that your Device is set to (yourdevicename) and under Partition configuration select secondary/dataslot (will install 2nd ROM in /system) or data slot.
- Click continue and select where to save the patched file.
- You should see the file is being put in "Queue". Just click the confirm button to the upper right.
Note: If you want to go back, just swipe the ROM in queue to right and start over.
- The app will patch the zip. When done, go back to "ROMs".
- Click "Flash zip files" (the big pink button on the lower right). Click the pink plus button to add your previously patched zip file.
- Locate the file you have patched in step 7. Unless you have changed the name there, it should be something like ROM_name_partition_config_ID.zip (like RR-N-v5.8.3-20170707-cheeseburger-Unofficial_dual.zip).
- Click on that file and choose "Keep location". Now confirm the flash with the button on the upper right side.
Note: You can also install the patched zip files in recovery.
- It will now open the terminal and begin flashing the file. This requires some patience. After it has flashed the file you'll see success message in green.
- Now click back and you should see your newly installed ROM along with the Primary ROM.
Note: You can find more options by clicking on the three buttons on each ROM.
- Now reboot and wait till finishing 2nd ROM first boot. install DualBootPatcher apk so you can easily switch ROMs, there is another way to change ROMs: flash DualBootUtilities.zip and switch ROM manually.
Note: Using Bootui:
- Open app then select settings and press install (update) bootui. then Swipe to the right to open the menu. Click "ROMS" again and open secondary ROM Settings) and select Update Ramdisk, Now you can change ROMs simply using boot ui (something like grub bootloader but it works like twrp)
Partitions Configurations:
The patcher offers several locations for installing ROMs:
Primary: This is normally used for installing a zip to the primary ROM. It is not required, but is strongly recommended because it has code to prevent the zip from inadvertently affecting other ROMs.
Dual: Dual/Secondary is the first multiboot installation location. It installs to the system partition. This is a good spot for installing a second ROM because it doesn't take any space away from the internal storage.
Multi-slots: There are 3 multislots: multi-slot-1, multi-slot-2, multi-slot-3. These install to the cache partition. This is specifically for devices, like the Galaxy S4, that have a massive cache partition.
Data-slots: There can be an unlimited number of data slots. These install to the data partition and eat up space on the internal storage. This is useful for devices where the system partition is nearly full and the cache partition is tiny. These slots are named "data-slot-[id]", where "id" is something you provide in the app.
Extsd-slots: There can be an unlimited number of extsd slots. These install to the external SD card, which is useful as it keeps the ROMs off of the internal storage. Note that the ROM's data files are still stored on the data partition.
Apps and Data sharing:
DualBootPatcher very recently got support for sharing apps and their data across ROMs. Maybe sharing is somewhat of a misleading term. The feature actually makes Android load the shared apps and data from a centralized location, /data/multiboot/_appsharing. So you're not sharing apps from one ROM to another per se. The ROMs are just loading the apps from one shared location. Let me make this clearer with an analogy.
Think of the people in a company office as ROMs. You want to share with your coworkers some documents (apps). Instead of telling them to come over to your desk to see those documents (sharing apps from one ROM to another), everyone goes to the conference room to look at the documents together (loading apps from a shared location). That's how app and data sharing is implemented.
Click to expand...
Click to collapse
To use app sharing, follow these steps in every ROM that you want to use app sharing: (doesn't work with JB ROMs)
Install the app you want to share
Open DualBootPatcher and go to "App Sharing" in the navigation drawer
Enable individual app sharing
Tap "Manage shared applications" and enable APK/data sharing for the app
Reboot
When you uninstall an app that's shared, it simply become unshared for the current ROM. That way, other ROMs are not affected. To continue the analogy above, if you quit your job, you won't shred the documents that everybody else was looking at.
If you unshare an app's data, it will go back to using the data it had before it was shared. In other words, you leave the conference room and go back to work on your own documents at your desk.
Click to expand...
Click to collapse
How to Tips:
How to boot to another ROM ?
This is simple ... There is no reboot to primary, secondary or whatever. So all you have to do is:
1) Go to ROMs section of the App.
2) Click on the ROM you want to boot to. You should see "Switching ROM" message. After few seconds, you should see a report message saying that "ROM successfully switched".
3) Now just do a normal reboot of your device. See the magic! It should boot to the ROM you have switched on step 2.
Note: You can find more options by selecting the three buttons on each ROMs (like creating reboot widgets for directly rebooting to specific rom).
You also need to install the App to all of the ROMs you install. Otherwise, you want be able to boot to other ROMs!
Other How to ?
Wipe /cache, /data, /system, or dalvik-cache?
The easiest way is to do it from the app while booted in another ROM. Just go to "Roms" in the navigation drawer, tap the 3 dots options menu for the ROM you want to wipe, and tap "Wipe ROM".
Update the primary ROM?
Patch the zip for primary and flash it. The "primary" installation target is designed so that other ROMs won't be affected when you want to flash something for the primary ROM.
Update a non-primary ROM?
Patch and flash the zip exactly like how you did it the first time.
Flash a mod or custom kernel for the primary ROM?
Patch it for primary before flashing. If the zip does not wipe /cache, it is also safe to flash it directly.
Flash a mod or custom kernel for a non-primary ROM?
Just patch and flash it
Now, You're perfect DualBootPatcher user,so let's enter the main guide !
Guide Index:
Part 1: How to build DualBootPatcher from source manually?
Part 2: How to build DualBootPatcher using docker images?
Part 3: How to build DualBootPatcher using TravisCI?
Part 4: How to add new Devices to DualBootPatcher?
Part 5: How to submit new Devices to official DualBootPatcher support?
Extra: How to share apps (apk) between ROMs? (soon!)
Before we start you should know that DBP is not just android app, there is versions for windows and linux also and in this guide i'll talk about app and linux version only, i don't use windows
Part 1: How to build DualBootPatcher from source?
When you deeply exploring DualBootPatcher repository you'll find all information and guides you need but for some people instructions isn't clear enough, so let me explain it here
- You'll need linux, whichever distribution you use. but i'm sure building works on [Debian-Ubuntu-Fedora-Arch] and all its derivations.
A) Prerequisites:
- You'll need these packages whatever version you want to build:
Android NDK
Currently NDK r15 is required to build, you can get it here
Download, Extract and rename it to "android-ndk"
Code:
wget https://dl.google.com/android/repository/android-ndk-r15-linux-x86_64.zip && unzip android-ndk-r15-linux-x86_64.zip && mv android-ndk-r15 android-ndk
And then export android ndk:
Code:
echo "export ANDROID_NDK=$(pwd)/android-ndk" >> ~/.bashrc
echo "export ANDROID_NDK_HOME=$(pwd)/android-ndk" >> ~/.bashrc
cmake
DBP needs cmake 3.7.2 or higher. you need to download it here
Downloading & Extract command:
Code:
wget https://cmake.org/files/v3.7/cmake-3.7.2.tar.gz && tar xzf cmake-3.7.2.tar.gz
extract to folder and run the following commands in cmake folder
Code:
sed -i 's|cmake_options="-DCMAKE_BOOTSTRAP=1"|cmake_options="-DCMAKE_BOOTSTRAP=1 -DCMAKE_USE_OPENSSL=ON"|' bootstrap
./bootstrap
make
sudo make install
OpenSSL
i'm successfully build using openssl-1.1.0c, download here and extract.
Code:
wget https://www.openssl.org/source/openssl-1.1.0c.tar.gz && tar xzf openssl-1.1.0c.tar.gz
open openssl-1.1.0c folder and install it
Code:
./config shared --prefix=/usr/local/ssl --openssldir=/usr/local/ssl
make
sudo make install
echo 'PATH=${PATH}:/usr/local/ssl' >> ~/.bashrc
gtest
Install on Ubuntu / Debian:
Code:
sudo apt-get install libgtest-dev
On Fedora:
Code:
sudo dnf install gtest-devel
On Archlinux:
Code:
sudo pacman -S gtest
yaml-cpp
Install on Ubuntu / Debian using
Code:
sudo apt-get install libyaml-cpp-dev
On Fedora
Code:
sudo dnf install yaml-cpp-devel
On Archlinux:
Code:
sudo pacman -S yaml-cpp
Other General packages that must be installed: [Skip this if you have android build environment :good: ]
Ubuntu / Debian:
Code:
sudo apt-get install ccache libboost-dev libssl-dev openssl python-minimal build-essential libfontconfig1 findutils git make libprocps-dev unzip zip gcc-multilib g++-multilib lib32ncurses5-dev transifex-client gnupg mesa-common-dev libglu1-mesa-dev
Fedora:
Code:
sudo dnf install ccache findutils gcc-c++ git make procps-ng unzip zip gnupg ncurses-compat-libs transifex-client openssl-devel
Archlinux:
Code:
sudo pacman -S ccache boost openssl lib32-openssl findutils git make procps-ng unzip zip gnupg gcc-multilib ncurses
Code:
sudo pacaur -S transifex-client ncurses5-compat-libs lib32-ncurseslib32-ncurses5-compat-libs
- For building android app you need:
Android SDK
You need to install SDK using android studio ( build-tools 25.0.3, platforms android-25, platform-tools and tools )
or install from terminal:
Code:
mkdir -p android-sdk && cd android-sdk
wget -q https://dl.google.com/android/repository/platform-tools_r25.0.3-linux.zip && unzip -qq platform-tools_r25.0.3-linux.zip
wget -q https://dl.google.com/android/repository/build-tools_r25.0.3-linux.zip && unzip -qq build-tools_r25.0.3-linux.zip
wget -q https://dl.google.com/android/repository/tools_r25.2.3-linux.zip && unzip -qq tools_r25.2.3-linux.zip
Then Export it:
Code:
echo "export ANDROID_HOME=$(pwd)" >> ~/.bashrc
echo "export PATH=${PATH}:${ANDROID_HOME}/tools" >> ~/.bashrc
JDK 1.8
Ubuntu / Debian:
Code:
sudo apt-get install openjdk-8-jdk openjdk-8-jdk-headless
Fedora:
Code:
sudo dnf install java-1.8.0-openjdk-devel java-1.8.0-openjdk-headless
Archlinux:
Code:
sudo pacman -S jdk8-openjdk
Other packages:
Ubuntu / Debian:
Code:
sudo apt-get install lib32stdc++-6-dev
Fedora:
Code:
sudo dnf install glibc.i686 libstdc++.i686
Archlinux:
Code:
sudo pacman -S glibc libstdc++5 lib32-libstdc++5
- And for linux version you need:
qt5
it must be 5.3 or higher
Ubuntu / Debian:
Code:
sudo apt-get install qttools5-dev-tools libqt5core5a
Fedora:
Code:
sudo dnf install qt5-qtbase-devel
Archlinux:
Code:
sudo pacman -S qt5-base
Other packages:
Ubuntu / Debian:
Code:
sudo apt-get install libarchive-dev liblz4-tool liblzma-dev lz4-dev zlib1g-dev lib32z-dev
Fedora:
Code:
sudo dnf install libarchive-devel lz4-devel xz-devel
Archlinux:
Code:
sudo pacman -S libarchive lz4 xz lib32-xz lzip
- Some final touches:
Enable cache:
Code:
echo "export USE_CCACHE=1" >> ~/.bashrc
Reload bash environment:
Code:
source ~/.bashrc
- Cloning the source:
Code:
git clone --recursive https://github.com/chenxiaolong/DualBootPatcher.git
B) Building Android APP:
- Open DualBootPatcher folder and make new folder "build" and open it.
Code:
mkdir build && cd build/
- Now Build the app:
Code:
cmake .. -DMBP_BUILD_TARGET=android -DMBP_BUILD_TYPE=debug
make
cpack -G TXZ
make apk
And you'll find built apk in DualBootPatcher/Android_GUI/build/outputs/apk/Android_GUI-debug.apk
C) Building Utilities Zip:
Utilities Zip is AROMA based zip which enable you to switch ROMs form twrp or wipe ROM when something went wrong.
- In build folder run these commands:
Code:
make android-system_armeabi-v7a
make -C data/devices
./utilities/create.sh
you'll find built utilities.zip in DualBootPatcher/build/utilities/DualBootUtilities-9.2.0.zip
D) Building Linux App:
- In build folder run these commands:
Code:
cmake .. -DMBP_BUILD_TARGET=desktop -DMBP_PORTABLE=ON
make
cpack -G TXZ
or to pack it to zip file:
Code:
cpack -G ZIP
Special Thanks:
@oF2pks For helping me setup build environment on arch
@Ahmed Hady & @androidlover5842 Without their helps i won't be here
Part 2: How to build DualBootPatcher using docker images?
What is docker? [in case you don't know it ]
Docker is the world’s leading software container platform. Developers use Docker to eliminate “works on my machine” problems when collaborating on code with co-workers. Operators use Docker to run and manage apps side-by-side in isolated containers to get better compute density. Enterprises use Docker to build agile software delivery pipelines to ship new features faster, more securely and with confidence for both Linux, Windows Server, and Linux-on-mainframe apps.
Click to expand...
Click to collapse
Firstly, make sure you have docker installed, if not install it
From here you should choose a method you'll follow, Building docker images manually or use pre-built docker images.
A) Building docker images manually:
@chenxiaolong sir has made docker image configuration files here
all you need to do after sync the repo like part 1 is entering the following commands in DualBootPatcher directory:
Code:
./docker/generate.sh
./docker/build.sh
Note that building the docker images will take a long time and consume a lot of bandwidth--multiple gigabytes at the very least. It will download all the dependencies for building DualBootPatcher for all supported targets.
Click to expand...
Click to collapse
B) Using ready-made docker images:
i have made docker images and uploaded them to docker hub
to download "pull" it enter these commands:
Code:
docker pull yshalsager/dualbootpatcher:9.3.0-4-base
docker pull yshalsager/dualbootpatcher:9.3.0-4-android
docker pull yshalsager/dualbootpatcher:9.3.0-4-linux
Building DualBootPatcher using docker:
- To enter docker container and build DualBootPatcher make folder "builder" in DualBootPatcher directory
Code:
cd DualBootPatcher && mkdir -p builder
- Then run this to enter android build container
Code:
docker run --rm -it -e USER_ID=$(id -u) -e GROUP_ID=$(id -g) -v "$(pwd):/builder/DualBootPatcher:rw,z" -v "${HOME}/.android:/builder/.android:rw,z" -v "${HOME}/.ccache:/builder/.ccache:rw,z" -v "${HOME}/.gradle:/builder/.gradle:rw,z" yshalsager/dualbootpatcher:9.3.0-4-android bash
- After this you'll continue like normal building:
Code:
cd DualBootPatcher/builder && cmake .. -DMBP_BUILD_TARGET=android -DMBP_BUILD_TYPE=debug && make -j16 && rm -rf assets && cpack && make apk -j16
make android-system_armeabi-v7a -j16 && make -C data/devices -j16
- Now exit from container and enter linux build one:
Code:
docker run --rm -it -e USER_ID=$(id -u) -e GROUP_ID=$(id -g) -v "$(pwd):/builder/DualBootPatcher:rw,z" -v "${HOME}/.android:/builder/.android:rw,z" -v "${HOME}/.ccache:/builder/.ccache:rw,z" -v "${HOME}/.gradle:/builder/.gradle:rw,z" yshalsager/dualbootpatcher:9.3.0-4-linux bash
- Build utilities ZIP:
Code:
cd DualBootPatcher/builder && ./utilities/create.sh
- And build linux app
Code:
cmake .. -DMBP_BUILD_TARGET=desktop -DMBP_PORTABLE=ON && make -j16 && cpack
- You'll find output files in your local "builder" folder like normal build.
Part 3: How to build DualBootPatcher using TravisCI?
Travis CI is free open-source continues integration service, which simply take your project from GitHub and test / build it for you !
it's amazing solution if you don't have time/free space/mind lol :cyclops: to test your code.
- you'll need to signup Travis account, go here and press signup, enter your GitHub account details then approve Travis needed permissions and done.
- Now Fork DualBootPatcher repository to your account and create .travis.yml file in project root.
- Copy my Travis configuration to your .travis.yml
Code:
sudo: required
services:
- docker
before_install:
# Clone DualBootPatcher Repository
- git clone --recursive https://github.com/yshalsager/DualBootPatcher -b master DualBootPatcher/
# Pull docker images
- docker pull yshalsager/dualbootpatcher:9.3.0-4-base
- docker pull yshalsager/dualbootpatcher:9.3.0-4-android
- docker pull yshalsager/dualbootpatcher:9.3.0-4-linux
script:
# Make work directories
- mkdir $HOME/.android
- mkdir -p ${TRAVIS_BUILD_DIR}/DualBootPatcher/builder/ && cd ${TRAVIS_BUILD_DIR}/DualBootPatcher/
# Build APK
- |
docker run --rm -i -e USER_ID=$(id -u) -e GROUP_ID=$(id -g) -v "$(pwd):/builder/DualBootPatcher:rw,z" -v "${HOME}/.android:/builder/.android:rw,z" yshalsager/dualbootpatcher:9.3.0-4-android bash << EOF
cd DualBootPatcher/builder && cmake .. -DMBP_BUILD_TARGET=android -DMBP_BUILD_TYPE=debug && make -j16 && rm -rf assets && cpack && make apk -j16
make android-system_armeabi-v7a -j16 && make -C data/devices -j16
exit
EOF
- |
docker run --rm -i -e USER_ID=$(id -u) -e GROUP_ID=$(id -g) -v "$(pwd):/builder/DualBootPatcher:rw,z" -v "${HOME}/.android:/builder/.android:rw,z" yshalsager/dualbootpatcher:9.3.0-4-linux bash << EOF
# Build Utilities Zip
cd ~/DualBootPatcher/builder && ./utilities/create.sh
# Build Linux
cmake .. -DMBP_BUILD_TARGET=desktop -DMBP_PORTABLE=ON && make -j16 && cpack
exit
EOF
after_success:
- export TRAVIS_CURRENT_DATE=$(date +"%d%m%y-%Hh%Mm")
# Check output & md5sum
- ls -l ${TRAVIS_BUILD_DIR}/DualBootPatcher/Android_GUI/build/outputs/apk/debug/Android_GUI-debug.apk
- md5sum ${TRAVIS_BUILD_DIR}/DualBootPatcher/Android_GUI/build/outputs/apk/debug/Android_GUI-debug.apk
- ls -l ${TRAVIS_BUILD_DIR}/DualBootPatcher/builder/utilities/DualBootUtilities-9.3.0.zip
- md5sum ${TRAVIS_BUILD_DIR}/DualBootPatcher/builder/utilities/DualBootUtilities-9.3.0.zip
- ls -l ${TRAVIS_BUILD_DIR}/DualBootPatcher/builder/DualBootPatcher-9.3.0-Linux.zip
- md5sum ${TRAVIS_BUILD_DIR}/DualBootPatcher/builder/DualBootPatcher-9.3.0-Linux.zip
# Upload to transfer.sh
- cd ${TRAVIS_BUILD_DIR}/DualBootPatcher/Android_GUI/build/outputs/apk/debug/ && curl --upload-file ./Android_GUI-debug.apk https://transfer.sh/Android_GUI-debug-${TRAVIS_CURRENT_DATE}.apk
- cd ${TRAVIS_BUILD_DIR}//DualBootPatcher/builder/utilities/ && curl --upload-file ./DualBootUtilities-9.3.0.zip https://transfer.sh/DualBootUtilities-9.3.0-${TRAVIS_CURRENT_DATE}.zip
- cd ${TRAVIS_BUILD_DIR}/DualBootPatcher/builder/ && curl --upload-file ./DualBootPatcher-9.3.0-Linux.zip https://transfer.sh/DualBootPatcher-9.3.0-${TRAVIS_CURRENT_DATE}-Linux.zip
- Edit line 8 with your Repository and branch you want to build.
Code:
- git clone --recursive https://github.com/yshalsager/DualBootPatcher -b master DualBootPatcher/
- This simple TravisCI configuration builds both of apk and utilities.zip and deploy them to transfer.sh
- Now open Travis and add your DualBootPatcher fork to projects and start building :good:
- You'll find built apk md5 and links from line at the end Travis log
- Build takes about 25 mins
- When you add new commits to repository Travis will always build new apk for you !
- If you want to change something in configuration, always check its syntax to make sure it's valid YAML using this site
Part 4: How to add new Devices to DualBootPatcher?
To add your/new device to DualBootPatcher you need to get some information first then add it to DualBootPatcher devices:
- Flash GetLogs-20161128-1.zip using recovery [TWRP highly recommended]
- Copy /sdcard/logs/[Date&Time].tar to PC, extract it and let's start.
- This is new device template:
Code:
- name: (Device Name)
id: (device id)
codenames:
- (device codename1)
- (device codename2)
- (device codename3)
architecture: (device architecture)
block_devs:
base_dirs:
- (/dev/block/bootdevice/by-name)
system:
- (/dev/block/bootdevice/by-name/system)
cache:
- (/dev/block/bootdevice/by-name/cache)
data:
- (/dev/block/bootdevice/by-name/userdata)
boot:
- (/dev/block/bootdevice/by-name/boot)
recovery:
- (/dev/block/bootdevice/recovery)
extra:
- (/dev/block/bootdevice/modem)
boot_ui:
supported: true
flags:
- (TW_HAS_DOWNLOAD_MODE)
graphics_backends:
- fbdev
brightness_path: (/sys/class/leds/lcd-backlight/brightness)
max_brightness: (255)
default_brightness: (162)
pixel_format: (RGBX_8888)
theme: portrait_hdpi
- You'll edit all values between brackets.
- open logs/system/build.prop, you'll find:
ro.product.model= is your (Device Name)
ro.product.name= and ro.product.device= is your (device id) and (device codename1), if you know more names for your device add it in (device codename2) / (device codename3)
ro.product.cpu.abi= is your (device architecture)
- open logs/recovery/recovery.fstab, you'll find main device mount points, copy each mount point to it name
- open logs/recovery/recovery.log, you'll find TW_BRIGHTNESS_PATH := /sys/class/leds/lcd-backlight/brightness this is your (brightness_path)
I:Got max brightness 255 is (max_brightness)
setting GGL_PIXEL_FORMAT_RGBA_8888 is (pixel_format)
- Note: you can get these info from BoradConfig.mk in your device twrp tree.
- Now read "Partition Logs:" in recovery.log
it'll tell us second mount point, as example /system | /dev/block/mmcblk0p41
so you should add it like
Code:
system:
- /dev/block/bootdevice/by-name/system
- /dev/block/mmcblk0p41
and so on with other partitions.
- Checking more mounts: (not necessary but i recommend it)
open logs/listings/dev_full and scroll down to /dev/block/platform/soc.0 you'll find another main mount point which contain by-name and by-num folders like /dev/block/platform/soc.0/f9824900.sdhci
from /dev/block/platform/soc.0/f9824900.sdhci/by-name list copy each partition mount point to your device
- Now we're done, you should have something like
Code:
- name: Xiaomi Mi4S
id: aqua
codenames:
- aqua
architecture: arm64-v8a
block_devs:
base_dirs:
- /dev/block/bootdevice/by-name
- /dev/block/platform/soc.0/f9824900.sdhci/by-name
system:
- /dev/block/bootdevice/by-name/system
- /dev/block/platform/soc.0/f9824900.sdhci/by-name/system
- /dev/block/mmcblk0p41
cache:
- /dev/block/bootdevice/by-name/cache
- /dev/block/platform/soc.0/f9824900.sdhci/by-name/cache
- /dev/block/mmcblk0p42
data:
- /dev/block/bootdevice/by-name/userdata
- /dev/block/platform/soc.0/f9824900.sdhci/by-name/userdata
- /dev/block/mmcblk0p44
boot:
- /dev/block/bootdevice/by-name/boot
- /dev/block/platform/soc.0/f9824900.sdhci/by-name/boot
- /dev/block/mmcblk0p37
recovery:
- /dev/block/bootdevice/by-name/recovery
- /dev/block/platform/soc.0/f9824900.sdhci/by-name/recovery
- /dev/block/mmcblk0p38
boot_ui:
supported: true
graphics_backends:
- fbdev
flags:
- TW_QCOM_RTC_FIX
pixel_format: RGBX_8888
brightness_path: /sys/class/leds/lcd-backlight/brightness
max_brightness: 255
default_brightness: 162
theme: portrait_hdpi
- Open DualBootPatcher/data/devices/(your device manufacturer).yml and add your device codes. then Check your code syntax here if everything is right, make commit to add your device to your repository.
- Build apk using any method explained above to test it.
Part 5: How to submit new Devices to official DualBootPatcher support?
Once you checked everything is working, it's time to contribute to DualBootPatcher and add your device to official devices:
- First, Check you made all needed changes to add your device without problems, again check for YAML syntax because if it's wrong build won't work.
- Open DualBootPatcher Repository, press New pull request button.
- Press compare across forks and change the head fork to your username/DualBootPatcher
- Give a name and a description to your pull request, some thing like: "Add (Device Name) support" or "data: Add (device name)
- Now click the "Create pull request" green button
- Wait for your changes to be verified and merged to the project, the developer received your code and he will review, try and add it to the source code. You will be notified when your code merged.
Supported Devices by me
Here is my all contributions to DualBootPatcher:
Nokia X/XL
Nokia X2
Samsung Galaxy Win & Core
Xiaomi Mi 6
Xiaomi Redmi 4A
OnePlus 5
HTC Desire Eye
YU YUREKA BLACK
Xiaomi Mi 4S
Xiaomi Redmi Pro
Samsung Galaxy S8/S8+ [Exynos & Snapdragon]
Zenfone 2 Laser [Z00ED]
Lenovo Vibe K6
Samsung Tab S2
Samsung Galaxy Note 8 (Exynos)
If you can't add your device, you can pm me with logs tar file and i'll add it for you
Hii reserved
---------- Post added at 02:20 AM ---------- Previous post was at 02:20 AM ----------
I will tell u, how to sync apps between roms, without using double storage space for apk and libs.
---------- Post added at 02:25 AM ---------- Previous post was at 02:20 AM ----------
also can be used as multi profile
Support Nokia 6?
Qualcomm s430 Full root...
taicracker said:
Support Nokia 6?
Qualcomm s430 Full root...
Click to expand...
Click to collapse
Flash get logs
And send me
taicracker said:
Support Nokia 6?
Qualcomm s430 Full root...
Click to expand...
Click to collapse
Read this man! https://forum.xda-developers.com/showpost.php?p=73551957&postcount=5
or if you can't do it i can help, just give me the logs tar file
yshalsager said:
Read this man! https://forum.xda-developers.com/showpost.php?p=73551957&postcount=5
or if you can't do it i can help, just give me the logs tar file
Click to expand...
Click to collapse
The file where you say is located on the device. I will upload it to you soon ?
---------- Post added at 05:27 PM ---------- Previous post was at 04:28 PM ----------
yshalsager said:
Read this man! https://forum.xda-developers.com/showpost.php?p=73551957&postcount=5
or if you can't do it i can help, just give me the logs tar file
Click to expand...
Click to collapse
https://drive.google.com/file/d/0B-7MZC8TPIGtTjQyOFVydzNHV1U/view?usp=drivesdk
This is the logs file. (.tar.gz)
I am not on a PC right now. You help me. Do you need the build.prop file on your device?
addy692 said:
Flash get logs
And send me
Click to expand...
Click to collapse
https://drive.google.com/file/d/0B-7MZC8TPIGtTjQyOFVydzNHV1U/view?usp=drivesdk
?
taicracker said:
https://drive.google.com/file/d/0B-7MZC8TPIGtTjQyOFVydzNHV1U/view?usp=drivesdk
This is the logs file. (.tar.gz)
I am not on a PC right now. You help me. Do you need the build.prop file on your device?
Click to expand...
Click to collapse
I got it, apk will be here soon
yshalsager said:
I got it, apk will be here soon
Click to expand...
Click to collapse
Ok. Thanks
taicracker said:
Ok. Thanks
Click to expand...
Click to collapse
@taicracker
Here you are, please test and report me
https://transfer.sh/rqmJs/Android_GUI-debug-290817-12h43m41s.apk
yshalsager said:
@taicracker
Here you are, please test and report me
https://transfer.sh/rqmJs/Android_GU...-12h43m41s.apk
Click to expand...
Click to collapse
link die
taicracker said:
link die
Click to expand...
Click to collapse
Sorry
https://transfer.sh/rqmJs/Android_GUI-debug-290817-12h43m41s.apk
yshalsager said:
Sorry
https://transfer.sh/rqmJs/Android_GUI-debug-290817-12h43m41s.apk
Click to expand...
Click to collapse
Ok Thanks. I'm downloading. Installation is complete and then I do next. My Nokia 6 does not have a compatible room at all
I installed apk file and what do i do next?

TWRP Flashable BootSplash ZIP and CMD/Terminal Option

Just a simple TWRP Flashable BootSplash Zip for example to replace the warnings when you unlocked/rooted your device.
It will open up_param.bin and repack it with the jpg,s inside the zip.
Simply replace svb_orange.jpg and logo.jpg with a jpg of your own choice.
Make sure the images don't exceed 500kb, and keep exact same resolution (1440x3040 24bbp)
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
*** Download ***
Script:
Code:
#!/sbin/sh
OUTFD=$2
ZIP=$3
ui_print() {
echo -n -e "ui_print $1\n" > /proc/self/fd/$OUTFD
echo -n -e "ui_print\n" > /proc/self/fd/$OUTFD
}
cd /tmp
rm -rf arter97
mkdir arter97
cd arter97
unzip -o "$ZIP"
ui_print " - mounting data partition"
mount /data
if [ ! -e /data/media/0/up_param.bak ]; then
ui_print " - backing up current up_param to /sdcard/up_param.bak"
cat /dev/block/platform/13d60000.ufs/by-name/up_param > /data/media/0/up_param.bak
chown 1023:1023 /data/media/0/up_param.bak
chmod 664 /data/media/0/up_param.bak
fi
ui_print " - installing new logo.jpg"
chmod 755 tar
mkdir tartemp
cd tartemp
/tmp/arter97/tar -xf /dev/block/platform/13d60000.ufs/by-name/up_param
cp /tmp/arter97/logo.jpg .
chown root:root *
chmod 444 logo.jpg
touch *
/tmp/arter97/tar -pcvf ../new.tar *
cd ..
cat new.tar > /dev/block/platform/13d60000.ufs/by-name/up_param
ui_print " - installing new svb_orange.jpg"
chmod 755 tar
mkdir tartemp
cd tartemp
/tmp/arter97/tar -xf /dev/block/platform/13d60000.ufs/by-name/up_param
cp /tmp/arter97/svb_orange.jpg .
chown root:root *
chmod 444 svb_orange.jpg
touch *
/tmp/arter97/tar -pcvf ../new.tar *
cd ..
cat new.tar > /dev/block/platform/13d60000.ufs/by-name/up_param
ui_print " - unmounting partition /data"
umount /data > /dev/null 2>&1
ui_print " "
ui_print "finished"
ui_print "Edited for s10+ by Whiskey103"
cd /
rm -rf /tmp/arter97
sync
Installation method with terminal command without TWRP (pushing up_param.bin using dd cmd on phone):
Download up_param.bin
https://www.whiskey103.nl/index1.php?dir=SamsungS10-Plus/BootSplash/s10plus/
Place in root of internal memory
Open terminal on phone like Material Terminal for example:
command:
su
command:
dd if=/sdcard/up_param.bin of=/dev/block/platform/13d60000.ufs/by-name/up_param
Credits:
@Radzian - used his base zip and edited for s10+
@ianmacd for pointing to the error in my first attempt.
Can you make for S10?
1jkan said:
Can you make for S10?
Click to expand...
Click to collapse
Yea, that's on my to do list.
Just have to get my hands on a s10 up_param.bin still.
The files are most likely the same, the zip will probably just work already.
Perhaps you can upload me your up_param.bin?
Where is this file?
1jkan said:
Where is this file?
Click to expand...
Click to collapse
Run the follow commands on your device in terminal.
su
cat /dev/block/platform/13d60000.ufs/by-name/up_param > /data/media/0/up_param.bak
It will pull up_param.bin and place it as up_param.bak on your internal SD card
Share it here please.
I can not handle it.
I try all the time but I can not. Maybe someone more experienced will help
1jkan said:
I try all the time but I can not. Maybe someone more experienced will help
Click to expand...
Click to collapse
Judging by the fact you are lookin to remove the boot warnings it's safe to say you're rooted.
Once rooted, go to playstore, grab a terminal app like Material Terminal.
Open it, typ su on first line. It will show #.
Then the command I gave you, it should be easy
1jkan said:
I try all the time but I can not. Maybe someone more experienced will help
Click to expand...
Click to collapse
try this:
https://www.whiskey103.nl/index1.ph...plash/&file=TWRP-Flashable_BootSplash_S10.zip
will this work for at&t s10+ snapdragon? please advise, thank you!
PTJunkie1975 said:
will this work for at&t s10+ snapdragon? please advise, thank you!
Click to expand...
Click to collapse
I cant test that obviously, at least needs root/unlocked bootloader etc.
I have Terminal Material. I have entered commands several times but there is always a failure. Not found
Whiskey103 said:
try this:
https://www.whiskey103.nl/index1.ph...plash/&file=TWRP-Flashable_BootSplash_S10.zip
Click to expand...
Click to collapse
This file works great. For full happiness is only missing, so that there is no Magisk stamp ...
Can I flash this with flashify?
daveuk87 said:
Can I flash this with flashify?
Click to expand...
Click to collapse
no, needs twrp.
Maybe i will add a different way with pre-made up_param.bin to be pushed with terminal later.
daveuk87 said:
Can I flash this with flashify?
Click to expand...
Click to collapse
Installation method with terminal command without TWRP (pushing up_param.bin using dd cmd on phone):
Download up_param.bin
Place in root of internal memory
Open terminal on phone like Material Terminal for example:
command:
su
command:
dd if=/sdcard/up_param.bin of=/dev/block/platform/13d60000.ufs/by-name/up_param
@Whiskey103 Will there be bootlog update for android 10? first of all, Thanks
Note: the "by android" logo change and the size of the samsung s10 (x) name too.
note2: I have a galaxy 10+
:fingers-crossed:

Help:Error Executing updates binary in zip

I don’t know what to do - appreciate some help please. another Error is:”unknown command”
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
You probably don't have ro.product.device set.
If you're sure that you actually do have a "viennalte".
Code:
setprop ro.product.device viennalte
If that doesn't work you can always delete the first line or so of META-INF/com/google/android/updater-script in the zip.
Renate said:
You probably don't have ro.product.device set.
If you're sure that you actually do have a "viennalte".
Code:
setprop ro.product.device viennalte
If that doesn't work you can always delete the first line or so of META-INF/com/google/android/updater-script in the zip
Click to expand...
Click to collapse
Thanx for replying. Where I put that code?
Adb command on cmd?
Yes, adb shell.
Renate said:
Yes, adb shell.
Click to expand...
Click to collapse
My pc doesn’t recognise my p905 when I’m in download mode (it dosnt exist on device manager from some reason) so couldn’t unlock bootloader ..and didn’t unlock oem either cause I couldn’t find it/::
I do rooted my device with Odin.
Do you Think delete the first line or so of META-INF - will be enough?
Just delete the line that starts with getprop("ro.product.device")...
If there is a line before/after that includes getprop("ro.build.date delete that too.
Renate said:
Just delete the line that starts with getprop("ro.product.device")...
If there is a line before/after that includes getprop("ro.build.date delete that too.
Click to expand...
Click to collapse
amazing!!! thx!!!
trying to install nikgapps - same Error. wich line to delete here?
#!/sbin/sh
# Shell Script EDIFY Replacement
#Variables
OUTFD=/proc/self/fd/$2;
ZIPFILE="$3";
addToLog() {
echo "$1" >> "/tmp/NikGapps.log"
}
contains() {
case $2 in
*"$1"*) echo true ;;
*) echo false ;;
esac
}
decrypt() {
mkdir -p "$(dirname "$2")"
addToLog "- decrypting $COMMONDIR/busybox"
addToLog " -> source $1"
addToLog " -> destination $2"
unzip -o "$COMMONDIR/busybox" "$1" -p >"$2"
chmod 755 "$2";
}
ui_print() {
until [ ! "$1" ]; do
echo "ui_print $1
ui_print" >> "$OUTFD";
addToLog "$1"
shift;
done;
}
find_zip_type() {
addToLog "- Finding zip type"
if [ "$(contains "-arm64-" "$ZIPNAME")" = "true" ]; then
I don't know what's going on there.
It's obviously trying to be invoked like an Edify script.
You'll have to explicitly state the error and quote the entire shell script.
thanx!!!
Renate said:
You'll have to explicitly state the error and quote the entire shell script.
Click to expand...
Click to collapse
Apparently??? what you quoted above as a script is in a file named "update-binary"???
They're doing something goofy by using a shell script instead of an Edify script???
Or else update in recovery can run without an update-binary???
Apparently there is some problem with fstab so it can't remount system (right after it unmounted it)?
Does this thing have a super partition?
Renate said:
Apparently??? what you quoted above as a script is in a file named "update-binary"???
They're doing something goofy by using a shell script instead of an Edify script???
Or else update in recovery can run without an update-binary???
Apparently there is some problem with fstab so it can't remount system (right after it unmounted it)?
Does this thing have a super partition?
Click to expand...
Click to collapse
Super partition? I don’t know /: how I can check?
Please post a link to this NitGapps.apk
Renate said:
Please post a link to this NitGapps.apk
Click to expand...
Click to collapse
https://sourceforge.net/projects/nikgapps/files/Releases/NikGapps-R/01-May-2021/NikGapps-stock-arm64-11-20210501-signed.zip/download
I thought that that would expedite matters, but I don't have any interest in downloading 600 Megs.
Just post the script, identify the file name and tell me if there is only one file in META-INF/com/google/android
I think we're exceeding the bounds of my expertise/interest.
2 files: update - binary, updater - script.
Updater-script text is:
#!/sbin/sh
# Shell Script EDIFY Replacement
#Variables
OUTFD=/proc/self/fd/$2;
ZIPFILE="$3";
addToLog() {
echo "$1" >> "/tmp/NikGapps.log"
}
contains() {
case $2 in
*"$1"*) echo true ;;
*) echo false ;;
esac
}
decrypt() {
mkdir -p "$(dirname "$2")"
addToLog "- decrypting $COMMONDIR/busybox"
addToLog " -> source $1"
addToLog " -> destination $2"
unzip -o "$COMMONDIR/busybox" "$1" -p >"$2"
chmod 755 "$2";
}
I don't believe that that's the entire extent of updater-script.
You're telling me that the size of that file is ~412 bytes?
@Daniel.aru I own a P900 and not a P905 but for me it seems that this LOS Rom needs a higher TWRP version.
3.0.2 is the latest official available.
That's what it says as well in #1 of the thread you downloaded it from.
The dev even offers it's own version so why don't you follow his suggestion?
bmwdroid said:
@Daniel.aru I own a P900 and not a P905 but for me it seems that this LOS Rom needs a higher TWRP version.
3.0.2 is the latest official available.
That's what it says as well in #1 of the thread you downloaded it from.
The dev even offers it's own version so why don't you follow his suggestion?
Click to expand...
Click to collapse
the 3.0.2 version is an IMG file and odin flash just a TAR. tried to convert the file drom img to tar but the odin process failed. what can i do ?
Daniel.aru said:
the 3.0.2 version is an IMG file and odin flash just a TAR. tried to convert the file drom img to tar but the odin process failed. what can i do ?
Click to expand...
Click to collapse
The TWRP installed should be able to flash the img.
Afaik all after 2.8.7 are able to.
Gotta select that option after selecting "install" in TWRP.
bmwdroid said:
The TWRP installed should be abtle to flash the img.
Afaik all after 2.8.7 are able to.
Gotta select that option after selecting "install" in TWRP.
Click to expand...
Click to collapse
it worked i have the right version . tried to flash the rom again and got eror number 1

Categories

Resources