Lenovo Xiaoxin Pad Pro 2021 (lenovo-j716f): Difference between revisions
Ungeskriptet (talk | contribs) m Fix typo |
Ungeskriptet (talk | contribs) m SD card works |
||
(34 intermediate revisions by 2 users not shown) | |||
Line 5: | Line 5: | ||
| name = Xiaoxin Pad Pro 2021 | | name = Xiaoxin Pad Pro 2021 | ||
| codename = lenovo-j716f | | codename = lenovo-j716f | ||
| model = TB-J716F | |||
| image = File:Lenovo-tb716f.png | | image = File:Lenovo-tb716f.png | ||
| imagecaption = Lenovo Xiaoxin Pad Pro 2021 running LineageOS 18.1 GSI with Termux open showing neofetch | | imagecaption = Lenovo Xiaoxin Pad Pro 2021 running LineageOS 18.1 GSI with Termux open showing neofetch | ||
| releaseyear = 2021 | | releaseyear = 2021 | ||
| originalsoftware = Android | | originalsoftware = Android (ZUI) | ||
| originalversion = | | originalversion = 11 (ZUI 12) | ||
| chipset = Qualcomm Snapdragon 870 (SM8250-AC) | | chipset = Qualcomm Snapdragon 870 (SM8250-AC) | ||
| cpu = Octa-core (1x3.2 GHz Kryo 585 & 3x2.42 GHz Kryo 585 & 4x1.80 GHz Kryo 585) | | cpu = Octa-core (1x3.2 GHz Kryo 585 & 3x2.42 GHz Kryo 585 & 4x1.80 GHz Kryo 585) | ||
Line 20: | Line 21: | ||
| status_usbnet = Y | | status_usbnet = Y | ||
| status_flashing = Y | | status_flashing = Y | ||
| status_touch = | | status_touch = N | ||
| status_screen = P | | status_screen = P | ||
| status_wifi = | | status_wifi = | ||
Line 48: | Line 49: | ||
| status = Mainline in progress | | status = Mainline in progress | ||
| booting = yes | | booting = yes | ||
| packaged = no | |||
}} | }} | ||
Line 64: | Line 66: | ||
== Unlocking the bootloader == | == Unlocking the bootloader == | ||
See [[Unlocking Bootloaders/Lenovo ZUI]] | |||
=== Alternative method === | === Alternative method === | ||
Line 88: | Line 81: | ||
=== Mainline status === | === Mainline status === | ||
{|class="wikitable feature-colors" | {|class="wikitable feature-colors" style="display: block; overflow-x: auto" | ||
! Component !! Model !! Status !! Notes | ! Component !! Model !! Status !! Notes | ||
|- | |- | ||
| SoC || Qualcomm SM8250-AC Snapdragon 870 || Y || | | SoC || Qualcomm SM8250-AC Snapdragon 870 || Y || | ||
|- | |- | ||
| | | UFS || Kioxia THGJFAT0T44BAILB || Y || | ||
|- | |||
| SD card || - || Y || | |||
|- | |||
| Display || EDO (EverDisplay Optronics) EB50QBC73.A OLED panel; Raydium RM69380 driver IC || Y || Dual DSI, [https://web.archive.org/web/20231121140510/https://dutch.kadidisplay.com/photo/kadidisplay/document/25216/EB50QBC73.A_.pdf Panel datasheet], [https://archive.org/download/raydium-datasheets/RM69700%20Datasheet.pdf Datasheet for a similar Driver IC] | |||
|- | |||
| Touchscreen || rowspan = 2 | Goodix GT7385P || Y || [https://web.archive.org/web/20231121140659/https://www.szzxv.com/static/upload/file/20220330/1648625895372915.pdf Datasheet in Chinese]. Using downstream driver for now | |||
|- | |- | ||
| | | Pen input || N || Compatible with MPP 1.51 pens | ||
|- | |- | ||
| | | Touchpad || rowspan = 2 | hid-over-i2c || Y || rowspan = 2 | Available through detachable keyboard only | ||
|- | |- | ||
| | | Keyboard || Y | ||
|- | |- | ||
| | | rowspan = 3 | Audio || Cirrus CS35L41 || N || 4x Speaker Amp, one for each speaker | ||
|- | |- | ||
| | | Everest-Semi ES7210 || N || Microphone audio ADC | ||
|- | |- | ||
| | | DSP Group DBMD8 || N || Voice processor, SPI | ||
|- | |- | ||
| | | rowspan = 2 | Charging || Qualcomm SMB1390 || N || | ||
|- | |- | ||
| | | Halo HL6111R || N || According to i2cdetect, usage unknown | ||
|- | |- | ||
| Buttons || GPIO || Y || | | Buttons || GPIO || Y || | ||
|- | |- | ||
| USB-C | | rowspan = 5 | USB-C || USB 3.0 & USB 2.0 || Y || | ||
|- | |||
| Role switching || Y || | |||
|- | |||
| onsemi NB7VPQ904M DP redriver || N || addr: 0x19, bus: 0x990000 | |||
|- | |||
| FSA4480 || N || addr: 0x43, bus: 0x884000 | |||
|- | |||
| VBUS out || N || | |||
|- | |||
| Fuel gauge || Texas Instruments bq27541 || Y || addr: 0x55, bus: 0x98c000 | |||
|- | |- | ||
| | | FM Tuner || RichWave RTC6226 || N || According to i2cdetect. Tablet does not even have a headphone jack? | ||
|- | |- | ||
| Ambient light sensor || Lite-On LTR-308 || N || | | Ambient light sensor || Lite-On LTR-308 || N || | ||
Line 122: | Line 131: | ||
|- | |- | ||
| Magnetometer || AKM ak0991x || N || | | Magnetometer || AKM ak0991x || N || | ||
|- | |||
| Wi-Fi || Qualcomm QCA6390 || N || | |||
|- | |||
| Fingerprint || Goodix || N || | |||
|} | |} | ||
Line 139: | Line 152: | ||
| i2c15 || i2c4 || 0x884000 | | i2c15 || i2c4 || 0x884000 | ||
|} | |} | ||
=== Downstream GPIO table === | |||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: auto"> | |||
<code>p11_pro_plus:/ # cat /sys/kernel/debug/gpio</code> | |||
<div class="mw-collapsible-content"> | |||
<pre> | |||
gpiochip4: GPIOs 1072-1075, parent: platform/c440000.qcom,spmi:qcom,pm8009@a:pinctrl@c000, c440000.qcom,spmi:qcom,pm8009@a:pinctrl@c000: | |||
gpio1 : out normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpio2 : in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpio3 : in normal vin-1 no pull push-pull high high atest-1 dtest-0 | |||
gpio4 : in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpiochip3: GPIOs 1076-1084, parent: platform/c440000.qcom,spmi:qcom,pm8150l@4:pinctrl@c000, c440000.qcom,spmi:qcom,pm8150l@4:pinctrl@c000: | |||
gpio1 : in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpio3 : in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpio4 : in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpio5 : in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpio6 : in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpio7 : in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpio8 : in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpio10: in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpio11: in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpiochip2: GPIOs 1085-1093, parent: platform/c440000.qcom,spmi:qcom,pm8150b@2:pinctrl@c000, c440000.qcom,spmi:qcom,pm8150b@2:pinctrl@c000: | |||
gpio1 : in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpio2 : in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpio5 : out normal vin-1 no pull push-pull low low atest-1 dtest-0 | |||
gpio6 : in normal vin-0 pull-up 30uA push-pull high high atest-1 dtest-0 | |||
gpio7 : in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpio8 : in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpio9 : out func1 vin-0 no pull open-source low high atest-1 dtest-0 | |||
gpio10: out func1 vin-0 no pull open-drain low high atest-1 dtest-0 | |||
gpio12: in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpiochip1: GPIOs 1094-1099, parent: platform/c440000.qcom,spmi:qcom,pm8150@0:pinctrl@c000, c440000.qcom,spmi:qcom,pm8150@0:pinctrl@c000: | |||
gpio1 : in normal vin-0 pull-up 30uA push-pull high high atest-1 dtest-0 | |||
gpio3 : in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpio6 : in normal vin-1 pull-up 30uA push-pull high high atest-1 dtest-0 | |||
gpio7 : in normal vin-0 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpio9 : out normal vin-1 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpio10: in normal vin-1 pull-down 10uA push-pull low high atest-1 dtest-0 | |||
gpiochip0: GPIOs 1100-1279, parent: platform/f000000.pinctrl, f000000.pinctrl: | |||
gpio0 : in low func0 2mA pull down | |||
gpio1 : in low func0 2mA pull down | |||
gpio2 : in low func0 2mA pull down | |||
gpio3 : in low func0 2mA pull down | |||
gpio4 : in high func0 2mA no pull | |||
gpio5 : in high func0 2mA no pull | |||
gpio6 : in low func0 2mA pull down | |||
gpio7 : in low func0 2mA pull down | |||
gpio8 : in high func0 2mA no pull | |||
gpio9 : in high func0 2mA no pull | |||
gpio10 : in high func0 2mA pull down | |||
gpio11 : in low func0 2mA pull down | |||
gpio12 : in low func0 2mA pull down | |||
gpio13 : in low func0 2mA pull down | |||
gpio14 : in low func0 2mA pull down | |||
gpio15 : in high func0 2mA pull down | |||
gpio16 : in high func0 2mA no pull | |||
gpio17 : in low func0 2mA pull down | |||
gpio18 : in high func0 2mA pull up | |||
gpio19 : in low func0 2mA pull down | |||
gpio20 : out low func0 2mA pull down | |||
gpio21 : out low func0 2mA pull down | |||
gpio22 : in low func0 2mA pull down | |||
gpio23 : in low func0 2mA pull down | |||
gpio24 : in low func0 2mA no pull | |||
gpio25 : in low func0 2mA pull down | |||
gpio26 : in low func0 2mA pull down | |||
gpio27 : in low func0 2mA pull down | |||
gpio28 : in low func0 6mA no pull | |||
gpio29 : in low func0 6mA no pull | |||
gpio30 : in low func0 6mA no pull | |||
gpio31 : in low func0 6mA no pull | |||
gpio32 : in low func0 2mA pull down | |||
gpio33 : in low func0 2mA pull down | |||
gpio34 : out low func1 2mA pull up | |||
gpio35 : in low func1 2mA pull down | |||
gpio36 : in low func0 2mA no pull | |||
gpio37 : in low func0 2mA no pull | |||
gpio38 : in low func0 2mA pull down | |||
gpio39 : in low func0 2mA pull down | |||
gpio44 : in low func0 2mA no pull | |||
gpio45 : in low func0 2mA no pull | |||
gpio46 : out low func0 16mA pull up | |||
gpio47 : in low func0 2mA pull down | |||
gpio48 : in low func0 2mA pull down | |||
gpio49 : in low func0 2mA pull down | |||
gpio50 : in low func0 2mA pull down | |||
gpio51 : out low func0 2mA pull down | |||
gpio52 : in low func0 2mA pull down | |||
gpio53 : in low func0 2mA pull down | |||
gpio54 : in low func0 2mA pull down | |||
gpio55 : in low func0 2mA pull down | |||
gpio56 : in low func0 2mA pull down | |||
gpio57 : in low func0 2mA pull down | |||
gpio58 : in low func0 2mA pull down | |||
gpio59 : in low func0 2mA pull down | |||
gpio60 : out high func0 16mA pull up | |||
gpio61 : out low func0 8mA no pull | |||
gpio62 : in low func0 2mA pull down | |||
gpio63 : in low func0 2mA pull down | |||
gpio64 : in low func0 2mA pull down | |||
gpio65 : in low func0 2mA pull down | |||
gpio66 : in low func1 2mA no pull | |||
gpio67 : in low func0 2mA pull down | |||
gpio68 : in low func0 2mA pull down | |||
gpio69 : in low func0 2mA no pull | |||
gpio70 : in low func0 2mA pull down | |||
gpio71 : in high func0 2mA no pull | |||
gpio72 : in low func0 2mA pull down | |||
gpio73 : in high func0 2mA no pull | |||
gpio74 : in low func0 2mA pull down | |||
gpio75 : out high func0 8mA pull up | |||
gpio76 : in low func0 2mA pull down | |||
gpio77 : in high func0 2mA pull up | |||
gpio78 : in low func0 2mA pull down | |||
gpio79 : out low func0 2mA pull down | |||
gpio80 : in high func0 2mA pull up | |||
gpio81 : in high func0 2mA pull up | |||
gpio82 : out low func0 2mA pull down | |||
gpio83 : in low func0 2mA pull up | |||
gpio84 : in high func0 2mA pull up | |||
gpio85 : out low func0 2mA pull down | |||
gpio86 : in low func1 2mA pull up | |||
gpio87 : in high func0 2mA pull up | |||
gpio88 : in low func0 2mA pull down | |||
gpio89 : in low func0 2mA pull down | |||
gpio90 : in low func0 2mA pull down | |||
gpio91 : in high func0 2mA pull up | |||
gpio92 : in low func0 2mA pull down | |||
gpio93 : in low func0 2mA pull down | |||
gpio94 : in low func0 2mA pull down | |||
gpio95 : in low func0 2mA pull down | |||
gpio96 : in low func0 2mA pull down | |||
gpio97 : in low func0 2mA pull down | |||
gpio98 : in low func0 2mA pull down | |||
gpio99 : in low func0 2mA pull down | |||
gpio100 : in low func0 2mA pull down | |||
gpio101 : in low func0 2mA pull down | |||
gpio102 : in low func0 2mA pull down | |||
gpio103 : in low func0 2mA pull down | |||
gpio104 : in low func0 2mA pull down | |||
gpio105 : in low func0 2mA pull down | |||
gpio106 : in low func0 2mA pull down | |||
gpio107 : in low func0 2mA pull down | |||
gpio108 : in low func0 2mA pull down | |||
gpio109 : in low func0 2mA pull down | |||
gpio110 : in low func0 2mA pull down | |||
gpio111 : in low func0 2mA pull down | |||
gpio112 : in low func0 2mA pull down | |||
gpio113 : in low func0 2mA pull down | |||
gpio114 : in low func0 2mA pull down | |||
gpio115 : in low func0 2mA pull down | |||
gpio116 : in low func0 2mA pull down | |||
gpio117 : in low func0 2mA pull down | |||
gpio118 : in low func0 2mA pull down | |||
gpio119 : in high func0 2mA no pull | |||
gpio120 : in high func0 2mA no pull | |||
gpio121 : in low func0 2mA pull down | |||
gpio122 : in low func0 2mA pull down | |||
gpio123 : in low func0 2mA pull down | |||
gpio124 : in low func0 2mA pull down | |||
gpio125 : in low func0 2mA pull down | |||
gpio126 : in low func0 2mA pull down | |||
gpio127 : in low func0 2mA pull down | |||
gpio128 : in low func0 2mA pull down | |||
gpio129 : in low func0 2mA no pull | |||
gpio130 : in low func0 2mA pull down | |||
gpio131 : in low func0 2mA pull down | |||
gpio132 : in low func0 2mA pull down | |||
gpio133 : in low func0 2mA pull down | |||
gpio134 : in low func0 2mA pull down | |||
gpio135 : in low func0 2mA pull down | |||
gpio136 : in low func0 2mA pull down | |||
gpio137 : in low func0 2mA pull down | |||
gpio138 : in low func0 2mA pull down | |||
gpio139 : in low func0 2mA pull down | |||
gpio140 : in low func0 2mA pull down | |||
gpio141 : in low func0 2mA pull down | |||
gpio142 : in low func0 2mA pull down | |||
gpio143 : in low func0 2mA pull down | |||
gpio144 : in low func0 2mA pull down | |||
gpio145 : in low func0 2mA pull down | |||
gpio146 : in low func0 2mA pull down | |||
gpio147 : in low func0 2mA pull down | |||
gpio148 : in low func0 2mA pull down | |||
gpio149 : in low func0 2mA pull down | |||
gpio150 : in low func0 2mA pull down | |||
gpio151 : in low func0 2mA pull down | |||
gpio152 : in low func0 2mA pull down | |||
gpio153 : in low func0 2mA pull down | |||
gpio154 : in low func0 2mA pull down | |||
gpio155 : in low func0 2mA pull down | |||
gpio156 : in low func0 2mA pull down | |||
gpio157 : in low func0 2mA pull down | |||
gpio158 : in low func0 2mA pull down | |||
gpio159 : in low func0 2mA pull down | |||
gpio160 : in low func0 2mA pull down | |||
gpio161 : in low func0 2mA pull down | |||
gpio162 : in low func0 2mA pull down | |||
gpio163 : in low func0 2mA pull down | |||
gpio164 : in low func0 2mA pull down | |||
gpio165 : in low func0 2mA pull down | |||
gpio166 : in low func0 2mA pull down | |||
gpio167 : in low func0 2mA pull down | |||
gpio168 : in low func0 2mA pull down | |||
gpio169 : in low func0 2mA pull down | |||
gpio170 : in low func0 2mA pull down | |||
gpio171 : in low func0 2mA pull down | |||
gpio172 : in low func0 2mA pull down | |||
gpio173 : in low func0 2mA pull down | |||
gpio174 : in low func0 2mA pull down | |||
gpio175 : in low func0 2mA pull down | |||
gpio176 : in high func0 2mA pull down | |||
gpio177 : in low func0 2mA pull down | |||
gpio178 : in high func0 2mA pull down | |||
gpio179 : in high func0 2mA pull down | |||
</pre> | |||
</div> | |||
</div> | |||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: auto"> | |||
<code>p11_pro_plus:/ # cat /sys/kernel/debug/pinctrl/f000000.pinctrl/pinmux-pins</code> | |||
<div class="mw-collapsible-content"> | |||
<pre> | |||
Pinmux settings per pin | |||
Format: pin (name): mux_owner gpio_owner hog? | |||
pin 0 (GPIO_0): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 1 (GPIO_1): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 2 (GPIO_2): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 3 (GPIO_3): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 4 (GPIO_4): 984000.i2c (GPIO UNCLAIMED) function gpio group gpio4 | |||
pin 5 (GPIO_5): 984000.i2c (GPIO UNCLAIMED) function gpio group gpio5 | |||
pin 6 (GPIO_6): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 7 (GPIO_7): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 8 (GPIO_8): 990000.i2c (GPIO UNCLAIMED) function gpio group gpio8 | |||
pin 9 (GPIO_9): 990000.i2c (GPIO UNCLAIMED) function gpio group gpio9 | |||
pin 10 (GPIO_10): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 11 (GPIO_11): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 12 (GPIO_12): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 13 (GPIO_13): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 14 (GPIO_14): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 15 (GPIO_15): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 16 (GPIO_16): 998000.qcom,qup_uart (GPIO UNCLAIMED) function gpio group gpio16 | |||
pin 17 (GPIO_17): 998000.qcom,qup_uart (GPIO UNCLAIMED) function gpio group gpio17 | |||
pin 18 (GPIO_18): 998000.qcom,qup_uart (GPIO UNCLAIMED) function gpio group gpio18 | |||
pin 19 (GPIO_19): 998000.qcom,qup_uart (GPIO UNCLAIMED) function gpio group gpio19 | |||
pin 20 (GPIO_20): b0000000.qcom,cnss-qca6390 (GPIO UNCLAIMED) function gpio group gpio20 | |||
pin 21 (GPIO_21): vendor:bt_qca6390 (GPIO UNCLAIMED) function gpio group gpio21 | |||
pin 22 (GPIO_22): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 23 (GPIO_23): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 24 (GPIO_24): c440000.qcom,spmi:qcom,pm8150b@2:qcom,qpnp-smb5 (GPIO UNCLAIMED) function gpio group gpio24 | |||
pin 25 (GPIO_25): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 26 (GPIO_26): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 27 (GPIO_27): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 28 (GPIO_28): 980000.spi (GPIO UNCLAIMED) function gpio group gpio28 | |||
pin 29 (GPIO_29): 980000.spi (GPIO UNCLAIMED) function gpio group gpio29 | |||
pin 30 (GPIO_30): 980000.spi (GPIO UNCLAIMED) function gpio group gpio30 | |||
pin 31 (GPIO_31): 980000.spi (GPIO UNCLAIMED) function gpio group gpio31 | |||
pin 32 (GPIO_32): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 33 (GPIO_33): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 34 (GPIO_34): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 35 (GPIO_35): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 36 (GPIO_36): a94000.i2c (GPIO UNCLAIMED) function gpio group gpio36 | |||
pin 37 (GPIO_37): a94000.i2c (GPIO UNCLAIMED) function gpio group gpio37 | |||
pin 38 (GPIO_38): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 39 (GPIO_39): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 40 (GPIO_40): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 41 (GPIO_41): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 42 (GPIO_42): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 43 (GPIO_43): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 44 (GPIO_44): 884000.i2c (GPIO UNCLAIMED) function gpio group gpio44 | |||
pin 45 (GPIO_45): 884000.i2c (GPIO UNCLAIMED) function gpio group gpio45 | |||
pin 46 (GPIO_46): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 47 (GPIO_47): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 48 (GPIO_48): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 49 (GPIO_49): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 50 (GPIO_50): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 51 (GPIO_51): (MUX UNCLAIMED) f000000.pinctrl:1151 | |||
pin 52 (GPIO_52): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 53 (GPIO_53): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 54 (GPIO_54): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 55 (GPIO_55): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 56 (GPIO_56): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 57 (GPIO_57): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 58 (GPIO_58): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 59 (GPIO_59): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 60 (GPIO_60): (MUX UNCLAIMED) f000000.pinctrl:1160 | |||
pin 61 (GPIO_61): soc:display_gpio_regulator@1 f000000.pinctrl:1161 function gpio group gpio61 | |||
pin 62 (GPIO_62): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 63 (GPIO_63): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 64 (GPIO_64): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 65 (GPIO_65): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 66 (GPIO_66): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 67 (GPIO_67): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 68 (GPIO_68): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 69 (GPIO_69): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 70 (GPIO_70): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 71 (GPIO_71): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 72 (GPIO_72): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 73 (GPIO_73): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 74 (GPIO_74): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 75 (GPIO_75): (MUX UNCLAIMED) f000000.pinctrl:1175 | |||
pin 76 (GPIO_76): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 77 (GPIO_77): 8804000.sdhci f000000.pinctrl:1177 function gpio group gpio77 | |||
pin 78 (GPIO_78): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 79 (GPIO_79): 1c00000.qcom,pcie f000000.pinctrl:1179 function gpio group gpio79 | |||
pin 80 (GPIO_80): 1c00000.qcom,pcie (GPIO UNCLAIMED) function gpio group gpio80 | |||
pin 81 (GPIO_81): 1c00000.qcom,pcie f000000.pinctrl:1181 function gpio group gpio81 | |||
pin 82 (GPIO_82): 1c08000.qcom,pcie f000000.pinctrl:1182 function gpio group gpio82 | |||
pin 83 (GPIO_83): 1c08000.qcom,pcie (GPIO UNCLAIMED) function gpio group gpio83 | |||
pin 84 (GPIO_84): 1c08000.qcom,pcie f000000.pinctrl:1184 function gpio group gpio84 | |||
pin 85 (GPIO_85): 1c10000.qcom,pcie f000000.pinctrl:1185 function gpio group gpio85 | |||
pin 86 (GPIO_86): 1c10000.qcom,pcie (GPIO UNCLAIMED) function pci_e2 group gpio86 | |||
pin 87 (GPIO_87): 1c10000.qcom,pcie f000000.pinctrl:1187 function gpio group gpio87 | |||
pin 88 (GPIO_88): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 89 (GPIO_89): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 90 (GPIO_90): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 91 (GPIO_91): vendor:extcon_usb1 f000000.pinctrl:1191 function gpio group gpio91 | |||
pin 92 (GPIO_92): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 93 (GPIO_93): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 94 (GPIO_94): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 95 (GPIO_95): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 96 (GPIO_96): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 97 (GPIO_97): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 98 (GPIO_98): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 99 (GPIO_99): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 100 (GPIO_100): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 101 (GPIO_101): (MUX UNCLAIMED) f000000.pinctrl:1201 | |||
pin 102 (GPIO_102): (MUX UNCLAIMED) f000000.pinctrl:1202 | |||
pin 103 (GPIO_103): (MUX UNCLAIMED) f000000.pinctrl:1203 | |||
pin 104 (GPIO_104): (MUX UNCLAIMED) f000000.pinctrl:1204 | |||
pin 105 (GPIO_105): (MUX UNCLAIMED) f000000.pinctrl:1205 | |||
pin 106 (GPIO_106): (MUX UNCLAIMED) f000000.pinctrl:1206 | |||
pin 107 (GPIO_107): (MUX UNCLAIMED) f000000.pinctrl:1207 | |||
pin 108 (GPIO_108): (MUX UNCLAIMED) f000000.pinctrl:1208 | |||
pin 109 (GPIO_109): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 110 (GPIO_110): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 111 (GPIO_111): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 112 (GPIO_112): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 113 (GPIO_113): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 114 (GPIO_114): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 115 (GPIO_115): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 116 (GPIO_116): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 117 (GPIO_117): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 118 (GPIO_118): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 119 (GPIO_119): 98c000.i2c (GPIO UNCLAIMED) function gpio group gpio119 | |||
pin 120 (GPIO_120): 98c000.i2c (GPIO UNCLAIMED) function gpio group gpio120 | |||
pin 121 (GPIO_121): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 122 (GPIO_122): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 123 (GPIO_123): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 124 (GPIO_124): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 125 (GPIO_125): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 126 (GPIO_126): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 127 (GPIO_127): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 128 (GPIO_128): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 129 (GPIO_129): c440000.qcom,spmi:qcom,pm8150b@2:qcom,qpnp-smb5 (GPIO UNCLAIMED) function gpio group gpio129 | |||
pin 130 (GPIO_130): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 131 (GPIO_131): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 132 (GPIO_132): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 133 (GPIO_133): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 134 (GPIO_134): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 135 (GPIO_135): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 136 (GPIO_136): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 137 (GPIO_137): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 138 (GPIO_138): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 139 (GPIO_139): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 140 (GPIO_140): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 141 (GPIO_141): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 142 (GPIO_142): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 143 (GPIO_143): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 144 (GPIO_144): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 145 (GPIO_145): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 146 (GPIO_146): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 147 (GPIO_147): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 148 (GPIO_148): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 149 (GPIO_149): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 150 (GPIO_150): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 151 (GPIO_151): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 152 (GPIO_152): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 153 (GPIO_153): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 154 (GPIO_154): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 155 (GPIO_155): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 156 (GPIO_156): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 157 (GPIO_157): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 158 (GPIO_158): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 159 (GPIO_159): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 160 (GPIO_160): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 161 (GPIO_161): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 162 (GPIO_162): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 163 (GPIO_163): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 164 (GPIO_164): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 165 (GPIO_165): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 166 (GPIO_166): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 167 (GPIO_167): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 168 (GPIO_168): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 169 (GPIO_169): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 170 (GPIO_170): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 171 (GPIO_171): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 172 (GPIO_172): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 173 (GPIO_173): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 174 (GPIO_174): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 175 (GPIO_175): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 176 (GPIO_176): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 177 (GPIO_177): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 178 (GPIO_178): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 179 (GPIO_179): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 180 (SDC2_CLK): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 181 (SDC2_CMD): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 182 (SDC2_DATA): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
pin 183 (UFS_RESET): (MUX UNCLAIMED) (GPIO UNCLAIMED) | |||
</pre> | |||
</div> | |||
</div> | |||
== Miscellaneous info == | |||
=== Command to create boot.img === | |||
<syntaxhighlight lang="shell-session"> | |||
$ make O=output-p11-pro-plus ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j16 && | |||
rm -f output-p11-pro-plus/arch/arm64/boot/boot.img && | |||
mkbootimg --kernel output-p11-pro-plus/arch/arm64/boot/Image.gz \ | |||
--ramdisk /home/david/.local/var/pmbootstrap/chroot_rootfs_qemu-aarch64/boot/initramfs \ | |||
--pagesize 4096 \ | |||
--kernel_offset 0x8000 \ | |||
--ramdisk_offset 0x1000000 \ | |||
--dtb_offset 0x1f00000 \ | |||
--tags_offset 0x100 \ | |||
--second_offset 0 \ | |||
--base 0 \ | |||
--header_version 2 \ | |||
--dtb output-p11-pro-plus/arch/arm64/boot/dts/qcom/sm8250-lenovo-p11-pro-plus.dtb \ | |||
-o output-p11-pro-plus/arch/arm64/boot/boot.img && | |||
(adb reboot fastboot; fastboot flash boot output-p11-pro-plus/arch/arm64/boot/boot.img && fastboot reboot) | |||
</syntaxhighlight> | |||
== Back to stock firmware == | == Back to stock firmware == | ||
{{warning|Restoring the firmware will wipe all user data on the device}} | |||
# Install the '''qdl''' tool from [https://github.com/linux-msm/qdl here]. Arch Linux users can simply install the '''[https://aur.archlinux.org/packages/qdl-git qdl-git]''' AUR package. | |||
# | # Download the firmware from [https://mirrors.lolinet.com/firmware/lenowow/2021/Tab_P11_Pro_2021/TB-J716F/ here]. The latest EDL-flashable firmware as of November 2024 is <code>TB-J716F_CN_OPEN_USER_Q00209.3_R_ZUI_13.0.430_ST_220113_qpst.zip</code> | ||
# Download the firmware from [https://mirrors.lolinet.com/firmware/ | # Extract the ZIP archive and open a terminal inside the directory | ||
# Extract the ZIP | # Reboot the device into EDL mode by holding down {{Button|Volume Up}} while connecting the tablet to a computer with a USB-C cable | ||
# | # Run the following command: | ||
# | #:<syntaxhighlight lang="shell-session"> | ||
# | $ qdl --storage ufs --include ./ ./prog_firehose_ddr.elf ./rawprogram_unsparse0_fullupgrade.xml ./patch0.xml ./rawprogram1.xml ./patch1.xml ./rawprogram2.xml ./patch2.xml ./rawprogram3.xml ./patch3.xml ./rawprogram4.xml ./patch4.xml ./rawprogram5.xml ./patch5.xml | ||
</syntaxhighlight> | |||
#:If you have trouble running the command above, make sure your udev rules are set up correctly. Alternatively, you can try running the command with sudo | |||
# After the tablet reboots, Android should be running again | |||
== See also == | == See also == | ||
* [https://www.gsmarena.com/lenovo_pad_pro-10925.php GSMArena page] | * [https://www.gsmarena.com/lenovo_pad_pro-10925.php GSMArena page] | ||
* [https://www.deviceinfohw.ru/devices/item.php?item=76796 Device specifications] | * [https://www.deviceinfohw.ru/devices/item.php?item=76796 Device specifications] | ||
* [https://archive.org/details/j716f-firmware Firmware archive] | * [https://archive.org/details/j716f-firmware Firmware archive] | ||
* [https:// | * [https://twrp.me/lenovo/xiaoxinpadpro2021.html Official TWRP] | ||
__FORCETOC__ | __FORCETOC__ |
Latest revision as of 13:18, 23 February 2025
The Lenovo Xiaoxin Pad Pro 2021 is a high-end Android tablet released only in China. Other unofficial names for this tablet are Lenovo P11 Pro Plus or Lenovo P11 Pro 2021. Lenovo has not released the downstream Linux kernel sources for this device.
This means that it cannot be selected in pmbootstrap.
Status: Mainline in progress
![]() Lenovo Xiaoxin Pad Pro 2021 running LineageOS 18.1 GSI with Termux open showing neofetch | |
Manufacturer | Lenovo |
---|---|
Name | Xiaoxin Pad Pro 2021 |
Codename | lenovo-j716f |
Model | TB-J716F |
Released | 2021 |
Type | tablet |
Hardware | |
Chipset | Qualcomm Snapdragon 870 (SM8250-AC) |
CPU | Octa-core (1x3.2 GHz Kryo 585 & 3x2.42 GHz Kryo 585 & 4x1.80 GHz Kryo 585) |
GPU | Adreno 650 |
Display | 2560 x 1600 (90Hz 11.5" OLED) |
Storage | 128 GB |
Memory | 6 GB LPDDR4X |
Architecture | aarch64 |
Software | |
Original software | Android (ZUI) |
Original version | 11 (ZUI 12) |
postmarketOS | |
Category | testing |
Pre-built images | no |
Mainline | yes |
Flashing |
Works |
---|---|
USB Networking |
Works |
Internal storage |
No data |
SD card |
No data |
Battery |
Partial |
Screen |
Partial |
Touchscreen |
Broken |
Stylus |
Partial |
Multimedia | |
3D Acceleration |
No data |
Audio |
No data |
Camera |
No data |
Camera Flash |
No data |
Connectivity | |
WiFi |
No data |
Bluetooth |
No data |
Miscellaneous | |
FDE |
No data |
USB OTG |
No data |
HDMI/DP |
No data |
Sensors | |
Accelerometer |
No data |
Magnetometer |
No data |
Ambient Light |
No data |
Proximity |
No data |
Hall Effect |
No data |
Haptics |
No data |
Contributors
Users owning this device
- Ungeskriptet (Notes: With pen & keyboard accessoires)
How to enter flash mode
- EDL Mode: Hold down , then connect the tablet to a computer with a USB cable.
- Fastboot Mode: Power on the device with both and buttons.
- Recovery Mode: Boot into Fastboot mode and select recovery using the Volume/Power buttons.
Unlocking the bootloader
See Unlocking Bootloaders/Lenovo ZUI
Alternative method
This method can be used to unlock the bootloader without having to wait and connect to Lenovo's server. It works by modifying the serial number with EDL and using a pre-made unlock file for that serial number.
EDL Mode
The necessary loader for bkerler's EDL tool can be found in this firmware file (prog_firehose_ddr.elf
).
Installation
/* Not yet */
Mainline
A work in progress mainline kernel is being developed here.
Mainline status
Component | Model | Status | Notes |
---|---|---|---|
SoC | Qualcomm SM8250-AC Snapdragon 870 | Y | |
UFS | Kioxia THGJFAT0T44BAILB | Y | |
SD card | - | Y | |
Display | EDO (EverDisplay Optronics) EB50QBC73.A OLED panel; Raydium RM69380 driver IC | Y | Dual DSI, Panel datasheet, Datasheet for a similar Driver IC |
Touchscreen | Goodix GT7385P | Y | Datasheet in Chinese. Using downstream driver for now |
Pen input | N | Compatible with MPP 1.51 pens | |
Touchpad | hid-over-i2c | Y | Available through detachable keyboard only |
Keyboard | Y | ||
Audio | Cirrus CS35L41 | N | 4x Speaker Amp, one for each speaker |
Everest-Semi ES7210 | N | Microphone audio ADC | |
DSP Group DBMD8 | N | Voice processor, SPI | |
Charging | Qualcomm SMB1390 | N | |
Halo HL6111R | N | According to i2cdetect, usage unknown | |
Buttons | GPIO | Y | |
USB-C | USB 3.0 & USB 2.0 | Y | |
Role switching | Y | ||
onsemi NB7VPQ904M DP redriver | N | addr: 0x19, bus: 0x990000 | |
FSA4480 | N | addr: 0x43, bus: 0x884000 | |
VBUS out | N | ||
Fuel gauge | Texas Instruments bq27541 | Y | addr: 0x55, bus: 0x98c000 |
FM Tuner | RichWave RTC6226 | N | According to i2cdetect. Tablet does not even have a headphone jack? |
Ambient light sensor | Lite-On LTR-308 | N | |
Time-of-flight sensor | AMS (Austria Mikro Systeme) TMF8801 | N | |
Magnetometer | AKM ak0991x | N | |
Wi-Fi | Qualcomm QCA6390 | N | |
Fingerprint | Goodix | N |
i2c Table
Android messes up the i2c numbering. This is the real i2c numbering corresponding to mainline, showing only those that have devices attached.
Real | Android | Address |
---|---|---|
i2c1 | i2c5 | 0x984000 |
i2c3 | i2c6 | 0x98c000 |
i2c4 | i2c2 | 0x990000 |
i2c13 | i2c7 | 0xa94000 |
i2c15 | i2c4 | 0x884000 |
Downstream GPIO table
p11_pro_plus:/ # cat /sys/kernel/debug/gpio
p11_pro_plus:/ # cat /sys/kernel/debug/pinctrl/f000000.pinctrl/pinmux-pins
Miscellaneous info
Command to create boot.img
$ make O=output-p11-pro-plus ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j16 &&
rm -f output-p11-pro-plus/arch/arm64/boot/boot.img &&
mkbootimg --kernel output-p11-pro-plus/arch/arm64/boot/Image.gz \
--ramdisk /home/david/.local/var/pmbootstrap/chroot_rootfs_qemu-aarch64/boot/initramfs \
--pagesize 4096 \
--kernel_offset 0x8000 \
--ramdisk_offset 0x1000000 \
--dtb_offset 0x1f00000 \
--tags_offset 0x100 \
--second_offset 0 \
--base 0 \
--header_version 2 \
--dtb output-p11-pro-plus/arch/arm64/boot/dts/qcom/sm8250-lenovo-p11-pro-plus.dtb \
-o output-p11-pro-plus/arch/arm64/boot/boot.img &&
(adb reboot fastboot; fastboot flash boot output-p11-pro-plus/arch/arm64/boot/boot.img && fastboot reboot)
Back to stock firmware
WARNING: Restoring the firmware will wipe all user data on the device |
- Install the qdl tool from here. Arch Linux users can simply install the qdl-git AUR package.
- Download the firmware from here. The latest EDL-flashable firmware as of November 2024 is
TB-J716F_CN_OPEN_USER_Q00209.3_R_ZUI_13.0.430_ST_220113_qpst.zip
- Extract the ZIP archive and open a terminal inside the directory
- Reboot the device into EDL mode by holding down while connecting the tablet to a computer with a USB-C cable
- Run the following command:
$ qdl --storage ufs --include ./ ./prog_firehose_ddr.elf ./rawprogram_unsparse0_fullupgrade.xml ./patch0.xml ./rawprogram1.xml ./patch1.xml ./rawprogram2.xml ./patch2.xml ./rawprogram3.xml ./patch3.xml ./rawprogram4.xml ./patch4.xml ./rawprogram5.xml ./patch5.xml
- If you have trouble running the command above, make sure your udev rules are set up correctly. Alternatively, you can try running the command with sudo
- After the tablet reboots, Android should be running again
See also