Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Boot linux on your Surface RT using the Fusée Gelée exploit.
APX booting is for advanced users. Visit the main Linux page for a short comparison between EFI vs. APX Linux
You should read all the the sub-sections before you start. The subsections are logical ordered from top to bottom
Get the latest and tested Devicetree for APX boot.
As we bypass all the firmware with APX boot, someone needs to setup memory and load Linux. Uboot is used for this.
Get prebuilt binaires for Das U-Boot if you don't want to compile it yourself.
Get a Linux kernel for APX.
Linux without any root filesystem is useless for the end-user. Get instructions on how to get one.
Fusée Gelée is the exploit used to bypass the security checks for APX mode. Get information on how to execute the exploit in order to boot linux.
Booting linux with APX mode is rather complicated. You can find a little summary and final instructions here:
Send and launch fusee exploit binary over usb, using python script.
Send and launch custom bootloader binary over usb, using modified NvFlash to bypass security checks.
(Experimental) Loading a bootloader binary and executing at specific memory address by adding --setentry 0x80808000 0x80808000 before --bl. 0x80808000 for example, is the memory address for the factory UEFI SPI-Flash bootloader. The factory bootloader binary is obtained by using the decryption script with the relevant SBK and dump of the SPI-Flash memory.
U-Boot for Surface RT.
You can use U-boot for tegra
git clone https://github.com/OE4T/u-boot-tegra; cd u-boot-tegra
or U-boot Mainline
git clone https://gitlab.denx.de/u-boot/u-boot.git; cd u-boot
THIS IS VERY IMPORTANT!!! If you skip this step you can damage your device Use the devicetree below. Don't use the devicetree from Linux.
Replace the content of ./arch/arm/dts/tegra30-cardhu.dts
with following code:
Now you can build U-Boot:
make cardhu_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
Now you should find the file./u-boot-dtb-tegra.bin
This your Uboot Image which contains the SPL and Uboot.
Booting Linux from UART is tedious and you may don't have UART access. To automate the boot process a boot script can be used. Create a file:
Compile it using:
mkimage -A arm -O linux -a 0 -e 0 -T script -C none -n "SurfaceRT Boot Script" -d boot.script boot.scr
Place boot.scr
on the SD Card next to the kernel.
Tip: Don't hit any key to stop autoboot
Send a payload which patches a security fuse temporarily (until next power off). Uses original nvflash to read the BCT from Device.
BootConfigTable for the Surface This defines SDRAM configuration, as well as bootloader location. Described here (with compiler / decompiler) https://github.com/NVIDIA/cbootimage-configs
Boot Linux on Surface RT. Setup is a bit tedious but once the setup is complete it is very easy to use.
Read all pages of the Linux topic carefully before you try to boot Linux
Insert SD Card into the SurfaceRT
Linux should be booted and be accessible via UART and/or show HDMI/Screen Console
Enjoy and fix issues.
Linux should be booted and be accessible via UART and/or show HDMI Console
Enjoy and fix issues.
To boot Linux on Surface RT we use the Fusée Gelée cold boot exploit. See for further information.
from your device
with correct devicetree
Create a
with correct devicetree
for ARM32
Create/Get
Place , devicetree and on first partition
extract on second partition
Go to to your directory
place your U-Boot '' in ./u-boot
Send UBoot to Surface RT use or
If you have you should see U-Boot boot process
Send UBoot to Surface RT using or
If you have you should see U-Boot boot process
At the moment both UHS-I SD cards and non UHS Cards are supported. UHS Cards operate at higher speeds and use 1.8V instead of 3.3V. (1.8V now works, we found LDO5 in the PMIC which handles SD signaling voltage)
The left SanDisk Card is UHS-I (SDXC-I) and has SpeedClass 3 (3 in U) and VideoClass30 (V30) See https://www.sdcard.org/developers/overview/bus_speed/index.html The right (Intenso) Card is an old Class10 (10 in C) SD card which works.
Use GParted or similar tool to create 2 partitions on your SD Card. First partition FAT16/32 - 255MiB Second partition EXT4