Jump to content

Xiaomi Redmi 12 (xiaomi-fire): Difference between revisions

From postmarketOS Wiki
Neokitty (talk | contribs)
Added a "This device is based on MT6768" box
Neokitty (talk | contribs)
No edit summary
Line 14: Line 14:
| 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 21:
| booting                = yes
| booting                = yes


| status_usbnet          = P
| status_usbnet          =  
| status_flashing        = Y
| status_flashing        = Y
| status_touch          = Y
| status_touch          = Y
Line 45: Line 45:
| status_light          = N
| status_light          = N
| status_proximity      = N
| status_proximity      = N
| status_hall            = -
| status_barometer      = -
| status_powersensor    = -


| status_dvb            = -
 
| status_cameraflash    = N
| status_cameraflash    = N
| status_keyboard        = -
| status_touchpad        = -
| status_usba            = -
| status_sdcard          = Y
| status_sdcard          = Y
| status_hdmidp          = -
| status_irtx            = N
| status_irtx            = N
| status_irrx            = N
| status_irrx            = N
| status_stylus          = -
| status_haptics        = N
| status_haptics        = N
| status_ethernet        = -
| status_fossbootloader  = N
| status_fossbootloader  = N
}}
}}
Line 67: Line 58:


== Installation ==
== Installation ==
 
=== Unlocking the bootloader ===
=== Preparation ===
 
==== Entering the flash mode ====
When the phone is powered off, hold the <code>Power</code> and <code>Volume Down</code> button to enter into fastboot (bootloader) mode, or run <code>adb reboot bootloader</code> from Android.
 
==== 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 64:
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 to bypass the waiting, but this method isn't recommended overall, so do this on your own risk.
Alternatively, you can also unlock the phone's bootloader using MTKClient.


=== Flashing postmarketOS ===
=== Flashing postmarketOS ===
Line 88: Line 72:
  '''Device codename:''' fire
  '''Device codename:''' fire


<code>xfce4</code>, <code>MATE</code> and <code>LXQt</code> are tested and work out of the box. Other UIs are ''not guaranteed'' to work.
<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
Line 94: Line 78:
  '''$''' pmbootstrap install
  '''$''' pmbootstrap install


Boot the phone in fastboot mode, connect it to the computer with a USB cable. Use <code>fastboot devices</code> or <code>lsusb</code> to verify that the phone is detected by the computer. It should detect as something like <code>Google Inc. Xiaomi Mi/Redmi 2 (fastboot)</code> in case with <code>lsusb</code>.
Then, turn off the device, hold <code>Power</code> and <code>Volume Down</code> buttons, connect it to the computer with a USB cable.
If it is not detected, try another USB cable/USB port etc.


Now type the following commands to flash postmarketOS to your device.
After doing this, type the following commands to flash postmarketOS to your device.


  '''$''' pmbootstrap flasher flash_kernel
  '''$''' pmbootstrap flasher flash_kernel
Line 104: Line 87:


After the commands finished, finally type  
After the commands finished, finally type  
  fastboot reboot
  '''$''' fastboot reboot
to exit fastboot. You can alternatively just hold the power button until the device reboots.
to exit fastboot.  
 
==== Installing Android after postmarketOS ====
You have to flash stock <code>super.img</code> and <code>boot.img</code> with the following commands.


That's it, if you get a boot splash and then the desktop you've chosen you successfully installed postmarketOS to your Redmi 12.
'''$''' fastboot flash super super.img


==== Installing Android after postmarketOS ====
'''$''' fastboot flash boot boot.img
After flashing postmarketOS, you won't be able to boot Android again. So here is how to bring Android back: download the stock fastboot ROM, unpack it, then flash the stock '''super.img''' and '''boot.img''' using the following commands:


fastboot flash super super.img
== Working UIs ==
to flash the super,
* [[i3]]
and
* [[LXQt]]
fastboot flash boot boot.img
* [[MATE]]
to flash the boot image.
* [[Xfce4]]


=== Graphical Interfaces ===
== Hardware status ==
{|class="wikitable feature-colors"
! Interface
! Info
! Working
|-
|none
|Doesn't work. But gets stuck at the loading splash.
| N
|-
|[[GNOME 3]]
| Unknown - Not tested
|
|-
|[[i3wm]]
|Works fine, but has the same battery issue as LXQt.
| Y
|-
|[[MATE]]
|Works fine, but the device will shut down if you open anything related to power management.
| P
|
|-
|[[Phosh]]
| Unknown - Not tested.
|
|-
|[[Plasma Mobile]]
| Unknown - Not tested.
|
|-
|[[Shelli]]
| Unknown / Not tested.
|
|-
|[[Sxmo]]
| Unknown - Not Tested.
|
|-
|[[Sway]]
| Wayland doesn't work on this device.
| N
|-
|[[Weston]]
|Unknown / Not tested
|
|-
|[[Xfce4]]
|Works like expected, except it shows the battery as 1% and then shuts down afterwards if not plugged in.
| Y
|
|-
|[[LXQt]]
|Works, but also shuts down if the device is not plugged in.
| Y
|}
== Parts and their status==
=== Touchscreen ===
=== Touchscreen ===
Our device comes with 3 different touchscreens - Focaltech FT8720, Focaltech FT8725, and Novatek NT36xxx.
Our device comes with 3 different touchscreens - Focaltech FT8720, Focaltech FT8725, and Novatek NT36xxx.
Line 180: Line 109:
Currently, only the Novatek touchscreen works.
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.
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.


https://gitlab.com/postmarketOS/pmaports/-/issues/2608
https://gitlab.com/postmarketOS/pmaports/-/issues/2608
Line 191: Line 120:


=== Audio ===
=== Audio ===
Needs "aw87xxx_acf.bin" firmware file. The firmware package would later be updated.
Needs "aw87xxx_acf.bin" firmware file. Switching the volume level with volume buttons seems to work.


== Miscellaneous ==
== Miscellaneous ==

Revision as of 21:53, 31 July 2024


Xiaomi Redmi 12
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
Features
Flashing
Works
USB Networking
No data
Internal storage
Works
SD card
Works
Battery
Partial
Screen
Works
Touchscreen
Works
Multimedia
3D Acceleration
Broken
Audio
Broken
Camera
Broken
Camera Flash
Broken
IR TX
Broken
IR RX
Broken
Connectivity
WiFi
Broken
Bluetooth
Broken
GPS
Broken
NFC
Broken
Modem
Calls
Broken
SMS
Broken
Mobile data
Broken
Miscellaneous
FDE
Broken
USB OTG
Works
HDMI/DP
No data
Sensors
Accelerometer
Broken
Magnetometer
Broken
Ambient Light
Broken
Proximity
Broken
Hall Effect
No data
Haptics
Broken
Barometer
No data


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.

https://gitlab.com/postmarketOS/pmaports/-/issues/2608

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


See also