[ADB | FASTBOOT | LINUX COMMANDS] BootLoader, Kernel, Recovery, ROM, Root, Backup

Search This thread

mirfatif

Senior Member
Oct 18, 2016
646
380
t.me
NOTE:
I'm not a developer or something even near to that. All information provided here is copied from different sources and according to the best of my knowledge.
I have tested this on different devices using Windows 8.1 & 10. I'll not be responsible for any harm to you or your device. It works perfectly for me. You may try it on your own risk.
Save / backup your data before performing any actions.


WHAT IS ADB/FASTBOOT
ADB and fastboot are different protocols used through PC to perform different command line operations on device through USB in ROM/Recovery and bootloader mode respectively.
Android Debugging Bridge is basically used by developers to identify and fix bugs in OS (ROM). ADB works in ROM and recovery both.
Fastboot works in bootloader mode even when phone is not switched on in Recovery or ROM or even if Android isn't installed on phone. In later case, bootloader can be accessed by certain button combination while powering on device; usually Power + Vol. Down. See here the booting process of Android devices.
Fastboot/ADB setup is to be made on PC to use this mode. ADB mode has more flexibility than fastboot as it supports more types of flashable files to be flashed. ADB also supports backing up Apps and Data. ADB/fastboot commands can be used to flash recovery and boot images. It can also flash ROMs and mods like rooting solutions and XPOSED by booting into recovery. And above all, it is the only way to unlock bootloader without which the device functionality is too limited. Read here why we need to unlock bootloader.
In bootloader mode, usually boot logo or fastboot logo appears on device screen.

SETUP
  1. Enable USB Debugging in Settings > Developer Options. If not available, Dev. Options can be accessed by tapping 5 (or 7) times Build Number in Settings > About Phone.
  2. Allow ADB root access in Dev. Options or SuperSU. Some commands need root.
  3. Allow data transfer over ADB when prompted on device screen. Otherwise you might get errors like device unauthorized etc. So keep screen unlocked at first connect.
  4. Disable MTP, PTP, UMS etc. from USB computer connection on device to avoid any interruptions.
  5. Install Android SDK or simply install 15 Seconds ADB Setup 1.4.2. It works up to Android Lollipop (AOSP 5). Credits to Snoop05
    Windows 8.1 users who got error installing this setup should first install Windows Update KB2917929.
  6. You will have to navigate to adb folder each time you start cmd. Or setup adb to work globally. On your PC, go to System Properties > Advanced System Settings > Environment Variables. Click on New (User Variables). Variables Name: ADB ( Or anything you want). Variables Value: ;C:\adb (if installed 15 seconds setup) or ;C:\SDK\paltform-tools.
  7. Install ADB USB Drivers for your Android Device. To do this automatically, download and run ADB Driver Installer. Connect device through USB cable and install drivers.
  8. NOTE: Spaces in file paths don't work in adb commands. Non-English characters and languages don't work either. Also the commands are case-sensitive.

There is a long list of adb/fastboot commands to perform numerous operations. Here are a few of those being listed keeping in view certain tasks:

COMMON COMMANDS
On PC run Command Prompt as Administrator.
  • To check connected devices when ROM is running on phone:
    Code:
    adb devices
  • To boot into bootloader mode:
    Code:
    adb reboot bootloader
  • To check connected devices when in bootloader mode:
    Code:
    fastboot devices
  • To boot into ROM:
    Code:
    fastboot reboot
  • To boot into recovery:
    Code:
    fastboot reboot recovery
There are some common Linux commands which can be used in combination with these commands to perform certain operation. However, ADB | FASTBOOT is not necessarily required for these Linux commands. These can be run directly from Terminal Emulator in ROM or Custom Recovery. Some of them are given below.

UNLOCK BOOTLOADER
NOTE: Some newer devices don't allow unlocking of bootloader directly to ensure more security. Instead an official method is provided to unlock BL using PC.
Read here to know about the risks of BL unlocking.


To check the bootloader status:
Code:
fastboot oem device-info
“True” on unlocked status.
If "false", run the following to unlock:
Code:
fastboot oem unlock

However these are OEM specific commands and may differ or not work on all devices. Fastboot's own commands (which are part of AOSP source and) that can unlock bootloader allowing flashing of partitions:
Code:
fastboot flashing unlock
Allow flashing of bootloader related partitions too:
Code:
fastboot flashing unlock_critical

FORMAT DATA PARTITION
This will erase your data.
Code:
fastboot format:ext4 userdata
It can be performed on other flash partitions as well. A general syntax is 'fastboot format:FS PARTITION'

FLASH RECOVERY
Download recovery.img (specific for your device) to adb folder.
To test the recovery without permanently flashing, run the following:
Code:
fastboot boot recovery.img
On next reboot, recovery will be overwritten by previous recovery.
Or to permanently flash recovery, run:
Code:
fastboot flash recovery recovery.img
fastboot reboot recovery
Stock ROM's often tend to replace custom recovery with stock one on first reboot. That's why, booting into recovery is recommended before booting into ROM.

FLASH KERNEL
Download boot.img (specific for your device) to adb folder and run following:
Code:
fastboot flash boot boot.img

FLASH ROM
Download ROM.zip (for your device) created for fastboot i.e. with android-info.txt and android-product.txt.
To wipe your device and then to flash .zip:
Code:
fastboot -w
fastboot update </path/to/your/Rom.zip>

PASSING FASTBOOT ARGUMENTS
Fastboot supports passing options. For example, while booting a modified kernel image with FramBuffer Console support, console device and its font can be provided as option:
Code:
fastboot boot -c "console=tty0,115200 fbcon=font:VGA8x8" boot-fbcon.img

GAIN ROOT (Not recommended method. Better flash directly through custom recovery).
Root is required to modify the contents of /system. You can read here further.
Download (flashable) supersu.zip and custom or modified recovery.img (having support to flash .zip files) to adb folder and run the following:
Code:
fastboot boot recovery.img
Now once you are in recovery, adb will work instead of fastboot.
To copy files from PC to device and then to extract files, run the following:
Code:
adb push supersu.zip /tmp
adb shell /sbin/recovery --update_package=/tmp/supersu.zip

BACKUP / RESTORE APPS & DATA (From/To PC)
To backup and restore all apps and their data:
Code:
adb backup -apk -shared -all -system -f C:\backup.ab
adb restore C:\backup.ab
Read here for details.

COPY WHOLE PARTITION IMAGE (within device)
This method can be used to backup whole device e.g. to backup /data/ including /data/media/ i.e. Internal SD Card which isn't backed up by custom recovery (TWRP). Or you can get any partition image for development purpose. This method retains complete directory structure as well as file permissions, attributes and contexts.
  • To jump from windows command prompt to android device shell:
    Code:
    adb shell
    These commands can also be given from Recovery Terminal instead of ADB.
  • To get SuperUser access (in ROM):
    Code:
    su
  • To list all available partitions or mount points on device:
    Code:
    cat /proc/partitions
    Or go to "/dev/block/platform/" folder on device. Search for the folder having folder "by-name" inside it. It's msm_sdcc.1 (on Nokia X2). Run the following:
    Code:
    ls -al /dev/block/platform/*/by-name
    Or simply use DiskInfo app to get partition name you want to copy. Say you want to copy /data (userdata) partition. On Nokia X2DS, it is mmcblk0p25.
    To confirm:
    Code:
    readlink /dev/block/bootdevice/by-name/userdata
  • Run the following to copy partition:
    Code:
    dd if=/dev/block/mmcblk0p25 of=/sdcard/data.img
    or
    Code:
    cat /dev/block/mmcblk0p25 > /sdcard/data.img
    or
    Code:
    dd if=/dev/block/bootdevice/by-name/userdata of=/sdcard/data.img
    data.img will be copied to your SD card.
    It also works inversely (restore):
    Code:
    dd if=/sdcard/data.img of=/dev/block/mmcblk0p25
    data.img from your SD card will be written to device.
    Similarly you can copy system.img, boot.img or any other partition. However boot.img and other partitions may not be copied in ROM but in recovery mode only. So better use recovery for dd except if you're​ going to dd recovery partition itself. You can read here more about android partitions.

COPY WHOLE FOLDER (within device)
This method can be used to backup folders like /data/media/ which isn't backed up by custom recovery (TWRP).

To jump from windows command prompt to android device shell:
Code:
adb shell
These commands can also be given from Recovery Terminal.
To get SuperUser access (in ROM):
Code:
su
To copy from Internal Memory to SD Card:
Code:
cp -a /data/media/0/. /external_sd/internal_backup/
Or if you don't have SU permission:
Code:
cp -a /external_sd/. /sdcard/
To copy from SD Card to Internal Memory:
Code:
cp -a /external_sd/internal_backup/. /data/media/0/
However, if you are copying to an SD card with FAT32 file system, android permissions of files won't be retained and you would have to fix permissions yourself. In this case, you can use tar command to create archive of files along with their attributes ( permissions: mode & ownership + time-stamps) and security contexts etc. But FAT32 FS has also a limitations of 4GB maximum file size. You may use "split" command along with "tar" to split the archive in smaller blocks. Or use exFat or Ext4 filesystem for larger file support. Ext4 would give higher writing speed in Android but not supported in Windows i.e. SD card can't be mounted in Windows. MTP however works.
To jump from windows command prompt to android device shell:
Code:
adb shell
To get SuperUser access (in ROM):
Code:
su
To copy from Internal Memory to SD Card:
Code:
tar cvpf /external_sd/internal_backup/media.tar /data/media/0/
To extract from SD Card to Internal Memory (along with path):
Code:
tar -xvf /external_sd/internal_backup/media.tar
To extract from SD Card to some other location, use "-C":
Code:
tar -xvf /external_sd/internal_backup/media.tar -C /data/media/0/extracted_archive/

COPY WHOLE FOLDER (From/To PC)
This method can be used to backup folders like /data/media/ which isn't backed up by custom recovery (TWRP).

To copy from PC to device:
Code:
adb push \path\to\folder\on\PC\ /path/to/folder/on/device/
To copy from device to PC:
Code:
adb pull /path/to/folder/on/device/ \path\to\folder\on\PC\

After copying from PC to device's Internal Memory (/data/media/), you might get Permission Denied error e.g. apps can't write or even read from Internal Memory. It's because Android (Linux) and Windows have different file permissions system. To FIX PERMISSIONS, boot into recovery and run following commands:
(Credits to xak944 :))
Code:
adb shell
To take ownership of whole "media" directory:
Code:
chown -R media_rw:media_rw /data/media/
To fix permissions of directories:
Code:
find /data/media/ -type d -exec chmod 775 '{}' ';'
To fix permissions of files:
Code:
find /data/media/ -type f -exec chmod 664 '{}' ';'
 
Last edited:

theburrus1

Member
  • Apr 5, 2011
    49
    4
    Moto G7 Play
    HELP PLEASE! Fastboot is acting funny for first time, Huawei Honor 6X

    Okay, so I have a Huawei Honor 6X. This device has been rooted and and had custom roms of sorts flashed fine, and bootloader has been unlocked several times only to later have me flash the stock firmware back thus locking bootloader, etc. So this isn't my first rodeo. However, have never seen this. Basically, going from the Stock ROM, I had enabled USB DEBUGGING and approved the little allow always toast popup. Then using my command line in linux, I issued
    Code:
     adb devices
    .... saw it was seeing the device. Then issued
    Code:
     adb reboot bootloader
    . Fine. I see
    PHONE locked FRP Unlocked
    on my fastboot screen. So I know my bootloader is locked. Also, I had previously gotten my unlock code from Huawei as well. But please see the attached image attached belowe here for the real picture of things because once in my fastboot mode, issuing
    Code:
    fastboot devices
    shows my Device ID. However when trying to issue the
    Code:
    fastboot oem unlock bootloader
    code, it acts then like it can find the device or either the devices doesn't find the command? It just says waiting for devices as you can see... wtf? :eek: This is all at the same instance. Please see attached and any help, suggestions, etc. are appreciated!
     
    • Like
    Reactions: Myat_Thu

    ahhl

    Senior Member
    Jul 23, 2007
    1,058
    110
    i also have problem trying to issue some fastboot command
    bootloader have been unlock
    except fastboot reboot command, the rest of fastboot cannot be execute
    the error were
    ...
    FAILED (remote: Command not allowed)
    finished. total time: 0.00s

    can i issue fastboot command from twrp terminal
    i want to enable charge reboot

    on fastboot
    fastboot oem off-mode-charge disable

    how to issue comand from within twrp terminal?
     
    • Like
    Reactions: Myat_Thu

    mirfatif

    Senior Member
    Oct 18, 2016
    646
    380
    t.me
    i also have problem trying to issue some fastboot command
    bootloader have been unlock
    except fastboot reboot command, the rest of fastboot cannot be execute
    the error were
    ...
    FAILED (remote: Command not allowed)
    finished. total time: 0.00s

    can i issue fastboot command from twrp terminal
    i want to enable charge reboot

    on fastboot
    fastboot oem off-mode-charge disable

    how to issue comand from within twrp terminal?
    All vendors don't allow all fastboot commands. Despite of unlocked bootloader, some commands might not work or work differently on certain devices.
    No you can't control fastboot from TWRP. Bootloader / fastboot come at lower level in boot process. Recovery itself is loaded by bootloader. We can't control fastboot from recovery. However a few adb commands work in TWRP as well.
     
    • Like
    Reactions: Myat_Thu and ahhl

    shashank1320

    Recognized Contributor
    May 26, 2015
    7,500
    2,078
    Delhi
    i also have problem trying to issue some fastboot command
    bootloader have been unlock
    except fastboot reboot command, the rest of fastboot cannot be execute
    the error were

    FRP locked?

    ---------- Post added at 11:43 AM ---------- Previous post was at 10:50 AM ----------

    Very nice guide with detailed information.
     

    g7nbp

    New member
    Sep 28, 2018
    1
    0
    struggling with fastboot

    Fastboot doesn't want to write out my unlock file???

    I'm trying to unlock the bootloader on an old HTC wildfire S, and have followed all the steps listed on the official htcdev.com site to get the unlock token from HTC, but when I run

    ./fastboot flash unlocktoken Unlock_code.bin

    I get

    target didn't report max-download-size
    sending 'unlocktoken' (0 KB)

    but then it just sits these forever

    all other fastboot commands seem to work fine, just the flash unlock thats not being written

    I can find lots of posts from people with same problem, but no answers that get me any nearer.

    enviro here is debian with latest android dev installed from the standard repositories, and fastboot 1:7.0.0+r33-1

    phone is wildfire s
    Marvel pvt ship s-on rl
    hboot 1.09.0099
    microp 0451
    radio 7.57.39.10m
    feb 8 2012,10:29.31

    branded for the uk three network.


    any help would be appreciated!

    chris w
     

    marklutz35

    Member
    Sep 12, 2018
    9
    0
    Try this with that Huawei. This should.unlock the oem

    Go into settings . Go all the way to the bottom to about phone, then go find build number press at a bunch of times rapidly that'll take you into developer mode. Once in developer mode back into the main menu of settings scroll down to developer options. You should find OEM bootloader unlock about three or four down in that section click unlock and you should be good to go. Good luck oh and I didn't have to back mine up first so you should be good to go.....
    Okay, so I have a Huawei Honor 6X. This device has been rooted and and had custom roms of sorts flashed fine, and bootloader has been unlocked several times only to later have me flash the stock firmware back thus locking bootloader, etc. So this isn't my first rodeo. However, have never seen this. Basically, going from the Stock ROM, I had enabled USB DEBUGGING and approved the little allow always toast popup. Then using my command line in linux, I issued
    Code:
     adb devices
    .... saw it was seeing the device. Then issued
    Code:
     adb reboot bootloader
    . Fine. I see on my fastboot screen. So I know my bootloader is locked. Also, I had previously gotten my unlock code from Huawei as well. But please see the attached image attached belowe here for the real picture of things because once in my fastboot mode, issuing
    Code:
    fastboot devices
    shows my Device ID. However when trying to issue the
    Code:
    fastboot oem unlock bootloader
    code, it acts then like it can find the device or either the devices doesn't find the command? It just says waiting for devices as you can see... wtf? :eek: This is all at the same instance. Please see attached and any help, suggestions, etc. are appreciated!
     

    jd1639

    Recognized Contributor
    Sep 21, 2012
    16,832
    5,399
    Minnesota
    @mirfatif Do you know what the fastboot update command is doing under the hood? It's obviously flashing the images to the correct partitions but how does it know what image goes where? fastboot flash boot boot.img makes sense to me but running a fastboot command on a bunch of image files in a zip file doesn't. Thanks.
     

    mirfatif

    Senior Member
    Oct 18, 2016
    646
    380
    t.me
    @mirfatif Do you know what the fastboot update command is doing under the hood? It's obviously flashing the images to the correct partitions but how does it know what image goes where? fastboot flash boot boot.img makes sense to me but running a fastboot command on a bunch of image files in a zip file doesn't. Thanks.
    Can you give me example of such zip file? Fastboot protocol is provided by application bootloader (aboot) which knows very well the exact boundaries of partitions on device. When flashing images, we are telling fastboot what image it is or where it is to be written.
     

    jd1639

    Recognized Contributor
    Sep 21, 2012
    16,832
    5,399
    Minnesota
    Can you give me example of such zip file? Fastboot protocol is provided by application bootloader (aboot) which knows very well the exact boundaries of partitions on device. When flashing images, we are telling fastboot what image it is or where it is to be written.
    The Nexus and pixel phones have had a batch file in the factory image zip file that runs fastboot flashes for the bootloader and radio and then runs a command fastboot update xyz.zip. The xyz.zip is another zip file within the factory image zip. This zip contains all the other image files, i.e. system, modem, etc. Also, I have a pixel 3 and there is no aboot partition. The kernel and recovery images are also both contained in the boot.img. These phones are getting more difficult to deal with.

    These are the partitions:

    127|:/dev/block/bootdevice/by-name # ls -all
    total 0
    drwxr-xr-x 2 root root 1440 1970-05-03 01:39:00.159934065 -0500 .
    drwxr-xr-x 3 root root 1580 1970-05-03 01:39:00.159934065 -0500 ..
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.146602064 -0500 ALIGN_TO_128K_1 -> /dev/block/sdd1
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.143269064 -0500 ALIGN_TO_128K_2 -> /dev/block/sdf1
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.139936063 -0500 ImageFv -> /dev/block/sdf14
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.149935064 -0500 abl_a -> /dev/block/sde4
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.153268065 -0500 abl_b -> /dev/block/sde16
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.153268065 -0500 aop_a -> /dev/block/sde1
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.153268065 -0500 aop_b -> /dev/block/sde13
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.143269064 -0500 apdp_a -> /dev/block/sda15
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.156601065 -0500 apdp_b -> /dev/block/sda16
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.159934065 -0500 boot_a -> /dev/block/sda11
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.143269064 -0500 boot_b -> /dev/block/sda12
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.146602064 -0500 cdt -> /dev/block/sdd2
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.153268065 -0500 cmnlib64_a -> /dev/block/sde7
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.139936063 -0500 cmnlib64_b -> /dev/block/sde19
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.153268065 -0500 cmnlib_a -> /dev/block/sde6
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.149935064 -0500 cmnlib_b -> /dev/block/sde18
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.146602064 -0500 ddr -> /dev/block/sdd3
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.139936063 -0500 devcfg_a -> /dev/block/sde8
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.149935064 -0500 devcfg_b -> /dev/block/sde20
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.139936063 -0500 devinfo -> /dev/block/sdf7
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.139936063 -0500 dip -> /dev/block/sdf8
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.143269064 -0500 dtbo_a -> /dev/block/sde11
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.149935064 -0500 dtbo_b -> /dev/block/sde23
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.153268065 -0500 frp -> /dev/block/sda4
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.139936063 -0500 fsc -> /dev/block/sdf6
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.146602064 -0500 fsg -> /dev/block/sdf5
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.149935064 -0500 hyp_a -> /dev/block/sde3
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.149935064 -0500 hyp_b -> /dev/block/sde15
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.139936063 -0500 keymaster_a -> /dev/block/sde5
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.139936063 -0500 keymaster_b -> /dev/block/sde17
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.156601065 -0500 keystore -> /dev/block/sda3
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.159934065 -0500 klog -> /dev/block/sda19
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.146602064 -0500 limits -> /dev/block/sdf10
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.143269064 -0500 logfs -> /dev/block/sdf12
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.156601065 -0500 metadata -> /dev/block/sda20
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.153268065 -0500 misc -> /dev/block/sda2
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.156601065 -0500 modem_a -> /dev/block/sda13
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.156601065 -0500 modem_b -> /dev/block/sda14
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.139936063 -0500 modemcal -> /dev/block/sdd4
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.143269064 -0500 modemst1 -> /dev/block/sdf3
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.146602064 -0500 modemst2 -> /dev/block/sdf4
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.143269064 -0500 msadp_a -> /dev/block/sda17
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.149935064 -0500 msadp_b -> /dev/block/sda18
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.146602064 -0500 persist -> /dev/block/sdf2
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.143269064 -0500 product_a -> /dev/block/sda7
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:38:59.939956043 -0500 product_b -> /dev/block/sda8
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.149935064 -0500 qupfw_a -> /dev/block/sde9
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.143269064 -0500 qupfw_b -> /dev/block/sde21
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.139936063 -0500 sec -> /dev/block/sdd6
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.139936063 -0500 splash -> /dev/block/sdf15
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.136603063 -0500 spunvm -> /dev/block/sdf9
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.143269064 -0500 ssd -> /dev/block/sda1
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.143269064 -0500 sti -> /dev/block/sdf13
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.146602064 -0500 storsec_a -> /dev/block/sde12
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.149935064 -0500 storsec_b -> /dev/block/sde24
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.153268065 -0500 system_a -> /dev/block/sda5
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.159934065 -0500 system_b -> /dev/block/sda6
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.146602064 -0500 toolsfv -> /dev/block/sdf11
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.139936063 -0500 tz_a -> /dev/block/sde2
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.139936063 -0500 tz_b -> /dev/block/sde14
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.149935064 -0500 uefivar -> /dev/block/sdd5
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.153268065 -0500 userdata -> /dev/block/sda21
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.153268065 -0500 vbmeta_a -> /dev/block/sde10
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:39:00.139936063 -0500 vbmeta_b -> /dev/block/sde22
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.143269064 -0500 vendor_a -> /dev/block/sda9
    lrwxrwxrwx 1 root root** 16 1970-05-03 01:38:59.939956043 -0500 vendor_b -> /dev/block/sda10
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.139936063 -0500 xbl_a -> /dev/block/sdb1
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.149935064 -0500 xbl_b -> /dev/block/sdc1
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.146602064 -0500 xbl_config_a -> /dev/block/sdb2
    lrwxrwxrwx 1 root root** 15 1970-05-03 01:39:00.149935064 -0500 xbl_config_b -> /dev/block/s

    Sent from my [device_name] using XDA-Developers Legacy app
     

    mirfatif

    Senior Member
    Oct 18, 2016
    646
    380
    t.me
    The xyz.zip is another zip file within the factory image zip. This zip contains all the other image files, i.e. system, modem, etc.
    And it also contains rawprogram_unsparse.xml or something similar with all partitions listed?

    Also, I have a pixel 3 and there is no aboot partition.
    I haven't used a device so far with A/B partitioning scheme, so I'm not sure what nomenclature they use for partitions but I think abl_* is the application bootloader.

    The kernel and recovery images are also both contained in the boot.img.
    Yes. There is no recovery partition with A/B scheme.
     

    jd1639

    Recognized Contributor
    Sep 21, 2012
    16,832
    5,399
    Minnesota
    And it also contains rawprogram_unsparse.xml or something similar with all partitions listed?


    I haven't used a device so far with A/B partitioning scheme, so I'm not sure what nomenclature they use for partitions but I think abl_* is the application bootloader.


    Yes. There is no recovery partition with A/B scheme.
    There's nothing in the zip but image files. There's one text file but it just checks for latest bootloader. There's an image, xbl_config.img. I'm not sure what that does.

    Sent from my [device_name] using XDA-Developers Legacy app
     

    mirfatif

    Senior Member
    Oct 18, 2016
    646
    380
    t.me
    There's nothing in the zip but image files. There's one text file but it just checks for latest bootloader. There's an image, xbl_config.img. I'm not sure what that does.

    Actaully rawprogram_unsparse.xml or similar files are used by Factory Flashers such as in Download Mode or ODIN etc. If the device is booted up to the stage of application bootloader (aboot), enough detail of partitions on eMMC is already loaded, including partition names (or labels) that are assigned at the time of creating GUID partition table (GPT). When we execute fastboot update xyz.zip, it flashes all images one by one very similar to fastboot flash boot boot.img, fastboot flash system system.img and so on. Here boot and system are partition names (part_name) while boot.img and system.img are image files (img_name) that should be found in OTA update zip file. Which image file is to be written to which partition is hard-coded in fastboot command's source code:
    Code:
    static struct {
        const char* nickname;
        const char* img_name;
        const char* sig_name;
        const char* part_name;
        bool is_optional;
        bool is_secondary;
    } images[] = {
        { "boot",     "boot.img",         "boot.sig",     "boot",     false, false },
        { "system",   "system.img",       "system.sig",   "system",   false, false },
    ...
    ...
    }
     
    • Like
    Reactions: jd1639

    jd1639

    Recognized Contributor
    Sep 21, 2012
    16,832
    5,399
    Minnesota
    Actaully rawprogram_unsparse.xml or similar files are used by Factory Flashers such as in Download Mode or ODIN etc. If the device is booted up to the stage of application bootloader (aboot), enough detail of partitions on eMMC is already loaded, including partition names (or labels) that are assigned at the time of creating GUID partition table (GPT). When we execute fastboot update xyz.zip, it flashes all images one by one very similar to fastboot flash boot boot.img, fastboot flash system system.img and so on. Here boot and system are partition names (part_name) while boot.img and system.img are image files (img_name) that should be found in OTA update zip file. Which image file is to be written to which partition is hard-coded in fastboot command's source code:
    Code:
    static struct {
        const char* nickname;
        const char* img_name;
        const char* sig_name;
        const char* part_name;
        bool is_optional;
        bool is_secondary;
    } images[] = {
        { "boot",     "boot.img",         "boot.sig",     "boot",     false, false },
        { "system",   "system.img",       "system.sig",   "system",   false, false },
    ...
    ...
    }

    This is great, especially the source code. It tells me a lot. I learned something new for the day!
     

    Top Liked Posts

    • There are no posts matching your filters.
    • 34
      NOTE:
      I'm not a developer or something even near to that. All information provided here is copied from different sources and according to the best of my knowledge.
      I have tested this on different devices using Windows 8.1 & 10. I'll not be responsible for any harm to you or your device. It works perfectly for me. You may try it on your own risk.
      Save / backup your data before performing any actions.


      WHAT IS ADB/FASTBOOT
      ADB and fastboot are different protocols used through PC to perform different command line operations on device through USB in ROM/Recovery and bootloader mode respectively.
      Android Debugging Bridge is basically used by developers to identify and fix bugs in OS (ROM). ADB works in ROM and recovery both.
      Fastboot works in bootloader mode even when phone is not switched on in Recovery or ROM or even if Android isn't installed on phone. In later case, bootloader can be accessed by certain button combination while powering on device; usually Power + Vol. Down. See here the booting process of Android devices.
      Fastboot/ADB setup is to be made on PC to use this mode. ADB mode has more flexibility than fastboot as it supports more types of flashable files to be flashed. ADB also supports backing up Apps and Data. ADB/fastboot commands can be used to flash recovery and boot images. It can also flash ROMs and mods like rooting solutions and XPOSED by booting into recovery. And above all, it is the only way to unlock bootloader without which the device functionality is too limited. Read here why we need to unlock bootloader.
      In bootloader mode, usually boot logo or fastboot logo appears on device screen.

      SETUP
      1. Enable USB Debugging in Settings > Developer Options. If not available, Dev. Options can be accessed by tapping 5 (or 7) times Build Number in Settings > About Phone.
      2. Allow ADB root access in Dev. Options or SuperSU. Some commands need root.
      3. Allow data transfer over ADB when prompted on device screen. Otherwise you might get errors like device unauthorized etc. So keep screen unlocked at first connect.
      4. Disable MTP, PTP, UMS etc. from USB computer connection on device to avoid any interruptions.
      5. Install Android SDK or simply install 15 Seconds ADB Setup 1.4.2. It works up to Android Lollipop (AOSP 5). Credits to Snoop05
        Windows 8.1 users who got error installing this setup should first install Windows Update KB2917929.
      6. You will have to navigate to adb folder each time you start cmd. Or setup adb to work globally. On your PC, go to System Properties > Advanced System Settings > Environment Variables. Click on New (User Variables). Variables Name: ADB ( Or anything you want). Variables Value: ;C:\adb (if installed 15 seconds setup) or ;C:\SDK\paltform-tools.
      7. Install ADB USB Drivers for your Android Device. To do this automatically, download and run ADB Driver Installer. Connect device through USB cable and install drivers.
      8. NOTE: Spaces in file paths don't work in adb commands. Non-English characters and languages don't work either. Also the commands are case-sensitive.

      There is a long list of adb/fastboot commands to perform numerous operations. Here are a few of those being listed keeping in view certain tasks:

      COMMON COMMANDS
      On PC run Command Prompt as Administrator.
      • To check connected devices when ROM is running on phone:
        Code:
        adb devices
      • To boot into bootloader mode:
        Code:
        adb reboot bootloader
      • To check connected devices when in bootloader mode:
        Code:
        fastboot devices
      • To boot into ROM:
        Code:
        fastboot reboot
      • To boot into recovery:
        Code:
        fastboot reboot recovery
      There are some common Linux commands which can be used in combination with these commands to perform certain operation. However, ADB | FASTBOOT is not necessarily required for these Linux commands. These can be run directly from Terminal Emulator in ROM or Custom Recovery. Some of them are given below.

      UNLOCK BOOTLOADER
      NOTE: Some newer devices don't allow unlocking of bootloader directly to ensure more security. Instead an official method is provided to unlock BL using PC.
      Read here to know about the risks of BL unlocking.


      To check the bootloader status:
      Code:
      fastboot oem device-info
      “True” on unlocked status.
      If "false", run the following to unlock:
      Code:
      fastboot oem unlock

      However these are OEM specific commands and may differ or not work on all devices. Fastboot's own commands (which are part of AOSP source and) that can unlock bootloader allowing flashing of partitions:
      Code:
      fastboot flashing unlock
      Allow flashing of bootloader related partitions too:
      Code:
      fastboot flashing unlock_critical

      FORMAT DATA PARTITION
      This will erase your data.
      Code:
      fastboot format:ext4 userdata
      It can be performed on other flash partitions as well. A general syntax is 'fastboot format:FS PARTITION'

      FLASH RECOVERY
      Download recovery.img (specific for your device) to adb folder.
      To test the recovery without permanently flashing, run the following:
      Code:
      fastboot boot recovery.img
      On next reboot, recovery will be overwritten by previous recovery.
      Or to permanently flash recovery, run:
      Code:
      fastboot flash recovery recovery.img
      fastboot reboot recovery
      Stock ROM's often tend to replace custom recovery with stock one on first reboot. That's why, booting into recovery is recommended before booting into ROM.

      FLASH KERNEL
      Download boot.img (specific for your device) to adb folder and run following:
      Code:
      fastboot flash boot boot.img

      FLASH ROM
      Download ROM.zip (for your device) created for fastboot i.e. with android-info.txt and android-product.txt.
      To wipe your device and then to flash .zip:
      Code:
      fastboot -w
      fastboot update </path/to/your/Rom.zip>

      PASSING FASTBOOT ARGUMENTS
      Fastboot supports passing options. For example, while booting a modified kernel image with FramBuffer Console support, console device and its font can be provided as option:
      Code:
      fastboot boot -c "console=tty0,115200 fbcon=font:VGA8x8" boot-fbcon.img

      GAIN ROOT (Not recommended method. Better flash directly through custom recovery).
      Root is required to modify the contents of /system. You can read here further.
      Download (flashable) supersu.zip and custom or modified recovery.img (having support to flash .zip files) to adb folder and run the following:
      Code:
      fastboot boot recovery.img
      Now once you are in recovery, adb will work instead of fastboot.
      To copy files from PC to device and then to extract files, run the following:
      Code:
      adb push supersu.zip /tmp
      adb shell /sbin/recovery --update_package=/tmp/supersu.zip

      BACKUP / RESTORE APPS & DATA (From/To PC)
      To backup and restore all apps and their data:
      Code:
      adb backup -apk -shared -all -system -f C:\backup.ab
      adb restore C:\backup.ab
      Read here for details.

      COPY WHOLE PARTITION IMAGE (within device)
      This method can be used to backup whole device e.g. to backup /data/ including /data/media/ i.e. Internal SD Card which isn't backed up by custom recovery (TWRP). Or you can get any partition image for development purpose. This method retains complete directory structure as well as file permissions, attributes and contexts.
      • To jump from windows command prompt to android device shell:
        Code:
        adb shell
        These commands can also be given from Recovery Terminal instead of ADB.
      • To get SuperUser access (in ROM):
        Code:
        su
      • To list all available partitions or mount points on device:
        Code:
        cat /proc/partitions
        Or go to "/dev/block/platform/" folder on device. Search for the folder having folder "by-name" inside it. It's msm_sdcc.1 (on Nokia X2). Run the following:
        Code:
        ls -al /dev/block/platform/*/by-name
        Or simply use DiskInfo app to get partition name you want to copy. Say you want to copy /data (userdata) partition. On Nokia X2DS, it is mmcblk0p25.
        To confirm:
        Code:
        readlink /dev/block/bootdevice/by-name/userdata
      • Run the following to copy partition:
        Code:
        dd if=/dev/block/mmcblk0p25 of=/sdcard/data.img
        or
        Code:
        cat /dev/block/mmcblk0p25 > /sdcard/data.img
        or
        Code:
        dd if=/dev/block/bootdevice/by-name/userdata of=/sdcard/data.img
        data.img will be copied to your SD card.
        It also works inversely (restore):
        Code:
        dd if=/sdcard/data.img of=/dev/block/mmcblk0p25
        data.img from your SD card will be written to device.
        Similarly you can copy system.img, boot.img or any other partition. However boot.img and other partitions may not be copied in ROM but in recovery mode only. So better use recovery for dd except if you're​ going to dd recovery partition itself. You can read here more about android partitions.

      COPY WHOLE FOLDER (within device)
      This method can be used to backup folders like /data/media/ which isn't backed up by custom recovery (TWRP).

      To jump from windows command prompt to android device shell:
      Code:
      adb shell
      These commands can also be given from Recovery Terminal.
      To get SuperUser access (in ROM):
      Code:
      su
      To copy from Internal Memory to SD Card:
      Code:
      cp -a /data/media/0/. /external_sd/internal_backup/
      Or if you don't have SU permission:
      Code:
      cp -a /external_sd/. /sdcard/
      To copy from SD Card to Internal Memory:
      Code:
      cp -a /external_sd/internal_backup/. /data/media/0/
      However, if you are copying to an SD card with FAT32 file system, android permissions of files won't be retained and you would have to fix permissions yourself. In this case, you can use tar command to create archive of files along with their attributes ( permissions: mode & ownership + time-stamps) and security contexts etc. But FAT32 FS has also a limitations of 4GB maximum file size. You may use "split" command along with "tar" to split the archive in smaller blocks. Or use exFat or Ext4 filesystem for larger file support. Ext4 would give higher writing speed in Android but not supported in Windows i.e. SD card can't be mounted in Windows. MTP however works.
      To jump from windows command prompt to android device shell:
      Code:
      adb shell
      To get SuperUser access (in ROM):
      Code:
      su
      To copy from Internal Memory to SD Card:
      Code:
      tar cvpf /external_sd/internal_backup/media.tar /data/media/0/
      To extract from SD Card to Internal Memory (along with path):
      Code:
      tar -xvf /external_sd/internal_backup/media.tar
      To extract from SD Card to some other location, use "-C":
      Code:
      tar -xvf /external_sd/internal_backup/media.tar -C /data/media/0/extracted_archive/

      COPY WHOLE FOLDER (From/To PC)
      This method can be used to backup folders like /data/media/ which isn't backed up by custom recovery (TWRP).

      To copy from PC to device:
      Code:
      adb push \path\to\folder\on\PC\ /path/to/folder/on/device/
      To copy from device to PC:
      Code:
      adb pull /path/to/folder/on/device/ \path\to\folder\on\PC\

      After copying from PC to device's Internal Memory (/data/media/), you might get Permission Denied error e.g. apps can't write or even read from Internal Memory. It's because Android (Linux) and Windows have different file permissions system. To FIX PERMISSIONS, boot into recovery and run following commands:
      (Credits to xak944 :))
      Code:
      adb shell
      To take ownership of whole "media" directory:
      Code:
      chown -R media_rw:media_rw /data/media/
      To fix permissions of directories:
      Code:
      find /data/media/ -type d -exec chmod 775 '{}' ';'
      To fix permissions of files:
      Code:
      find /data/media/ -type f -exec chmod 664 '{}' ';'
      2
      @Uredie @DiamondJohn @HemanthJabalpuri thanks for your contribution.

      In fact the behavior of globbing and wildcards differs widely even among *NIX shells. Windows is a different world altogether. The debate seems to be off-topic here. And I'm no way more than an ordinary shell user. That's why I linked the basic explanation on Wikipedia. There are great resources on internet like this and this which satisfactorily resolve this matter already.

      Hope it helps.
      2
      ".*" means everything from folder, right?
      Yes, including hidden files. You can search about globbing and wildcards. Start from here: https://en.wikipedia.org/wiki/Glob_(programming)#Windows_and_DOS
      2
      i also have problem trying to issue some fastboot command
      bootloader have been unlock
      except fastboot reboot command, the rest of fastboot cannot be execute
      the error were
      ...
      FAILED (remote: Command not allowed)
      finished. total time: 0.00s

      can i issue fastboot command from twrp terminal
      i want to enable charge reboot

      on fastboot
      fastboot oem off-mode-charge disable

      how to issue comand from within twrp terminal?
      All vendors don't allow all fastboot commands. Despite of unlocked bootloader, some commands might not work or work differently on certain devices.
      No you can't control fastboot from TWRP. Bootloader / fastboot come at lower level in boot process. Recovery itself is loaded by bootloader. We can't control fastboot from recovery. However a few adb commands work in TWRP as well.
      2
      Just a question as I dont need to do any of this, but what happens with files without an extension? ie no dot in the filename.
      Globs has nothing to do with file extensions. On mostly shells * matches only non-hidden files. dotglob (.*) ensures that hidden files (starting with a .) are also matched.
    Our Apps
    Get our official app!
    The best way to access XDA on your phone
    Nav Gestures
    Add swipe gestures to any Android
    One Handed Mode
    Eases uses one hand with your phone