Google Nexus 7 2012 (asus-grouper)

From postmarketOS
Jump to: navigation, search
Google (ASUS) Nexus 7 (2012)
Galaxy Nexus 7
Galaxy Nexus 7
Manufacturer Google (ASUS)
Name Nexus 7 (2012)
Codename grouper
Released 2012
Original software Android 4.1.2 on Linux 3.0
Hardware
Chipset Nvidia Tegra 3
CPU Quad-core 1.2 GHz Cortex-A9
GPU ULP GeForce
Display 800x1280 IPS
Storage 8/16/32 GB
Memory 1 GB

Contributors

  • antonok

What works

  • Boot process
  • Telnet/SSH over USB
  • Screen
  • USB keyboard, mouse
  • Touchscreen
  • Wifi (somewhat hacky so far, will improve soon!)

What does not work

  • weston-keyboard
  • Can't boot without reflashing boot (!) [1]

How to enter flash mode

  • Connect a USB cable
  • Power the device off
  • Hold power + volume down
  • fastboot should work when the green android appears on the screen

Notes

  • I am using the LineageOS kernel found here
  • The kernel cannot be compiled on versions of gcc newer than 4.9 without the appropriate patch
  • I could not get UART debugging through the headphone jack to work - as far as I can tell, and according to a few other sources I found, the 2012 version of the Nexus 7 does not have this feature.
  • CONFIG_VT had to be enabled for graphics to work. In menuconfig this is located under Device Drivers -> Character devices -> Virtual terminal.
  • /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.
  • xwayland does not work.
  • weston with fbdev-backend.so uses pixman-type=3 (PIXMAN_TYPE_ABGR), which now does not require configuration.
  • The touchscreen input device is named elan-touchscreen.
  • The wifi chip is the Broadcom 4330.
  • This device was once officially supported on Ubuntu, so it has a firmware package in the Ubuntu repositories
  • This page includes a list of changes to the Android kernel that are not present in mainline Linux.
  • I was able to get networking over USB with an RTL8150 ethernet USB adapter by enabling the RTL8150 kernel config and following the network setup guide on the Alpine Linux wiki.
  • I was able to get wifi working by manually copying fw_bcmdhd.bin and nvram.txt to their kernel-specified locations and configuring /etc/network/interfaces. At this point, I ran /etc/init.d/networking restart, which gave an error about being unable to get a MAC address. I restarted the device to find that wifi Just Worked™, and was able to successfully scan for wireless networks and establish a connection to my secured wireless AP.
  • A newer kernel, that should work, can be found here (thanks to Jasper in IRC): https://github.com/Unlegacy-Android

Fun fact: grouper was the first tablet to run pmOS!