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 asus-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
Architecture armhf
Features
USB Networking
Works
Flashing
Works
Touchscreen
Works
Display
Works
WiFi
Partial
Xwayland
FDE
Mainline
Battery
3D Acceleration
Accelerometer
Audio
Bluetooth
Camera
GPS
Mobile data
Unavailable
SMS
Unavailable
Calls
Unavailable


Contributors

  • antonok

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

Installation process

1 $ git clone https://gitlab.com/postmarketOS/pmbootstrap.git
2 $ cd pmbootstrap
3 $ ./pmbootstrap.py init
4 $ ./pmbootstrap.py install --no-fde
5 $ ./pmbootstrap.py flasher flash_kernel
6 $ ./pmbootstrap.py flasher flash_rootfs

UI options

  • Weston: Boots, but also occasionally reboots on its own.
  • Hildon: Boots into a black screen. Poking some /sys/ variables might make the screen flash or turn on, but it remains unusable
  • XFCE4: Boots into a black screen.
  • Mate: Can't flash. This is due to the .img file being bigger than the system partition size. See GitHub issues [1] and [2].
  • Luna: Can't flash. Same as Mate.
  • KDE (Plasma-Mobile): Can't flash. Same as Mate. Which in turn wrecks your device partitions. This has happened even with flasher flash_rootfs --partition userdata

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. Update: Seems to be correctly set now
  • 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
  • "Desktop" Linux firmware are outdated. Check here for latest one.
  • 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. Update: Nothing special required anymore. Just boot up and use the DHCP networking process for USB networks
  • 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
  • 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.

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

See also

  • #445: Unfinished pull request to add wifi drivers
  • #1199: Unfinished pull request to use "unlegacy's kernel"