Category:MediaTek
About MediaTek
Brand of MediaTek Inc. | |
Name | MediaTek Inc. |
---|---|
Native name | 聯發科技股份有限公司 |
Nickname | MTK,發哥 |
Country | Taiwan / Worldwide |
Industry | Arm, Chip |
Resources | Homepage |
MediaTek Inc. is a chip maker company from Taiwan.
Devices with a MediaTek SoC
Device | Chipset | Booting | Mainline |
---|---|---|---|
Acer Chromebook 311 (C722 / C722T) | MediaTek MT8183 | Yes | Y |
Acer Chromebook 311 (CB311-11H / CB311-11HT) | MediaTek MT8183 | Yes | Y |
Acer Chromebook 314 (CB314-2H / CB314-2HT) | MediaTek MT8183 | Yes | Y |
Acer Chromebook 514 (CB514-2H / CB514-2HT) | MediaTek MT8192 | Yes | Y |
Acer Chromebook R13 | MediaTek MT8173C | Yes | Y |
Acer Chromebook Spin 311 (CP311-3H) | MediaTek MT8183 | Yes | Y |
Acer Chromebook Spin 311 (R722T) | MediaTek MT8183 | Yes | Y |
Acer Chromebook Spin 513 (CP513-2H) | MediaTek MT8195 | Yes | Y |
Acer Liquid Z520 | MediaTek MT6582M | N | |
Acer Liquid Zest 4G | MediaTek MT6735 | Yes | |
Acer Liquid Zest 4G | MediaTek MT6735 | No | |
Alcatel One Touch Pop C1 | Mediatek MT6572 | No | |
Alcatel OneTouch Pixi 4 (5) 5010D | MediaTek MT6580 | Yes | N |
Alcatel Pixi 4 (4) [4034D/4034X] | MediaTek MT6580 | Yes | |
ALPS ASK SP618/Bluboo Maya Max | MediaTek Helio P15 (MT6750) | No | |
ALPS Mediatek Obscure Device (MT6572) | MediaTek MT6572 | No | |
ALPS Philips S562Z | MediaTek Helio P15 (MT6750) | No | |
Amazon Echo Dot (2nd gen) | MediaTek MT8163 | Yes | |
Amazon Echo Show 5 | MediaTek MT8163 | No | |
Amazon Fire 7 (2015) | MediaTek MT8127 | Yes | N |
Amazon Fire 7 (2017) | MediaTek MT8127 | Yes | N |
Amazon Fire 7 (2019) | MediaTek MT8163V/B (64-bit quad-core) | Yes | |
Amazon Fire HD 10 (7th gen) | MediaTek MT8173 | Yes | |
Amazon Fire HD 8 (2017) | MediaTek MT8163 | Yes | N |
Amazon Fire HD 8 (2018) | MediaTek MT8163 | Yes | |
Amazon Fire TV 2 | MediaTek MT8173C | No | N |
Amazon Fire TV Stick 4K | MediaTek MT8695 | Yes | P |
Amazon Fire TV Stick Basic Edition | MediaTek MT8127D | Yes | |
Amazon Fire tv stick lite | MediaTek MT8695 | Yes | P |
Archos Sense 55s | MediaTek MT6737T | No | P |
Asus Chromebook C202XA | MediaTek MT8173C | Yes | Y |
Asus Chromebook CZ1 | MediaTek MT8183 | Yes | Y |
Asus Chromebook Detachable CM3 (CM3000) | MediaTek MT8183 | Yes | Y |
Asus Chromebook Detachable CZ1 | MediaTek MT8183 | Yes | Y |
Asus Chromebook Flip CM3 (CM3200, MT8183) | MediaTek MT8183 | Yes | Y |
Asus Chromebook Flip CM3 (CM3200, MT8192) | MediaTek MT8192 | Yes | Y |
Asus Chromebook Flip CZ1 | MediaTek MT8183 | Yes | Y |
Asus Zenfone Go (MTK) | MediaTek MT6580 | Yes | |
BQ Aquaris E5 HD | MediaTek MT6582 | Yes | |
BQ Aquaris M10 | MediaTek MT8163B | No | |
BQ Aquaris M10 FHD | MediaTek MT8163B | Yes | N |
Casper Via F1 | MediaTek Helio P10 (MT6755) | No | |
Coolpad Modena 2 | MediaTek MT6735P | No | |
Digma 1538E 4G | MediaTek MT8735 | No | Y |
Duoqin F21 Pro | MediaTek Helio A22 (MT6761) | Yes | Y |
Fairphone 1 | MediaTek MT6589 | Yes | P |
Fly Spark | MediaTek MT6572 | Yes | |
General Mobile GM8 Go | MediaTek MT6739 | Yes | - |
Gini w5 | MediaTek MT6735 | No | |
Google Asurada Chromebook | MediaTek MT8192 | Yes | Y |
Google Cherry Chromebook | MediaTek MT8195 | Yes | Y |
Google Corsola Chromebook | MediaTek MT8186 | Yes | Y |
Google Kukui Chromebook | MediaTek MT8183 | Yes | Y |
Google Oak Chromebook | MediaTek MT8173C | Yes | Y |
HMD Global Nokia 3.1 | MediaTek Helio P15 (MT6750N) | Yes | Y |
Hometech 8MZ | MediaTek MT8163 | Yes | |
HomTom HT20 | MediaTek MT6735M | No | |
HP Chromebook 11a | MediaTek MT8183 | Yes | Y |
HP Chromebook 11MK G9 EE | MediaTek MT8183 | Yes | Y |
HP Chromebook x360 11MK G3 EE | MediaTek MT8183 | Yes | Y |
HP Chromebook x360 13b-ca0xxx | MediaTek MT8195 | Yes | Y |
Huawei Honor 7S | MediaTek MT6739 | No | - |
Huawei Y3 II 3G | MediaTek MT6582 (M?) | No | |
Huawei Y360-U61 | MediaTek MT6582 | No | |
Just5 Freedom X1 | MediaTek MT6753 | No | N |
Kosagi Fernvale | Mediatek MT6260 | No | |
Land Rover A9 | MediaTek MT6582 | No | |
LeEco Le 1s | MediaTek Helio X10 (MT6795) | Yes | |
Lenovo 100e Chromebook 2nd Gen (MTK) | MediaTek MT8173C | Yes | Y |
Lenovo 100e Chromebook 2nd Gen MTK 2 | MediaTek MT8183 | Yes | Y |
Lenovo 10e Chromebook Tablet | MediaTek MT8183 | Yes | Y |
Lenovo 300e Chromebook | MediaTek MT8173C | Yes | Y |
Lenovo 300e Chromebook 2nd Gen (MTK) | MediaTek MT8173C | Yes | Y |
Lenovo 300e Yoga Chromebook Gen 4 | MediaTek MT8186 | Yes | Y |
Lenovo A369i | MediaTek MT6572 | ||
Lenovo Chromebook C330 | MediaTek MT8173C | Yes | Y |
Lenovo Chromebook S330 | MediaTek MT8173C | Yes | Y |
Lenovo Flex 11 Chromebook | MediaTek MT8173C | Yes | Y |
Lenovo IdeaPad 3 Chromebook (MT8183) | MediaTek MT8183 | Yes | Y |
Lenovo IdeaPad Duet Chromebook | MediaTek MT8183 | Yes | Y |
Lenovo IdeaPad Flex 3 Chromebook (CB-11M735) | MediaTek MT8173C | Yes | Y |
Lenovo IdeaPad Flex 3 Chromebook (MT8183) | MediaTek MT8183 | Yes | Y |
Lenovo IdeaPad Slim 3 Chromebook (14M868) | MediaTek MT8186 | Yes | Y |
Lenovo IdeaTab A3000 | MediaTek MT6589 | Yes | P |
Lenovo K4 Note | Mediatek MT6753 | Yes | |
Lenovo Lenovo Smart Tab M10 FHD Plus | MediaTek Helio P22T (MT6762) | No | |
Lenovo N23 Yoga Chromebook | MediaTek MT8173C | Yes | Y |
Lenovo Tab 7 Essential | MediaTek MT8167A | No | |
Lenovo Tab M10 FHD Plus 2nd Gen | MediaTek Helio P22T (MT8768) | No | |
Lenovo Tab M10 FHD Plus 2nd Gen | MediaTek Helio P22T (MT8768) | ||
Lenovo Tab3 7 Essential | MediaTek MT8321 | No | |
Lenovo Vibe P1m | MediaTek MT6735P | Yes | N |
LG Bello II | MediaTek MT6582 | No | N |
LG K4 | MediaTek MT6735M | No | |
LG K40 (AT&T) | MediaTek MT6765 | Yes | |
LG K5 | MediaTek MT6582 | No | |
Mediatek ZH960 | MediaTek MT6582 | No | |
Meizu M2 | MediaTek MT6735 | Yes | |
Meizu M2 Note | Mediatek MT6753 | No | |
Meizu M3 Note | MediaTek Helio P10 (MT6755) | No | |
Mobvoi Ticwatch E/S | MediaTek MT2601 | No | |
Motorola Moto C Plus | MediaTek MT6737 | Yes | |
NGM WeMove Action | MediaTek MT6575 | No | |
Nokia 1 | MediaTek MT6737M | Yes | |
Nokia 3 (2017) | MediaTek MT6737 | Yes | |
Nothing CMF Phone 1 | MediaTek MT6878 | Yes | Y |
Onn Tablet Gen 3 | MediaTek MT8168 | No | |
Oppo Neo 5 | Mediatek MT6582 | No | |
Oppo Reno Z | MediaTek Helio P90 (MT6779) | Y | |
Oysters T84Bi 4G | MediaTek MT8735 | No | Y |
Planet Computers Cosmo Communicator | MediaTek Helio P70 (MT6771T or MT6771WT?) | Yes | N |
Planet Computers Gemini PDA | MediaTek MT6797P/X Helio X25/X27 | Yes | N |
Poin2 Chromebook 11C | MediaTek MT8173C | Yes | Y |
Poin2 Chromebook 14 | MediaTek MT8173C | Yes | Y |
Prestigio Prestigio MultiPad PMT5008 3G | MediaTek MT8382 | No | P |
PxPhone PxPhone I5 TV WIFI | MediaTek MT6250A | No | n |
Rabbit R1 | MediaTek MT6765 | No | |
Samsung Galaxy A32 4G | MediaTek Helio G80 (MT6769T) | Yes | N |
Samsung Galaxy A34 5G | MediaTek Dimensity 1080 | No | |
Samsung Galaxy Grand Prime+ | MediaTek MT6737T | Yes | Y |
Samsung Galaxy Tab A7 Lite | MediaTek Helio P22T (MT8768) | Yes | N |
Sony Sony Bravia KDL-43W755C | MediaTek MT5890 | No | |
Sony Xperia M5 | MediaTek Helio X10 (MT6795) | Yes | |
Sony Xperia XA | MediaTek Helio P10 (MT6755) | Yes | N |
Sony Xperia XA Ultra | MediaTek Helio P10 (MT6755) | Yes | |
TCL 403 | MediaTek Helio A22 (MT6761) | No | |
TCL A3 | MediaTek Helio P22 (MT6762) | Yes | P |
Teclast T40S revision 2 | MediaTek MT8183 | No | |
Teracube One | MediaTek Helio P60 (MT6771) | No | |
Umidigi F2 | MediaTek Helio P70 (MT6771V/CT) | Yes | N |
Unihertz Titan Pocket | MediaTek Helio P70 (MT6771V/CT) | No | |
Verizon (Quanta) Verizon Ellipsis 7 QMV7B | Mediatek MT8125K | No | |
Vernee Thor | MediaTek MT6753 | Yes | N |
Volla Phone | MediaTek Helio P23 (MT6763V) | Yes | Y |
Volla Phone 22 | MediaTek Helio G85 (MT6769Z) | Yes | Y |
Volla Phone X | MediaTek Helio P23 (MT6763V) | No | N |
Volla Phone X23 | MediaTek Helio G99 (MT6789) | No | |
Vsmart Star 4 | MediaTek MT6765 | Yes | N |
Wiko Fever | MediaTek MT6753 | No | |
Wiko Harry | MediaTek MT6737/MT6735M | No | |
Wiko Lenny 2 | MediaTek MT6580 | Yes | N |
Wiko Lenny 3 | MediaTek MT6580M | Yes | |
Wiko Lenny 5 | MediaTek MT6580 | Yes | |
Wiko Sunset 2 | MediaTek MT6572W | No | |
Wiko U FEEL | MediaTek MT6735 | Yes | |
Xiaomi Mi Smart Clock | Mediatek MT8167S | Yes | P |
Xiaomi Redmi 10 2022 | MediaTek Helio G88 (MT6769H) | No | |
Xiaomi Redmi 12 | MediaTek Helio G88 (MT6769H) | Yes | N |
Xiaomi Redmi 6 | MediaTek Helio P22 (MT6762) | Yes | |
Xiaomi Redmi 6A | MediaTek Helio A22 (MT6761) | Yes | |
Xiaomi Redmi 9 | MediaTek Helio G80 (MT6769T) | Yes | |
Xiaomi Redmi 9A | Mediatek Helio G25 (MT6762G) | No | |
Xiaomi Redmi 9C | MediaTek Helio G35 (MT6765G) | Yes | Y |
Xiaomi Redmi Note 10 5G | MediaTek Dimensity 700 5G (MT6833) | No | |
Xiaomi Redmi Note 8 Pro | MediaTek Helio G90T (MT6785) | Yes | N |
Xiaomi Redmi Note 9 | MediaTek Helio G85 (MT6769Z) | Yes | |
Xiaomi Redmi Pad | MediaTek Helio G99 (MT8781) | No | |
Xunlong Orange Pi 4G-IoT | MediaTek MT6737M | No | |
ZTE Blade X3 | MediaTek MT6735P | No |
For an overview of Mediatek devices, see Mediatek.
Glossary
See MediaTek Glossary.
Naming Conventions
While there doesn't seem to be a stable pattern that MediaTek SoC names follow between subsequent generations, there are a few naming patterns that are prevalent.
MediaTek SoCs can be split into 5 main categories, each corresponding to a certain period of time where several SoCs were released with highly similar core architectures:
Pattern | Common name | CPU | GPU | Modem |
---|---|---|---|---|
MT62**
|
- | ARMv5 (ARM7) | - | 2G |
MT65**
|
- | ARMv7 (Cortex-A) | Mali Utgard, PowerVR SGX | 3G |
MT67**
|
Helio* | ARMv8 (Cortex-A) | Mali Midgard, Mali Bifrost, PowerVR Rogue | 4G |
MT68**
|
Dimensity ≤8000 | Mali Valhall | 5G | |
MT69**
|
Dimensity 9000 | ARMv8 (Cortex-X + Cortex-A) |
*The Helio name wasn't used for MT673*
as well as MT6750
, MT6752
and MT6753
variants
There are SoCs that don't follow this convention. These SoCs are usually tablet or application variants of the MT6***
SoCs, and have names that follow the MT8***
pattern. For some of those SoCs, the only difference between the mobile and tablet variant is the first digit, while others have completely different names despite them being functionally identical. Here are some known mobile/tablet variant pairs:
Mobile MT6***
|
Tablet MT8***
|
---|---|
MT6580
|
MT8321
|
MT6582
|
MT8382
|
MT6589
|
MT8389
|
MT6592 *
|
MT8127 *
|
MT6735
|
MT8735
|
MT6771
|
MT8183
|
MT6875 *
|
MT8192 *
|
*Unconfirmed
Flashing
If you want to flash firmware to Mediatek-based devices, there is a proprietary tool for that: SP Flash Tool. It is e.g. used for the Wiko Lenny 3 (wiko-lenny3).
Some devices also support fastboot, e.g. Sony Xperia XA (sony-tuba), and some support odin, e.g. Samsung Galaxy Grand Prime Plus (samsung-grandpplte).
Some open source software has been developed:
- https://github.com/saleemrashid/mediatek_flash_tool has only been tested with the MT6580
- https://github.com/MediaTek-Labs/mt76x7-uploader which is compatible with the MT7687 and MT7697 for flashing the bootloader
- https://github.com/Wiz-IO/Mediatek-MT2625-Flash-Utility for the MT2625
- https://github.com/McBitter/flasher only support for MT6735P, is WIP
- https://github.com/bkerler/mtkclient
Enabling previously disabled UART on downstream kernels
Sometimes you might need to get some data from UART on downstream kernel (for example, with intention to debug boot process of your pmOS port) but it's been automatically disabled by the preloader or UBoot or something else. One of the solutions suggested by the official MediaTek OEM FAQ is to run this command as early as possible:
echo "6 4 1 6" > /proc/sys/kernel/printk
To disable UART logs, run:
echo "0 0 0 0" > /proc/sys/kernel/printk
TODO: Validate whether these commands require root shell |
TODO: Check if it works on mt67xx devices |
Booting procedure
Power applied to the SoC
When chip is powered on the dram controller pushes the address of brom (boot rom, mask rom that is hardwired) to PC (program counter) and execution of rom begins.
Brom execution
- UART1 gets initialized to some predetermined baudrate. Baud usually depends in chip input clock source. Observation has been made that UART1 is disabled on many phones, but can be enabled if proper firmware is used and eFuses are not blown.
- Initialize storage with low clock. Reason why it's using low clock is because muxes are not programmed at this stage.
- Wait for "Start" string on UART1 for unknown amount of time, the internet keeps buzzing about 150ms. After start is recieved, listen to commands from host until jump is observed (refer to brom spec in further reading section). If start is not sent then Preloader image will be loaded from the storage to the SRAM (static ram) and brom loads it. Not sure if flags SP flash tool needs are used at bootup phase.
- If KCOL0 pin is shorted to the ground, preloader loading is avoided and download protocol is rolled up on USB port.
Memory maps of different system on chips
Image format
Incomplete and has missing information. Feel free to coordinate corrections on Matrix chat. Information here is only for reference. Flashing the binaries to storage will be done using brom protocol and custom flashing software. |
This format is used in brom and preloader(has to be verified) while flashing with SP flash tool. All fields are in little endian.
File info image format
Size | Content | Extra notes |
---|---|---|
4 | 4d 4d 4d 01
| |
4 | Length of complete header (including this size field and the magic field above) | |
12 | "FILE_INFO\0\0\0"
|
Pay attention to padding bytes |
4 | 01 00 00 00
| |
2 | Image type | 0: NONE 1: ARM-Bootloader 2: ARM-External-Bootloader 10: Root-Certificate 256: Primary-MAUI 264: VIVA 769: SECURE_RO_ME |
1 | Storage type | 0: NONE 1: NOR Flash 2: NAND Sequential Flash 3: NAND_TTBL 4: NAND_FDM50 5: EMMC-Boot-Region 6: EMMC-Data-Region 7: Serial Flash 255: Device-End |
1 | Signature type | 0: No Signature 1: PHASH 2: SINGLE 3: SINGLE and PHASH 4: MULTI 5: TYPE_NUM 255: TYPE_END |
4 | Load address | |
4 | Total file size | |
4 | 00 00 04 00
|
Maximum file size |
4 | Content offset in file | You can have multiple headers before actual content (preloader assembly image) |
4 | Signature length | If no signature was set, size is 0 |
4 | Jump offset | Seems to be the same as content offset, maybe because preloader needs to execute |
4 | Ending | 1: POST_BUILD_DONE 2: XIP (Execute In Place) use bitwise OR to combine multiple flags |
Example data from MT6735P chipset
ROM:00031128 magicValue DCD 0x14D4D4D ROM:0003112C HeaderSize DCD 0x38 ; completeHeaderSize ROM:00031130 aFile_info DCB "FILE_INFO",0,0,0 ROM:0003113C alwaysOne DCD 1 ROM:00031140 FileType DCW 1 ; ARM-Bootloader ROM:00031142 FlashType DCB 5 ; EMMC-Boot-Region ROM:00031143 SignatureType DCB 3 ; Single and PHASH ROM:00031144 LoadAddress DCD 0x200D00 ; SRAM address ROM:00031148 FileLength DCD 0x1CE4C ROM:0003114C MaximumSize DCD 0x40000 ROM:00031150 ContentOffset DCD 0x300 ROM:00031154 SigLen DCD 0x124 ROM:00031158 JumpOffset DCD 0x300 ROM:0003115C Ending DCD 1 ; POST_BUILD_DONE
SP Flash Tool authentication bypass
By patching a USB driver, it is possible to bypass the chain of trust during flashing. More info in this GitHub repo and here
It is compatible with the following SoCs:
- mt6261
- mt6572
- mt6580
- mt6582
- mt6735
- mt6737
- mt6739
- mt6755
- mt6757
- mt6761
- mt6763
- mt6765
- mt6768
- mt6771
- mt6779
- mt6785
- mt6799
- mt6873
- mt8127
- mt8163
- mt8173
- mt8695
Mainlining
Supported SoCs
A few MediaTek SoCs have decent support in mainline, and many others have some basic support (only UART and/or I2C). This table shows the SoCs with documented support:
SoC | Arch | Year | UART | USB | Storage | Display | CPU | GPU | Pinctrl | I²C | Audio | Video | Thermal | WiFi | BT | Modem | GPS | Camera | Suspend |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MediaTek Helio P10/P15/P18 | aarch64 | 2014 | P | N | N | P | P | N | N | N | N | N | N | N | N | N | N | N | N |
MediaTek Helio P90 | aarch64 | 2018 | Y | N | Y | P | Y | N | Y | N | Y | N | N | N | N | N | N | N | |
MediaTek MT6580 | armv7 | 2015 | Y | N | N | N | P | N | N | N | N | N | N | N | N | N | N | N | N |
MediaTek MT6582 | armv7 | 2013 | Y | N | N | N | P | N | N | N | N | N | N | N | N | N | N | N | N |
MediaTek MT6589 | armv7 | 2013 | Y | N | N | N | P | N | N | N | N | N | N | - | - | N | - | N | N |
MediaTek MT6735 | aarch64 | 2014-2016 | Y | P | P | Y | N | Y | Y | N | N | N | N | N | N | N | N | N | N |
MediaTek MT6765 | aarch64 | 2018/2020 | Y | Y | Y | Y | Y | N | Y | Y | N | N | N | N | N | N | N | N | N |
MediaTek MT6878 (Dimensity 7300) | aarch64 | 2024 | Y | N | N | N | Y | N | N | N | N | N | N | N | N | N | N | N | N |
MediaTek MT8173 | aarch64 | 2015 | Y | Y | Y | Y | Y | P | Y | Y | Y | Y | Y | N | N | - | - | N | Y |
MediaTek MT8183 | aarch64 | 2019 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | N | - | - | N | Y |
MediaTek MT8186 | aarch64 | 2022 | Y | Y | Y | Y | Y | Y | Y | Y | N | Y | Y | - | - | - | - | N | N |
There have been some successes in porting mainline Linux to other SoCs:
- https://github.com/mt8163-mainline/linux
- https://github.com/arzam16/linux-mt6577
- https://github.com/mt6735-mainline/linux
- https://github.com/affenull2345/linux/tree/mt6771
Futher reading
- Coolpad Modena 2 (coolpad-modena2)
- http://www.lieberbiber.de/2015/07/02/mediatek-details-soc-startup/
- http://www.lieberbiber.de/2015/07/04/mediatek-details-partitions-and-preloader/
- https://forum.xda-developers.com/u/repair/coolpad-sky-3-e502-modena-2-unbrick-t3610163 (KCOL0 unbrick)
- https://github.com/ave4/SP-Flash-Tool-source
- Boot ROM Design Specification
Pages in category "MediaTek"
The following 15 pages are in this category, out of 15 total.
M
- MediaTek Helio P10 (MT6755)
- MediaTek Helio P23 (MT6763)
- MediaTek Helio P65 (MT6768)
- MediaTek Helio P90 (MT6779)
- MediaTek Kompanio 500 (MT8173)
- MediaTek Kompanio 500 (MT8183)
- MediaTek Kompanio 520 (MT8186)
- MediaTek MT6572
- MediaTek MT6580
- MediaTek MT6582
- MediaTek MT6589
- MediaTek MT6735
- MediaTek MT6765
- MediaTek MT6878
- MT6572 Obscure (mediatek-mt6572obscure)