Skip to content

About

TWRP device tree for the Allwinner A23 (sun8i) tablet Advance SP6446

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

TWRP device tree - Allwinner A23 (Advance SP6446)

Device: Advance SP6446, 7-inch tablet
Codename: a23
SoC: Allwinner A23 (sun8i), dual Cortex-A7, 1 GB RAM (MemTotal shows ~906 MB)
Screen: framebuffer 800x480 landscape, 32 bpp, double-buffered
Touch: GSL1688E (gslX680new, I2C address 0x40)
Android base: 4.2.2, kernel 3.4.39
Recovery: TWRP 3.1.1-0.1 on an omni 4.4 tree

The tablet runs the firmware of an Inet T-708+ (A23_86DZ_D701C_1401063.20140116), because its original firmware was lost. So the system introduces itself as polaris-inet and the USB descriptor says "mediacom XPRO 415", while the hardware is the SP6446's. That the SoC is an A23 is deduced from the A23_86DZ build name and the INet-86DZ board in Linux's device tree; it was not confirmed on the board.

The write-up is on the blog: https://chijure.github.io/es/blog/twrp-allwinner-a23/ (English).

Kernel and modules

There is no kernel source for this firmware, so kernel is the stock zImage (3.4.39 #5, built by inet_sz), cut out of the tablet's own boot.img. The stock recovery.img carries the same kernel.

The ten .ko files in modules/ come from the stock recovery ramdisk and match that kernel. They are loaded in the stock order by ramdisk/init.recovery.sun8i.rc: nand, then the touch drivers, then disp and lcd. All touch drivers are loaded; only the one that matches the panel probes (ft5x and ft5402 fail over I2C, as expected, and gslX680new is detected).

Boot image header, from the stock images: kernel 0x40008000, ramdisk 0x41000000, tags 0x40000100, page size 2048, cmdline console=ttyS0,115200 rw init=/init loglevel=4.

Partitions (NAND)

Taken from the stock cmdline (partitions=...) and /proc/partitions. The fstab uses the /dev/block/nandX nodes directly, so it does not depend on by-name.

Partition Node Size
boot-resource nanda 32 MB
env nandb 16 MB
boot nandc 16 MB
system nandd 700 MB
data nande 800 MB
misc nandf 16 MB
recovery nandg 32 MB
cache nandh 512 MB
databk nandi 128 MB
private nandj 16 MB
UDISK nandk 4.5 GB, vfat, internal storage

Other Allwinner A23 firmwares order these differently (one XDA post puts recovery on nandf). Read the cmdline of your own device before reusing this fstab.

Display and brightness

  • TW_THEME := landscape_hdpi, TARGET_RECOVERY_PIXEL_FORMAT := "BGRA_8888". The colours were checked by copying /dev/graphics/fb0 to a PNG.
  • Brightness goes through /sys/class/disp/disp/attr/lcd_bl (0..255, the stock system leaves it at 197). The stock Android does not use sysfs: its lights module talks to /dev/disp.

Status (2026-11-08)

Tested on the device:

  • Boots, adb works in recovery (omni_a23, SP6446).
  • Screen, colours and orientation.
  • Touch.
  • Brightness control.
  • /system (688 MB) and /data (787 MB) are detected; /cache and /sdcard (internal storage) mount.

Not tested yet:

  • MicroSD (/external_sd, mmcblk0p1).
  • Backup and restore of data and system.
  • MTP: the log shows it starting even with TW_HAS_MTP := false.

Building

The tree is built inside an Ubuntu 12.04 container (Docker Desktop), on x86 with no emulation.

source build/envsetup.sh
lunch omni_a23-eng
make -j6 recoveryimage
# out/target/product/a23/recovery.img   (about 14 MB; the partition holds 32 MB)

Installing

Writing to the NAND is the risky step. Back up first, check the hash before and after, and do not start with a low battery.

  1. Back up recovery (and anything else you care about) over USB, read-only: adb pull /dev/block/nandg stock-recovery.img
  2. Battery. In TWRP the sysfs capacity reads 0 and is useless. Read voltage_now (3.5 V is about 5-10%) or the level from Android, and do not write below about 30%.
  3. Push the image to RAM (/dev is tmpfs), so that nothing else is written to the NAND, and check it there:
adb push recovery.img /dev/recovery-new.img
adb shell "busybox md5sum /dev/recovery-new.img"          # must match the PC
adb shell "busybox dd if=/dev/recovery-new.img of=/dev/block/nandg bs=4096; sync"
adb shell "busybox dd if=/dev/block/nandg bs=4096 count=<size/4096> | busybox md5sum"   # read back
adb shell "rm /dev/recovery-new.img"
adb reboot recovery

The image size has to be a multiple of 4096 for the count to match. The tablet's own md5 does not read from a pipe; use busybox md5sum.

Similar trees

Not compared yet:

About

TWRP device tree for the Allwinner A23 (sun8i) tablet Advance SP6446

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages