Google Pixel 3a (google-sargo)
![]() Google Pixel 3a | |
Manufacturer | |
---|---|
Name | Pixel 3a |
Codename | google-sargo |
Released | 2019 |
Type | handset |
Hardware | |
Chipset | Qualcomm Snapdragon 670 (SDM670) |
CPU | Octa-core (2x2.0 GHz 360 Gold & 6x1.7 GHz Kryo 360 Silver) |
GPU | Adreno 615 |
Display | 1080x2220 OLED |
Storage | 64 GB |
Memory | 4 GB |
Architecture | aarch64 |
Software | |
Original software | Android |
Original version | 9 |
postmarketOS | |
Category | testing |
Pre-built images | no |
Mainline | yes |
Unixbench Whet/Dhry score | 4417.7 |
Flashing |
Works |
---|---|
USB Networking |
Works |
Internal storage |
Works |
SD card |
No data |
Battery |
Partial |
Screen |
Works |
Touchscreen |
Works |
Multimedia | |
3D Acceleration |
Works |
Audio |
Partial |
Camera |
Partial |
Camera Flash |
Works |
Connectivity | |
WiFi |
Partial |
Bluetooth |
Works |
GPS |
No data |
NFC |
Partial |
Modem | |
Calls |
Partial |
SMS |
Works |
Mobile data |
Works |
Miscellaneous | |
FDE |
Works |
USB OTG |
Broken |
HDMI/DP |
No data |
Sensors | |
Accelerometer |
Partial |
Magnetometer |
No data |
Ambient Light |
No data |
Proximity |
No data |
Hall Effect |
No data |
Haptics |
Works |
Barometer |
No data |
Contributors
Maintainer(s)
- Flamingradian (non-XL devices)
Users owning this device
- Adrian
- Anoraktrend (Notes: Broken Screen)
- Anthony (Notes: GrapheneOS)
- Bapt17 (Notes: Daily driver)
- BlackEyedSquid (Notes: Bootloader unlocked, Google Edition)
- CalcProgrammer1
- Craftyguy
- Cralex (Notes: Running Android)
- Earboxer (Notes: VZW OEM-locked and stuck on Android 12)
- Eriki73 (Notes: cracked screen)
- Flamingradian (Notes: PVT 1.0, daily driver + mainlining target)
- Frieder.Hannenheim (Notes: PostmarketOS daily driver)
- Froggo (Notes: 4+64GB, Verizon OEM Locked)
- Ignapk (Notes: Daily driver)
- Joshaspinall (Notes: Currently running Lineage Android)
- Juliaff7 (Notes: Daily driver pmOS+phosh)
- Linmob (Notes: 2x Ubuntu Touch / postmarketOS)
- Marlock (Notes: Secondary device on Ubuntu Touch)
- MasanoriOgino (Notes: eMMC 64 GB SKHynix)
- Mint (Notes: Screen shade)
- Ozzelot (Notes: Ubuntu Touch, daily driver)
- Pabloyoyoista
- Proycon
- QC8086
- R00t (Notes: running postmarketOS, multiple)
- Robert.mader (Notes: Development / Testing)
- Socksinspace (Notes: Dual boot with postmarketOS and LOS microg)
- Syboxez (Notes: Currently dual booting pmOS and kupfer)
- UltrasonicMadness
- Vipaol (Notes: Daily driver, a14, crdroid, microG)
Entering Fastboot
Hold
and until device loads into FastbootFastboot commands
Might be convenient for dual boot
fastboot getvar current-slot
fastboot set_active a
andfastboot set_active b
Installation
You can follow a relatively typical installation using pmbootstrap as documented here (there are no pre-built images) or using the device-specific Installation guide. This section documents some quirks in installation.
Flashing
Flashing the rootfs to the system partition on Android 10 or later may result in an error:
$ pmbootstrap flasher flash_rootfs --partition system_b Sending sparse 'system_b' 1/5 (261014 KB) OKAY [ 9.129s] Writing 'system_b' FAILED (remote: 'Partition should be flashed in fastbootd') fastboot: error: Command failed
Flashing to system is no longer the default behaviour of pmbootstrap, but you will encounter this if you choose not to overwrite userdata. You can either flash to the "physical", GPT-based system partition:
$ pmbootstrap export $ fastboot flash --force system_b /tmp/postmarketOS-export/google-sargo.img
or the dynamic partition:
$ fastboot set_active a $ fastboot reboot fastboot # this will change the UI shown on the device $ pmbootstrap flasher flash_rootfs --partition system_b
For more information, see Android dynamic partitions.
DTBO
Thanks to a hack in the kernel fork, you do not need to erase the DTBO partition. Keeping the DTBO comes with a side effect. Instead of seeing "Google Pixel 3a" as the machine name, you might see something like "Google Inc. MSM sdm670 S4 PVT v1.0".
If you don't like this side effect, erasing the DTBO is simple and normal for most mainline device ports:
$ fastboot erase dtbo
Features
Battery
Support for charging was developed by the SDM845 mainlining community, with no thermals and only 1 A. There was passive cooling logic but it has been removed due to being faulty.
If you wish to run resource-intensive programs for long periods of time, you can manually monitor the battery temperature and adjust the charging current as appropriate.
Temperature in tenths of a degree Celsius (example: 22.5 degrees):
$ cat /sys/class/power_supply/qcom-battery/temp 225
Charging current limit in microamps (further limited by the driver to 1A):
$ cat /sys/class/power_supply/pm660-charger/current_max 1500000
Set the current limit:
# tee /sys/class/power_supply/pm660-charger/current_max 500000 500000
Display
The panel works. Note that some XL devices may have an unsupported panel, the Tianma NT37700F.
Fingerprint sensor
This device has the FPC1020 fingerprint sensor which is accessible through the QSEECOM interface. A driver for FPC1020 is being worked on here but can only work by interacting directly with the fingerprint sensor.
NFC
NFC card detection works. Nothing else was tested. The embedded secure element seems to have no driver support.
WiFi
You don't get the same MAC address as on Android, even though it is possible to detect the MAC address that Android uses (somewhere in /sys/firmware/devicetree/base/chosen/cdt/cdb2/wlan_mac1). Instead, it is generated with the serial number.
WiFi hotspots are on the same interface as the one used to connect to WiFi, so a hotspot cannot be set up over a WiFi connection, unlike on Android.
WoWLAN does not seem to work.
The WiFi firmware has no support for thermal throttling, although this may be handled by the unsupported Thermal Mitigation Device interface over QMI. Transmitting at high bandwidths from the device while charging can cause a reboot due to overheating.
Calls
It is possible to initiate calls and hear them on the 3.5 mm jack, but not on speakers.
The "Voice calls" use case should be selected in the settings to hear calls.
Warning: Call audio may be loud. Call audio goes directly from the modem to the ADSP via proprietary firmware, so volume cannot be applied in software. Volume can be controlled by hardware, but it is not hooked up to the normal volume controls. Please change the hardware volume if you wish to hear calls at a reasonable level:
$ amixer -c 0 cset name='Digital RX1 Digital Volume' 23% $ amixer -c 0 cset name='Digital RX2 Digital Volume' 23% # alsactl store # Make this configuration persist across reboots
Camera
Taking pictures with Megapixels using the front camera is supported, but the results are dark. With the v4l-utils
package, the exposure can be set to 2605, the maximum value, using:
$ v4l2-ctl -d /dev/v4l-subdev18 -c exposure=2605
Audio
You can get audio over Bluetooth, on the built-in speakers, and on the 3.5 mm headphone jack. The built-in speakers and headphone jack only support 16-bit audio. The built-in microphone does not work yet.
Sensors
FastRPC delivers sensor-related files to the modem to allow iio-sensor-proxy to discover sensors hosted by the ADSP.
The ADSP (Audio DSP, with the additional role as the SSC on this device) crashes and the device hangs after resuming from suspend if FastRPC continues while the device is suspended. A pre-suspend hook for elogind is installed to stop FastRPC communication and prevent this. In case your UI doesn't use elogind, you may need to disable FastRPC.
Disabling FastRPC:
# rc-update del hexagonrpcd-adsp-sensorspd
Enabling FastRPC:
# rc-update add hexagonrpcd-adsp-sensorspd
See (pmaports#3052).
Thermals
The CPU throttles at high temperatures. The Pixel 3a and Pixel 3a XL share thermal profiles. Throttling on the GPU has not been tested yet.
Trusted Platform Module
The Pixel 3a's TPM, the Titan M, controls verified boot and is capable of performing cryptographic operations. It is currently not supported.