Jump to content

Lenovo Xiaoxin Pad Pro 2021 (lenovo-j716f): Difference between revisions

From postmarketOS Wiki
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 = 12 (ZUI 14)
| 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 ==
{{note|'''Note:''' You have to wait at least a day after initially connecting to the Internet for Lenovo to process your serial number.}}
See [[Unlocking Bootloaders/Lenovo ZUI]]
# Go to Settings → My Device, tap on ZUI Version until developer settings are enabled.
# Go to General Settings → Developer Settings and enable "OEM Unlocking".
# [[Lenovo_Xiaoxin_Pad_Pro_2021_(lenovo-j716f)#How_to_enter_flash_mode|Boot into fastboot mode]] and connect it to a PC
# Take note of the serial number shown on the bootloader screen.
# Download your <code>sn.img</code> from http://cdn.zui.lenovomm.com/developer/tabletboot/(your_sn_number)/sn.img (Replace the brackets with your serial number in the link)
# Flash your <code>sn.img</code> with <code>fastboot flash unlock sn.img</code>.
# Unlock the bootloader with <code>fastboot oem unlock-go</code>
 
Alternatively [https://www.zui.com/iunlock this page] can also be used to get the <code>sn.img</code>.


=== 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 ||
|-
|-
| USB || USB Type-C 3.1 || P || Peripheral mode only
| 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
|-
|-
| UFS || Kioxia THGJFAT0T44BAILB || Y ||
| Pen input || N || Compatible with MPP 1.51 pens
|-
|-
| SD card || sdhc_2 || N ||
| Touchpad || rowspan = 2 | hid-over-i2c || Y || rowspan = 2 | Available through detachable keyboard only
|-
|-
| Display || EDO (EverDisplay Optronics) E350911(?) OLED panel; Raydium RM69380 driver IC || P || Dual DSI, Panel driver in progress
| Keyboard || Y
|-
|-
| Touchscreen || rowspan = 2 | Goodix GT738X (GT7386 according to cfg file) || P ||
| rowspan = 3 | Audio || Cirrus CS35L41 || N || 4x Speaker Amp, one for each speaker
|-
|-
| Pen input || Y || Compatible with some MS Surface pens
| Everest-Semi ES7210 || N || Microphone audio ADC
|-
|-
| Touchpad || rowspan = 2 | hid-over-i2c (Available through detachable keyboard only) || N || i2c Address 0x60
| DSP Group DBMD8 || N || Voice processor, SPI
|-
|-
| Keyboard || N || i2c Address 0x61
| rowspan = 2 | Charging || Qualcomm SMB1390 || N ||
|-
|-
| Charging || Qualcomm SMB1390 || N ||
| Halo HL6111R || N || According to i2cdetect, usage unknown
|-
|-
| Buttons || GPIO || Y ||
| Buttons || GPIO || Y ||
|-
|-
| USB-C Redriver || onsemi NB7VPQ904M redriver || N || Needed to get DP Alt mode working
| 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
|-
|-
| Fuel gauge || Texas Instruments bq27541 || Y ||
| 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 ==
Linux tutorial:
{{warning|Restoring the firmware will wipe all user data on the device}}
# Enter '''EDL Mode''' by powering off the tablet first, then hold {{button|Volume Up}} while connecting the tablet to a computer with an USB cable.
# 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 '''qdl''' tool from [https://www.96boards.org/documentation/consumer/guides/qdl.md.html here] and build it. Arch Linux users can simply install the '''[https://aur.archlinux.org/packages/qdl qdl]''' 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/lenovo/Tab_P11_Pro_2021/TB-J716F here].
# Extract the ZIP archive and open a terminal inside the directory
# Extract the ZIP file.
# Reboot the device into EDL mode by holding down {{Button|Volume Up}} while connecting the tablet to a computer with a USB-C cable
# cd into the extracted ZIP directory
# Run the following command:
# Execute the following command: <code>qdl --storage ufs --include ./ ./prog_firehose_ddr.elf ./rawprogram0.xml ./patch0.xml ./rawprogram1.xml ./patch1.xml ./rawprogram2.xml ./patch2.xml ./rawprogram3.xml ./patch3.xml ./rawprogram4.xml ./patch4.xml ./rawprogram5.xml ./patch5.xml ./rawprogram_unsparse0_fullupgrade.xml</code>
#:<syntaxhighlight lang="shell-session">
# After it has finished, the command will exit itself. Force reboot the tablet by holding {{button|Power}}. Now you should be able to boot back into stock firmware.
$ 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://github.com/edk2-porting/edk2-msm EDK2 UEFI bootloader]
* [https://archive.org/details/j716f-firmware Firmware archive]
* [https://archive.org/details/j716f-firmware Firmware archive]
* [https://b.catgirlsare.sexy/aVvjBzfjEwi3.img TWRP recovery image (twrp-3.7.0_12-0-p11_pro_plus.img)]
* [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 device has been tested with postmarketOS, but its device package has not yet been added to the postmarketOS repositories.
This means that it cannot be selected in pmbootstrap.
Status: Mainline in progress
Lenovo Xiaoxin Pad Pro 2021
Lenovo Xiaoxin Pad Pro 2021 running LineageOS 18.1 GSI with Termux open showing neofetch
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
Features
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


How to enter flash mode

  • EDL Mode: Hold down Volume Up, then connect the tablet to a computer with a USB cable.
  • Fastboot Mode: Power on the device with both Power and Volume Down 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 WARNING: Restoring the firmware will wipe all user data on the device
  1. Install the qdl tool from here. Arch Linux users can simply install the qdl-git AUR package.
  2. 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
  3. Extract the ZIP archive and open a terminal inside the directory
  4. Reboot the device into EDL mode by holding down Volume Up while connecting the tablet to a computer with a USB-C cable
  5. 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
  6. After the tablet reboots, Android should be running again

See also