Now a days mediatek is a populer chipset among the low end android phones ! But many custom roms are possible in this Soc.
These tutorial ar for them who know about rom porting!
Porting MiUi to mediatek.
You have to take MiUi rom compalitable with your Soc.
Like
MT6577 to MT6575
MT6589 to MT6577
MT6582 to MT6572
Better is to port from the same SOc like MT6572 to MT6572
For porting MiUi,Lewa,Oppo
To port for MT6572 to MT6572 just copy and replace these files from your stock rom to port rom.
system/lib/modules
system/etc/firmware
system/user/keylayout/generic.kl
Done now decompile boot.img of your stock rom also the MiUi rom you are porting !
Now copy and replace int.rc to stock boot.img ramdisk folder from ramdisk folder of MiUi boot.img after decompiling.
You have to change the mount point of updater script of the rom you are porting.
Open updater script of port rom find these lines
format("ext4", "EMMC", "/dev/block/mmcblk0p5", "0");
mount("ext4", "EMMC", "/dev/block/mmcblk0p5", "/system");
Now change the mmcblkop_ with your phones partition.
To know about your phones mount point download partition table from google play!(system,data,each does not have the same mount point)
Done now again zip your rom and flash.
To port MiUi,Lewa,Oppo from different chip mentioned above and MT6582 to MT6582,MT6589 to MT6589
Copy and replace these files from stock rom to port rom
system/etc/firmware
system/lib/modules
system/lib/hw
system/usr
system/vendor
Now do the same work to boot.img and updater script ! Now zip your rom and flash!
Related
Hello
I'm trying to flash custom ROM for this tablet. I have made rom based on stock rom with Android Kitchen. I also received from fujitsu kernel source code, unfortunetely without make file (lol), so I can not compile it. Still, I'm using stock kernel, CWMR
Problem is that only stock ROM witch it's ORIGINAL *.img files inside works. Nothing other works - android do not boots.
I have tried in many ways and noticed folowing problems:
1. after stock ROM instalaton, I removed content of /system, and than push with adb the SAME /system folder - stops booting
2. Android Kitchen can not unpack stock system.img file
3. Ext2explorer is openig system.img, but with following error:
Code:
Partition Table Error on system.img
Invalid End of sector markerBlock size 4096, inp 8192, inodesize 256
Linux Partition found on disk 2 partition 0
Error reading Inode 0 parent inode 2.
4. The stock ROM has CUSTOM partition.
5. Flashing custom rom trought CWMR with system directory or img is not working - same result as after changing files on system parition
6. Flashing stock rom with unpacked system.img (as folder) is not workig.
This is updater-script of stock ROM:
Code:
run_program("/system/bin/mkdir", "/etc/firmware");
package_extract_file("mcuLoader","/cache/mcuLoader");
run_program("/system/bin/chmod", "777", "/cache/mcuLoader");
package_extract_file("CY8C20324_BAT_16.i2c","/etc/firmware/CY8C20324.i2c");
run_program("/cache/mcuLoader");
run_program("/system/bin/rm", "/etc/firmware/CY8C20324.i2c");
run_program("/system/bin/rm", "/cache/mcuLoader");
sleep(20);
package_extract_file("CY8C20324.i2c","/etc/firmware/CY8C20324.i2c");
package_extract_file("mcuLoader","/cache/mcuLoader");
run_program("/system/bin/chmod", "777", "/cache/mcuLoader");
run_program("/cache/mcuLoader");
unmount("/system");
mount("ext4", "EMMC", "/dev/block/platform/sdhci-tegra.3/by-name/APP", "/system");
show_progress(0.500000, 0);
package_extract_file("boot.img", "/dev/block/platform/sdhci-tegra.3/by-name/LNX");
package_extract_file("system.img", "/dev/block/platform/sdhci-tegra.3/by-name/APP");
show_progress(0.200000, 0);
package_extract_file("custom.img", "/dev/block/platform/sdhci-tegra.3/by-name/CUS");
assert(nv_copy_blob_file("blob", "/staging"));
show_progress(0.100000, 0);
What is mcuLoader and *.i2c files for?
Conclusion:
Exchanging almost every file (I menaged to delete odex files and push them again with working result) on system parition prevents booting (before adb starts, so I do not know how to get any logs).
Can anyone help solve the problem?
BTW: It would be nice to create some custom ROMs for this device - It's quite popular, as it is the same tablet as Pegatron Chagall, Olivetti Olipad 3, Siragon N4 and Realpad Bunaken
Help
Hey, i have the Siragon 4N and i accidentally bricked the device and can't go to fastboot mode, can you help me with that? is there any way i can create an update.zip with the original files to flash it with the original recovery? Please Answer me
rupertst said:
Hello
I'm trying to flash custom ROM for this tablet. I have made rom based on stock rom with Android Kitchen. I also received from fujitsu kernel source code, unfortunetely without make file (lol), so I can not compile it. Still, I'm using stock kernel, CWMR
Problem is that only stock ROM witch it's ORIGINAL *.img files inside works. Nothing other works - android do not boots.
I have tried in many ways and noticed folowing problems:
1. after stock ROM instalaton, I removed content of /system, and than push with adb the SAME /system folder - stops booting
2. Android Kitchen can not unpack stock system.img file
3. Ext2explorer is openig system.img, but with following error:
Code:
Partition Table Error on system.img
Invalid End of sector markerBlock size 4096, inp 8192, inodesize 256
Linux Partition found on disk 2 partition 0
Error reading Inode 0 parent inode 2.
4. The stock ROM has CUSTOM partition.
5. Flashing custom rom trought CWMR with system directory or img is not working - same result as after changing files on system parition
6. Flashing stock rom with unpacked system.img (as folder) is not workig.
This is updater-script of stock ROM:
Code:
run_program("/system/bin/mkdir", "/etc/firmware");
package_extract_file("mcuLoader","/cache/mcuLoader");
run_program("/system/bin/chmod", "777", "/cache/mcuLoader");
package_extract_file("CY8C20324_BAT_16.i2c","/etc/firmware/CY8C20324.i2c");
run_program("/cache/mcuLoader");
run_program("/system/bin/rm", "/etc/firmware/CY8C20324.i2c");
run_program("/system/bin/rm", "/cache/mcuLoader");
sleep(20);
package_extract_file("CY8C20324.i2c","/etc/firmware/CY8C20324.i2c");
package_extract_file("mcuLoader","/cache/mcuLoader");
run_program("/system/bin/chmod", "777", "/cache/mcuLoader");
run_program("/cache/mcuLoader");
unmount("/system");
mount("ext4", "EMMC", "/dev/block/platform/sdhci-tegra.3/by-name/APP", "/system");
show_progress(0.500000, 0);
package_extract_file("boot.img", "/dev/block/platform/sdhci-tegra.3/by-name/LNX");
package_extract_file("system.img", "/dev/block/platform/sdhci-tegra.3/by-name/APP");
show_progress(0.200000, 0);
package_extract_file("custom.img", "/dev/block/platform/sdhci-tegra.3/by-name/CUS");
assert(nv_copy_blob_file("blob", "/staging"));
show_progress(0.100000, 0);
What is mcuLoader and *.i2c files for?
Conclusion:
Exchanging almost every file (I menaged to delete odex files and push them again with working result) on system parition prevents booting (before adb starts, so I do not know how to get any logs).
Can anyone help solve the problem?
BTW: It would be nice to create some custom ROMs for this device - It's quite popular, as it is the same tablet as Pegatron Chagall, Olivetti Olipad 3, Siragon N4 and Realpad Bunaken
Click to expand...
Click to collapse
hey man, i just got the tablet, did you get any progress on your rom? or found any other rom for this deivce?
Need boot.img for DNS/Pegatron 110G. ICS 4.03. Franco.kernel updater fails
Hello. I need help and maybe I can somehow help You. I need to reflash DNS/Pegatron 110G, Android 4.03. It is a copy of Fujitsu STYLISTIC M532
I need kernel update- a file boot.img for this device for JB 4.11
The tested procedure of reflashing for Pegatron is to update kernel by franco.kernel updater (FKU) and then update from SD card by M532 firmware pkg with corrected 07 byte. Unfortunately FKU is no more compatible with this device, FKU old versions cannot connect to server. I need kernel file boot.img for this device - there is a good utility from 4pda.ru that also can update kernel. This utility by AlexBlast can do a lot of things trough ADB interface. A link is in attached file. Also I placed a link to nvflash drivers. Nvflash is used to flash Nvidia chipset. I think they will be usefull for You.
I made a backup and took a risk to flash M532 version 14405 without kernel update. Now it hangs after boot but ADB interface works and recovery mode works. So I must make kernel update or make a restore. I need boot.img
I need to attach file since I cannot place outside link in the post
Hi,
Does anyone have been able to cook a ROM for this tablet?
Q&A for [GUIDE] [PORT] [ROM] All About Mediatek ROM Porting
Some developers prefer that questions remain separate from their main development thread to help keep things organized. Placing your question within this thread will increase its chances of being answered by a member of the community or by the developer. Thanks for understanding and for helping to keep XDA neat and tidy! :smile:
after unpack my boot.img with "MTK FirmwareAdapter Tool" i have in the folder:
1- rmdisk (folder)
2- kernel (file)
3- kernel_header (file)
4- ram_disk (file)
5- ram_disk.gz
6- ram_header (file)
Where is the zimage? Where is boot.img-ramdisk folder? How i doing:
"* Now Go back to the Rom folder and Take the boot.img and decompile it with any bootimg-unpack tool!
* Now delete the zimage and rename boot.img-ramdisk to PORT-Ramdisk
* Now Do the Same for Stock boot.img and open the folder named PORT-ramdisk and copy all the fil PORT-
ramdisk to boot.img-ramdisk of your Stock boot.img
* Now Go to boot.img-ramdisk and open init.rc" ?????????
thx
Click to expand...
Click to collapse
Port mtk6592 to mtk6589t
hi i try to port mtk6592 to mtk6589t and not working, you can help me?
Thanks
iphone 6 clone dead
hi i formate iphon6 clone using sp flash tool,now bootloader menu not opening even not charging. what can i do, please advice me.
sorry, i am new here.
I really doubt if this tutorial will work on Tablet Advan T5C.
I really want to Port MIUI Rom to this tablet. However, the developer is very rare for this vendor "Advan" so it's hard to get a Custom ROM.
What ROM of Tablet Vendor which can be ported to this spec?
8 "Inch IPS
MT6582
Mali 400
8 GB ROM
1 GB of RAM
Port MT6589 to MT6577
Thanks for the tutorial on first page.
Im alred try first metod but cellphone restart on CWM scren.
Now a gonna try secound metod.
Useful Post....
Tnx For Share.
teopro said:
after unpack my boot.img with "MTK FirmwareAdapter Tool" i have in the folder:
1- rmdisk (folder)
2- kernel (file)
3- kernel_header (file)
4- ram_disk (file)
5- ram_disk.gz
6- ram_header (file)
Where is the zimage? Where is boot.img-ramdisk folder? How i doing:
"* Now Go back to the Rom folder and Take the boot.img and decompile it with any bootimg-unpack tool!
* Now delete the zimage and rename boot.img-ramdisk to PORT-Ramdisk
* Now Do the Same for Stock boot.img and open the folder named PORT-ramdisk and copy all the fil PORT-ramdisk to boot.img-ramdisk of your Stock boot.img
* Now Go to boot.img-ramdisk and open init.rc" ?????????
thx
Click to expand...
Click to collapse
The zImage is the kernel file. boot.img-ramdisk is the main folder containing the zImage(kernel) and ramdisk, just you need rename the decompiled port boot.img to PORT-ramdisk, and your stock boot.img not rename folder.
I just want to ask how to fix this problem , I ported MT6589 to my MT6577 device, Seems there's no problem in flashing ROM but when its time to boot, it just hangs on the boot logo, it's not even trying to load bootanimation but rather it only flashes a white screen then it reboot to my recovery. Seems like I do something wrong?
My device is mp a818g duo
Kernel:3.4.0
Chipset: MT6577
Hope I receive help
---------- Post added at 03:57 PM ---------- Previous post was at 03:50 PM ----------
teopro said:
after unpack my boot.img with "MTK FirmwareAdapter Tool" i have in the folder:
1- rmdisk (folder)
2- kernel (file)
3- kernel_header (file)
4- ram_disk (file)
5- ram_disk.gz
6- ram_header (file)
Where is the zimage? Where is boot.img-ramdisk folder? How i doing:
"* Now Go back to the Rom folder and Take the boot.img and decompile it with any bootimg-unpack tool!
* Now delete the zimage and rename boot.img-ramdisk to PORT-Ramdisk
* Now Do the Same for Stock boot.img and open the folder named PORT-ramdisk and copy all the fil PORT-
ramdisk to boot.img-ramdisk of your Stock boot.img
* Now Go to boot.img-ramdisk and open init.rc" ?????????
thx
Click to expand...
Click to collapse
When you use android kitchen to decompile your boot.IMG then your kernel will named zimage, but when you use other unpack/repack tool for your boot.IMG, the equivalent of zimage in your decompiled boot.img is the files kernel and kernel header.
Click to expand...
Click to collapse
Xtreme Ornob Thanks
Thanks a lot for this extreame guide about Mediatek rom Porting
what is the tool download link, i am new
When I port by this guide I have problems, from 6582 to 6582
I have logo and then nothing when phone reboots after installing rom
I tried all things
changed kernel from stok to port rom and changed the lines in init.rc in stok rom and have the same result
Can some one help me?
iceman1966 said:
decompile the boot.img rom port and the boot.img of your stock rom. Replace the ramdisk rom port with ramdisk the stock rom. recompile and install the new boot.img.
Click to expand...
Click to collapse
I made that you write to me but situation is the same.
logo and nothing else
How to take the logcat when the phone goes to reboot after flashing the rom ?
I want to see what I made wrong?
query regarding porting from different versions
Hello xda.........i want to know the information about how to port the jellybean rom with kitkat to get kitkat in my phone.............
please explain me how to port to higher versions from our lower version of roms.............
Boot.img
im porting from a device to a device with different SoC.
i have followed instructions on this thread:
http://forum.xda-developers.com/showthread.php?t=2701283
i have done the steps and reached to the step where it says to unpack boot.img. i have unpacked the boot.img in both port and stock only to find the boot.img-ramdisk empty... what should i do now?
I want to know all about Porting
Hi sir Good day.
I want to know how to port a HTC one M8 ROM MTK6572 Chipset. Beacase I came from Samsung Dev. S5830 Galaxy Ace and its hard to understand how to flash ROM's of MTK's Devices. Please Reply Thanks in advance
camera degrades performance
nice tutor, i have sucessfully ported Lewa OS 5.0 rom from Lenovo S920 to my device HDC Galaxy S4 GT-I9500 Clone.
-MTK6589 Quad Core 1.2GHz
-2GB RAM (fake) 1GB RAM (real), 4GB ROM
-5.0inch HD IPS Screen
Display resulotion: 1280*720 pixel display, 320 dpi
GPU : PowerVR SGX 544MP
Build ID : JDQ39.I9500ZSUAMDF
Hardware : UNIVERSAL5410(exynos5) fake, MT6589
Model : GT-I9500
Build number : ALPS.JB2.MP.V1.26
Build date UTC : 20130904-125830
Android v : 4.2.2
Baseband v : MOLY.WR8.W1248.MD.WG.MP.V23.2013/07/25 04:17
Kernel v : 3.4.5 ([email protected]) (gcc version 4.6.x-google 20120106 (prerelease) (GCC))#1 SMP Wed Sep 4 20.55.23 CST 2013
LCD Driver IC : 1-nt35590_hd720_dsi_cmd_truly
all work perfectly but the problem is camera quality really degrades when using Lewa OS. with stock rom my back camera 13MP, when i used custom rom Lewa my back camera only 2MP. i try to instal lenovo super camera, but camera resolution still same only 2MP.
how can i fix it please help me.....!
can you help me I am trying to port the ROM from mt6592 to mt6582 and have problems.
Do you have guide how to make a port from mt6592 to mt6582?
just wanna ask if im doing right,thanks in advance
I am porting custom rom MT6572 to my device MT6582
I decompile boot.img(MT6572) and boot.img(MT6582"stock")
I copy all files from ramdisk(MT6572) and replace it to ramdisk(MT6582" stock)
I edit init.rc and edit what i need to edit and do it like this
#Create Chip Property
on early_property:ro.hardware=mt6572
setprop ro.mtk.hardware mt6582
on early_property:ro.hardware=mt6589
setprop ro.mtk.hardware mt6582
I add and edit those line on the init.rc, am I doing right boss?
Good day Sir,just wanna ask if i am doing right.
I am porting custom rom MT6572 to my device MT6582
I decompile boot.img(MT6572) and boot.img(MT6582"stock")
I copy all files from ramdisk(MT6572) and replace it to ramdisk(MT6582" stock)
I edit init.rc and edit what i need to edit and do it like this
#Create Chip Property
on early_property:ro.hardware=mt6572
setprop ro.mtk.hardware mt6582
on early_property:ro.hardware=mt6589
setprop ro.mtk.hardware mt6582
I add and edit those line on the init.rc, am I doing right boss?
This guide is only for MTK! This will work from same chip to same chip for example MT6582 to MT6582 or MT6577 to MT6577
Some devices have different partitions to flash and the ROM you might flash can brick your phone. It can even hard brick your phone. So it is recommended that you do a ReadBack, ClockWorkMod Backup and MTK Droid Root & Tools backup. I am not responsible for bricked phones!!
What you need to port a ROM to your device [Your chipset to Your Chipset only]
1: A ROM to port [in .zip]
2: Your stock ROM [extracted with /system and build.prop]
How To Port ROMs to your Phone:
Extract the ROM to port and you will have these main things:
META-INF
System
boot.img.
If you have them then you are ready for next step.
Open /system folder of stock and rom to port.
Open bin folder of stock ROM and copy these files:
pq
vold
Now replace these files in ROM to Port's /System/Bin folder.
Open lib folder of Stock ROM and get these files:
libcamalgo.so
libcamdrv.so
libcameracustom.so
libdpframework.so
libsensorservice.so
libsync.so
libvcodecdrv.so
Replace all the files mention above to ROM to Port's /system/lib folder.
Now open Stock ROM's /system/etc/ folder and copy these files:
apns.conf.xml
vold.fstab
vold.fstab.nand
Now replace these files in ROM to port's /system/etc folder.
Delete these folders from ROM to Port
/System/vendor/
/System/lib/hw
/System/lib/modules/
/System/etc/WiFi
/System/etc/Firmware
Replace these folders from Stock ROM to ROM to Port:
/System/lib/hw/
/System/lib/modules//System/etc/WiFi/
/System/etc/Firmware/
/System/vendor/
The final step! Press back button to go to the main folder where you have the Stock ROM. Copy boot.img [From Stock ROM]and replace it with the ROM to Port's.
if I helped you hit Thanks button....
Must the two ROMs be the same Android version or doesn't mater?
Any version of Android but the chip should be same
Ex: mtk-6592 to mtk-6592
:HELLO guys..I:HELLO guys..I'm here to guide you how to port custom ROMs for your mtk and snapdragon device..this guide is noob friendly.. Just follow the steps as given.
NOTE--IM AND XDA TOO NOT RESPONSIBLE FOR ANY DAMAGES FOR YOUR DEVICES..FLASHING CUSTOM ROMS VOIDS WARRENTY
So let's start ..
FOR MEDIATECH PHONES
Works for..
MT6589 to MT6577
MT6582 to MT6572
MT6577 to MT6575
Also with SAME SOC LIKE
MT6589 TO MT6589
MT6572 TO MT6572
MT6582 TO MT6582
ETC...
No Need of Source Code
No Need of Kernel Source
No Need of **ANDROID KITCHEN
No Need of LINUX...
Requirements:
* A Brain
* Patience
* Windows XP/7/8
* 7-Zip
* Notepad++
* Bootimg Unpack/Repack Tools for Windows!
* Stock ROM
* And a Little Respect!!
So now Lets Begin...
PORTING For Same SoCs ( Ex: MT6572 to MT6572)
* Replace these from your Stock ROM to the ROM u want to PORT!! Lets Call it "PORT"
*now you need to replace some files from stock to port ROM...first delete them all mentioned from port ROM and then transfer from stock☺
FILES NEEDS TO BE REPLACED.
Code:
*system/vendor
*system/usr
*system/lib/modules
*system/lib/hw
*system/lib/libncurses.so
*system/etc/firmware
*system/etc/vold.fstab
*system/etc/vold.fstab.nand
*system/etc/bluetooth:good:
For Fixing Problems...
Code:
*system/etc/permissions
*system/etc/security
*system/etc/audio
*system/etc/wifi
*system/lib/drm
*system/lisystem/lib/soundfx
* Now Replace the Stock Boot.img to Port ROM!
* Now Open The Port ROM folder and go to META-INF/google/android and open updater-script in Notepad++
* Do the same for the Stock ROM
* Now In the Port ROM's Updater Script, find a line that starts with this...
format(".......
and only replace the mmcblk0p.. with the stock one!
* Do the same for this line...
mount("...
Example:
This is the PORT one!!!
Code:
format("ext4", "EMMC", "/dev/block/mmcblk0p5", "0", "/system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p5", "/system");
This is the Stock one!!
Code:
format("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");
Now just Replace the "mmcblk0p3" from STOCK to PORT!!
It should look like this:
Code:
format("ext4", "EMMC", "/dev/block/mmcblk0p3", "0", "/system");
mount("ext4", "EMMC", "/dev/block/mmcblk0p3", "/system");
DO NOT REPLACE THE WHOLE LINE!
NOW COME TO THE MOST IMPORTANT PART..WITHOUT THIS STCOSTEP,ROM WILL NOT BOOT UP.
DOWNLOAD FIRST BOOT IMG UNPACK REPACK TOOL...
then you need to create two folder like "stock" and "port"(sometimes the tool caintain both the folder)...
Put the both boot.IMG in their respective folders..(stock boot.IMG in stock and port.boot.IMG in port folder.
Now unpack both the boot.IMG
Then copy and replace the port kernel with stock one..I.e.transfer your stock kernel to port folder..and finally repack it☺☺.
* Now go back to the Folder of Port ROM and You'll see 2 folders & 1 file named
-META-INF
-system
-boot.img
* Now Select these three and Click Right Mouse Button and Click on 7-Zip ->> Add to Archive
* Now a dialouge box should appear!
* Configure the Format like This:
Archive format: ZIP
Compression Level : Normal
Compression Method: Deflate
Dictoioany Size: 32k
Word Size 32
* Now Start Zipping and Push the ZIP to your Memory Card
* Go to Recovery >> Install ZIP & Wipe Data
Finished!!
DONT FORGET TO HIT THANKS TO MY PROFIKE...IF YOU HIT THANKS YOUR ROM WILL 100% BOOT u??
The ROM porting for snapdragon soc and cross porting on mtk is on my next thread�
CREDITS
@HERCULES
This work on mtk6735m?
Hey Guys,
I think I am the 20th guy that asks a Question similiar to this but I found nothing and yes I used Google .
My Goal is to build a Custom Rom for my Oneplus 3 based on OxygenOS sadly I am a total noob so I thought I could steal some parts from FreedomOS (based on Aroma).XD
The Aroma Installer is very annoying for me (imho) so I modified the Script that it should just flash through without opening the Aroma Installer....
Sadly this isn't the Case:
It flashes until it should extract the system.new.dat File and there TWRP loads to infinity :/,
because I found no Solution I removed this Part and flashed it over again...(the next thing that came up was "Starting Aroma Installer" and then it errored.... -> It reads the Update-Binary ?)(the Error was something like failed to start Aroma exiting now...)
I already opened Update-Binary in Notepad++ but there is just a lot of crap that no Human can read......
Is the Update-Binary unique to every Device or is there a Solution that works for everything like the updater-script ?
Can someone help me getting this Rom to work ???
:crying:
Thank in advance for reading my crappy English
Lucas
PS: My Script: https://pastebin.com/y04Zzhzi
My "Rom": https://mega.nz/#!eBgmzKzT!xyLManD0AxPtsuSLUymuiQhqlnyMQLcnhcO8lihi7NU
I fixed it ^^
Luro02 said:
I fixed it ^^
Click to expand...
Click to collapse
Please share your result:
1. Is the `update-binary` dependent on the device?
2. Is there any `update-binary` available to work with adb sideload feature of the device with no custom recovery.
3. Is it will work if device has bootloader unlocked but it is not rooted?
4. Is following script is valid :
Code:
format("yaffs2", "MTD", "system", "/system");
ui_print("Format Completed");
mount("yaffs2", "MTD", "system", "/system");
package_extract_file("system.img", "/system");
unmount("/system");
I will be very thankful to you if you can answer any of the question :angel:.