🏡 go home...
🗃️ go back...

amazon echo dot

created  2025/05/04
modified 2025/05/13
category hardware
views    280

her name is anni, short for annihilation, she runs postmarketOS. currently the root for the echo is tethered, and the postmarket port for it lacks wifi and bluetooth. supposedly audio has recently been added but i don't know how to configure it

biscuit on the postmarketOS wiki

rainbow daemon

a featureful script to make controlling the echo's led ring easier

rainbowd v0.9

you can run rainbowd after the boot animation in `/etc/local.d/led.start` to play a custom animation or just turn the led off

#!/bin/sh
echo 0 > /sys/bus/i2c/devices/0-003f/boot_animation
rainbowd --clear

reclaiming storage space

by default, the userdata partition postmarketOS boots from only takes up the last 1.2gb of the flash memory. the android system_a/b and cache partitions are unused but take up 800mb each of your echo's meager 4gb of storage space

0. root your echo, installing postmarketOS is "optional" but doing this won't let you boot or install fireOS until you reset your partition table

1. run `mtk rl`, then plug your echo in to backup all your partitions, this should give you your userdata.img (and everything else you need for unbricking)

mkdir backup && cd backup
mtk rl . --preloader /path/to/mtkclient/Loader/Preloader/preloader_biscuit.bin

2. unplug your echo, and patch mtkclient to use the correct preloader (TODO: submit a pr to mtkclient, add a --preloader argument to fs)

preloader = "/path/to/mtkclient/Loader/Preloader/preloader_biscuit.bin"
^ line 318 (mtkclient/Library/DA/legacy/dalegacy_lib.py)

3. run `mtk fs`, then plug your echo in to mount the echo's flash

sudo mkdir /mnt/echo
sudo mtk fs --rw /mnt/echo

4. in a new terminal window, resize the partitions

you can resize the system_a/b and cache partitions to whatever you want, as long they exist the userdata partition will be recognized by the bootloader
sudo parted /mnt/echo/emmc_user.bin
(parted) rm 13
(parted) rm 14
(parted) rm 15
(parted) rm 16
(parted) mkpart system_a ext4 134217728B 134218239B
(parted) mkpart system_b ext4 134218240B 134218751B
(parted) mkpart cache ext4 134218752B 134219263B
(parted) mkpart userdata ext4 135266304B 3909074431B

type `ignore` if it tells you the partition is not properly aligned, that only matters for the userdata partition. you should end up with something like this:

(parted) print free
...
12   117440512B  134217727B   16777216B     recovery
13   134217728B  134218239B   512B          system_a
14   134218240B  134218751B   512B          system_b
15   134218752B  134219263B   512B          cache
16   135266304B  3909074431B  3773808128B   userdata

5. `quit` parted, then terminate `mtk fs`

6. reflash your userdata partition

mtk w userdata userdata.img --preloader /path/to/mtkclient/Loader/Preloader/preloader_biscuit.bin

7. reconnect your echo and run plstage to boot it, rootfs should now be 3.37gb!

annihilation:~# df -h /
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/mmcblk0p16p2  3.3G  351M  2.8G  12% /

unbricking

debrick guide by the creator of echocli
i noticed this guide does *not* flash the preloader like it says it will, for some reason mtkclient does not detect the preloader parition, you will have to flash that with fastboot

the most important debricking step is to create backups! use `mtk rl` to dump all your partitions before touching them at all. if you do this you can lose your entire partition table without worry. if you do, you can recreate it by hand in `parted` and reflash all of your partitions and it will be like nothing ever happened

default partition table

Number  Start        End          Size         File system  Name    Flags
        17408B       1048575B     1031168B     Free Space
 1      1048576B     2097151B     1048576B                  kb
 2      2097152B     3145727B     1048576B                  dkb
        3145728B     16777215B    13631488B    Free Space
 3      16777216B    17825791B    1048576B                  lk_a
        17825792B    25165823B    7340032B     Free Space
 4      25165824B    30408703B    5242880B                  tee1
        30408704B    33554431B    3145728B     Free Space
 5      33554432B    34603007B    1048576B                  lk_b
        34603008B    41943039B    7340032B     Free Space
 6      41943040B    47185919B    5242880B                  tee2
        47185920B    50331647B    3145728B     Free Space
 7      50331648B    60817407B    10485760B                 expdb
 8      60817408B    61342207B    524800B                   misc
        61342208B    67108863B    5766656B     Free Space
 9      67108864B    83886079B    16777216B                 persist
10      83886080B    100663295B   16777216B                 boot_a
11      100663296B   117440511B   16777216B                 boot_b
12      117440512B   134217727B   16777216B                 recovery
        134217728B   150994943B   16777216B    Free Space
13      150994944B   956301311B   805306368B   ext4         system_a
14      956301312B   1761607679B  805306368B   ext4         system_b
15      1761607680B  2583691263B  822083584B   ext4         cache
16      2583691264B  3909074431B  1325383168B               userdata