Jump to content

Lenovo YOGA Tablet 10 (lenovo-b8000)

From postmarketOS Wiki
Lenovo YOGA Tablet 10
Manufacturer Lenovo
Name YOGA Tablet 10
Codename lenovo-b8000
Released 2013
Type tablet
Hardware
Chipset MediaTek MT8125
CPU 4x 1.2 GHz Cortex-A7
GPU PowerVR SGX544 @ 256 MHz (MT8389: 286 MHz)
Display 1280 x 800 IPS
Storage 16 GB + microSD
Memory 1 GB
Architecture armv7
Software
Original software
The software and version the device was shipped with.
Android 4.2 / 4.4
Extended version
The most recent supported version from the manufacturer.
Android
FOSS bootloader no
postmarketOS
Category testing
Mainline
Instead of a Linux kernel fork, it is possible to run (Close to) Mainline.
yes
pmOS kernel
The kernel version that runs on the device's port.
6.16 (fork)
Features
Flashing
Whether it is possible to flash the device with pmbootstrap flasher.
Untested
USB Networking
After connecting the device with USB to your PC, you can connect to it via telnet (initramfs) or SSH (booted system).
Untested
Internal storage
eMMC, SD cards, UFS...
Untested
SD card
Also includes other external storage cards.
Untested
Battery
Whether charging and battery level reporting work.
Untested
Screen
Whether the display works; ideally with sleep mode and brightness control.
Partial
Touchscreen
Untested
Keyboard
Whether the built-in physical keyboard works.
Untested
Touchpad
Whether the built-in touchpad works.
Untested
Stylus
Untested
Multimedia
3D Acceleration
Untested
Built-in DVB
TV tuner/DVB device
Untested
Audio
Audio playback, microphone, headset and buttons.
Untested
Camera
Untested
Camera Flash
Untested
IR TX
Untested
IR RX
Untested
Connectivity
WiFi
Untested
Bluetooth
Untested
Ethernet
Untested
GPS
Untested
NFC
Near Field Communication
Untested
Modem
Calls
Untested
SMS
Untested
Mobile data
Untested
Miscellaneous
FDE
Full disk encryption and unlocking with unl0kr.
Untested
USB-A
Whether the full-sized USB-A port works.
Untested
USB OTG
USB On-The-Go or USB-C Role switching.
Untested
HDMI/DP
Video and audio output with HDMI or DisplayPort.
Untested
Sensors
Accelerometer
Handles automatic screen rotation in many interfaces.
Untested
Magnetometer
Sensor to measure the Earth's magnetism
Untested
Ambient Light
Measures the light level; used for automatic screen dimming in many interfaces.
Untested
Proximity
Untested
Hall Effect
Measures magnetic fields; usually used as a flip cover sensor
Untested
Haptics
Untested
Barometer
Sensor to measure air pressure
Untested
Power Sensor
Sensor to monitor current, voltage and power. Not fuel gauge!
Untested
U-Boot
Primary Bootloader
Whether it is possible to replace stock bootloader with U-Boot.
Broken
Secondary Bootloader
Whether it is possible to chainload U-Boot from stock bootloader.
Partial
Mainline
Whether latest upstream versions of U-Boot are not broken and it is possible to use them.
Broken
Internal Storage
Whether it is possible to boot from internal storage (e.g. eMMC or UFS).
Broken
SD card
Whether it is possible to boot from SD card.
Broken
USB Host
Whether it is possible to boot from a USB storage or connect a keyboard.
Broken
USB Peripheral
Whether it is possible to use device as a peripheral in U-Boot, e.g. for fastboot mode.
Broken
Display
Partial
Keyboard
Broken
Buttons
Whether it is possible to navigate in boot menu or grub with volume and power buttons.
Broken
Lenovo YOGA Tablet 8
Manufacturer Lenovo
Name YOGA Tablet 8
Codename lenovo-b6000
Released 2013
Type tablet
Hardware
Chipset MediaTek MT8125
CPU 4x 1.2 GHz Cortex-A7
GPU PowerVR SGX544 @ 256 MHz (MT8389: 286 MHz)
Display 1280 x 800 IPS
Storage 16 GB + microSD
Memory 1 GB
Architecture armv7
Software
Original software
The software and version the device was shipped with.
Android 4.2 / 4.4
Extended version
The most recent supported version from the manufacturer.
Android
postmarketOS
Mainline
Instead of a Linux kernel fork, it is possible to run (Close to) Mainline.
no

The codename for the Wi-Fi version is B8000-F, and the 3G version is B8000-H. A similar device is the Lenovo YOGA Tablet 8 (B6000-F, B6000-H). The kernel source code for b8000 and b6000 is the same except for a few lines.

Probably the B8000 and B6000 can be implemented in a single package. ro.product.board contains the same prefix (codename?) blade. Therefore, if the postmarketOS port of the B8000 can work on the B6000, the codename may be changed to lenovo-blade.

B8000-F : blade10_row_wifi, B6000-H : blade8_row_3gdata, A3000-H : a3000_row_call, B8080-H : MSM8226

SoC

MT8125/MT8389 is almost the same as the MT6589. The Wi-Fi version is equipped with the MT8125, while the 3G version is equipped with the MT8389. The kernel source code for MT8125/MT8389 is the same as that of MT6589.

Contributors

  • akku

Users owning this device

  • Akku (Notes: Wi-Fi version (B8000-F), WIP)


How to enter flash mode

Power + Volume Down + Volume Up -> Select Fastboot


Installation

Using pmbootstrap

Work in progress.

  1. download latest release
  2. build latest kernel
  3. unpack boot.img
  4. replace kernel with latest kernel
  5. replace busybox with busybox-static and remove bin (symlink), mv usr/bin bin (hack)
  6. insert chmod +x /lib/ld-musl-armhf.so.1 after /bin/busybox --install -s in /init (CarlivImageKitchen seems to strip the execution permissions from /lib!?)
  7. repack_mtk
  8. fastboot flash boot boot.img
  9. fall into the debug shell

Kernel

The official source code ( JellyBean KitKat Raw archive ) is so dirty, broken, and didn't boot after building, (GPL violation XD), so the mainline is the target. You can find out about porting status here.

Also check lcm driver reverse engineering.

U-Boot

Boots. But the port is incomplete. You can check the progress of the port here.

Development is stopped until the kernel exceeds the size of the boot partition.

Components

Component Model Kernel Driver User Space Driver Note
SoC MediaTek MT8125/MT8389 CONFIG_MACH_MT6589
W-CDMA? HSPA? MediaTek MT6167
TD-SCDMA ? MediaTek MT6168 not installed?
Audio, etc MediaTek MT6320
Wi-Fi, Bluetooth, FM, GPS MediaTek MT6628
GPU PowerVR SGX544(MP?) (Single-core?) (No Open-Source Driver)
PMIC MediaTek MT6320
Battery Charge Controller Onsemi NCP1851?

see MediaTek's Mobile Processor Lines 2019-01-18 and TeamYogaBlade2 U-Boot wiki

Device Data

Memory Map

(KitKat, b8000 Wi-Fi)

# cat /proc/iomem
11006000-110060ff : mtk-uart.0
11007000-110070ff : mtk-uart.1
11008000-110080ff : mtk-uart.2
11009000-110090ff : mtk-uart.3
1100d000-1100d070 : mt-i2c.0
  1100d000-1100d070 : mt-i2c
1100e000-1100e070 : mt-i2c.1
  1100e000-1100e070 : mt-i2c
1100f000-1100f070 : mt-i2c.2
  1100f000-1100f070 : mt-i2c
11010000-11010070 : mt-i2c.3
  11010000-11010070 : mt-i2c
11011000-11011070 : mt-i2c.4
  11011000-11011070 : mt-i2c
11012000-11012070 : mt-i2c.5
  11012000-11012070 : mt-i2c
11013000-11013070 : mt-i2c.6
  11013000-11013070 : mt-i2c
11016000-11016028 : mt-spi.0
  11016000-11016028 : mt-spi
11230000-11230108 : mtk-msdc.0
  11230000-11230108 : mtk-msdc
11240000-11240108 : mtk-msdc.1
  11240000-11240108 : mtk-msdc
11260000-11260108 : mtk-msdc.3
  11260000-11260108 : mtk-msdc
15000000-1500e000 : camera-isp.0
  15000000-1500e000 : camera-isp
80000000-bf5fffff : System RAM
  80008000-8090bfff : Kernel code
  80942000-80c2b52f : Kernel data
bf600000-bfffffff : mtkfb.0

(b6000 3g [1])

root@B6000:/ # cat /proc/iomem
11006000-110060ff : mtk-uart.0
11007000-110070ff : mtk-uart.1
11008000-110080ff : mtk-uart.2
11009000-110090ff : mtk-uart.3
1100d000-1100d070 : mt-i2c.0
1100d000-1100d070 : mt-i2c
1100e000-1100e070 : mt-i2c.1
1100e000-1100e070 : mt-i2c
1100f000-1100f070 : mt-i2c.2
1100f000-1100f070 : mt-i2c
11010000-11010070 : mt-i2c.3
11010000-11010070 : mt-i2c
11011000-11011070 : mt-i2c.4
11011000-11011070 : mt-i2c
11012000-11012070 : mt-i2c.5
11012000-11012070 : mt-i2c
11013000-11013070 : mt-i2c.6
11013000-11013070 : mt-i2c
11016000-11016028 : mt-spi.0
11016000-11016028 : mt-spi
11230000-11230108 : mtk-msdc.0
11230000-11230108 : mtk-msdc
11240000-11240108 : mtk-msdc.1
11240000-11240108 : mtk-msdc
11260000-11260108 : mtk-msdc.3
11260000-11260108 : mtk-msdc
15000000-1500e000 : camera-isp.0
15000000-1500e000 : camera-isp
80000000-bbffffff : System RAM
80008000-80930fff : Kernel code
8096a000-80c5b12f : Kernel data
bd800000-bf5fffff : System RAM
bf600000-bfffffff : mtkfb.0

mediatek/platform/mt6589/kernel/core/Makefile.boot

   zreladdr-y	:= 0x80008000
params_phys-y	:= 0x80000100
initrd_phys-y	:= 0x82600000

Bootloader data

$ fastboot getvar all
(bootloader) 	partition-size:userdata: 32000000
(bootloader) 	partition-type:userdata: ext4
(bootloader) 	partition-size:cache: 7e00000
(bootloader) 	partition-type:cache: ext4
(bootloader) 	partition-size:system: 40000000
(bootloader) 	partition-type:system: ext4
(bootloader) 	partition-size:fac: c800000
(bootloader) 	partition-type:fac: ext4
(bootloader) 	partition-size:expdb: a00000
(bootloader) 	partition-type:expdb: raw data
(bootloader) 	partition-size:ebr2: 80000
(bootloader) 	partition-type:ebr2: raw data
(bootloader) 	partition-size:logo: 300000
(bootloader) 	partition-type:logo: raw data
(bootloader) 	partition-size:misc: 80000
(bootloader) 	partition-type:misc: raw data
(bootloader) 	partition-size:sec_ro: 600000
(bootloader) 	partition-type:sec_ro: ext4
(bootloader) 	partition-size:recovery: 600000
(bootloader) 	partition-type:recovery: raw data
(bootloader) 	partition-size:boot: 600000
(bootloader) 	partition-type:boot: raw data
(bootloader) 	partition-size:uboot: 60000
(bootloader) 	partition-type:uboot: raw data
(bootloader) 	partition-size:seccfg: 20000
(bootloader) 	partition-type:seccfg: raw data
(bootloader) 	partition-size:protect_s: a00000
(bootloader) 	partition-type:protect_s: ext4
(bootloader) 	partition-size:protect_f: a00000
(bootloader) 	partition-type:protect_f: ext4
(bootloader) 	partition-size:nvram: 500000
(bootloader) 	partition-type:nvram: raw data
(bootloader) 	partition-size:pro_info: 300000
(bootloader) 	partition-type:pro_info: raw data
(bootloader) 	partition-size:pmt: 400000
(bootloader) 	partition-type:pmt: raw data
(bootloader) 	partition-size:ebr1: 80000
(bootloader) 	partition-type:ebr1: raw data
(bootloader) 	partition-size:mbr: 80000
(bootloader) 	partition-type:mbr: raw data
(bootloader) 	partition-size:preloader: 600000
(bootloader) 	partition-type:preloader: raw data
(bootloader) 	kernel: lk
(bootloader) 	product: BLADE10_ROW_WIFI
(bootloader) 	version: 0.5
all: Done!!
Finished. Total time: 0.004s

cmdline

(b8000-f, twrp)

~ # cat /proc/cmdline
console=ttyMT0,921600n1 vmalloc=530M slub_max_order=0 lcm=1-cm_hx8896a01_dsi_vdo_boe fps=5797 bootprof.pl_t=3598 bootprof.lk_t=3631 printk.disable_uart=1 boot_reason=1

https://github.com/TeamYogaBlade2/lenovo_b6000-b8000_open_source_code_raw/blob/jellybean/mediatek/config/lenovo89_tb_x10_jb2/ProjectConfig.mk

# To choose LK LCM driver name
CUSTOM_LK_LCM=NT35521_N070ICN_GB1_V1

# To choose kernel LCM driver name
CUSTOM_KERNEL_LCM=NT35521_N070ICN_GB1_V1

# To choose uboot LCM driver name
CUSTOM_UBOOT_LCM=NT35521_N070ICN_GB1_V1

hx8896 never appears in Open Source Code!

in stock rom dir

$ grep -rlF nt35
system.img
$ grep -rlF hx88
system.img
lk.bin

in system.img

# grep -rlF nt35
data/misc/ProjectConfig.mk
lib/libPL.so
# grep -rlF hx88
data/misc/ProjectConfig.mk
lib/libPL.so

in data/misc/ProjectConfig.mk (system.img)

#CUSTOM_KERNEL_LCM = nt35582_mcu_6575
CUSTOM_KERNEL_LCM = cm_hx8896a01_dsi_vdo cm_hx8896a01_dsi_vdo_boe
CUSTOM_LK_LCM = cm_hx8896a01_dsi_vdo cm_hx8896a01_dsi_vdo_boe
CUSTOM_UBOOT_LCM = cm_hx8896a01_dsi_vdo cm_hx8896a01_dsi_vdo_boe

ProjectConfig.mk

The ProjectConfig.mk contained in the downstream kernel is fake.

https://gist.github.com/akku1139/ad961f42623679f5d86335a052ea1975

See also

Official product page: https://pcsupport.lenovo.com/us/en/products/tablets/yoga-series/yoga-tablet-10-b8000/z0al

Official disassembly guide: https://download.lenovo.com/consumer/mobiles_pub/yoga_tablet_8-10_hmm_en_20130916.pdf

Official spec sheet: https://support.lenovo.com/us/en/solutions/pd104151-overview-for-yoga-tablet-10-b8000

GSMArena.com: https://www.gsmarena.com/lenovo_yoga_tablet_10-5836.php

Kernel Mainlining: https://github.com/TeamYogaBlade2/linux/tree/blade10/

Unofficial TWRP: https://archive.org/details/b8000-f_twrp