Xiaomi Redmi 12 (xiaomi-fire): Difference between revisions
m "This device uses A/B partitions and dynamic partitions" |
LongnoseRob (talk | contribs) update to gitlab.postmarketos.org |
||
(46 intermediate revisions by one other user not shown) | |||
Line 10: | Line 10: | ||
| originalversion = 13 with Linux 4.19.191 | | originalversion = 13 with Linux 4.19.191 | ||
| extendedversion = 14 with the same kernel version | | extendedversion = 14 with the same kernel version | ||
| pmoskernel = 4.19.191 | |||
| chipset = MediaTek Helio G88 (MT6769H) | | chipset = MediaTek Helio G88 (MT6769H) | ||
| cpu = 2x 2.0 GHz ARM Cortex-A75 & 6x 1.8 GHz ARM Cortex-A55 | | cpu = 2x 2.0 GHz ARM Cortex-A75 & 6x 1.8 GHz ARM Cortex-A55 | ||
| gpu = Mali-G52 MC2 | | gpu = Mali-G52 MC2 | ||
| storage = 128/256 GB | | storage = 128/256 GB | ||
| display = 1080 x 2460 IPS LCD | | display = 1080 x 2460 IPS LCD, 90 Hz | ||
| memory = 4/8 GB | | memory = 4/8 GB | ||
| architecture = aarch64 | | architecture = aarch64 | ||
Line 21: | Line 22: | ||
| booting = yes | | booting = yes | ||
| status_usbnet = | | status_usbnet = N | ||
| status_flashing = Y | | status_flashing = Y | ||
| status_touch = P | | status_touch = P | ||
| status_screen = Y | | status_screen = Y | ||
| status_wifi = N | | status_wifi = N | ||
| status_fde = | | status_fde = | ||
| status_mainline = N | | status_mainline = N | ||
| status_battery = | | status_battery = P | ||
| status_3d = N | | status_3d = N | ||
| status_audio = | | status_audio = P | ||
| status_bluetooth = | | status_bluetooth = | ||
| status_camera = | | status_camera = | ||
| status_gps = | | status_gps = | ||
| status_mobiledata = | | status_mobiledata = | ||
| status_sms = | | status_emmc = Y | ||
| status_calls = | | status_sms = | ||
| status_calls = | |||
| status_otg = Y | | status_otg = Y | ||
| status_nfc = | | status_nfc = | ||
| status_accel = | | status_accel = | ||
| status_magnet = | | status_magnet = | ||
| status_light = | | status_light = | ||
| status_proximity = | | status_proximity = | ||
| status_hall = - | | status_hall = - | ||
| status_barometer = - | | status_barometer = - | ||
| status_powersensor = - | | status_powersensor = - | ||
| status_cameraflash = | | status_dvb = - | ||
| status_cameraflash = | |||
| status_keyboard = - | | status_keyboard = - | ||
| status_touchpad = - | | status_touchpad = - | ||
| status_usba = - | | status_usba = - | ||
| status_sdcard = Y | |||
| status_hdmidp = - | | status_hdmidp = - | ||
| status_irtx = | | status_irtx = | ||
| status_irrx = - | | status_irrx = - | ||
| status_stylus = - | | status_stylus = - | ||
| status_haptics = | | status_haptics = | ||
| status_ethernet = - | | status_ethernet = - | ||
| status_fossbootloader = | | status_fossbootloader = N | ||
}} | }} | ||
{{Based on SoC|MediaTek_Helio_G88_(MT6769H)|Helio G88}} | |||
== Installation == | == Installation == | ||
=== Unlocking the bootloader === | |||
Unlock the bootloader using the official method with Mi Unlock Tool | Unlock the bootloader using the official method with Mi Unlock Tool | ||
https://en.miui.com/unlock | https://en.miui.com/unlock | ||
Line 80: | Line 75: | ||
You'll need to link your device with your Mi Account and wait 7 days to unlock the device. | You'll need to link your device with your Mi Account and wait 7 days to unlock the device. | ||
Alternatively, you can also unlock the phone's bootloader using MTKClient | Alternatively, you can also unlock the phone's bootloader using MTKClient. | ||
=== Flashing postmarketOS === | === Flashing postmarketOS === | ||
Type <code>pmbootstrap init</code> and choose the following in the wizard: | Type <code>pmbootstrap init</code> and choose the following in the wizard: | ||
'''Release channel:''' edge | '''Release channel:''' edge | ||
'''Vendor:''' xiaomi | '''Vendor:''' xiaomi | ||
'''Device codename:''' fire | '''Device codename:''' fire | ||
<code>xfce4</code>, <code>MATE</code> and <code> | <code>xfce4</code>, <code>MATE</code>, <code>LXQt</code> and <code>i3wm</code> are tested and work out of the box. Other UIs are ''not guaranteed'' to work. | ||
After choosing an user interface and the rest, type the below command to begin downloading and preparing postmarketOS for installation | After choosing an user interface and the rest, type the below command to begin downloading and preparing postmarketOS for installation | ||
'''$''' pmbootstrap install | '''$''' pmbootstrap install | ||
Then, turn off the device, hold <code>Power</code> and <code>Volume Down</code> buttons, connect it to the computer with a USB cable. | |||
After doing this, type the following commands to flash postmarketOS to your device. | |||
'''$''' pmbootstrap flasher | '''$''' pmbootstrap flasher flash_kernel | ||
'''$''' pmbootstrap flasher flash_rootfs | |||
After the commands finished, finally type | |||
'''$''' fastboot reboot | |||
to exit fastboot. | |||
==== Installing Android after postmarketOS ==== | ==== Installing Android after postmarketOS ==== | ||
You have to flash stock <code>super.img</code> and <code>boot.img</code> with the following commands. | |||
<code> | |||
and <code> | |||
'''$''' fastboot flash super super.img | |||
'''$''' fastboot flash boot boot.img | |||
== Working UIs == | |||
* [[i3]] | |||
* [[LXQt]] | |||
* [[MATE]] | |||
* [[Xfce4]] | |||
== Hardware status == | |||
=== Touchscreen === | === Touchscreen === | ||
Our device comes with 3 different touchscreens - Focaltech FT8720, Focaltech FT8725, and Novatek NT36xxx. | |||
Currently, only the Novatek touchscreen works. | |||
fts_ts seems to search for a firmware file called "focaltech_ts_fw_.bin" somewhere, | In case with FT8720, fts_ts seems to search for a firmware file called "focaltech_ts_fw_.bin" somewhere, even though it is in /lib/firmware/postmarketos and the cmdline has "firmware_class.path=/lib/firmware/postmarketos" parameter. It seems like the "/vendor/firmware" path is hardcoded in the driver. | ||
{{issue|2608|pmaports}} | |||
UPDATE: Touchscreen works in MATE after waiting for screen to completely turn off. | UPDATE: Touchscreen works in MATE after waiting for screen to completely turn off. | ||
=== Battery === | |||
UPower detects if the battery is charging or not, but the battery percentage is always at 0%. | |||
In case with LXQt, if you power on the device while it is on battery, it will boot the LXQt, but after a few seconds the device will just shut down. | |||
But if you power on the device while it is plugged in, and unplug it only after booting postmarketOS, it works on battery as usual. | |||
=== | === Audio === | ||
Needs "aw87xxx_acf.bin" firmware file. Switching the volume level with volume buttons seems to work. | |||
== Miscellaneous == | == Miscellaneous == | ||
=== Partition layout === | === Partition layout === | ||
This device uses A/B partitions and dynamic partitions, the recovery is inside boot. | |||
All files in /dev/block/by-name are just links to actual partitions in /dev/block. | All files in /dev/block/by-name are just links to actual partitions in /dev/block. | ||
'''ls -lrt /dev/block/by-name''' | '''ls -lrt /dev/block/by-name''' | ||
mmcblk0 -> /dev/block/mmcblk0 | ''mmcblk0 -> /dev/block/mmcblk0'' | ||
vbmeta_system_a -> /dev/block/mmcblk0p7 | vbmeta_system_a -> /dev/block/mmcblk0p7 | ||
super -> /dev/block/mmcblk0p57 | super -> /dev/block/mmcblk0p57 | ||
Line 265: | Line 203: | ||
preloader_a -> /dev/block/mmcblk0boot0 | preloader_a -> /dev/block/mmcblk0boot0 | ||
preloader_b -> /dev/block/mmcblk0boot1 | preloader_b -> /dev/block/mmcblk0boot1 | ||
== Community info == | |||
=== Contributors === | |||
* Buildingat90degreesC (Currently running LineageOS 21 GSI on it) | |||
* Neokitty | |||
=== Users owning this device === | |||
{{Device owners}} | |||
== See also == | == See also == | ||
{{MR|4827|pmaports}} Initial merge request | * {{MR|4827|pmaports}} Initial merge request | ||
* {{Device package|xiaomi-fire}} | |||
* {{Kernel package|xiaomi-fire}} | |||
* [https://gitlab.postmarketos.org/postmarketOS/pmaports/-/blob/master/device/testing/firmware-xiaomi-fire/APKBUILD?ref_type=heads Firmware package] | |||
* [https://github.com/MiCode/Xiaomi_Kernel_OpenSource/tree/fire-t-oss Downstream kernel source code] |
Latest revision as of 05:54, 4 November 2024
Manufacturer | Xiaomi |
---|---|
Name | Redmi 12 |
Codename | xiaomi-fire |
Released | 2023 |
Type | handset |
Hardware | |
Chipset | MediaTek Helio G88 (MT6769H) |
CPU | 2x 2.0 GHz ARM Cortex-A75 & 6x 1.8 GHz ARM Cortex-A55 |
GPU | Mali-G52 MC2 |
Display | 1080 x 2460 IPS LCD, 90 Hz |
Storage | 128/256 GB |
Memory | 4/8 GB |
Architecture | aarch64 |
Software | |
Original software | Android |
Original version | 13 with Linux 4.19.191 |
Extended version | 14 with the same kernel version |
FOSS bootloader | no |
postmarketOS | |
Category | testing |
Pre-built images | no |
Mainline | no |
postmarketOS kernel | 4.19.191 |
Flashing |
Works |
---|---|
USB Networking |
Broken |
Internal storage |
Works |
SD card |
Works |
Battery |
Partial |
Screen |
Works |
Touchscreen |
Partial |
Multimedia | |
3D Acceleration |
Broken |
Audio |
Partial |
Camera |
No data |
Camera Flash |
No data |
IR TX |
No data |
Connectivity | |
WiFi |
Broken |
Bluetooth |
No data |
GPS |
No data |
NFC |
No data |
Modem | |
Calls |
No data |
SMS |
No data |
Mobile data |
No data |
Miscellaneous | |
FDE |
No data |
USB OTG |
Works |
Sensors | |
Accelerometer |
No data |
Magnetometer |
No data |
Ambient Light |
No data |
Proximity |
No data |
Haptics |
No data |
This device is based on the Helio G88. See the SoC page for common tips, guides and troubleshooting steps |
Installation
Unlocking the bootloader
Unlock the bootloader using the official method with Mi Unlock Tool https://en.miui.com/unlock
You'll need to link your device with your Mi Account and wait 7 days to unlock the device.
Alternatively, you can also unlock the phone's bootloader using MTKClient.
Flashing postmarketOS
Type pmbootstrap init
and choose the following in the wizard:
Release channel: edge Vendor: xiaomi Device codename: fire
xfce4
, MATE
, LXQt
and i3wm
are tested and work out of the box. Other UIs are not guaranteed to work.
After choosing an user interface and the rest, type the below command to begin downloading and preparing postmarketOS for installation
$ pmbootstrap install
Then, turn off the device, hold Power
and Volume Down
buttons, connect it to the computer with a USB cable.
After doing this, type the following commands to flash postmarketOS to your device.
$ pmbootstrap flasher flash_kernel
$ pmbootstrap flasher flash_rootfs
After the commands finished, finally type
$ fastboot reboot
to exit fastboot.
Installing Android after postmarketOS
You have to flash stock super.img
and boot.img
with the following commands.
$ fastboot flash super super.img
$ fastboot flash boot boot.img
Working UIs
Hardware status
Touchscreen
Our device comes with 3 different touchscreens - Focaltech FT8720, Focaltech FT8725, and Novatek NT36xxx.
Currently, only the Novatek touchscreen works.
In case with FT8720, fts_ts seems to search for a firmware file called "focaltech_ts_fw_.bin" somewhere, even though it is in /lib/firmware/postmarketos and the cmdline has "firmware_class.path=/lib/firmware/postmarketos" parameter. It seems like the "/vendor/firmware" path is hardcoded in the driver.
UPDATE: Touchscreen works in MATE after waiting for screen to completely turn off.
Battery
UPower detects if the battery is charging or not, but the battery percentage is always at 0%. In case with LXQt, if you power on the device while it is on battery, it will boot the LXQt, but after a few seconds the device will just shut down. But if you power on the device while it is plugged in, and unplug it only after booting postmarketOS, it works on battery as usual.
Audio
Needs "aw87xxx_acf.bin" firmware file. Switching the volume level with volume buttons seems to work.
Miscellaneous
Partition layout
This device uses A/B partitions and dynamic partitions, the recovery is inside boot. All files in /dev/block/by-name are just links to actual partitions in /dev/block.
ls -lrt /dev/block/by-name mmcblk0 -> /dev/block/mmcblk0 vbmeta_system_a -> /dev/block/mmcblk0p7 super -> /dev/block/mmcblk0p57 md_udc -> /dev/block/mmcblk0p12 boot_a -> /dev/block/mmcblk0p27 vbmeta_vendor_a -> /dev/block/mmcblk0p8 vbmeta_a -> /dev/block/mmcblk0p6 otp -> /dev/block/mmcblk0p59 protect2 -> /dev/block/mmcblk0p19 opcust -> /dev/block/mmcblk0p50 sspm_b -> /dev/block/mmcblk0p40 vbmeta_b -> /dev/block/mmcblk0p9 spmfw_a -> /dev/block/mmcblk0p22 flashinfo -> /dev/block/mmcblk0p60 tee_a -> /dev/block/mmcblk0p30 scp_b -> /dev/block/mmcblk0p39 dtbo_b -> /dev/block/mmcblk0p45 vbmeta_system_b -> /dev/block/mmcblk0p10 seccfg -> /dev/block/mmcblk0p20 scp_a -> /dev/block/mmcblk0p23 dtbo_a -> /dev/block/mmcblk0p29 frp -> /dev/block/mmcblk0p5 rescue -> /dev/block/mmcblk0p49 persistbak -> /dev/block/mmcblk0p17 proinfo -> /dev/block/mmcblk0p33 mmcblk0boot0 -> /dev/block/mmcblk0boot0 mem -> /dev/block/mmcblk0p55 logo_b -> /dev/block/mmcblk0p47 ffu -> /dev/block/mmcblk0p53 protect1 -> /dev/block/mmcblk0p18 para -> /dev/block/mmcblk0p3 nvdata -> /dev/block/mmcblk0p15 boot_para -> /dev/block/mmcblk0p35 md1img_b -> /dev/block/mmcblk0p37 gz_b -> /dev/block/mmcblk0p41 efuse -> /dev/block/mmcblk0p34 boot_b -> /dev/block/mmcblk0p43 vbmeta_vendor_b -> /dev/block/mmcblk0p11 metadata -> /dev/block/mmcblk0p13 mmcblk0boot1 -> /dev/block/mmcblk0boot1 misc -> /dev/block/mmcblk0p1 vendor_boot_b -> /dev/block/mmcblk0p44 md1img_a -> /dev/block/mmcblk0p21 logo_a -> /dev/block/mmcblk0p31 gz_a -> /dev/block/mmcblk0p25 vendor_boot_a -> /dev/block/mmcblk0p28 userdata -> /dev/block/mmcblk0p58 spmfw_b -> /dev/block/mmcblk0p38 oops -> /dev/block/mmcblk0p56 expdb -> /dev/block/mmcblk0p4 opconfig -> /dev/block/mmcblk0p51 lk_a -> /dev/block/mmcblk0p26 tee_b -> /dev/block/mmcblk0p46 persist -> /dev/block/mmcblk0p16 nvcfg -> /dev/block/mmcblk0p14 gsort -> /dev/block/mmcblk0p52 devinfo -> /dev/block/mmcblk0p54 cust -> /dev/block/mmcblk0p48 sspm_a -> /dev/block/mmcblk0p24 sec1 -> /dev/block/mmcblk0p32 nvram -> /dev/block/mmcblk0p36 lk_b -> /dev/block/mmcblk0p42 countrycode -> /dev/block/mmcblk0p2 preloader_a -> /dev/block/mmcblk0boot0 preloader_b -> /dev/block/mmcblk0boot1
Community info
Contributors
- Buildingat90degreesC (Currently running LineageOS 21 GSI on it)
- Neokitty
Users owning this device
- Buildingat90degreesC (Notes: Running LineageOS 21 GSI)
- Eralp Celebi (Notes: Main Device.)
See also
- pmaports!4827 Initial merge request