Warning
Amonet Biscuit v2.0.0 is required to install either image on a Biscuit. These OTAs target its TWRP 3.7.0_9-0 and native A/B partition contract. Do not use stock recovery, stock fastboot, Amonet v1 instructions, or old boot_a_x paths.
Amonet v2 uses a Preloader exploit, removes the old lk-payload/GPT-remapping design, supports Fire OS 6, and drops Fire OS 5. Its own update changes early boot components and must never be interrupted; a normal CM14 OTA must write only TWRP's /dev/block/current-system and /dev/block/current-boot aliases. A/B ROM installation requires the documented two-install recovery procedure when populating both slots. Holding only MUTE while connecting power with USB attached enters v2 Preloader USBDL recovery; v2 intentionally removes stock non-hacked fastboot.
Read the upstream Amonet v2 update announcement and this repository's Amonet 2 notes before installing or updating anything.
LineageOS/CM14.1 port for Amazon Biscuit with reproducible inputs and a disposable workspace/.
This repository builds two images:
| Product | Build command | Purpose |
|---|---|---|
cm_biscuit-userdebug |
make full |
Full Android/CM14.1 for Biscuit: framework, Wi-Fi, Bluetooth A2DP sink, LED/buttons, microphone capture/mute, and framework audio. |
biscuit_minimal-userdebug |
make minimal |
Framework-free, Android-shaped userspace: root ADB, Wi-Fi provisioning, DHCP/DNS, raw hardware tools, and a replaceable ledcontroller slot. It contains no APKs or /system/framework files. |
Build commands only produce artifacts; they do not flash a device. Read the Amonet 2 notes before any installation.
See Building the CM14.1 images for prerequisites, both build flows, profile switching, artifacts, validation, and an explanation of every product and kernel patch.
manifest/ # pinned CM14.1 repo manifests
patches/ # ordered full, minimal, and kernel patch series
device/ # tracked Biscuit device overlay
vendor/ # tracked proprietary-blob manifests and generated makefile template
docker/ # build images
scripts/ # sync, stage, build, extraction, and diagnostics
docs/ # notes, source list, and validation guides
workspace/ # ignored: downloads, CM14.1 checkout, extracted blobs, outputs, ccacheThe active source layout is flat. workspace/cm14.1 is only the external LineageOS checkout and is regenerated by tracked scripts.
workspace/cm14.1
<- scripts/sync.sh
<- manifest/local.xml or manifest/lock.xml
workspace/upstream/amazon-echo-dot-6.5.7.1
<- scripts/stage-tree.sh
<- verified Fire OS 6.5.7.1 Echo Dot source archive
workspace/extracted/biscuit-fireos-6.5.7.4/system.img
<- scripts/extract-fireos6-payload.py
<- verified Fire OS 6.5.7.4 Biscuit/Puffin OTA
workspace/extracted/biscuit-stock-272.6.4.1/system.img
<- scripts/prepare-biscuit-stock-system-image.sh
<- verified stock Biscuit OTA used for the headless HWC blobSee docs/sources.md for URLs, hashes, and policy.
Build images use Docker. Create them once if absent:
docker image inspect cm14.1-ubuntu20:latest >/dev/null 2>&1 || \
docker build -t cm14.1-ubuntu20:latest -f docker/cm14.1-ubuntu20.Dockerfile docker/
docker image inspect biscuit-kernel-builder:latest >/dev/null 2>&1 || \
docker build -t biscuit-kernel-builder:latest -f docker/biscuit-kernel-builder.Dockerfile docker/Sync the external tree, then choose exactly one product:
scripts/sync.sh
make full # full cm_biscuit-userdebug image
# or
make minimal # framework-free biscuit_minimal-userdebug image
docker logs -f cm14.1-biscuit-buildmake full selects patches/full/; make minimal selects patches/minimal/ and clears the Biscuit product output to prevent stale full-product files. Both apply patches/kernel/ and write output below:
workspace/cm14.1/out-docker/target/product/biscuit/cm_biscuit-userdebug includes /system/bin/biscuit_service:
adb shell biscuit_service wifi on
adb shell biscuit_service wifi connect '<ssid>' '<psk>'
adb shell biscuit_service wifi off
adb shell biscuit_service volume up
adb shell biscuit_service volume down
adb shell biscuit_service volume set '<0..max>'
adb shell biscuit_service mute on|off|toggle
adb shell biscuit_service mic mute|unmute|toggle
adb shell biscuit_service countdown set '<remaining-ms>' '<total-ms>'
adb shell biscuit_service countdown clear
adb shell biscuit_service bt pair
adb shell biscuit_service bt offbiscuit_minimal-userdebug intentionally has no Java service or Bluetooth framework. It includes framework-free Wi-Fi provisioning and diagnostics:
adb shell wpa_connect '<ssid>' '<8-to-63-character passphrase-or-64-hex-psk>'
adb shell ping -c 2 google.es
adb shell ip addr show wlan0Do not print Wi-Fi PSKs in logs or summaries.
- Amonet Biscuit v2.0.0/TWRP 3.7.0_9-0 is required for ROM installation; read the upstream v2 announcement and docs/amonet-biscuit-unlock.md.
- Never run
adb shell dd of=/dev/block/...oradb exec-in dd of=/dev/block/.... - Do not use stock fastboot for ROM images.
- Do not touch GPT, preloader, LK, TZ, recovery, userdata, cache, persist, or misc unless explicitly requested.
- Inspect every generated updater before flashing. A valid custom OTA writes only
/dev/block/current-systemand/dev/block/current-bootand has no destructive wipe command.