Xiaomi Mi A1 (xiaomi-tissot): Difference between revisions
mNo edit summary |
m Minor touchup |
||
(27 intermediate revisions by 9 users not shown) | |||
Line 6: | Line 6: | ||
| imagecaption = Xiaomi Mi A1 | | imagecaption = Xiaomi Mi A1 | ||
| releaseyear = 2017 | | releaseyear = 2017 | ||
| originalsoftware = Android | | originalsoftware = Android (MIUI) | ||
| originalversion = 7.1.2 | | originalversion = 7.1.2 | ||
| extendedversion = 9.0 (Linux 3.18.31 - 3.18.120) | | extendedversion = 9.0 (Linux 3.18.31 - 3.18.120) | ||
| pmoskernel = | | pmoskernel = 6.8.2 | ||
| chipset = Qualcomm Snapdragon 625 (MSM8953) | | chipset = Qualcomm Snapdragon 625 (MSM8953) | ||
| cpu = Octa-core 2.0 GHz Cortex-A53 | | cpu = Octa-core 2.0 GHz Cortex-A53 | ||
| category = community | |||
| gpu = Adreno 506 | | gpu = Adreno 506 | ||
| storage = 32 GB / 64 GB | | storage = 32 GB / 64 GB | ||
Line 17: | Line 18: | ||
| memory = 4 GB | | memory = 4 GB | ||
| architecture = aarch64 | | architecture = aarch64 | ||
| type = | | type = Handset | ||
| whet_dhry = 3703.7 | | whet_dhry = 3703.7 | ||
<!-- the following status_* questions should be answered with Y - yes, P - partial, N - no, or left blank (for untested or unknown) --> | <!-- the following status_* questions should be answered with Y - yes, P - partial, N - no, or left blank (for untested or unknown) --> | ||
Line 25: | Line 26: | ||
| status_screen = Y | | status_screen = Y | ||
| status_wifi = Y | | status_wifi = Y | ||
| status_fde = Y | | status_fde = Y | ||
| status_mainline = Y | | status_mainline = Y | ||
| status_battery = Y | | status_battery = Y | ||
| status_3d = Y | | status_3d = Y | ||
| status_audio = Y | |||
| status_bluetooth = Y | |||
| status_camera = N | |||
| status_gps = P | |||
| status_emmc = Y | |||
| status_mobiledata = P | |||
| status_sms = Y | |||
| status_calls = P | |||
| status_otg = Y | |||
| status_nfc = - | |||
| status_accel = Y | | status_accel = Y | ||
| status_magnet = Y | | status_magnet = Y | ||
| status_light = N | | status_light = N | ||
| status_proximity = N | | status_proximity = N | ||
| status_hall = Y | | status_hall = Y | ||
| | | status_barometer = - | ||
| | | status_powersensor = - | ||
| | | status_dvb = - | ||
| status_cameraflash = N | |||
| status_keyboard = - | |||
| | | status_touchpad = - | ||
| | |||
| | |||
| status_usba = - | | status_usba = - | ||
| status_hdmidp = - | | status_hdmidp = - | ||
| status_irtx = N | | status_irtx = N | ||
| | | status_irrx = - | ||
| status_sdcard = Y | |||
| status_stylus = - | |||
| status_haptics = N | |||
| status_ethernet = - | |||
| status_fossbootloader = N | |||
| booting = Y | | booting = Y | ||
}}{{Based on SoC|Qualcomm_Snapdragon_450/625/626/632_(MSM8953)|Snapdragon 625}} | }}{{Based on SoC|Qualcomm_Snapdragon_450/625/626/632_(MSM8953)|Snapdragon 625}} | ||
'''Xiaomi Mi A1 (xiaomi-tissot)''' is [[Xiaomi Mi 5X (xiaomi-tiffany)]], but with [https://en.wikipedia.org/wiki/Android_One Android One] on board and [[Android AB Slots|A/B]] structure. On the Mi A1, unlike the Mi 5X, you do not need to link your Mi Account and wait 15 days (360 hours) to unlock the bootloader. | |||
== | == Maintainer(s) == | ||
* [[User:JIaxyga|JIaxyga]] | * [[User:JIaxyga|JIaxyga]] | ||
* [[User: | * [[User:Bczeman|Bczeman]] | ||
== Users owning this device == | == Users owning this device == | ||
Line 65: | Line 73: | ||
== Installation == | == Installation == | ||
* Follow the [[Installation guide]] | * Follow the [[Installation guide]] | ||
<syntaxhighlight lang="shell-session"> | |||
$ pmbootstrap init # choose Vendor: qcom Device codename: msm8953 | |||
$ pmbootstrap install | |||
$ pmbootstrap install | |||
$ pmbootstrap flasher flash_lk2nd | $ pmbootstrap flasher flash_lk2nd | ||
$ pmbootstrap flasher flash_rootfs -- | $ pmbootstrap flasher flash_rootfs | ||
</ | </syntaxhighlight> | ||
{{Note|'''Note:''' pmbootstrap will install the [[lk2nd]] bootloader.}} | |||
=== Pre-built images === | |||
<syntaxhighlight lang="shell-session"> | |||
$ fastboot flash boot qcom-msm8953-lk2nd.img | |||
$ fastboot flash userdata qcom-msm8953.img # You can use system also but userdata is recomended | |||
</syntaxhighlight> | |||
Or | |||
<syntaxhighlight lang="shell-session"> | |||
$ fastboot flash boot_a qcom-msm8953-lk2nd.img # You can use boot_b if you want | |||
$ fastboot flash system_a qcom-msm8953.img # system_b | |||
$ fastboot set_active a # b | |||
</syntaxhighlight> | |||
=== How to enter flash mode === | === How to enter flash mode === | ||
Line 82: | Line 102: | ||
First make sure to enable USB debugging [https://developer.android.com/studio/debug/dev-options#enable] and OEM unlock in Android. | First make sure to enable USB debugging [https://developer.android.com/studio/debug/dev-options#enable] and OEM unlock in Android. | ||
Then with device powered off, hold down {{button|Volume Down}} and {{button|Power}} buttons simultaneously for a few seconds, until Fastboot Mode screen appears. Plug in USB cable and do: | Then with device powered off, hold down {{button|Volume Down}} and {{button|Power}} buttons simultaneously for a few seconds, until Fastboot Mode screen appears. Plug in USB cable and do: | ||
< | <syntaxhighlight lang="shell-session"> | ||
$ fastboot oem unlock | $ fastboot oem unlock | ||
</ | </syntaxhighlight> | ||
=== Wipes === | === Wipes === | ||
Wipes work very strangely. Fastboot says that the wipes were successfully completed, but the partitions are not cleared. Therefore, the only way out is to make wipes from twrp or use formatting. | Wipes work very strangely. Fastboot says that the wipes were successfully completed, but the partitions are not cleared. Therefore, the only way out is to make wipes from twrp or use formatting. | ||
< | <syntaxhighlight lang="shell-session"> | ||
$ fastboot format:ext4 boot_a | $ fastboot format:ext4 boot_a | ||
$ fastboot format:ext4 boot_b | $ fastboot format:ext4 boot_b | ||
Line 94: | Line 114: | ||
$ fastboot format:ext4 system_b | $ fastboot format:ext4 system_b | ||
$ fastboot format:ext4 userdata | $ fastboot format:ext4 userdata | ||
</ | </syntaxhighlight> | ||
=== Dual booting === | === Dual booting === | ||
We can use the a/b markup feature for dual booting. In this case, we will have the kernel in the boot_a (or boot_b) section and the rootfs will be located in the same system_a (or system_b) slot. The opposite slot will use Android | We can use the a/b markup feature for dual booting. In this case, we will have the kernel in the boot_a (or boot_b) section and the rootfs will be located in the same system_a (or system_b) slot. The opposite slot will use Android.<br> | ||
To find out the active slot, run in fastboot: | To find out the active slot, run in fastboot: | ||
< | <syntaxhighlight lang="shell-session"> | ||
$ fastboot getvar current-slot | $ fastboot getvar current-slot | ||
</ | </syntaxhighlight> | ||
To switch a slot, run: | To switch a slot, run: | ||
< | <syntaxhighlight lang="shell-session"> | ||
$ fastboot set_active a / b | $ fastboot set_active a / b | ||
</ | </syntaxhighlight> | ||
E.g., if your Android ROM uses slot a, flash lk2nd to slot b: | |||
<syntaxhighlight lang="shell-session"> | |||
$ pmbootstrap flasher flash_lk2nd --partition boot_b | |||
</syntaxhighlight> | |||
The system partition severely limits the available space. So, you can install the rootfs to an [https://wiki.postmarketos.org/wiki/Pmbootstrap#SD_card SD card]. | |||
== What works == | == What works == | ||
Line 118: | Line 143: | ||
* Bluetooth - WCN3680B ([https://github.com/torvalds/linux/tree/master/drivers/net/wireless/ath/wcn36xx WCN36XX]) | * Bluetooth - WCN3680B ([https://github.com/torvalds/linux/tree/master/drivers/net/wireless/ath/wcn36xx WCN36XX]) | ||
* Hall Effect Sensor - BU52061NVX ([https://github.com/torvalds/linux/blob/master/drivers/input/keyboard/gpio_keys.c gpio-keys]) | * Hall Effect Sensor - BU52061NVX ([https://github.com/torvalds/linux/blob/master/drivers/input/keyboard/gpio_keys.c gpio-keys]) | ||
* Accelerometer - bosch,bmi120 ([https://github.com/torvalds/linux/blob/master/drivers/iio/imu/bmi160 bosch,bmi160]) | |||
* Accelerometer - bosch,bmi120 ([https://github.com/torvalds/linux/blob/master/drivers/iio/imu/bmi160 bosch,bmi160]) | |||
* Magnetometer - AKM, AK09918 ([https://github.com/torvalds/linux/blob/master/drivers/iio/magnetometer/ak8975.c asahi-kasei,ak8975]) | * Magnetometer - AKM, AK09918 ([https://github.com/torvalds/linux/blob/master/drivers/iio/magnetometer/ak8975.c asahi-kasei,ak8975]) | ||
* Battery | * Battery | ||
* Audio - | * Charger | ||
* Audio - {{MR|4268|pmaports}} | |||
* SMS | |||
* Calls | |||
* Mobile Data (there are some variants where it is not working) | |||
* USB OTG | |||
* GPS | |||
Other: | Other: | ||
* Notification LED - [https://github.com/torvalds/linux/blob/master/drivers/leds/leds-aw2013.c awinic,aw2013] | * Notification LED - [https://github.com/torvalds/linux/blob/master/drivers/leds/leds-aw2013.c awinic,aw2013] | ||
Line 131: | Line 161: | ||
* Ambient Light Sensor - LiteOn, LTR579 ([https://github.com/torvalds/linux/blob/master/drivers/iio/light/ltr501.c liteon,ltr501?]) | * Ambient Light Sensor - LiteOn, LTR579 ([https://github.com/torvalds/linux/blob/master/drivers/iio/light/ltr501.c liteon,ltr501?]) | ||
* Camera - Front Cam: samsung_s5k5e8 Back Cam: ov_12a10 Back Sub Cam: ov_13880 | * Camera - Front Cam: samsung_s5k5e8 Back Cam: ov_12a10 Back Sub Cam: ov_13880 | ||
* Ir TX | * Ir TX | ||
Other: | Other: | ||
* Flashlight - [https://github.com/msm8953-mainline/linux/pull/26 qcom,spmi-flash] [https://github.com/JIaxyga/linux/tree/msm8953-test '''Works from here'''] | * Flashlight - [https://github.com/msm8953-mainline/linux/pull/26 qcom,spmi-flash] [https://github.com/JIaxyga/linux/tree/msm8953-test '''Works from here'''] | ||
Line 156: | Line 180: | ||
== See also == | == See also == | ||
* [https://github.com/msm8953-mainline/linux Kernel source] | * [https://github.com/msm8953-mainline/linux Kernel source] | ||
* {{Kernel package|postmarketos-qcom-msm8953}} | * {{Kernel package|postmarketos-qcom-msm8953|community}} | ||
* {{Device package| | * {{Device package|qcom-msm8953|community}} | ||
* {{Firmware package| | * {{Firmware package|qcom-msm8953|community}} | ||
* [https://gitlab. | * [https://gitlab.postmarketos.org/postmarketOS/pmaports/-/tree/master/main/lk2nd lk2nd (build script)] | ||
* [https://github.com/ | * [https://github.com/msm8916-mainline/lk2nd lk2nd (source code)] | ||
* [https://dl.twrp.me/tissot/twrp-3.3.0-1-tissot.img twrp-3.3.0-1-tissot.img] | * [https://dl.twrp.me/tissot/twrp-3.3.0-1-tissot.img twrp-3.3.0-1-tissot.img] | ||
* [https://drive.google.com/file/d/1iActc8xfKr5esGW2CdH_xOtn4xGzharX Schematic Mi A1] | * [https://drive.google.com/file/d/1iActc8xfKr5esGW2CdH_xOtn4xGzharX Schematic Mi A1] | ||
* [[Qualcomm Snapdragon 450/625/626/632 (MSM8953)|MSM8953 mainlining status]] | * [[Qualcomm Snapdragon 450/625/626/632 (MSM8953)|MSM8953 mainlining status]] | ||
[[Category:Devices with known UART pinout]] | |||
__forcetoc__ | __forcetoc__ |
Latest revision as of 13:16, 2 February 2025
![]() Xiaomi Mi A1 | |
Manufacturer | Xiaomi |
---|---|
Name | Mi A1 |
Codename | xiaomi-tissot |
Released | 2017 |
Type | handset |
Hardware | |
Chipset | Qualcomm Snapdragon 625 (MSM8953) |
CPU | Octa-core 2.0 GHz Cortex-A53 |
GPU | Adreno 506 |
Display | 1080x1920 IPS LCD |
Storage | 32 GB / 64 GB |
Memory | 4 GB |
Architecture | aarch64 |
Software | |
Original software | Android (MIUI) |
Original version | 7.1.2 |
Extended version | 9.0 (Linux 3.18.31 - 3.18.120) |
FOSS bootloader | no |
postmarketOS | |
Category | community |
Pre-built images | yes |
postmarketOS kernel | 6.8.2 |
Unixbench Whet/Dhry score | 3703.7 |
Flashing |
Works |
---|---|
USB Networking |
Works |
Internal storage |
Works |
SD card |
Works |
Battery |
Works |
Screen |
Works |
Touchscreen |
Works |
Multimedia | |
3D Acceleration |
Works |
Audio |
Works |
Camera |
Broken |
Camera Flash |
Broken |
IR TX |
Broken |
Connectivity | |
WiFi |
Works |
Bluetooth |
Works |
GPS |
Partial |
Modem | |
Calls |
Partial |
SMS |
Works |
Mobile data |
Partial |
Miscellaneous | |
FDE |
Works |
USB OTG |
Works |
Sensors | |
Accelerometer |
Works |
Magnetometer |
Works |
Ambient Light |
Broken |
Proximity |
Broken |
Hall Effect |
Works |
Haptics |
Broken |
This device is based on the Snapdragon 625. See the SoC page for common tips, guides and troubleshooting steps |
Xiaomi Mi A1 (xiaomi-tissot) is Xiaomi Mi 5X (xiaomi-tiffany), but with Android One on board and A/B structure. On the Mi A1, unlike the Mi 5X, you do not need to link your Mi Account and wait 15 days (360 hours) to unlock the bootloader.
Maintainer(s)
Users owning this device
- AAT596 (Notes: LineageOS 18.1)
- Augis154 (Notes: PMOS with Plasma mobile)
- Bczeman (Notes: Has 2 with replacement display 1 with orignal display)
- Dferrg
- Hiddener (Notes: pmOS + LineageOS, new battery from woyax/deji, new screen from replacebase)
- IonAgorria (Notes: LineageOS - OK)
- Jenneron
- JIaxyga (Notes: 4/64)
- Kevinwidjaja21 (Notes: Stuck in fastboot.)
- Miki (Notes: cracked but working display, broken power button)
- Netman (Notes: Dead battery, cracked screen (got 2 screens, replaced & og, both cracked))
- Paradox (Notes: Daily driver. Goodix, Nohon battery, EBBG/ILITEK)
- Tfuxu (Notes: Flashed recently with LineageOS 18.1)
- Ungeskriptet
Installation
- Follow the Installation guide
$ pmbootstrap init # choose Vendor: qcom Device codename: msm8953
$ pmbootstrap install
$ pmbootstrap flasher flash_lk2nd
$ pmbootstrap flasher flash_rootfs
Note: pmbootstrap will install the lk2nd bootloader. |
Pre-built images
$ fastboot flash boot qcom-msm8953-lk2nd.img
$ fastboot flash userdata qcom-msm8953.img # You can use system also but userdata is recomended
Or
$ fastboot flash boot_a qcom-msm8953-lk2nd.img # You can use boot_b if you want
$ fastboot flash system_a qcom-msm8953.img # system_b
$ fastboot set_active a # b
How to enter flash mode
- Stock Fastboot: Power on the device with both and buttons
- lk2nd Fastboot: Power on the device. After it vibrates, hold
Note: Pressing the keys too early will cause the stock bootloader to handle the key combination. You will end up in the wrong Fastboot interface. |
- Recovery: Power on the device with both and buttons
OEM unlock
First make sure to enable USB debugging [1] and OEM unlock in Android. Then with device powered off, hold down and buttons simultaneously for a few seconds, until Fastboot Mode screen appears. Plug in USB cable and do:
$ fastboot oem unlock
Wipes
Wipes work very strangely. Fastboot says that the wipes were successfully completed, but the partitions are not cleared. Therefore, the only way out is to make wipes from twrp or use formatting.
$ fastboot format:ext4 boot_a
$ fastboot format:ext4 boot_b
$ fastboot format:ext4 system_a
$ fastboot format:ext4 system_b
$ fastboot format:ext4 userdata
Dual booting
We can use the a/b markup feature for dual booting. In this case, we will have the kernel in the boot_a (or boot_b) section and the rootfs will be located in the same system_a (or system_b) slot. The opposite slot will use Android.
To find out the active slot, run in fastboot:
$ fastboot getvar current-slot
To switch a slot, run:
$ fastboot set_active a / b
E.g., if your Android ROM uses slot a, flash lk2nd to slot b:
$ pmbootstrap flasher flash_lk2nd --partition boot_b
The system partition severely limits the available space. So, you can install the rootfs to an SD card.
What works
Main:
- USB Networking
- Flashing
- Touchscreen - focaltech,ft5435 (edt-ft5x06)
- Display - EBBG ili7807(ilitek) / tianma otm1911(focal) / EBBG ft8716(focal)
- WiFi - WCN3680B (WCN36XX)
- Xwayland
- FDE
- Bluetooth - WCN3680B (WCN36XX)
- Hall Effect Sensor - BU52061NVX (gpio-keys)
- Accelerometer - bosch,bmi120 (bosch,bmi160)
- Magnetometer - AKM, AK09918 (asahi-kasei,ak8975)
- Battery
- Charger
- Audio - pmaports!4268
- SMS
- Calls
- Mobile Data (there are some variants where it is not working)
- USB OTG
- GPS
Other:
- Notification LED - awinic,aw2013
What does not work
Main:
- Proximity Sensor - LiteOn, LTR579 (liteon,ltr501?)
- Ambient Light Sensor - LiteOn, LTR579 (liteon,ltr501?)
- Camera - Front Cam: samsung_s5k5e8 Back Cam: ov_12a10 Back Sub Cam: ov_13880
- Ir TX
Other:
- Flashlight - qcom,spmi-flash Works from here
- Keypad backlights
- Haptics
- Fingerprint - fpc,fpc1020 / goodix,gf3208
Downstream
There is an alternative device port using the downstream kernel, xiaomi-tissot-downstream
. It can be selected by entering the name in pmbootstrap init
.
Note: The downstream kernel is entirely unmaintained and only intended for testing features for the mainline kernel. |
Serial debugging (UART)
See also: Serial debugging