Jump to content

Google Nexus 9 (htc-flounder)

From postmarketOS Wiki
Revision as of 14:01, 9 October 2020 by Maxnet (talk | contribs) (Added Device owners)
HTC Nexus 9 (Wifi)
Nexus 9
Nexus 9
Manufacturer HTC
Name Nexus 9 (Wifi)
Codename htc-flounder
Released 2014
Hardware
Chipset Nvidia Tegra K1
CPU 2.3 GHz dual-core 64-bit Denver
GPU 192-core Kepler, 16M colors
Display 2048×1536 LCD IPS
Storage 16GB/32GB
Memory 2 GB LPDDR3-1600 RAM
Architecture aarch64
Software
Original software Android Lollipop 5.0
postmarketOS
Category testing
Pre-built images no
Mainline partial
Features
Flashing
Works
USB Networking
Works
Internal storage
No data
SD card
No data
Battery
No data
Screen
Partial
Touchscreen
No data
Multimedia
3D Acceleration
No data
Audio
No data
Camera
No data
Camera Flash
No data
Connectivity
WiFi
No data
Bluetooth
No data
GPS
No data
NFC
No data
Miscellaneous
FDE
No data
USB OTG
No data
HDMI/DP
No data
Sensors
Accelerometer
No data
Magnetometer
No data
Ambient Light
No data
Proximity
No data
Hall Effect
No data
Haptics
No data
Barometer
No data


Contributors

  • lillywho

Device owners


How to enter flash mode

Hold POWER + VOLDOWN, press Power to confirm Fastboot mode

Installation

$ pmbootstrap flasher flash_kernel
$ pmbootstrap flasher flash_rootfs

Minimal working dts

The following is a minimal working device tree that is just enough to boot into the initramfs debug-shell. The boot parameter clk_ignore_unused is a temporary workaround to fix an issue where the image on the screen slowly distorts to static as soon as the kernel boots. A similar issue is discussed here. Do not edit the google,flounder64 string, otherwise the bootloader will reject the dtb and refuse to boot the kernel.

// SPDX-License-Identifier: GPL-2.0
/dts-v1/;

#include "tegra132.dtsi"

/ {

	model = "Google Nexus 9";
	compatible = "google,flounder64", "nvidia,tegra132";

	aliases {
		serial0 = &uarta;
	};

	chosen {
		stdout-path = "serial0:115200n8";
		bootargs = "clk_ignore_unused PMOS_NO_OUTPUT_REDIRECT";
	};

	memory {
		device_type = "memory";
		reg = <0x0 0x80000000 0x0 0x80000000>;
	};

	clocks {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;

		clk32k_in: clock@0 {
			compatible = "fixed-clock";
			reg=<0>;
			#clock-cells = <0>;
			clock-frequency = <32768>;
		};
	};

	serial@70006000 {
		status = "okay";
	};

};

Mainlining notes

  • The partition table is a special tegra thing where the sector the GPT is stored is passed as a kernel commandline argument by the bootloader.
  • Broadcom BCM4354XKUBG wifi module
  • Broadcom BCM4752 GPS
  • Broadcom BCM2079x NFC (enable on PB1, irq on PR7, wake on PS1, i2c addr 0x77)
  • NXP tfa9895 audio amp (enable on PX5, i2c addr 0x34)
  • NXP tfa9895l amp (i2c addr 0x35)
  • Realtek rt5677 codec (enable on PX3, i2c addr 0x2d)
  • USB port is EHCI1, id pin is PW2
  • On the LTE version the modem is on EHCI2

See also