Google Nexus 7 2012 (asus-grouper)

This page documents the status of mainline Linux on the Nexus 7. This document should cover all tablets from first generation (codenamed grouper and tilapia).

Currently all supported features should work as they're supposed to, no known bugs except few not-yet supported features (3D, GPS, cameras and modem).

Hardware revisions

 * grouper rev. PM269 - without GSM (older, less frequent)
 * grouper rev. E1565 - without GSM (modern)
 * tilapia rev. E1565 - with GSM

Flashing
When flashing (flashing the kernel or rootfs) the target device must be in flash mode.

How to enter flash mode

 * Connect a USB cable
 * Power the device off
 * Hold  +
 * should work when the green android appears on the screen

Installation process
This consists of two parts: preparing the kernel, and then flashing the rootfs.

Preparing rootfs
Preparing rootfs (on the your computer ready to be converted to an image and flashed to the target device) and flashing kernel:

Flashing rootfs
To flash the rootfs the target device must have a partition large enough to contain the image. The Nexus 7 may have multiple partitions, but of note it has a 650 MB system partition and a >4GB USERDATA partition (at least by default it does). If your rootfs image is larger than 650 MB (quite likely - more on this below) then it cannot fit on the system partition. Either you have to resize your partitions (this is untested and you're on your own if you choose this route), or you can flash the rootfs to the USERDATA partition instead (recommended).

Determining rootfs image size
This command puts the images-to-flash in the /tmp/postmarketOS-export diretory and then shows the file sizes (in a human-readable format). The route partition is named asus-grouper. If this is larger than 650 M it cannot be flashed to the system partition.

Flashing to USERDATA partition
''NOTE: This may change size of your data partition. You can fix it by resizing partition in TWRP before flashing Android.'' You should proceed very carefully here.

When rootfs is larger than 650 MB you can choose to flash it to the system partition or USERDATA partition (which is on Nexus always > 4 GB). This guide is intended will help you flash rootfs onto USERDATA partition.

Prerequisites: Official TWRP, at least version 3.3.1-0, binaries are here for grouper or tilapia.

First, start TWRP (hold power + volume up) and then continue with these instructions it's probably because tilapia has additional modem partition. If you're not sure, come to our Matrix channel and ask :)
 * grouper has likely data on /dev/block/mmcblk0 p9 but make sure!
 * tilapia has likely data on /dev/block/mmcblk0 p10 but make sure!

Flashing to system partition (alternative rootfs flashing)
In case that your rootfs is smaller than 650 MB, you can also use this simple way to flash it:

Once the rootfs has been flashed (this may take a long time - the Nexus 7's internal storage is slow even by early 2010s standards), you can reboot the device into postmarketos.

''If your device starts up and then cuts to an empty screen (as mine did), it may still have booted into postmarketos but something has gone wrong to prevent the display outputting. In this scenario the black-screen-device still connects to a computer over USB, so you can still log in to the device over SSH. For more info see USB Network. It may then be possible to resolve the screen issues (need to explore this more).''

Hardware status (mainline)
There is multiple hardware revisions, so this status may not apply to all of them. This status apply for tilapia (Bach revision).

User Interfaces
Multiple, but due to not yet implemented HW acceleration, some of them are currently unavailable (like Phosh)

Recommended interfaces:
 * Phosh: Purism Librem 5 compositor and GNOME based environment, needs performance optimization, but works.
 * Xfce4: GTK-based desktop environment aiming to be fast and lightweight. Follow the guide at https://wiki.postmarketos.org/wiki/XFCE4 for adjustments.

Bootloader

 * There is some progress on u-boot for Tegra devices. Check u-boot repository
 * The default images for android provided by google have the bootloader broken, meaning it can't be flashed. It does not seem to affect the install process of postmarketOS, but is something to take into account. If you need a working bootloader image version 4.23 can be found [| here], or can be 4.18 can be grabbed from the factory images for KitKat

Kernel
Currently used mainline kernel:
 * Grate kernel, where tegra development ongoing. It does follow official linux-next branch.

References to older kernels:
 * Old Android kernels: LineageOS kernel sources Unlegacy kernel sources
 * Ubuntu Nexus 7 Kernel wiki (old, last updated 2012)

Graphics

 * The touchscreen input device is named.
 * (legacy) CONFIG_VT had to be enabled for graphics to work. In menuconfig this is located under Device Drivers -&gt; Character devices -&gt; Virtual terminal.
 * (legacy) /sys/class/graphics/fb0/mode is empty on boot, it must have U:800x1280p-0. This uses the same initfs hook as many other devices. Update: Seems to be correctly set now
 * (legacy) weston with fbdev-backend.so uses pixman-type=3 (PIXMAN_TYPE_ABGR), which now does not require configuration.

Wifi

 * There's a proper firmware subpackage now, wifi device should work out-of-the box.
 * "Desktop" Linux firmware are outdated. Check here for latest one.
 * To connect follow the instructions on this page.
 * (legacy)It is possible to manually get wifi working by manually copying fw_bcmdhd.bin and nvram.txt to their kernel-specified locations and configuring . At this point, running , gave an error about being unable to get a MAC address. After restarting the device to find that wifi Just Worked™, it was possible to successfully scan for wireless networks and establish a connection to secured wireless APs.

Pending Issues

 * : Use the system and userdata partition on Android with LVM
 * : The  partition is too small to hold rootfs images over 650Mb (e.g. Plasma Mobile is about 1.1Gb). Flashing to   partition fails.
 * : With legacy kernel, device seems to reboot spontaneously under heavy load. For better experience, please use mainline kernel.

= Community Info =

Maintainers

 * David Heidelberg

Fun Fact
 was the first tablet to run postmarketOS!