[FAQ] Asus T100: Installing custom OS (android/ubuntu/*nix/Windows 7/Windows 8 x64)

Search This thread

paperWastage

Senior Member
Mar 18, 2009
1,000
496
NJ
[4 April 2014]I haven't had time to play with my device or update fully the info in this post
Jhong2 has an updated post on how to get ubuntu working on the Asus T100
http://xdaforums.com/showpost.php?p=51291244&postcount=181
http://www.jfwhome.com/2014/03/07/perfect-ubuntu-or-other-linux-on-the-asus-transformer-book-t100/

(do search for the specific topic headers to jump to them)
Post 1: Global Info
UEFI:
Bootloader auto-detection path:
Secure Boot
Partition Table for Live USB sticks:
How to boot from USB stick
Info for various operating systems:
Hardware info:
/cpu/cpuinfo:

Post 2: <backup/ archived infomation>

Post 3: Files
grub2 2.00-13ubuntu3 (13.04 raring sources) compiled for grub-efi-ia32 (x86) - bootia32​




---------------------------------------------------------------------------------------


Global information
for BIOS 214 (2013.09.25), version loaded on retail T100 units

UEFI:

Bootloader auto-detection path:
(bootloader is only 32-bit compatible)
/efi/BOOT/bootia32.efi
WILL NOT pick up the x64 location /efi/BOOT/bootx64.efi

Secure Boot

You should disable Secure Boot in UEFI/Setup-Utility-Menu-> Security tab-> Secure Boot Menu -> Disable


Partition Table for Live USB sticks:
GPT or MBR works
Use Rufus (works for Windows/Unix ISOs) or Windows 7 USB Download Tool (works for Windows 7 / Windows 8)

How to boot from USB stick

NOTE:

If you don't see the USB drive on the boot list or the UEFI/Setup-utility, this means you have a badly prepped USB live drive, or the boot-list/UEFI/Setup-utility was loaded before the USB drive was read.
If you are on the boot list, boot into UEFI/Setup-utility. Then, go to the last tab, save changes and restart while holding F2 (to force the next reboot to go back into UEFI/Setup-utility). If you still don't see the USB drive after doing this multiple times, then you have a badly prepped USB drive.

I find using Rufus (GPT for UEFI + FAT + 64 kb+ bootable disk using ISO Image) to consistently get a working bootable USB drive

Option 1a) Boot to UEFI USB drive from Windows (works only if your USB is correctly prepped)
  1. Boot into Windows
  2. Swipe from right, click on settings.
  3. Click on Power. Press and hold the shift key, and then click on Restart
  4. A Blue menu should show up. Click on Use a device->click on the device name (might not show up if USB isn't prepped properly)
  5. Device should reboot into the USB

Option 1b) Boot to UEFI/Setup-Utility-menu from Windows (easiest, and almost no way to screw it up)
  1. Boot into Windows
  2. Swipe from right, click on settings.
  3. Click on Power. Press and hold the shift key, and then click on Restart
  4. A Blue menu should show up. Click on Troubleshoot-> Advanced Options-> UEFI Firmware Settings
  5. Inside UEFI/Setup-Utility-menu, go to the last tab, and select the USB Drive

NOTE:
For options 2a and 2b, if you see the ASUS logo and circle loading icon, you either:
  • Pressed button (ESCAPE/F2) too late. Solution: Reboot and try again
  • Have Fast startup enabled, and did the steps with the device in shutdown mode. Windows will cache the kernel/other stuff, and you might not be able to get to UEFI. Solution: Reboot from Windows and try again(reboot does not trigger caching). Or disable Fast Startup


Option 2a) Boot to UEFI/Setup-Utility-menu
  1. Inside Windows, restart system. Press and hold the F2 key
  2. You should get into the Aptio Setup Utility screen
  3. Inside UEFI/Setup-Utility-menu, go to the last tab, and select the USB Drive

Option 2b) Boot Menu
  1. Inside Windows, restart system. When screen goes blank, press and hold the ESCAPE key (if you press it too early, Windows might interpret you as cancelling the restart process)
  2. You should get a list of bootable devices
  3. If you see the ASUS logo, you've pressed the ESCAPE key too late. Restart and retry

Info for various operating systems:

You should backup the recovery partition to a separate USB key. Alternatively, you can do it with this ASUS utility Backtracker that HatesForums pointed me to

Windows:



Windows 8.1

  • x86: (Status: Works but missing drivers)
    Used Windows 7 USB Download Tool or Rufus to create bootable USB. Using en_windows_8_1_x86_dvd_2707392 from MSDN (x86 8.1 Regular & Pro ISO), able to install W8.1 x86 and boot to it (missing a few drivers, eg touch screen doesn't work, no sound). Windows is automatically activated without need for key. First boot had 25.7GB free out of 33.6GB.
  • x64: (Status: Not yet working)
    Used Windows 7 USB Download Tool or Rufus to create bootable USB. ISO does not contain bootia32.efi. Copied that file from the x86 ISO to USB, able to boot, but the installer complains that the processor isn't 64-bit compatible
Windows 7

  • x86: (Status: unknown)
    ISO does not contain efi
  • x64: (Status: unknown
    ISO only contains x64 efi
Unix:

Ubuntu:

You need an EFI-compatible distro. For ubuntu, x64 EFI is enabled since 12.04-2. However, we'll need to include x86 EFI because our bootloader only reads x86 EFIs
  • 13.04 x64 desktop- (Status: boots to GUI using fbdev)
    Used Rufus(GPT for UEFI + FAT + 64 kb+ raring x64 as bootable disk using ISO Image) to create bootable USB. Copied over the bootia32 to /efi/boot/
    there is a bug in VESA where it queries for a BIOS-only command and crashes. Forcing xserver to use fbdev fixes this problem
  • 13.10 x64 desktop- (Status: boots to GUI using fbdev
    Same problems as 13.04 x64 plus one addition efifb problem
    see post for more details - touchscreen works, but no wifi

Android:
  • android-ia - (Status: No x86 UEFI bootloader)
    Generic UEFI Installer android-4.2.2_r1-ia3 does not come with x86 UEFI bootloader. it does not use grub, so can't just use ubuntu's x86 grub2 efi. Need to compile it from source
  • android-x86 - (Status: Bootable but slow)
    Uses grub, can piggy-back on the ubuntu x64 13.10 bootia.efi grub. Some workarounds needed, see this post
    external/efitools/Android.mk
    # TODO: support ia32 prebuilt

    ifeq ($(TARGET_KERNEL_ARCH),x86_64)

    arch_name := x86_64


/cpu/cpuinfo:
taken from a x64 13.04 live USB
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 55
model name : Intel(R) Atom(TM) CPU Z3740 @ 1.33GHz
stepping : 3
microcode : 0x312
cpu MHz : 1333.387
cache size : 1024 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch ida arat epb dtherm tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms
bogomips : 2666.77
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 55
model name : Intel(R) Atom(TM) CPU Z3740 @ 1.33GHz
stepping : 3
microcode : 0x312
cpu MHz : 1333.387
cache size : 1024 KB
physical id : 0
siblings : 4
core id : 1
cpu cores : 4
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch ida arat epb dtherm tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms
bogomips : 2666.77
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 55
model name : Intel(R) Atom(TM) CPU Z3740 @ 1.33GHz
stepping : 3
microcode : 0x312
cpu MHz : 1333.387
cache size : 1024 KB
physical id : 0
siblings : 4
core id : 2
cpu cores : 4
apicid : 4
initial apicid : 4
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch ida arat epb dtherm tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms
bogomips : 2666.77
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 55
model name : Intel(R) Atom(TM) CPU Z3740 @ 1.33GHz
stepping : 3
microcode : 0x312
cpu MHz : 1333.387
cache size : 1024 KB
physical id : 0
siblings : 4
core id : 3
cpu cores : 4
apicid : 6
initial apicid : 6
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch ida arat epb dtherm tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms
bogomips : 2666.77
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:


Hardware info:

  • The microUSB slot is USB-HOST-capable (i.e. with a USB OTG cable or Y cable, you can connect a USB flash drive to the microUSB slot
  • Amazon.de and Asus.de posted a T100 version with 500GB drive on the keyboard base. No pictures yet
  • Internal eMMC, 108MB/s 44MB/s read/write on sequential. CrystalDiskMark here
  • External microSD(HC/XC) reader is NOT UHS-1 compatible. Someone over at liliputing comments posted his atto benchmark

    64GB Samsung microSDXC card came in the mail today, I did some ATTO disk tests using the T100's built-in microSD reader and a USB 3.0 reader from Transcend.

    Unfortunately, it looks like the built-in reader is connected via USB 2.0. It maxed out at 23.8 MB/s read and 17.2 MB/s write, while the USB 3.0 reader maxed out at 71.3 MB/s read and 21.3 MB/s write. The card is rated at 70 MB/s read and 20 MB/s write.
 
Last edited:

SixSixSevenSeven

Senior Member
Dec 26, 2012
1,617
318

paperWastage

Senior Member
Mar 18, 2009
1,000
496
NJ
odd: http://ark.intel.com/products/76759/
shouldnt be erroring about 64 bit, unless the 8.1 installer is checking the CPU ID, isn't recognising it (no idea why) and then presuming a lack of 64 bit support.

Perhaps the 32bit bootloader sends that the device is only booting in 32bit.

Seeing that I can boot to Ubuntu x64, the chip should be 64bit like how the Intel ark site says. I'll check the cpuinfo in Ubuntu to see what extensions it supports

Will also try to download WinPE and get the efi bootloader from there instead. Windows 7 x64 has efi x64 bootloader, but x86 doesn't have any efi bootloader
 

paperWastage

Senior Member
Mar 18, 2009
1,000
496
NJ
Compiling grub2-efi-ia32 (x86)

NOTE:

  • The instructions below are for raring 12.04.
    • The same instructions should work for other versions/sources/distros of grub2 as well.
    • The resulting binary should work with any *nix distros that use grub2
  • The resulting bootia32.efi should be placed on your USB drive at /EFI/BOOT/bootia32.efi
  • The grub-mkimage instruction basically packages the grub-efi AND the *.mod you specified into that bootia32.efi. You may need to tweak the list of *.mod that you include. You don't need to copy the *.mod onto the USB drive
  • -p /boot/grub tells grub-efi to look for the grub.cfg at /boot/grub/grub.conf (location that ubuntu uses). Other distros may use a different location.
    • Either recompile grub2-efi-ia32 with the right "-p" flag
    • Or copy your distro's grub.conf to /boot/grub/grub.cfg

Download grub2 sources for raring
https://launchpad.net/ubuntu/+source/grub2/2.00-13ubuntu3

apt-get install gcc bison flex

./configure --with-platform=efi --target=i386

make

#make GRUB EFI binary and mods

cd grub-core

../grub-mkimage -d . -o bootia32.efi -O i386-efi -p /boot/grub ntfs hfs appleldr boot cat efi_gop efi_uga elf fat hfsplus iso9660 linux keylayouts memdisk minicmd part_apple ext2 extcmd xfs xnu part_bsd part_gpt search search_fs_file chain btrfs loadbios loadenv lvm minix minix2 reiserfs memrw mmap msdospart scsi loopback


cp bootia32.efi to <USB DRIVE>/EFI/BOOT/
# might be missing some modules... but if i tried to compile all *.mod, I get an invalid stack frame during grub boot

Files:

 
Last edited:
  • Like
Reactions: pastime1971

paperWastage

Senior Member
Mar 18, 2009
1,000
496
NJ
tried using that bootia32.efi to load Ubuntu 13.10 x64 ... (13.10 & 13.04 seem to use the same grub2-2.00 sources)

the grub menu shows up, but after selecting "Try Ubuntu", it flashes, menu continues showing up, nothing happens

then my Windows 8.1 OS got corrupted or something.... either boots to Windows message "Windows unable to start up properly", or it boots to login screen, then the screen goes haywire and popup boxes saying "illegal exception" or something

going to reinstall W8.1 x86 cleanly from a MSDN ISO/USB flash drive



got the logs from the semi-successful 13.04 x64 boot... will look through them and post them soon
 

paperWastage

Senior Member
Mar 18, 2009
1,000
496
NJ
ubuntu x64 13.04, debuging x-server issues



[ 36.591] (II) Loading /usr/lib/xorg/modules/drivers/fbdev_drv.so
[ 36.597] (II) Module fbdev: vendor="X.Org Foundation"
[ 36.597] compiled for 1.12.99.902, module version = 0.4.3
[ 36.597] Module class: X.Org Video Driver
[ 36.597] ABI class: X.Org Video Driver, version 13.0
[ 36.597] (II) intel: Driver for Intel Integrated Graphics Chipsets: i810,
i810-dc100, i810e, i815, i830M, 845G, 854, 852GM/855GM, 865G, 915G,
E7221 (i915), 915GM, 945G, 945GM, 945GME, Pineview GM, Pineview G,
965G, G35, 965Q, 946GZ, 965GM, 965GME/GLE, G33, Q35, Q33, GM45,
4 Series, G45/G43, Q45/Q43, G41, B43, B43, Clarkdale, Arrandale,
Sandybridge Desktop (GT1), Sandybridge Desktop (GT2),
Sandybridge Desktop (GT2+), Sandybridge Mobile (GT1),
Sandybridge Mobile (GT2), Sandybridge Mobile (GT2+),
Sandybridge Server, Ivybridge Mobile (GT1), Ivybridge Mobile (GT2),
Ivybridge Desktop (GT1), Ivybridge Desktop (GT2), Ivybridge Server,
Ivybridge Server (GT2), Haswell Desktop (GT1), Haswell Desktop (GT2),
Haswell Desktop (GT2+), Haswell Mobile (GT1), Haswell Mobile (GT2),
Haswell Mobile (GT2+), Haswell Server (GT1), Haswell Server (GT2),
Haswell Server (GT2+), Haswell SDV Desktop (GT1),
Haswell SDV Desktop (GT2), Haswell SDV Desktop (GT2+),
Haswell SDV Mobile (GT1), Haswell SDV Mobile (GT2),
Haswell SDV Mobile (GT2+), Haswell SDV Server (GT1),
Haswell SDV Server (GT2), Haswell SDV Server (GT2+),
Haswell ULT Desktop (GT1), Haswell ULT Desktop (GT2),
Haswell ULT Desktop (GT2+), Haswell ULT Mobile (GT1),
Haswell ULT Mobile (GT2), Haswell ULT Mobile (GT2+),
Haswell ULT Server (GT1), Haswell ULT Server (GT2),
Haswell ULT Server (GT2+), Haswell CRW Desktop (GT1),
Haswell CRW Desktop (GT2), Haswell CRW Desktop (GT2+),
Haswell CRW Mobile (GT1), Haswell CRW Mobile (GT2),
Haswell CRW Mobile (GT2+), Haswell CRW Server (GT1),
Haswell CRW Server (GT2), Haswell CRW Server (GT2+),
ValleyView PO board
...
[ 36.762] (II) VESA(0): initializing int10
[ 36.763] (EE) VESA(0): V_BIOS address 0x0 out of range
from
http://www.redhat.com/archives/rhl-devel-list/2009-December/msg00372.html

looks like 13.04 is able to recognize and load the necessary drivers, but crashes because our UEFI-only computer doesn't have a BIOS portion... or maybe 13.04 is using older stuff

EDIT: or does that error even matter? trying to force x to configure itself

EDIT2: it matters because VESA is configured to be the default/fallback driver. With the V_BIOS issue, it won't work. Tried to force it to use fbdev driver, but no luck (it loads, but nothing shows up)
 
Last edited:

paperWastage

Senior Member
Mar 18, 2009
1,000
496
NJ
I deleted the vesa_drv.so from /usr/lib/xorg/modules/drivers/ , forced it to start using fbdev... works, very slowly of course

will try the intel driver later

(it's definitely the vesa BIOS bug that's stopping it from working on 13.04... will debug 13.10 later)



F2zfbsP.jpg
 
Last edited:

paperWastage

Senior Member
Mar 18, 2009
1,000
496
NJ
<instructions below should be complete

got ubuntu 13.10 to boot to command prompt (with bootia32.efi and grub.cfg fixes below)

Rufus (GPT for UEFI + FAT + 64 kb+ 13.10 desktop x64 as bootable disk using ISO Image)

Note:

Good behavior:
After you select "Try Ubuntu" in grub, screen goes to blank, (?might appear as well) usb light disappears... wait < 30s, the screen should then show the logs and then cmd line)​
Bad Behavior:
After you select "Try Ubuntu" in grub, screen goes to blank, then the grub menu reappears (but nothing happens when you press arrow keys). (?might appear as well) usb light stays lighted. if you wait >5 minutes, nothing happens. just force reboot machine (hold power button), and reboot into windows, then UEFI and try again

/boot/grub/grub.cfg - replace with the text below

Code:
if loadfont /boot/grub/font.pf2 ; then
	insmod efi_gop
	insmod efi_uga
	insmod gfxterm
	terminal_output gfxterm
fi

set menu_color_normal=white/black
set menu_color_highlight=black/light-gray

menuentry "Try Ubuntu without installing" {
	set gfxpayload=keep
	linux	/casper/vmlinuz.efi  file=/cdrom/preseed/ubuntu.seed boot=casper text noacpi nomodeset --
	initrd	/casper/initrd.lz
}
menuentry "Install Ubuntu" {
	set gfxpayload=keep
	linux	/casper/vmlinuz.efi  file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity quiet splash --
	initrd	/casper/initrd.lz
}
menuentry "OEM install (for manufacturers)" {
	set gfxpayload=keep
	linux	/casper/vmlinuz.efi  file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity quiet splash oem-config/enable=true --
	initrd	/casper/initrd.lz
}
menuentry "Check disc for defects" {
	set gfxpayload=keep
	linux	/casper/vmlinuz.efi  boot=casper integrity-check quiet splash --
	initrd	/casper/initrd.lz
}


(changes in grub is to disable efifb which causes screen flickering/corruption - video=vesa: off doesn't work, probably because vesa IS the fallback driver)

then boot. After you get to command line, remove the vesa_drv.so module from /usr/lib/xorg/modules/drivers/, type startx

touchscreen works on x64 13.10. still haven't had time to make x86 ISO work with bootia32.efi GRUB
 
Last edited:

spunker88

Senior Member
Sep 8, 2006
1,318
334
Upstate NY
For Android-x86 without EFI support, I wonder if this method courtesy of Tyler Swindell on Youtube would work. This is what he used to get Android-x86 booting on the Surface.

Alright guys, this is the Surface Pro running Android-x86. It was something we all saw coming. Past 2
nights, I have been trying hard to get Android-x86 to run on my Surface Pro since I saw how amazing it
ran on my desktop PC. If it would just boot, I could see just how great Android is on the Surface Pro. So
I got it to boot, and it was just as great as I expected it to be.
So why didn't it boot? I had Secure Boot off. Ubuntu boots, Windows 7 boots. Well what do all these
operating systems have in common? Their installers all include both BIOS and EFI boot loaders. What is
interesting about the Surface Pro is the UEFI chip was designed without legacy BIOS support. There is
no way to boot a BIOS-based boot loader.
I thought about it and how Ubuntu boots. I checked the files and I saw a EFI-based Grub boot loader.
All I had to do was drop in Android's files into an Android directory and add the boot entries. This
worked and Android booted thanks to the EFI-based Grub boot loader.
Everything works except no connectivity, no Wi-Fi or Bluetooth. Also the buttons could have better
functions such as the Windows button or the power button which just brings up a power menu. Overall
it's a great start, it's booting, and the drivers are there for mostly everything. It's fantastic.
This tutorial can be drastically simplified and improved. Keep in mind it was just to get it to work.
1. Download Android-x86 ISO and Ubuntu 12.10 x64 ISO.
2. Format a USB flash drive.
3. Using LiLil USB Creator, copy Ubuntu ISO to flash drive.
4. Create Android directory in flash drive. Extract Android ISO, copy initrd.img, kernel, ramdisk.img,
system.sfs to the Android directory.
5. Modify boot/grub/grub.cfg to add these entries:
submenu "Android" {
menuentry "Android" --class android --class linux --class os {
linux /android/kernel root=/dev/ram0 androidboot.hardware=android_x86 quiet video=1920x1080
dpi=145 i915downclock=1 i915.powersave=1 usbcore.autosuspend=2 SRC=/android/
initrd /android/initrd.img
}
menuentry "Android text output" --class android --class linux --class os {
linux /android/kernel root=/dev/ram0 androidboot.hardware=android_x86 video=1920x1080 dpi=145
i915downclock=1 i915.powersave=1 usbcore.autosuspend=2 SRC=/android/
initrd /android/initrd.img
}
menuentry "Android debug mode" --class android --class linux --class os {
linux /android/kernel root=/dev/ram0 androidboot.hardware=android_x86 video=1920x1080 dpi=145
i915downclock=1 i915.powersave=1 usbcore.autosuspend=2 SRC=/android/ DEBUG=1
initrd /android/initrd.img
}
}
6. Turn off Secure Boot and boot Android. Enjoy.



Sent from my DROID BIONIC using Tapatalk
 
  • Like
Reactions: paperWastage

paperWastage

Senior Member
Mar 18, 2009
1,000
496
NJ
For Android-x86 without EFI support, I wonder if this method courtesy of Tyler Swindell on Youtube would work. This is what he used to get Android-x86 booting on the Surface.





Sent from my DROID BIONIC using Tapatalk

that might work, forcing android-x86 to boot via grub.. thanks

been using android-ia, which doesn't use grub... uses another efitool, need to play with both android-x86 and android-ia later tonight
 

Deltido

Senior Member
Oct 7, 2010
51
5
that might work, forcing android-x86 to boot via grub.. thanks

been using android-ia, which doesn't use grub... uses another efitool, need to play with both android-x86 and android-ia later tonight


Picking up on our conversation from SlickDeals.. I actually ended up buying one of these things and I was able to get an external hard drive recognized just by plugged into my usb OTG cable -- in windows. I even tried a USB mouse which worked perfectly.
 

paperWastage

Senior Member
Mar 18, 2009
1,000
496
NJ
Picking up on our conversation from SlickDeals.. I actually ended up buying one of these things and I was able to get an external hard drive recognized just by plugged into my usb OTG cable -- in windows. I even tried a USB mouse which worked perfectly.

yeah, my usb otg cable works now in windows (detects flash drive). no idea why it didn;t work before (maybe I unpluged it too early while it was detecting/installing the usb driver?)
 
Last edited:

paperWastage

Senior Member
Mar 18, 2009
1,000
496
NJ
got android to boot up, but uglily

need 2 flash drives, and a USB-OTG cable(to be able to connect using the microUSB port)... a USB-hub should work too

(basically, you're piggying back off the ubuntu grub2 bootloader, to load the android kernel and other stuff)
  • used my (existing & currently working) ubuntu 13.10 x64 bootable USB (made via Rufus, GPT partition with bootia32.efi fix)
    copied the contents of android-x86-4.3-20130725.iso into the USB:/android/
    modified contents of grub.cfg as per the post by spunker88 with some changes to the resolution
  • second flash drive had dd if=android-x86-4.3-20130725.iso of=/dev/sdb1
    without this second flash drive, the android boot sequence stops at "Detecting Android-x86" and "VFS: could not find a valid V7 on sda1". probably something to do with android/kernel not liking the first drive having FAT instead of ext2/3/4


grub.cfg - add to the end, and select this during grub

Code:
submenu "Android" {
 menuentry "Android" --class android --class linux --class os {
 linux /android/kernel root=/dev/ram0 androidboot.hardware=x86 video=1366x768 DEBUG=1 SRC=/android/ 
 initrd /android/initrd.img
 }
 }



boot into USB, then grub, then select android.

android crashes to command line. forcing it to start (type exit twice), leads to the default android start screen, and eventually this

it is SUPER LAGGY. not usable

cLwj4eS.jpg


sUYtWDz.jpg
 
Last edited:

costcutter

Senior Member
Jul 22, 2011
93
35
got android to boot up, but uglily

need 2 flash drives, and a USB-OTG cable(to be able to connect using the microUSB port)... a USB-hub should work too

(basically, you're piggying back off the ubuntu grub2 bootloader, to load the android kernel and other stuff)
  • used my (existing & currently working) ubuntu 13.10 x64 bootable USB (made via Rufus, GPT partition with bootia32.efi fix)
    copied the contents of android-x86-4.3-20130725.iso into the USB:/android/
    modified contents of grub.cfg as per the post by spunker88 with some changes to the resolution
  • second flash drive had dd if=android-x86-4.3-20130725.iso of=/dev/sdb1
    without this second flash drive, the android boot sequence stops at "Detecting Android-x86" and "VFS: could not find a valid V7 on sda1". probably something to do with android/kernel not liking the first drive having FAT instead of ext2/3/4


grub.cfg - add to the end, and select this during grub

Code:
submenu "Android" {
 menuentry "Android" --class android --class linux --class os {
 linux /android/kernel root=/dev/ram0 androidboot.hardware=x86 video=1366x768 DEBUG=1 SRC=/android/ 
 initrd /android/initrd.img
 }
 }



boot into USB, then grub, then select android.

android crashes to command line. forcing it to start (type exit twice), leads to the default android start screen, and eventually this

it is SUPER LAGGY. not usable

cLwj4eS.jpg


sUYtWDz.jpg

Progress!! :D

Although its unusable, it's nice to see android on this device. So what do you think needs to be done to get android usable on this?
 

paperWastage

Senior Member
Mar 18, 2009
1,000
496
NJ
Progress!! :D

Although its unusable, it's nice to see android on this device. So what do you think needs to be done to get android usable on this?

for both ubuntu/android, first steps (since it's booting) is to get the graphics driver working. right now, ubuntu is using fbdev and android is (i think) using efifb... both are running at 800x600 and laggy....

either I fix the VESA bug, or find the correct intel driver for the new Bay Trail IGP and use it


then, install ubuntu/android properly on the device, and then debug the rest (instead of through a live USB where changes would not persist from every reboot)
 

pastime1971

Senior Member
Apr 25, 2011
1,893
1,076
Plesanton, CA
I'm trying with Fedora 20 alpha, but not much luck so far.
Got the grub2-efi to work with your tutorial (and some digging), but once I start installing Fedora, it seems to freeze.
Gonna try ubuntu over the weekend.
 
  • Like
Reactions: paperWastage

paperWastage

Senior Member
Mar 18, 2009
1,000
496
NJ
probably the vesa bug as well (if you are trying to install via gui)

attempting to fully install ubuntu on system and boot from it.... the bootia32.efi / bootx64.efi / grubx64.efi is making a mess here...

managed to get Windows Bootloader AND ubuntu grub listed as boot options... grub has problems though, dumps me into grub shell


EDIT: Think it;s easiest for me to try installing EFI Shell, and tinker from there
http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Efi-shell

EDIT2: For Windows 8 64-bit, the error is "This 64-bit application couldn't load because your PC doesn't have a 64-bit processor"

Looks like we need to enable Virtualization in the UEFI/BIOS... but there isn't such an option (the cpu Z3740 does support VT-x)
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 16
    [4 April 2014]I haven't had time to play with my device or update fully the info in this post
    Jhong2 has an updated post on how to get ubuntu working on the Asus T100
    http://xdaforums.com/showpost.php?p=51291244&postcount=181
    http://www.jfwhome.com/2014/03/07/perfect-ubuntu-or-other-linux-on-the-asus-transformer-book-t100/

    (do search for the specific topic headers to jump to them)
    Post 1: Global Info
    UEFI:
    Bootloader auto-detection path:
    Secure Boot
    Partition Table for Live USB sticks:
    How to boot from USB stick
    Info for various operating systems:
    Hardware info:
    /cpu/cpuinfo:

    Post 2: <backup/ archived infomation>

    Post 3: Files
    grub2 2.00-13ubuntu3 (13.04 raring sources) compiled for grub-efi-ia32 (x86) - bootia32​




    ---------------------------------------------------------------------------------------


    Global information
    for BIOS 214 (2013.09.25), version loaded on retail T100 units

    UEFI:

    Bootloader auto-detection path:
    (bootloader is only 32-bit compatible)
    /efi/BOOT/bootia32.efi
    WILL NOT pick up the x64 location /efi/BOOT/bootx64.efi

    Secure Boot

    You should disable Secure Boot in UEFI/Setup-Utility-Menu-> Security tab-> Secure Boot Menu -> Disable


    Partition Table for Live USB sticks:
    GPT or MBR works
    Use Rufus (works for Windows/Unix ISOs) or Windows 7 USB Download Tool (works for Windows 7 / Windows 8)

    How to boot from USB stick

    NOTE:

    If you don't see the USB drive on the boot list or the UEFI/Setup-utility, this means you have a badly prepped USB live drive, or the boot-list/UEFI/Setup-utility was loaded before the USB drive was read.
    If you are on the boot list, boot into UEFI/Setup-utility. Then, go to the last tab, save changes and restart while holding F2 (to force the next reboot to go back into UEFI/Setup-utility). If you still don't see the USB drive after doing this multiple times, then you have a badly prepped USB drive.

    I find using Rufus (GPT for UEFI + FAT + 64 kb+ bootable disk using ISO Image) to consistently get a working bootable USB drive

    Option 1a) Boot to UEFI USB drive from Windows (works only if your USB is correctly prepped)
    1. Boot into Windows
    2. Swipe from right, click on settings.
    3. Click on Power. Press and hold the shift key, and then click on Restart
    4. A Blue menu should show up. Click on Use a device->click on the device name (might not show up if USB isn't prepped properly)
    5. Device should reboot into the USB

    Option 1b) Boot to UEFI/Setup-Utility-menu from Windows (easiest, and almost no way to screw it up)
    1. Boot into Windows
    2. Swipe from right, click on settings.
    3. Click on Power. Press and hold the shift key, and then click on Restart
    4. A Blue menu should show up. Click on Troubleshoot-> Advanced Options-> UEFI Firmware Settings
    5. Inside UEFI/Setup-Utility-menu, go to the last tab, and select the USB Drive

    NOTE:
    For options 2a and 2b, if you see the ASUS logo and circle loading icon, you either:
    • Pressed button (ESCAPE/F2) too late. Solution: Reboot and try again
    • Have Fast startup enabled, and did the steps with the device in shutdown mode. Windows will cache the kernel/other stuff, and you might not be able to get to UEFI. Solution: Reboot from Windows and try again(reboot does not trigger caching). Or disable Fast Startup


    Option 2a) Boot to UEFI/Setup-Utility-menu
    1. Inside Windows, restart system. Press and hold the F2 key
    2. You should get into the Aptio Setup Utility screen
    3. Inside UEFI/Setup-Utility-menu, go to the last tab, and select the USB Drive

    Option 2b) Boot Menu
    1. Inside Windows, restart system. When screen goes blank, press and hold the ESCAPE key (if you press it too early, Windows might interpret you as cancelling the restart process)
    2. You should get a list of bootable devices
    3. If you see the ASUS logo, you've pressed the ESCAPE key too late. Restart and retry

    Info for various operating systems:

    You should backup the recovery partition to a separate USB key. Alternatively, you can do it with this ASUS utility Backtracker that HatesForums pointed me to

    Windows:



    Windows 8.1

    • x86: (Status: Works but missing drivers)
      Used Windows 7 USB Download Tool or Rufus to create bootable USB. Using en_windows_8_1_x86_dvd_2707392 from MSDN (x86 8.1 Regular & Pro ISO), able to install W8.1 x86 and boot to it (missing a few drivers, eg touch screen doesn't work, no sound). Windows is automatically activated without need for key. First boot had 25.7GB free out of 33.6GB.
    • x64: (Status: Not yet working)
      Used Windows 7 USB Download Tool or Rufus to create bootable USB. ISO does not contain bootia32.efi. Copied that file from the x86 ISO to USB, able to boot, but the installer complains that the processor isn't 64-bit compatible
    Windows 7

    • x86: (Status: unknown)
      ISO does not contain efi
    • x64: (Status: unknown
      ISO only contains x64 efi
    Unix:

    Ubuntu:

    You need an EFI-compatible distro. For ubuntu, x64 EFI is enabled since 12.04-2. However, we'll need to include x86 EFI because our bootloader only reads x86 EFIs
    • 13.04 x64 desktop- (Status: boots to GUI using fbdev)
      Used Rufus(GPT for UEFI + FAT + 64 kb+ raring x64 as bootable disk using ISO Image) to create bootable USB. Copied over the bootia32 to /efi/boot/
      there is a bug in VESA where it queries for a BIOS-only command and crashes. Forcing xserver to use fbdev fixes this problem
    • 13.10 x64 desktop- (Status: boots to GUI using fbdev
      Same problems as 13.04 x64 plus one addition efifb problem
      see post for more details - touchscreen works, but no wifi

    Android:
    • android-ia - (Status: No x86 UEFI bootloader)
      Generic UEFI Installer android-4.2.2_r1-ia3 does not come with x86 UEFI bootloader. it does not use grub, so can't just use ubuntu's x86 grub2 efi. Need to compile it from source
    • android-x86 - (Status: Bootable but slow)
      Uses grub, can piggy-back on the ubuntu x64 13.10 bootia.efi grub. Some workarounds needed, see this post
      external/efitools/Android.mk
      # TODO: support ia32 prebuilt

      ifeq ($(TARGET_KERNEL_ARCH),x86_64)

      arch_name := x86_64


    /cpu/cpuinfo:
    taken from a x64 13.04 live USB
    processor : 0
    vendor_id : GenuineIntel
    cpu family : 6
    model : 55
    model name : Intel(R) Atom(TM) CPU Z3740 @ 1.33GHz
    stepping : 3
    microcode : 0x312
    cpu MHz : 1333.387
    cache size : 1024 KB
    physical id : 0
    siblings : 4
    core id : 0
    cpu cores : 4
    apicid : 0
    initial apicid : 0
    fpu : yes
    fpu_exception : yes
    cpuid level : 11
    wp : yes
    flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch ida arat epb dtherm tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms
    bogomips : 2666.77
    clflush size : 64
    cache_alignment : 64
    address sizes : 36 bits physical, 48 bits virtual
    power management:

    processor : 1
    vendor_id : GenuineIntel
    cpu family : 6
    model : 55
    model name : Intel(R) Atom(TM) CPU Z3740 @ 1.33GHz
    stepping : 3
    microcode : 0x312
    cpu MHz : 1333.387
    cache size : 1024 KB
    physical id : 0
    siblings : 4
    core id : 1
    cpu cores : 4
    apicid : 2
    initial apicid : 2
    fpu : yes
    fpu_exception : yes
    cpuid level : 11
    wp : yes
    flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch ida arat epb dtherm tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms
    bogomips : 2666.77
    clflush size : 64
    cache_alignment : 64
    address sizes : 36 bits physical, 48 bits virtual
    power management:

    processor : 2
    vendor_id : GenuineIntel
    cpu family : 6
    model : 55
    model name : Intel(R) Atom(TM) CPU Z3740 @ 1.33GHz
    stepping : 3
    microcode : 0x312
    cpu MHz : 1333.387
    cache size : 1024 KB
    physical id : 0
    siblings : 4
    core id : 2
    cpu cores : 4
    apicid : 4
    initial apicid : 4
    fpu : yes
    fpu_exception : yes
    cpuid level : 11
    wp : yes
    flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch ida arat epb dtherm tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms
    bogomips : 2666.77
    clflush size : 64
    cache_alignment : 64
    address sizes : 36 bits physical, 48 bits virtual
    power management:

    processor : 3
    vendor_id : GenuineIntel
    cpu family : 6
    model : 55
    model name : Intel(R) Atom(TM) CPU Z3740 @ 1.33GHz
    stepping : 3
    microcode : 0x312
    cpu MHz : 1333.387
    cache size : 1024 KB
    physical id : 0
    siblings : 4
    core id : 3
    cpu cores : 4
    apicid : 6
    initial apicid : 6
    fpu : yes
    fpu_exception : yes
    cpuid level : 11
    wp : yes
    flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes rdrand lahf_lm 3dnowprefetch ida arat epb dtherm tpr_shadow vnmi flexpriority ept vpid tsc_adjust smep erms
    bogomips : 2666.77
    clflush size : 64
    cache_alignment : 64
    address sizes : 36 bits physical, 48 bits virtual
    power management:


    Hardware info:

    • The microUSB slot is USB-HOST-capable (i.e. with a USB OTG cable or Y cable, you can connect a USB flash drive to the microUSB slot
    • Amazon.de and Asus.de posted a T100 version with 500GB drive on the keyboard base. No pictures yet
    • Internal eMMC, 108MB/s 44MB/s read/write on sequential. CrystalDiskMark here
    • External microSD(HC/XC) reader is NOT UHS-1 compatible. Someone over at liliputing comments posted his atto benchmark

      64GB Samsung microSDXC card came in the mail today, I did some ATTO disk tests using the T100's built-in microSD reader and a USB 3.0 reader from Transcend.

      Unfortunately, it looks like the built-in reader is connected via USB 2.0. It maxed out at 23.8 MB/s read and 17.2 MB/s write, while the USB 3.0 reader maxed out at 71.3 MB/s read and 21.3 MB/s write. The card is rated at 70 MB/s read and 20 MB/s write.
    7
    Android good news and bad

    Well, after a few more very late nights, i was able to get to the android main screen, once. Unfortunately, its completely unrepeatable. After a lot of looking around, I think the main problem is that the drivers for the graphics that are in android-x86 are just not new enough. I did find here, repositories for the latest intel graphics driver sources. https://01.org/linuxgraphics/community?qt-projects_aggregated_links=2.

    However, I talked to a friend at Intel who works on android and according to him, Intel is going to be releasing a public beta for android on Bay Trail in the next 3 weeks. So I'm going to wait for that before I try again.

    If anyone wants to work on it before then, the main change I made to get the i915 driver to at least load and work for text console was in kernel/driver/gpu/drm/i915/i915_drv.c.
    around line 118, change
    Code:
    unsigned int i915_preliminary_hw_support __read_mostly = 0;
    to 
    unsigned int i915_preliminary_hw_support __read_mostly = [B]1[/B];
    I couldn't find another way to change this besides changing the source.

    Here is a pic of the one time i got to the main android screen.

    Android_on_t100_small.jpg
    7
    The i915 GPU driver does work fine *almost* out of the box for the 3.12 kernels. I havn't tested 3.13 yet, but the problem may be similar. The garbled screen is simply due to an incorrect resolution. It doesn't seem to detect our native resolution right. Using the boot parameter video=VGA-1:1366x768 works, at least when I tested it on Arch. For Ubuntu, the same boot parameter worked, but only for the console.The X session was still bad. From there I had to use xrandr to create a new video mode, and somehow manage to use the (still garbled) screen to access a terminal window. It worked, but I wouldn't recommend it ;) You might also be able to setup an Xorg config to set the resolution on startup.
    Just letting folks know, the GPU works at least in 3.12 kernels.
    6
    Made a fair bit of progress.

    Managed to get 3.14-rc2 booting no problem, and grub installed properly, so am booting up normally; it just needs the video=VGA-1:1366x768e parameter.

    Xrandr works fine, so screen rotation will be no problem once we have the accelerometer / orientation sensor cracked.

    I got wifi working using the brcmfmac43241b4-sdio driver, but signal strength was weak. I believe this was because the nvram obtained through nvramtool was not correct; AFAIK (and I'm still learning on this), since uefi is 32-bit, access to uefi / nvram vars is unavailable from within a 64-bit linux. So instead I tried to extract nvram from a uefi shell, and converted the hexdump to ascii. This seems to work much better. I've attached the nvram as brcmfmac4321b4-sdio.txt. This just needs to be copied to /lib/firmware/brcm along with the firmware.

    All ACPI is basically still broken, but I'll see what we can get.

    Sound seems a long way off. ACPI IDs have been added for the "Intel SST audio device" since kernel 3.13, but Intel hasn't provided a driver yet. Haven't looked closely yet.

    It seems someone is working on the battery monitor.

    WYgvptb.jpg
    6
    Iconia8 source

    I started messing with 3.17 kernel to see if anything works better. Had lots of trouble getting my kconfig correct of all things, but looks like some positive progress. 3.17 combined with some code i ripped from iconia8 gives me 100% good wifi and also the eMMC is working much better and is now in HS200 mode. Apparently chip can not enter C6 during eMMC write. This is very difficult to ensure using acpi_idle driver. I have something hacked together by accessing /dev/cpu_dma_latency but it wastes a lot of power and isn't a permanent solution.

    If only I could get backlight control to work :/ Would also be nice to have the two finger scroll function. No scroll on the small screen is a serious pain.

    Edit:

    Have a reasonable solution to the c6 wake lock. Also got some backlight control working. Can adjust, still missing stuff for completely turning it off/on. Code here on top of vanilla 3.17. https://github.com/jonpry/t100_patches Doesn't include battery, everything else works pretty good. I wrote couple hundred GB to eMMC without error. No problems with wifi either. I think there is one more eMMC patch we need but only effects samsung chips which i apparently don't have. Use included kconfig or you will have problems!