Motorola Moto G4 (motorola-athene)
| This device has been archived. This means that it no longer appears in pmbootstrap and is likely broken. It can still be selected in pmbootstrap init by typing in the vendor and codename, but you will have to build the kernel package manually. |
|
Moto G4 | |
| Manufacturer | Motorola |
|---|---|
| Name | Moto G4 |
| Codename | motorola-athene |
| Released | 2016 |
| Type | handset |
| Hardware | |
| Chipset | Qualcomm Snapdragon 617 (MSM8952) |
| CPU |
4x 1.6 GHz 4x 1.2 GHz Cortex-A53 |
| GPU | Adreno 405 |
| Display | 1080 x 1920 |
| Storage | 16/32 GB |
| Memory | 2/3 GB |
| Architecture | aarch64 |
| Software | |
Original software The software and version the device was shipped with. |
Android 6.0.1 |
Extended version The most recent supported version from the manufacturer. |
Android |
| postmarketOS | |
| Category | archived |
Mainline Instead of a Linux kernel fork, it is possible to run (Close to) Mainline. |
no |
pmOS kernel The kernel version that runs on the device's port. |
3.10.108 |
Unixbench score Unixbench Whetstone/Dhrystone score. See Unixbench. |
2621.7 |
| Device package |
|
| Kernel package |
|
Flashing Whether it is possible to flash the device with pmbootstrap flasher. |
Partial
|
|---|---|
USB Networking After connecting the device with USB to your PC, you can connect to it via telnet (initramfs) or SSH (booted system). |
Works
|
Battery Whether charging and battery level reporting work. |
Works
|
Screen Whether the display works; ideally with sleep mode and brightness control. |
Works
|
Touchscreen |
Works
|
| Multimedia | |
3D Acceleration |
Untested
|
Audio Audio playback, microphone, headset and buttons. |
Broken
|
Camera |
Untested
|
| Connectivity | |
WiFi |
Works
|
Bluetooth |
Untested
|
GPS |
Untested
|
| Modem | |
Calls |
Untested
|
SMS |
Untested
|
Mobile data |
Untested
|
| Miscellaneous | |
FDE Full disk encryption and unlocking with unl0kr. |
Untested
|
| Sensors | |
Accelerometer Handles automatic screen rotation in many interfaces. |
Untested
|
Contributors
- fengjiongmax
- thejsa
Users owning this device
- Bengris32 (Notes: 2x, Unlocked)
- BruninTech (Notes: Running Android 9, 16GB, Broken charging port and battery cable)
- Coatlessali
- Fengjiongmax (Notes: uart solder pads ruined by my poor soldering skill)
- GrantM11235
- LaermWirke (Notes: XT1622; hardware buttons for power and volume fell off, which makes booting into bootloader tedious)
- Mtheunis
- Nobodywasishere (Notes: XT1625)
- Stormwoodpecker
- Yuui
Models/Variants
According to Wikipedia, the G4 (SKU xt162x) and G4 Plus (xt164x) differ only trivially (memory, storage or peripherals/sensors [camera resolution, fingerprint reader]).
How to enter flash mode
- Power + Volume Down buttons
Installation
$ pmbootstrap flasher flash_rootfs
$ pmbootstrap flasher boot
Problems
- Firmware issues
- kernel partition can't be flashed because the boot partition is not big enough
- Loading the adsp subsystem works momentarily before crashing the device
- Loading the modem subsystem works momentaily before crashing the device
Firmware issues
Log from dmesg:
[ 68.992082] subsys-pil-tz 1de0000.qcom,venus: venus: Failed to locate venus.mdt
[ 68.992096] msm_vidc: err: Failed to download firmware
[ 68.992976] msm_vidc: err: Failed to load video firmware
[ 68.993000] msm_vidc: err: msm_comm_init_core - firmware loading failed
[ 68.993007] msm_vidc: err: Failed to move from state: 1 to 2
[ 68.993012] msm_vidc: err: Failed to move video instance to init state
[ 68.993080] msm_vidc: err: Failed to create video instance, core: 0, type = 0
Hardware details
hwtest output for SKU xt1625
| Category | Model | Path | Status | Value |
|---|---|---|---|---|
| framebuffer | mdssfb_90000 | /sys/class/graphics/fb0 | Working | U:1080x1920p-0 |
| framebuffer | mdssfb_a0000 | /sys/class/graphics/fb1 | Working | |
| input | gpio-keys | /dev/input/event7 | Working | |
| input | qpnp_pon | /dev/input/event6 | Working | |
| input | qwerty | /dev/input/event5 | Working | |
| input | Rear proximity sensor | /dev/input/event4 | Working | |
| input | light | /dev/input/event3 | Working | |
| input | synaptics_dsx_i2c | /dev/input/event2 | Working | |
| input | input_mt_wrapper | /dev/input/event1 | Working | |
| input | sensorprocessor | /dev/input/event0 | Working |
For comparison, results from test_sensors for SKU xt1625 on obsolete sailfishOS version 3.0.0.8 running kernel 3.10.84:
test_sensors output for SKU xt1625
Hardware module ID: sensors Hardware module Name: Motorola Sensors Module Hardware module Author: Motorola Hardware module API version: 0x1 Hardware HAL API version: 0x0 Poll device version: 0x1030001 API VERSION 0.1 (legacy): 0x1 API VERSION 0.1: 0x65537 API VERSION 1.0: 0x16777217 API VERSION 1.1: 0x16842753 API VERSION 1.2: 0x16908289 API VERSION 1.3: 0x16973825 API VERSION 1.4: 0x17039361 Got 19 sensors === Sensor 0 == Name: 3-axis Accelerometer Vendor: Bosch Version: 0x1 Handle: 0x1 Type: 1 maxRange: 157 resolution: 0 power: 1 mA minDelay: 10000 === Sensor 1 == Name: 3-axis Gyroscope Vendor: Bosch Version: 0x1 Handle: 0x2 Type: 4 maxRange: 2000 resolution: 0 power: 1 mA minDelay: 5000 === Sensor 2 == Name: 3-axis Uncalibrated Gyroscope Vendor: Bosch Version: 0x1 Handle: 0x3 Type: 16 maxRange: 2000 resolution: 0 power: 1 mA minDelay: 5000 === Sensor 3 == Name: Game Rotation Vector Vendor: Motorola Version: 0x1 Handle: 0x4 Type: 15 maxRange: 1 resolution: 0 power: 2 mA minDelay: 5000 === Sensor 4 == Name: Gravity Vendor: Motorola Version: 0x1 Handle: 0x5 Type: 9 maxRange: 10 resolution: 0 power: 2 mA minDelay: 10000 === Sensor 5 == Name: Linear Acceleration Vendor: Motorola Version: 0x1 Handle: 0x6 Type: 10 maxRange: 157 resolution: 0 power: 2 mA minDelay: 10000 === Sensor 6 == Name: Step Detector sensor Vendor: Bosch Version: 0x1 Handle: 0x11 Type: 18 maxRange: 1 resolution: 0 power: 0 mA minDelay: 0 === Sensor 7 == Name: Step Counter sensor Vendor: Bosch Version: 0x1 Handle: 0x12 Type: 19 maxRange: 340282346638528859811704183484516925440 resolution: 0 power: 0 mA minDelay: 1000000 === Sensor 8 == Name: Ambient Light sensor Vendor: TAOS Version: 0x1 Handle: 0x7 Type: 5 maxRange: 65535 resolution: 1 power: 0 mA minDelay: 0 === Sensor 9 == Name: Proximity sensor Vendor: TAOS Version: 0x1 Handle: 0x8 Type: 8 maxRange: 100 resolution: 100 power: 0 mA minDelay: 0 === Sensor 10 == Name: Display Rotation sensor Vendor: Motorola Version: 0x1 Handle: 0x9 Type: 65536 maxRange: 4 resolution: 1 power: 1 mA minDelay: 0 === Sensor 11 == Name: Flat Up Vendor: Motorola Version: 0x1 Handle: 0xa Type: 65537 maxRange: 1 resolution: 1 power: 1 mA minDelay: 0 === Sensor 12 == Name: Flat Down Vendor: Motorola Version: 0x1 Handle: 0xb Type: 65538 maxRange: 1 resolution: 1 power: 1 mA minDelay: 0 === Sensor 13 == Name: Stowed Vendor: Motorola Version: 0x1 Handle: 0xc Type: 65539 maxRange: 1 resolution: 1 power: 0 mA minDelay: 0 === Sensor 14 == Name: Camera Activation sensor Vendor: Motorola Version: 0x1 Handle: 0xd Type: 65540 maxRange: 1 resolution: 1 power: 1 mA minDelay: 0 === Sensor 15 == Name: ChopChop Gesture Vendor: Motorola Version: 0x1 Handle: 0xf Type: 65546 maxRange: 1 resolution: 1 power: 1 mA minDelay: 0 === Sensor 16 == Name: Rear Proximity sensor Vendor: Motorola Version: 0x1 Handle: 0x10 Type: 8 maxRange: 100 resolution: 100 power: 0 mA minDelay: 0 === Sensor 17 == Name: Glance Gesture Vendor: Motorola Version: 0x1 Handle: 0x13 Type: 24 maxRange: 1 resolution: 1 power: 1 mA minDelay: -1 === Sensor 18 == Name: Moto Glance Gesture Vendor: Motorola Version: 0x1 Handle: 0x14 Type: 65548 maxRange: 1 resolution: 1 power: 1 mA minDelay: -1
CPU tuning
For unknown reasons, the default configuration boots only 5 cpus, boot_cpus=0,4,5,6,7. This boots only one of the 1.65 GHz cores, and the four 1.21 GHz cores. This can be shown via cpufreq-info (package cpufrequtils), or htop.
The default governor is battery-draining "performance".
To utilize all cores, extract and edit (or update) bootimg.cfg from boot.img to use boot_cpus=0-7. Boot the new image via fastboot boot boot.img. Alternatively, edit deviceinfo and repeat pmbootstrap install. This configuration will boot the 4x 1.65 GHz cores as cpus 0-3 and the 4x 1.21 GHz cores as cpus 4-7.
The governor for each quad is assigned separately:
# cpufreq-set -c 0 -r -g ondemand
# cpufreq-set -c 4 -r -g ondemand
This change does not persist across reboots.
ubench results
| boot_cpus | governor | ubench | comment | |
|---|---|---|---|---|
| 0,4,5,6,7 | performance | 1470.9 | nominal | |
| 0,4,5,6,7 | ondemand | 1473.7 | change governor only | |
| 0-7 | performance | 2619.3 | change boot_cpus only | |
| 0-7 | ondemand | 2621.7 | change both |