Google Pixel 3 (google-blueline)
![]() Google Pixel 3 | |
Manufacturer | |
---|---|
Name | Pixel 3 |
Codename | google-blueline |
Released | 2018 |
Hardware | |
Chipset | Qualcomm Snapdragon 845 (SDM845) |
CPU | Octa-core (4x2.5 GHz Kryo 385 Gold & 4x1.6 GHz Kryo 385 Silver) |
GPU | Adreno 630 |
Display | 1080 x 2160 P-OLED, HDR |
Storage | 64GB/128GB |
Memory | 4GB |
Architecture | aarch64 |
Software | |
Original software | Android |
Original version | 9.0 |
postmarketOS | |
Category | testing |
Pre-built images | no |
Mainline | partial |
Flashing |
Works |
---|---|
USB Networking |
No data |
Internal storage |
No data |
SD card |
No data |
Battery |
No data |
Screen |
No data |
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 |
Modem | |
Calls |
No data |
SMS |
No data |
Mobile data |
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
- hreikin
Users owning this device
- 8osm3rka
- BEEDELLROKEJULIANLOCKHART
- Caleb (Notes: smol :3)
- Danascape (Notes: WIP)
- Daudix (Notes: 64GB, Unlocked)
- Froggo (Notes: 4+128GB)
- Hlcj
- MasanoriOgino (Notes: UFS 128 GB Micron)
- Ptesarik (Notes: my main phone)
- Rom4nik
How to enter flash mode
The Pixel 3, like all Google Pixel/Nexus devices, uses Fastboot as the flashing protocol.
To enter Fastboot mode, hold Volume Down while powering on the device. Let go of Volume Down when "Fastboot mode" displays on the screen.
Alternatively, if connected to a pc then you can also use adb reboot bootloader
.
Installation
The steps below should allow you to flash postmarketOS to a Pixel 3 and boot to a point that telnet can be accessed.
- Run
pmbootstrap init
and then delete the generated linux-google-blueline folder - Edit the APKBUILD in the device-google-blueline folder to remove the
linux-google-blueline
andmesa-dri-gallium
dependencies and insert thelinux-postmarketos-qcom-sdm845
andsoc-qcom-sdm845
dependencies - Clone the sdm845 mainline kernel and create a new branch for your changes, copy the DTS file available in the Linaro kernel to the sdm845 mainline kernel and edit the Makefile to include it, comment out the following nodes to ensure the kernel compiles successfully:
&sde_te_active
,&sde_te_suspend
,&dsi0
and&dsi0_phy
- Add the following kernel configuration options to the sdm845.config file:
# Pixel 3 CONFIG_EXT4_FS=y CONFIG_KERNEL_GZIP=y CONFIG_CGROUPS=y CONFIG_ANDROID_PARANOID_NETWORK=n CONFIG_PFT=n CONFIG_USE_VFB=n CONFIG_KINETO_GAN=n CONFIG_SAMSUNG_TUI=n CONFIG_SEC_RESTRICT_ROOTING=n CONFIG_TZDEV=n
- Source
envkernel.sh
and runmake defconfig sdm845.config
andmake -j`nproc`
to compile the kernel, runpmbootstrap build --envkernel linux-postmarketos-qcom-sdm845
,pmbootstrap checksum device-google-blueline
andpmbootstrap build device-google-blueline
- Run
pmbootstrap install --split
,pmbootstrap initfs hook_add debug-shell
andpmbootstrap export
- Clone this DTBO repository from the crosshatch port
- Edit the dtboimg.cfg file with the following changes:
sdm845-c1-dvt1.1.dtbo id=0x215 rev=0x2
- Edit the sdm845-c1-dvt1.1.dts file with the following changes before running build.sh to create the dtbo.img:
/dts-v1/; / { model = "Google Inc. MSM sdm845 C1 DVT1.1"; compatible = "google,b1c1-sdm845", "qcom,sdm845"; qcom,board-id = <0x00021505 0>; };
- Run the following commands to flash everything to the phone, You have to flash the dtbo.img and then the kernel normally for the telnet shell and then use fastboot to flash the boot and root images created with
pmbootstrap install --split
otherwise nothing shows up in telnet when runningblkid
:
fastboot set_active b fastboot flash dtbo_b /path/to/dtbo.img pmbootstrap flasher flash_kernel fastboot flash vendor /path/to/exported/google-blueline-boot.img fastboot flash userdata /path/to/exported/google-blueline-root.img
- The phone boots and you should get the white screen with Google logo, sometimes it has a graphical glitch and others it doesn't. The SSH isn't working, it should have an IP and you can ping it but you can't connect by SSH. You can however connect to a shell with the telnet command;
$ telnet 172.16.42.1
- Run
blkid
, the vendor and userdata partitions should show up with thepmOS_boot
andpmOS_root
labels - Source
/etc/deviceinfo
andinit_functions.sh
before runningmount_subpartitions
which seems to complete with no errors reported in the shell or via dmesg but could be unsuccessful as nothing new is mounted when looking withmount
orblkid
- Running
mount_boot_partition
shows an error in telnet but not in dmesg however if you runmount -o ro -t ext2 /dev/sda10 /boot
you should get the following errors output to the shell and dmesg:
/ # mount_subpartitions / # mount_boot_partition Mount boot partition (/dev/sda10) to (read-only) mount: mounting /dev/sda10 on failed: No such file or directory / # mount -o ro -t ext2 /dev/sda10 /boot mount: mounting /dev/sda10 on /boot failed: Invalid argument
[ 118.355939] EXT4-fs (sda10): mounting ext2 file system using the ext4 subsystem [ 118.363336] EXT4-fs (sda10): bad block size 1024
- You can successfully mount the root partition with
mount_root_partition
and it is viewable in/sysroot
.
Here are some links to the config files and logs, scroll down for multiple files:
- dmesg and pmOS_init.log
- defconfig, sdm845.config and generated .config files from kernel compilation
Status
Work is ongoing, flashing works and telnet can be accessed during boot.
UART
USB
See also: https://github.com/Peter-Easton/android-debug-cable-howto, Serial_debugging:Cable_schematics#Google_Pixel_.22Android_Debug_Cable.22
Baud rate is 115200. Voltage is 3.3V, although 1.8V seems to work as well.
- Obtain a USB-C breakout board and a UART adapter
- Connect pins
board pin (USB-C pinout) - UART adapter pin
as following:- A1 (GND) - GND
- A8 (SBU1) - RXD
- B8 (SBU2) - TXD
- Connect breakout board and phone using a USB-C cable that has working SBU1/2 (I had to use a thicker TB3/USB 3.0 capable cable). Make sure the cable is in "top" orientation (in my case Thunderbolt logos were facing same side as phone's screen and the
A
side of breakout board), it won't work if the plug is reversed on one side. - Boot phone into fastboot, then execute
fastboot oem uart enable
and poweroff.
See also
- pmaports#1229 Pixel 3 (google-blueline) porting: progress and questions
- pmaports!3932 Draft: Device/blueline
- dmesg and pmOS_init.log
- Device Map