Jump to content

Xiaomi Mi A1 (xiaomi-tissot): Difference between revisions

From postmarketOS Wiki
Tjari (talk | contribs)
m Minor touchup
 
(143 intermediate revisions by 14 users not shown)
Line 3: Line 3:
| name = Mi A1
| name = Mi A1
| codename = xiaomi-tissot
| codename = xiaomi-tissot
| image = File:Xiaomi-tissot.jpg
| image = File:Xiaomi-tissot.png
| imagecaption = Xiaomi Mi A1
| imagecaption = Xiaomi Mi A1
| releaseyear = 2017
| releaseyear = 2017
| originalsoftware = Android 8.1
| originalsoftware = Android (MIUI)
| chipset = Qualcomm MSM8953 Snapdragon 625
| originalversion = 7.1.2
| extendedversion = 9.0 (Linux 3.18.31 - 3.18.120)
| pmoskernel = 6.8.2
| 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 14: Line 18:
| memory = 4 GB
| memory = 4 GB
| architecture = aarch64
| architecture = aarch64
| type = Handset
| 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) -->
| status_usbnet = Y
| status_usbnet = Y
Line 20: Line 26:
| status_screen = Y
| status_screen = Y
| status_wifi = Y
| status_wifi = Y
| status_xwayland = <!-- Showing X11 applications in a Wayland compositor (Weston, KWin, ...) works? -->
| status_fde = Y
| status_fde = <!-- When installing with full disk encryption, can you type in the password with the on screen keyboard? -->
| status_mainline = Y
| status_mainline = <!-- Instead of a Linux kernel fork, it is possible to run mainline. -->
| status_battery = Y
| status_battery = <!-- Charging the battery with charging-sdl is possible -->
| status_3d = Y
| status_3d = <!-- Hardware accelerated 3D graphics (e.g. with freedreno) -->
| status_audio = Y
| status_accel = <!-- The sensor that measures proper acceleration works -->
| status_bluetooth = Y
| status_audio = <!-- Using the device's speakers/headphone jack works -->
| status_camera = N
| status_bluetooth = <!-- It's possible to pair and use other devices via the bluetooth protocol -->
| status_gps = P
| status_camera = <!-- Taking photos and videos works. -->
| status_emmc = Y
| status_gps = <!-- The Global Positioning System sensor works.  -->
| status_mobiledata = P
| status_mobiledata = <!-- Connecting to the Internet via cellular network. -->
| status_sms = Y
| status_sms = <!-- Sending and receiving short messages works as intended. -->
| status_calls = P
| status_calls = <!-- Talking to other people over the cellular network. -->
| status_otg = Y
| status_nfc = -
| status_accel = Y
| status_magnet = Y
| status_light = N
| status_proximity = N
| status_hall = Y
| status_barometer = -
| status_powersensor = -
| status_dvb = -
| status_cameraflash = N
| status_keyboard = -
| status_touchpad = -
| status_usba = -
| status_hdmidp = -
| 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}}


== Contributors ==
'''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.
* Ion Agorria


=== Users owning this device ===
== Maintainer(s) ==
* [[User:JIaxyga|JIaxyga]]
* [[User:Bczeman|Bczeman]]
 
== Users owning this device ==
{{Device owners}}
{{Device owners}}
== Installation ==
* Follow the [[Installation guide]]
<syntaxhighlight lang="shell-session">
$ pmbootstrap init # choose Vendor: qcom Device codename: msm8953
$ pmbootstrap install
$ pmbootstrap flasher flash_lk2nd
$ 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 ===
* '''Stock Fastboot''': Power on the device with both {{Button|Power}} and {{Button|Volume Down}} buttons
* '''lk2nd Fastboot''': Power on the device. After it vibrates, hold {{Button|Volume Down}}
{{note|'''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 {{Button|Power}} and {{Button|Volume Up}} buttons


== Maintainer(s) ==
=== OEM unlock ===
<!-- Only if this device doesn't run on linux-postmarketos yet! -->
First make sure to enable USB debugging [https://developer.android.com/studio/debug/dev-options#enable] and OEM unlock in Android.
<!-- This person needs to be willing to answer questions from users of this device -->
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
</syntaxhighlight>


== How to enter flash mode ==
=== Wipes ===
Reboot and press power down before screen is on
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_b
$ fastboot format:ext4 system_a
$ fastboot format:ext4 system_b
$ fastboot format:ext4 userdata
</syntaxhighlight>


== Installation ==
=== Dual booting ===
<!-- add more sections below as necessary, e.g. Wifi, photos, ... -->
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:
<syntaxhighlight lang="shell-session">
$ fastboot getvar current-slot
</syntaxhighlight>
To switch a slot, run:
<syntaxhighlight lang="shell-session">
$ 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 ==
* Booting from system or userdata
Main:
* Display with Wayland and Xorg: Weston, Plasma, XFCE4, Mate (software rendering)
* USB Networking
* Touchscreen
* Flashing
* USB networking
* Touchscreen - focaltech,ft5435 ([https://github.com/torvalds/linux/blob/master/drivers/input/touchscreen/edt-ft5x06.c edt-ft5x06])
* Reboot/poweroff using command
* Display - [https://github.com/JIaxyga/linux/blob/master/drivers/gpu/drm/panel/panel-ili7807-fhd.c EBBG ili7807(ilitek)] / [https://github.com/JIaxyga/linux/blob/master/drivers/gpu/drm/panel/panel-otm1911-fhd.c tianma otm1911(focal)] / [https://github.com/JIaxyga/linux/blob/master/drivers/gpu/drm/panel/panel-ft8716-fhd.c EBBG ft8716(focal)]
* WiFi - requires firmware and ifconfig up wlan0
* WiFi - WCN3680B ([https://github.com/torvalds/linux/tree/master/drivers/net/wireless/ath/wcn36xx WCN36XX])
* USB OTG/Host
* Xwayland
* FDE
* 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])
* 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])
* Battery
* Charger
* Audio - {{MR|4268|pmaports}}
* SMS
* Calls
* Mobile Data (there are some variants where it is not working)
* USB OTG
* GPS
Other:
* Notification LED - [https://github.com/torvalds/linux/blob/master/drivers/leds/leds-aw2013.c awinic,aw2013]


== What works partially ==
== What does not work ==
Main:
* Proximity 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
* Ir TX
Other:
* Flashlight - [https://github.com/msm8953-mainline/linux/pull/26 qcom,spmi-flash] [https://github.com/JIaxyga/linux/tree/msm8953-test '''Works from here''']
* Keypad backlights
* Haptics
* Fingerprint - fpc,fpc1020 / goodix,gf3208


== What does not work ==
== Downstream ==
* Bluetooth (kernel seems to initialize it)
There is an alternative device port using the downstream kernel, <code>xiaomi-tissot-downstream</code>. It can be selected by entering the name in <code>pmbootstrap init</code>.
* Sound
{{note|'''Note:''' The downstream kernel is entirely '''unmaintained''' and only intended for testing features for the mainline kernel.}}
* Modem/baseband
 
== Serial debugging (UART) ==
<gallery>
File:Xiaomi-tissot-uart.png
</gallery>
See also: [[Serial debugging]]


== See also ==
== See also ==
* {{MR|165|pmaports}} Initial merge request
* [https://github.com/msm8953-mainline/linux Kernel source]
* {{issue|177}} WIP issues
* {{Kernel package|postmarketos-qcom-msm8953|community}}
* {{issue|173}} Feature for dual-boot
* {{Device package|qcom-msm8953|community}}
* {{Device package|xiaomi-tissot}}
* {{Firmware package|qcom-msm8953|community}}
* {{Kernel package|xiaomi-tissot}}
* [https://gitlab.postmarketos.org/postmarketOS/pmaports/-/tree/master/main/lk2nd lk2nd (build script)]
* [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://drive.google.com/file/d/1iActc8xfKr5esGW2CdH_xOtn4xGzharX  Schematic Mi A1]
* [[Qualcomm Snapdragon 450/625/626/632 (MSM8953)|MSM8953 mainlining status]]
[[Category:Devices with known UART pinout]]
__forcetoc__

Latest revision as of 13:16, 2 February 2025

Xiaomi Mi A1
Xiaomi Mi A1
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
Features
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

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

$ pmbootstrap init # choose Vendor: qcom Device codename: msm8953
$ pmbootstrap install
$ pmbootstrap flasher flash_lk2nd
$ pmbootstrap flasher flash_rootfs
Note 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 Power and Volume Down buttons
  • lk2nd Fastboot: Power on the device. After it vibrates, hold Volume Down
Note 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 Power and Volume Up buttons

OEM unlock

First make sure to enable USB debugging [1] and OEM unlock in Android. Then with device powered off, hold down Volume Down and Power 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:

Other:

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:

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 Note: The downstream kernel is entirely unmaintained and only intended for testing features for the mainline kernel.

Serial debugging (UART)

See also: Serial debugging

See also