Qualcomm Snapdragon 410/412 (MSM8916)
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 |
Components | |
CPU |
Works |
UART |
Works |
Storage |
Works |
USB |
Works |
Display |
Works |
GPU |
Works |
Pinctrl |
Works |
I²C |
Works |
Audio |
Works |
Video |
Works |
Thermal |
Works |
WiFi |
Works |
Bluetooth |
Works |
Modem |
Works |
GPS |
Works |
Camera |
Partial |
Suspend | |
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.
Devices
MSM8916 (Snapdragon 410)
Device | Codename | Mainline | Category |
---|---|---|---|
ASUS ZenFone 2 Laser (720p) | asus-z00l | Y | testing |
Asus Zenfone Max | asus-z010d | 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 | 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 |
Wileyfox Swift | wileyfox-crackling | Y | community |
Xiaomi Redmi 2 | xiaomi-wt88047 (wingtech-wt88047) | Y | testing |
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-picmt, bq-paella | Y | community |
Audio
PulseAudio
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
.
ALSA
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
Modem
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.
Usage
At the moment, the modem is primarily tested using the oFono test scripts.
$ sudo apk add ofono-scripts $ /usr/lib/ofono/test/enable-modem $ /usr/lib/ofono/test/online-modem $ /usr/lib/ofono/test/list-modems
Check if the SIM card shows up. If you have a dual SIM device (e.g. Wileyfox Swift), follow this guide. (TODO: Maybe move this here or somewhere else?)
qmicli
from that guide, make sure that oFono is stopped (sudo rc-service ofono stop
). After selecting SIM slot, start oFono servce again.Unlock the SIM card:
$ /usr/lib/ofono/test/enter-pin pin <pin>
Eventually, your SIM card should show up as registering in /usr/lib/ofono/test/list-modems
.
ofonoctl
is also very useful test tool:
$ sudo apk add ofonoctl $ ofonoctl list
SMS
Use the send-sms
and receive-sms
test scripts (from ofono-scripts
package).
$ /usr/lib/ofono/test/send-sms "COUNTRYCODENUMBER" "Test SMS from oFono" 0 Send message using modem /gobi_0 ... /gobi_0/message_9914F33A7C53DD6F080B38755E7D64FD59EA8F8F
Mobile Internet
Should work on most devices. You should be able to connect to the Internet with your favorite desktop environment. Otherwise, see https://gist.github.com/Minecrell/4cc2bfb9fcae18e294386b0a213907d1
CPU
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 (TODO: insert link here).
Mainlining
- MSM8916 is a great platform to get started with mainlining! It has a dedicated MSM8916 Mainlining guide that explains how to get started.