Table of Contents

oowow-dump2xz

Online usage examples

  1. write android image via burn tool
  2. connect SBC with PC by USB cable
  3. reboot device to oowow
  4. boot next shell commands from PC

export BOOT=1 - copy boot-loader from special eMMC area - this is actual for VIM4 Ardroid 14, this feature works start from oowow version 241000 up

mkdir Android-14-vim4 && cd Android-14-vim4
export OSVER=14
export VER=v240822-beta
export BOOT=1
#export REMOTE=192.168.31.x
#export REMOTE=edge2-12345.local
curl http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0 | sh -s -
ls -l1 *.img.xz

oowow-dump2xz
#!/bin/sh
 
## hyphop ##
 
#= oowow-dump2xz
 
#: USAGE mkdir FOO && cd FOO && [OSVER=] [VER=] [LABEL=] [OUT=] [BOOT=] owow-dump2xz
 
lowcase(){ echo "$@" | tr '[:upper:]' '[:lower:]' ; }
upcase(){ echo "$@" | tr '[:lower:]' '[:upper:]' ; }
CMD(){ echo "# $@" >&2 ; "$@" ;}
DIE(){ echo "! $@" >&2 ; exit 1;}
 
REMOTE=${REMOTE:-172.22.1.1}
XZE=https://raw.githubusercontent.com/hyphop/khadas-rescue-tools/master/scripts/xze
XZE=http://docs.khadas.com/_export/code/scripts/xze?codeblock=0
 
for D in *-dump.img.zst; do
    O=${D%.*}
    [ -s "$D" ] || continue
    CMD zstd -d "$D" || CMD rm "$O"
done
 
for D in *-dump.img; do
    [ -s "$D" ] && break
    D=
done
 
[ "$D" ] || { # DUMP begin
echo DUMP data ...
ping -q -c1 $REMOTE || DIE "cant reach $REMOTE host"
BOARD=$(ssh root@$REMOTE /opt/board_name 2>/dev/null )
echo "BOARD: $BOARD"
[ "BOARD" ] || DIE "BOARD undetected"
 
boot=boot0
[ "$BOOT" ] && {
echo copy boot area
ssh root@$REMOTE cat /dev/mmcblk?boot0 > $boot
ls -l1 $boot
}
 
T=$BOARD.sfdisk
ssh root@$REMOTE sfdisk --dump \$\(/opt/mmc_disk\)>$T # | tee $T
echo --
USER_DATA=userdata
grep $USER_DATA $T || ssh root@$REMOTE /opt/aml_partitions >>$T # | tee $T
grep $USER_DATA $T | while read a b c d e f g h j k l m ; do
[ "$d" ] || DIE "partition $USER_DATA not found"
echo "${d%,*} or $l"
echo ${l:-${d%,*}} > $T.userdata
done
 
read USER_START < $T.userdata
BS=512
BYTES=${BYTES:-$((USER_START*BS))}
board=${board-$(lowcase $BOARD)}
DUMP=$BOARD-emmc-dump.img
echo "Dump image from $BOARD > $DUMP $BYTES bytes ...wait..."
CMD curl -L "$REMOTE"/api/disk/rdz/mmc.zst:$((BYTES)) -o$DUMP.zst
CMD zstd -d $DUMP.zst
D=$DUMP
} # DUMP end
 
BOARD=${D%%-*}
board=${board-$(lowcase $BOARD)}
LABEL=${LABEL:-Android}
label=${label:-$(lowcase $LABEL)}
OSVER=${OSVER:-14}
VER=${VER:-v240820}
OUT=${OUT:-$board-$label-$OSVER-$VER.raw.img}
 
echo "CONVERT $D to $OUT ..."
 
[ -e "$OUT" ] && DIE "image $OUT already exist"
 
CMD truncate -s+50M "$D"
CMD mv "$D" "$OUT"
 
bootloader(){
    [ "$BOOT" ] || return 0
    boot=${boot:-boot0}
    echo "BOOT LOADER '$boot' inject to image...">&2
    BOOT_OFFSET=$(du -b "$OUT")
    BOOT_SIZE=$(du -b "$boot")
    echo "copy boot area $boot to $OUT by $BOOT_OFFSET + $BOOT_SIZE">&2
    gzip -c $boot >> "$OUT"
    echo bootloader=$BOOT_OFFSET
}
 
xze=$(which xze)
xze=${xze:-./xze}
[ -s "$xze" ] || curl "$XZE" -o"$xze"
 
CMD sh $xze "$OUT" \
    --meta \
    label="$LABEL" \
    builder="Khadas" \
    date="$(TZ=GMT+0 date)" \
    match=BOARD=$BOARD \
    $(bootloader) \
    duration=90 \
    desc="$BOARD $LABEL $OSVER $VER"
logs
mkdir Android-14-vim4 && cd Android-14-vim4
export OSVER=14
export VER=v240822-beta
 
 
curl http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0 | sh -s -
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1837    0  1837    0     0   2209      0 --:--:-- --:--:-- --:--:--  2210
DUMP data ...
PING 172.22.1.1 (172.22.1.1) 56(84) bytes of data.
 
--- 172.22.1.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.343/0.343/0.343/0.000 ms
BOARD: VIM4
Warning: Permanently added '172.22.1.1' (ED25519) to the list of known hosts.
The backup GPT table is corrupt, but the primary appears OK, so that will be used.
--
8124416, - size= 52946936, type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, uuid=1FE84740-97C9-8C42-98E2-C47015AECEC7, name="userdata", attrs="GUID:50,60"
Dump image from VIM4 > VIM4-emmc-dump.img 4159700992 bytes ...wait...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  8485    0  8485    0     0   8496      0 --:--:-- --:--:-- --:--:--  8493
# curl -L 172.22.1.1/api/disk/rdz/mmc.zst:4159700992 -oVIM4-emmc-dump.img.zst
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1032M    0 1032M    0     0   9.8M      0 --:--:--  0:01:44 --:--:--  4000
# zstd -d VIM4-emmc-dump.img.zst
VIM4-emmc-dump.img.zst: 4159700992 bytes                                       
CONVERT VIM4-emmc-dump.img to vim4-android-14-v240822-beta.img ...
# truncate -s+50M VIM4-emmc-dump.img
# mv VIM4-emmc-dump.img vim4-android-14-v240822-beta.img
# sh ./xze vim4-android-14-v240822-beta.img --meta label=Android builder=Khadas date=Thu Aug 22 02:58:40 AM GMT 2024 match=BOARD=VIM4 duration=90 desc=VIM4 Android 14 v240822-beta
[i] xze compress vim4-android-14-v240822-beta.img (4212129792 bytes) > vim4-android-14-v240822-beta.img.xz
# /usr/bin/xz -T8 --block-size 90M -k -c -F xz --verbose 
vim4-android-14-v240822-beta.img (1/1)
  100 %     883.8 MiB / 4,017.0 MiB = 0.220    46 MiB/s       1:27             
[i] padded to 926724096 from 926722204 + 1892
[i] XZ info
Strms  Blocks   Compressed Uncompressed  Ratio  Check   Filename
    1      45    883.8 MiB  4,017.0 MiB  0.220  CRC64   vim4-android-14-v240822-beta.img.xz
 
[i] add meta block
 
##META_FILE##
FILE: vim4-android-14-v240822-beta.img.xz
UNPACKED_SIZE: 4212129792
PACKED_SIZE: 926724096
FILE_SIZE: 926728192
##META-FILE##
 
##KRESCUE_META##
type:xz
label: Android
builder: Khadas
date: Thu Aug 22 02:58:40 AM GMT 2024
match: BOARD=VIM4
duration: 90
desc: VIM4 Android 14 v240822-beta
image: vim4-android-14-v240822-beta.img
##KRESCUE-META##
##KRESCUE##END
[i] padded to 4096 from 308 + 3788

HowTo Check meta

khadas@localhost:/images/vim4$  xze vim4n-android-14-v240820.raw.img.xz 
Strms  Blocks   Compressed Uncompressed  Ratio  Check   Filename
    2      46    839.1 MiB  4,019.3 MiB  0.209  CRC64   vim4n-android-14-v240820.raw.img.xz
[i] blocks: 46 // 839.1*MiB // 4,019.3*MiB
##META_FILE##
FILE: vim4n-android-14-v240820.raw.img.xz
UNPACKED_SIZE: 4214509060
PACKED_SIZE: 879849472
FILE_SIZE: 879853568
##META-FILE##
 
##KRESCUE_META##
type:xz
label: Android
builder: Khadas
date: Wed Sep 18 05:43:57 AM GMT 2024
match: BOARD=VIM4
bootloader: 4212129792
vim4n-android-14-v240820.raw.img: vim4n-android-14-v240820.raw.img
duration: 90
desc: VIM4 Android 14 v240820
image: vim4n-android-14-v240820.raw.img
##KRESCUE-META##
##KRESCUE##END

bootloader: 4212129792 - showing us this image has additional special bootloader

VIM4 Android 11

OSVER and VER must be setup properly and related with installed eMMC system

VIM4 Android 11
export OSVER=11-64bit
export VER=v240620
curl http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0 | sh -s -

VIM4 Android 14

OSVER and VER must be setup properly and related with installed eMMC system

VIM4 Android 14
export OSVER=14
export VER=v240820
export BOOT=1
curl http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0 | sh -s -

Edge2 Anrdoid 14

export OSVER=14
export VER=v240820
curl http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0 | sh -s -

VIM1S Anrdoid 14

export OSVER=14
export VER=v240820
curl http://docs.khadas.com/_export/code/scripts/oowow-dump2xz?codeblock=0 | sh -s -