[WP8548] [MangOH] ADC


Test environnement :

  • Mangoh board + WP8548 module with latest firmware release 11 (legato 16.04)
  • And Prototype board including WP8548 module with latest firmware release 11 (legato 16.04)

We could get the ADC function working with these commands when upgrading to firmware release 11 :
cm adc read EXT_ADC1
cm adc read EXT_ADC2

But we need some help since the resulting values don’t correspond to any logical value and nott sure at all EXT_ADC1 corresponds to adc0 and EXT_ADC2 corresponds to adc1… Could you please tell us how to interpret values and double check on your side the corresponding voltage values ?


Yes, there were several problems with ADC on firmware release 11/legato 16.04.
These have all been addressed in the upcoming release 12/legato 16.07.
Specifically, you will have access to EXT_ADC0, EXT_ADC1, EXT_ADC2, EXT_ADC3.
Values are returned in milliVolts (range 0 - 1800).



Hello Sanderson,

When the new version is available (firmware release 12/legato 16.07) ?
It is possible to get the realease note of the future version 12 ?

With Marc (Mpapa2016), we need to schedule the corrections of pending problems.




The ADC0 and ADC1 inputs can be read in mV on range 0 - 1800mV with firmware release 12 through these commands :
ADC1 : cm adc read EXT_ADC1 (or) AT command AT!MADC?5

However, the Product Technical Specification states ADC0 and ADC1 have a resolution of 15 bits (PTS rev11, chapter 4.16, page 75) but we can’t get such resolution with returned value in mV on range 0 - 1800mV
We based our project on this resolution so : is there another command to get the 15 bits raw values for these ADC ? And is this evolution on the roadmap ?

By the way, the VGPIO = 1.8V reference for the ADC is specified between 1.7 and 1.9V according to the PTS (PTS rev11, chapter 4.13, page 73).
Is it a final specification with +/-5.5% error ?




I have the same problem. 15 bits and only 1800 values? why? Why do not they use a double?


Hello Sergio,

I received this reply from Sierra support at the time I posted this topic. I think it should help :

EXT_ADC1 - corresponds to -> /sys/class/hwmon/hwmon0/device/mpp_05 - device -> pm8xxx-adc

In yocto source you can refer “linux/include/linux/mfd/pm8xxx/pm8xxx-adc.h”
The data meaningful for each individual channel whether it is

  • voltage, current, temperature, etc.
  • All voltage units are represented in micro - volts.

root@swi-mdm9x15:~# cm adc read EXT_ADC1
root@swi-mdm9x15:~# cat /sys/class/hwmon/hwmon0/device/mpp_05
Result:1788998 Raw:42984

indicates that the pm8xxx voltage is 1.788998 volt, and the raw ADC reading is 42984 units.

EXT_ADC2 - corresponds to -> /sys/class/hwmon/hwmon1/device/in0_mv - device -> swimcu-hwmon
root@swi-mdm9x15:~# cm adc read EXT_ADC2
root@swi-mdm9x15:~# cat /sys/class/hwmon/hwmon1/device/in0_mv
returns value in mili volt i.e( 0.544 volt)

you may also refer to below links for ADC :


OK! thank your very much.
I will try to used it.