ASUS Eee Pad Transformer (asus-tf101)

Basic Information
The Eee Pad is a tablet computer with a 10.1" IPS multi-touch screen with a resolution of 1280 × 800 and an Nvidia Tegra 2 system-on-a-chip (SoC). It has an 802.11b/g/n Wi-Fi module.

Requirements
The Eee Pad Transformer TF101 already comes with an unlocked bootloader, so no previous requirements are needed.

A custom recovery such as TWRP is not even needed neither.

Installation
Use the latest 9.2.1 firmware available, so upgrade if you need it here (mirror here).

You must know which SBK version your tablet has. For the asus-tf101, there are two versions only: sbkv1 and sbkv2.

However there is a caveat: two proprietary tools are needed, Wheelie (although source code is available on GitHub, some key features are missing, such as `--sbk` option) and Nvflash (proprietary Nvidia flash tool). So, a custom setup is available to get this working a little bit easier.

1. Go through the pmbootstrap installation method: `pmbootstrap init`, select your device (asus -> tf101), the interface or UI (XFCE, MATE or LXQT are recommended), `pmbootstrap export` and flash the resulting image to your Micro SD Card.

2. Now connect the device to the computer. This USB to 40 Pin cable is required.

3. Put your device into APX mode: First of all, power off the device and then press the power button + volume up button for 3 to 5 seconds.

4. Download U-Boot Tools for Asus Eee Pad Transformer TF101 here. Please read the release notes for instructions.


 * If you are unsure which SBK version you have, please try both flashing methods.

5. Some operations will be executed on the tablet. Please be patient, wait from 5 to 10 minutes. Formatting Partition 15 (UDA) can also take some time. In case you don't know the SBK version of your tablet, you will see some errors, or the device not booting at all. In that case, please try the other SBK version.

Expected output (SBK1 example): user@mycomputer:~$ ./uboot_sbkv1.sh Wheelie 0.1 - Preflight for nvflash. Copyright (c) 2011-2012 androidroot.mobi

=
===========================

Using SBK type 1. Using bootloader: 'bootloader.bin'. Using BCT: 'transformer.bct'.

[=] Chip UID: YourHardwareID [=] RCM Version: 0x20001

[=] CPU Model: Tegra 2 [=] Secure Boot Key Set: Yes [+] Sending BCT Sending file: 100 % [+] Sending ODMData 0x300D8011 [+] Sending bootloader... Sending file: 100 % [!] Done - your device should now be ready for nvflash Nvflash started [resume mode] setting device: 2 3 creating partition: BCT creating partition: PT creating partition: EBT creating partition: SOS creating partition: LNX creating partition: BAK creating partition: GP1 creating partition: APP creating partition: CAC creating partition: MSC creating partition: USP creating partition: PER creating partition: YTU creating partition: UDA creating partition: GPT Formatting partition 2 BCT please wait.. done! Formatting partition 3 PT please wait.. done! Formatting partition 4 EBT please wait.. done! Formatting partition 5 SOS please wait.. done! Formatting partition 6 LNX please wait.. done! Formatting partition 7 BAK please wait.. done! Formatting partition 8 GP1 please wait.. done! Formatting partition 9 APP please wait.. done! Formatting partition 10 CAC please wait.. done! Formatting partition 11 MSC please wait.. done! Formatting partition 12 USP please wait.. done! Formatting partition 13 PER please wait.. done! Formatting partition 14 YTU please wait.. done! Formatting partition 15 UDA please wait.. done! Formatting partition 16 GPT please wait.. done! done! sending file: u-boot.bin - 565989/565989 bytes sent u-boot.bin sent successfully Nvflash started [resume mode]

8. Now press the power button for a few seconds to reboot the device. After that, disconnect the USB from the device. It should be booting PostmarketOS!

WiFi and Bluetooth setup
If, for any reason, the WiFi or Bluetooth connections are not detected properly on the device, you may need to do these additional steps:

$ sudo cp /lib/firmware/postmarketos/brcm/* /lib/firmware/brcm/

Installation
You have to flash a recovery like TWRP before doing this.

$ pmbootstrap install $ pmbootstrap export Now reboot the device in recovery $ adb push /tmp/postmarketOS-export/boot.img-asus-tf101 /cache $ adb push /tmp/postmarketOS-export/asus-tf101.img /cache

The following should be executed within adb shell:

$ adb shell
 * 1) dd if=/cache/boot.img-asus-tf101 of=/dev/block/mmcblk0p4
 * 2) dd if=/cache/asus-tf101.img of=/dev/block/mmcblk0p1

WiFi setup
WiFi is provided by the firmware-aosp-broadcom-wlan package. A very similar process can be found in https://wiki.postmarketos.org/wiki/Medion_Lifetab_S9714_(medion-kai)#How_bonsaiblue_made_wifi_work.

If the package is not installed, install it. Then, rename firmware files for detection:
 * 1) mv /lib/firmware/postmarketos/bcmdhd/bcm4329/fw_bcm4329.bin /lib/firmware/postmarketos/bcmdhd/bcm4329/fw_bcmdhd.bin
 * 2) mv /lib/firmware/postmarketos/bcmdhd/bcm4329/fw_bcm4329_abg.bin /lib/firmware/postmarketos/bcmdhd/bcm4329/fw_bcmdhd_abg.bin
 * 3) mv /lib/firmware/postmarketos/bcmdhd/bcm4329/fw_bcm4329_apsta.bin /lib/firmware/postmarketos/bcmdhd/bcm4329/fw_bcmdhd_apsta.bin

Now reboot your device and Wi-Fi will be detected properly.

Bluetooth setup
Bluetooth is provided by the bcm4329.hcd firmware file. It can be activated in downstream by some little hack that works for most bcm4329 and bcm4330 devices. You may need to build its source first: https://github.com/antonialoytorrens/brcm-patchram-plus

Please follow these steps to get it working:


 * 1) !/bin/sh
 * 2) Start brcm-patchram-plus for TF101

rfkill unblock 0 /usr/sbin/brcm_patchram_plus -d --patchram /lib/firmware/postmarketos/brcm/bcm4329.hcd --baudrate 921600 --bd_addr $(cat /lib/firmware/postmarketos/brcm/mac.txt) --enable_hci /dev/ttyHS2&

Where mac.txt is your MAC address. Works even if you generate it randomly, but it is still experimental and a work in progress. Sample here

See here for more information.

Hardware status
Status for Mainline (M) and Downstream (D) kernels.

Photos
TF101 Booting (downstream):



TF101 running Xfce user interface (downstream):



TF101 running Mate desktop:



Testing U-Boot in RAM
Nvflashing U-boot has its benefits: it acts as a temporary bootloader when booting Linux on TF101. The uboot file is stored in RAM instead. That way, you don't have to worry about flashing it permanently every time, only to test it.

To perform this, put your tablet in APX mode, download the needed files and type the following command (be aware this is for SBK1, for SBK2 you need to change the SBK keys) (not tested with SBK2, you can try this command anyway and report): $ ./nvflash --bct transformer.bct --setbct --configfile flash.cfg --bl u-boot.bin --odmdata 0x300d8011 --sbk 0x1682CCD8 0x8A1A43EA 0xA532EEB6 0xECFE1D98 --sync

Note that there is an u-boot.bin file already in the zip folder. Please replace it with your u-boot.bin file instead.

Nvflash partitiontable.txt
Nvflash can print your partition table configuration as a better setup for offset calculations, needed in U-Boot.

To perform this, put your tablet in APX mode, download the needed files and type the following command (be aware this is for SBK1, for SBK2 you need to change the SBK keys) (not tested with SBK2, you can try this command anyway and report):

$ ./nvflash --bct transformer.bct --setbct --configfile flash.cfg --bl bootloader.bin --odmdata 0x300d8011 --sbk 0x1682CCD8 0x8A1A43EA 0xA532EEB6 0xECFE1D98 --sync $ ./nvflash --resume --getpartitiontable partitiontable.txt

After that, if you have followed all this guide, your partition table txt file should be exactly like this:

PartitionId=2 Name=BCT DeviceId=18 StartSector=0 NumSectors=1536 BytesPerSector=2048

PartitionId=3 Name=PT DeviceId=18 StartSector=1536 NumSectors=256 BytesPerSector=2048

PartitionId=4 Name=EBT DeviceId=18 StartSector=1792 NumSectors=2048 BytesPerSector=2048

PartitionId=5 Name=SOS DeviceId=18 StartSector=3840 NumSectors=2560 BytesPerSector=2048

PartitionId=6 Name=LNX DeviceId=18 StartSector=6400 NumSectors=4096 BytesPerSector=2048

PartitionId=7 Name=BAK DeviceId=18 StartSector=10496 NumSectors=2560 BytesPerSector=2048

PartitionId=8 Name=GP1 DeviceId=18 StartSector=13056 NumSectors=512 BytesPerSector=2048

PartitionId=9 Name=APP DeviceId=18 StartSector=13568 NumSectors=262144 BytesPerSector=2048

PartitionId=10 Name=CAC DeviceId=18 StartSector=275712 NumSectors=271104 BytesPerSector=2048

PartitionId=11 Name=MSC DeviceId=18 StartSector=546816 NumSectors=1024 BytesPerSector=2048

PartitionId=12 Name=USP DeviceId=18 StartSector=547840 NumSectors=271104 BytesPerSector=2048

PartitionId=13 Name=PER DeviceId=18 StartSector=818944 NumSectors=2560 BytesPerSector=2048

PartitionId=14 Name=YTU DeviceId=18 StartSector=821504 NumSectors=256 BytesPerSector=2048

PartitionId=15 Name=UDA DeviceId=18 StartSector=821760 NumSectors=14808320 BytesPerSector=2048

PartitionId=16 Name=GPT DeviceId=18 StartSector=15630080 NumSectors=256 BytesPerSector=2048

Contributors

 * CmdrWgls
 * rrooij
 * LongnoseRob
 * blacksoil
 * AAT596

Links

 * Partition overview
 * initial PR
 * Nvidia Tegra 2 (tegra20)
 * WIP pmaports repository
 * Initial mainline tree for TF101, build mainline U-Boot from source
 * Some notes about nvflash and APX mode
 * Some issues with Qt applications

Videos

 * How to install Debian 11 Bullseye on the Asus Eee Pad Transformer TF101 (U-Boot Method) (TF101 SBKv1 and SBKv2 ONLY) (Preferred)
 * How to install Debian 11 Bullseye on the Asus Eee Pad Transformer TF101 (Rootbind Method).