Qualcomm Snapdragon 410/412 (MSM8916)

From postmarketOS
Jump to navigation Jump to search
Qualcomm MSM8916
MSM8916 in ceramic BGA package
MSM8916 in ceramic BGA package
Manufacturer Qualcomm
Name MSM8916
Architecture aarch64
CPU 4x 1.2/1.4 GHz ARM Cortex-A53
GPU Adreno 306
Year 2014
Process 28nm
Mainline yes

MSM8916/APQ8016 (or Snapdragon 410) is Qualcomm SoC released in 2014, with great mainline support orginally added for the Dragonboard 410c. There is a slightly higher clocked variant (CPU cores up to 1.4 GHz) available as Snapdragon 412.


MSM8916 (Snapdragon 410)

Device Codename Mainline Category
Alcatel Idol 3 (4.7") alcatel-idol347 Y testing
ASUS ZenFone 2 Laser (720p) asus-z00l Y testing
Asus Zenfone Max asus-z010d Y testing
Huawei Ascend G7 huawei-g7 Y testing
Lenovo A6000 lenovo-a6000 Y testing
Lenovo A6010 lenovo-a6010 Y testing
LG K10 lg-m216 Y testing
Motorola Moto E (2nd Gen) motorola-surnia Y testing
Motorola Moto G 2015 motorola-osprey Y testing
Motorola Moto G4 Play motorola-harpia Y community
OPPO Mirror 5s oppo-a51f Y testing
Samsung Galaxy A3 (2015) samsung-a3ulte, samsung-a3lte Y community
Samsung Galaxy A5 (2015) samsung-a5ulte, samsung-a5lte Y community
Samsung Galaxy Grand Prime (CAN) samsung-gprimeltecan Y testing
Samsung Galaxy J3 2016 (J320P) samsung-j3ltespr Y testing
Samsung Galaxy J5 2015 samsung-j5nlte, samsung-j53g Y testing
Samsung Galaxy S4 Mini Value Edition samsung-serranovelte Y community
Samsung Galaxy Tab A 8.0 LTE (SM-T355Y) samsung-gt58lte Y testing
Wileyfox Swift wileyfox-crackling Y community
Xiaomi Redmi 2 xiaomi-wt88047 (wingtech-wt88047) Y community

APQ8016 (Snapdragon 410, WiFi-only)

Device Codename Mainline Category
Arrow DragonBoard 410c arrow-db410c Y community
Samsung Galaxy Tab 4 10.1 WiFi (2015) SM-T533 samsung-matissevewifi Y testing
Samsung Galaxy Tab A 9.7 WiFi (2015) samsung-gt510wifi Y testing

MSM8916v2 (Snapdragon 412)

Device Codename Mainline Category
BQ Aquaris X5 bq-paella Y community


All MSM8916 devices in postmarketOS use lk2nd as secondary bootloader. It does not replace the stock bootloader. Instead, it is flashed in place of an Android boot image, so that the stock bootloader will first load lk2nd instead of a regular Linux kernel. The advantage of this approach is that there is a consistent installation procedure for all MSM8916 devices (once lk2nd was installed), and various device-specific quirks can be handled within lk2nd.

Installing lk2nd

lk2nd fastboot screen example

The instructions for installing lk2nd vary from device to device, so please check your device wiki page for instructions. Once you have lk2nd installed and working, you can proceed with the common installation procedure documented below.

Installation from pre-built image

The MSM8916-based devices in the community category (see table above) have pre-built images that can be easily installed without pmbootstrap. There are different images (e.g. Phosh or Plasma Mobile) to choose from and they are updated every week. If you want more control about the installation (e.g. no proprietary firmware, different UI, extra packages, ...) consider using the pmbootstrap installation method instead (documented further below).

Choose an image for your device from the download page.

Pick the latest date, choose UI between Phosh or Plasma Mobile and download 2 files:

  1. <date>-<release>-<ui>-<device>-mainline-modem.img.xz
  2. <date>-<release>-<ui>-<device>-mainline-modem-boot.img.xz

Unpack those files (unxz *-<device>-*.img.xz) and with phone in "lk2nd mode" flash those accordingly, smaller *-boot.img image to boot partition, the larger one to userdata partition, and do not forget to erase system partition to prevent accidental booting from it. For example:

$ unxz 20210202-0502-postmarketOS-edge-plasma-mobile-3.2-samsung-a5lte-mainline-modem.img.xz
$ unxz 20210202-0502-postmarketOS-edge-plasma-mobile-3.2-samsung-a5lte-mainline-modem-boot.img.xz
$ fastboot flash boot 20210202-0502-postmarketOS-edge-plasma-mobile-3.2-samsung-a5lte-mainline-modem-boot.img
$ fastboot flash userdata 20210202-0502-postmarketOS-edge-plasma-mobile-3.2-samsung-a5lte-mainline-modem.img
$ fastboot erase system
$ fastboot reboot

The default username is user, and the default password is 147147. Enjoy postmarketOS!

Installation using pmbootstrap

Using pmbootstrap you can generate your own fully customized images, with many more UIs to choose from and other options. However, at the moment it works only on Linux systems.

  1. Install pmbootstrap
  2. Follow the Installation guide :
    1. pmbootstrap init (choose your device, UI you like and other options)
    2. pmbootstrap install
  3. Put phone into "lk2nd mode", and continue
    1. pmbootstrap flasher flash_kernel
  4. It is recommended to install large phone UIs like Plasma Mobile or Phosh to userdata partition, because system partition is too small for them:
    1. pmbootstrap flasher flash_rootfs --partition userdata
    2. fastboot erase system
  5. fastboot reboot

Enjoy postmarketOS!



Audio should work out of the box with PulseAudio. In your favorite PulseAudio mixer (e.g. pulsemixer on the command line) you can select the output port to use (e.g. Speaker, Earpiece, ...).

Note: If you use pulsemixer you can switch between output/input configuration with F1/F2. To select a particular output/input device press Enter and choose Set port.


Everything is muted by default and must be enabled through alsaucm. Unfortunately, the tool is not very user-friendly.

$ alsaucm -i -c hw:0
set _verb HiFi
set _enadev <device>

where <device> is one of Speaker, Earpiece, Headphones, Mic1, Mic2 or Headset. alsaucm does not track which devices are already enabled, therefore it is possible to produce combinations that won't work properly (e.g. Headphones+Earpiece). To switch between devices, the old device first needs to be re-enabled and then disabled:

$ alsaucm -i -c hw:0
set _verb HiFi
set _enadev OLD
set _disdev OLD
set _enadev NEW
Warning: alsaucm sets the volume to maximum by default. It is possible to increase the volume even further, however, this may lead to permanent damage to your speaker!


To use the modem, select the mainline-modem kernel instead of mainline, and make sure to agree to the usage of non-free firmware (required for the modem).

Note that this changes the way audio is routed on the device:

  • Without modem, audio is routed directly to the audio hardware, and works without the need for non-free firmware.
  • With modem running, audio must be routed through the audio DSP, which requires non-free firmware.

Therefore you should choose the kernel depending whether or not you would like to run the modem.

For usage instructions, see Modem.


On Qualcomm devices GNSS is usually part of the modem. ModemManager and libqmi (with qmicli) can configure and use the modem Location service. There is a WIP MR to the gpsd that adds the support for GNSS via Qualcomm modems. Alternatively you can run gpsd to read NMEA output from qmicli.

An example of that would be the following. (You need ModemManager to run and make sure that CID is correct)

$ sudo qmicli -pd /dev/modem --loc-start --client-no-release-cid
$ sudo qmicli -pd /dev/modem --loc-follow-nmea --client-cid=2 | gpsd -bnN /dev/stdin


While the specifications of MSM8916 have 1200 MHz as max clock speed, currently the max MHz the CPU will operate with pmOS is 998 MHz. There are WIP changes available to make it work (https://github.com/Minecrell/linux/commits/cpr59).


  • MSM8916 is a great platform to get started with mainlining! It has a dedicated MSM8916 Mainlining guide that explains how to get started.