Qualcomm Snapdragon 410/412 (MSM8916)

From postmarketOS
Revision as of 06:49, 25 May 2020 by Minecrell (talk | contribs) (Add CPU/GPU)
Jump to: navigation, search
Qualcomm MSM8916
Manufacturer Qualcomm
Name MSM8916
Architecture aarch64
CPU 4x 1.2/1.4 GHz 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
Partial
Camera


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
Motorola Moto E (2nd Gen) motorola-surnia
Motorola Moto G 2015 motorola-osprey
Motorola Moto G4 Play motorola-harpia Y
Samsung Galaxy A3 (2015) samsung-a3ulte Y
Samsung Galaxy A5 (2015) samsung-a5ulte, samsung-a5lte Y
Samsung Galaxy J3 2016 (J320P) samsung-j3ltespr Y
Samsung Galaxy J5 2015 samsung-j5nlte, samsung-j53g Y
Samsung Galaxy S4 Mini Value Edition samsung-serranovelte Y
Wileyfox Swift wileyfox-crackling Y
Xiaomi Redmi 2 wingtech-wt88047

APQ8016 (Snapdragon 410, WiFi-only)

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

MSM8916v2 (Snapdragon 412)

Device Codename Mainline
BQ Aquaris X5 bq-picmt, bq-paella Y

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, ...).

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
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!

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 py3-dbus
$ /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?)

Note: Before using 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 (the latter requires py3-gobject3).

$ /usr/lib/ofono/test/send-sms "COUNTRYCODENUMBER" "Test SMS from oFono" 0
Send message using modem /gobi_0 ...
/gobi_0/message_9914F33A7C53DD6F080B38755E7D64FD59EA8F8F

Mainlining

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