Microsoft Surface RT (microsoft-surface-rt)

From postmarketOS

Released in 2012, the Surface RT was the first tablet and personal computer developed and manufactured by Microsoft. It ran on the extremely limited version of Windows, known as Windows RT 8, and that was its downfall, leading to eventual discontinuation in late 2013. Despite this, a community emerged to make the Surface RT more usable via jailbreaking and bypassing secure boot, allowing other armhf apps and even other Operating Systems such as PostMarketOS to run.

You can usually find these relatively cheap pretty much anywhere, costing anywhere from 10 to 50 bucks depending on the state of the device.


Microsoft Surface RT
Surface RT running postmarketos-demos
Surface RT running postmarketos-demos
Manufacturer Microsoft
Name Surface RT
Codename microsoft-surface-rt
Released 2012
Category testing
Original software Windows RT
Original version 8
Extended version 8.1 Update 3
Hardware
Chipset Nvidia Tegra 3 (T30)
CPU 4x ARM Cortex-A9 @ 1300Mhz (no support for L2 cache in kernel)
GPU Nvidia GeForce ULP @ 420Mhz
Display 1366x768 IPS
Storage 32 / 64 GB
Memory 2 GB
Architecture ARMv7
Features
Touchscreen
Works
Display
Works
WiFi
Works
FDE
Works
Mainline
Works
Battery
Works
3D Acceleration
Partial
Audio
Partial
Bluetooth
Broken
Camera
Broken
Internal storage
Sensors
Accelerometer
Works
Magnetometer
Works
Ambient Light
Works
Hall Effect
Works
Misc
Built-in DVB
Keyboard
Works
Touchpad
Works
USB-A
Works
HDMI/DP
Works
Memory Card
Haptics
FOSS bootloader
Partial
U-Boot
Primary Bootloader
Partial
Secondary Bootloader
Partial
Mainline
Works
Internal Storage
Works
SD card
Works
USB Host
USB Peripheral
Works
Display
Works
Keyboard
Broken
Buttons
Works
This device is based on the Tegra 3.
See the SoC page for common tips, guides and troubleshooting steps
Note NOTE: However the table says you can daily drive this device, there are still some not implemented features: L2 Cache, CPU Idle, UHS MicroSD Cards, Suspend (suspend itself works and wakes up quickly, but it works with both CPU and Core voltages enabled and DRAM is not in self-refresh mode). This is all because of EFI Firmware which wants kernel to control these CPU and regulator features through ACPI, and we use Device-Tree instead. There is work in progress to bypass EFI at runtime and control these features in the kernel.


How to boot from USB

Power on the device with Volume Down button pressed.

Installation

Preparation

Enable test signing and install yahallo to disable secure boot.

See the instruction on OpenRT GitBook.

Note Note: Don't try to boot pmOS installation from USB when you already have installation on eMMC. It does not work this way. Although you still can boot pmOS ondev installer even if you have installed OS on eMMC.
Note Note: Device can't boot from a SD card. Boot with an USB.

Installation on USB storage

Follow Pmbootstrap article. Do a normal SD card installation using USB storage as a target.

Installation on eMMC

Install pmOS on USB firstly. Boot into it and use pmbootstrap install --disk /dev/mmcblk0.


WiFi

The WiFi firmware will go to sleep and break after some time (12 hours or less) with driver log talking about command timeout. The WiFi interface (mlan0) will vanish and trying to unload and reload the driver will block forever at trying to unload it. So the only way to recover is to hard reset.

It seems this can be avoided by disabling power management on the WiFi device. With NetworkManager this is nmcli connection modify <SSID> 802-11-wireless.powersave disable, otherwise iw dev mlan0 set power_save off

If this isn't enough, another thing to try is to disable and re-enable the WiFi device every so often through a cronjob:

>/etc/periodic/hourly/reset-wifi cat <<EOF
#!/bin/sh

ip link set mlan0 down
ip link set mlan0 up
EOF
chmod +x /etc/periodic/hourly/reset-wifi
service crond start
rc-update add crond default

Sound

All outputs (speakers, headphones, HDMI) work, but mics are not supported for now.

U-Boot

This device can run patched mainline U-Boot, see https://github.com/Open-Surface-RT/u-boot.

Primary bootloader

It works as primary bootloader, but SPI is one time programmable. The only way to boot it is fusee-gelee. There were also successful attempts to replace SPI with non-OTP one with flashed U-Boot.

Secondary bootloader

Chainloading from EFI is not yet possible.

Contributors

Kernel, packages
Etc
  • imbushuo (Yahallo exploit for disabling secure boot)
  • jwa4 (convenient tool for enabling/disabling Golden Keys and Yahallo exploits)
  • TheLorax (server for unofficial prebuilt images)

Users owning this device


See also