Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pourquoi la batterie de mon smartphone se vide en une journée ? voir moins :-/

Pourquoi la batterie de mon smartphone se vide en une journée ? voir moins :-/

Vous avez surement déjà entendu parler des projets Volta ou Doze qui visent à améliorer l'autonomie des smartphones Android. La batterie est un composant primordial de votre téléphone. Venez découvrir comment l'énergie qu'elle stocke est consommée et quels sont les pièges à éviter afin de ne pas la gaspiller grâce à ARO et Battery Historian. Au programme : un peu de physique, du code, et des mesures.

Pierre Crépieux

November 10, 2015
Tweet

More Decks by Pierre Crépieux

Other Decks in Programming

Transcript

  1. POURQUOI LA BATTERIE DE MON SMARTPHONE SE VIDE EN UNE

    JOURNÉE ? ... VOIR MOINS :-/ Pierre Crépieux Droidcon Paris 2015
  2. LES SYMPTÔMES La batterie chauffe Le téléphone s'éteint au bout

    de quelques heures Les informations concernant la batterie sont alarmantes
  3. BATTERIE Stocke de l'energie a une capacité, ex: 2800mAh A

    (Ampere): courant electrique V (Volt): tension W (Watt): puissance (1W = 1V x 1A) J (Joule): énergie (1J = 1Ws, ou 1J = 1v x 1C) C (Coulomb): charge electrique (1Ah = 3600 C) 2800mAh = 2,8 x 3600 x 3,7 = 37296J Capacité - (Intensité x Temps) = 0 Temps = Capacité / Intensité
  4. QUI CONSOMME ? $ a d b p u l

    l / s y s t e m / f r a m e w o r k / f r a m e w o r k - r e s . a p k . $ a a p t d u m p x m l t r e e f r a m e w o r k - r e s . a p k r e s / x m l / p o w e r _ p r o f i l e . x m l Composant Nexus 5 (2300mAh) Nexus 6 (3220mAh) screen.on 48.07 170 screen.full 221 440 bluetooth.active 93.52 30 radio.active 185.19 350 gps.on 90.8 70 cpu.speeds(min) 57.9 (300MHz) 71 (300MHz) cpu.speeds(max) 386.2(2265MHz) 414 (2649MHz)
  5. CAPTEURS m S e n s o r M a

    n a g e r = ( S e n s o r M a n a g e r ) g e t S y s t e m S e r v i c e ( C o n t e x t . S E N S O R _ S E R V I C E ) ; m S e n s o r = m S e n s o r M a n a g e r . g e t D e f a u l t S e n s o r ( S e n s o r . T Y P E _ G Y R O S C O P E ) ; m S e n s o r . g e t P o w e r ( ) ; m S e n s o r M a n a g e r . r e g i s t e r L i s t e n e r ( n e w S e n s o r E v e n t L i s t e n e r ( ) { @ O v e r r i d e p u b l i c v o i d o n S e n s o r C h a n g e d ( S e n s o r E v e n t e v e n t ) { / / D o y o u r s t u f f h e r e } } , m S e n s o r , S e n s o r M a n a g e r . S E N S O R _ D E L A Y _ F A S T E S T ) ;
  6. CAPTEURS Dès que vous enregistrez un listener, vous consommez parce

    qu'un capteur à besoin d'energie vous traitez les données avec la CPU Plus vous échantillonez vite, plus vous consommez Plus vous demandez de précision, plus vous consommez Assurez vous de n'utiliser que le strict nécessaire, ex: Gyroscope: 3,3 mA / Accélérometre: 0,4 mA Le GPS est extrémement gourmand Priviégiez le mode d'utilisation "PASSIVE_PROVIDER"
  7. CAPTEURS :30 :35 :40 :45 0 5 10 15 courant

    (mA) aucun capteur gyroscope seul
  8. CAPTEURS :36 :37 :38 :39 :40 :41 :42 :43 :44

    :45 0 50 100 150 200 courant (mA) ecran 'on' + CPU dans listener
  9. CPU énergivore (quand on l'utilise...) consommation optimisée (DVFS) Freq. (MHz)

    temps 1200 0:10:16 920 0:09:49 700 5:10:53 350 18:15:43 0 101:00:40
  10. CPU

  11. ???

  12. WAKELOCK P o w e r M a n a

    g e r p m = ( P o w e r M a n a g e r ) g e t S y s t e m S e r v i c e ( C o n t e x t . P O W E R _ S E R V I C E ) ; P o w e r M a n a g e r . W a k e L o c k w l = p m . n e w W a k e L o c k ( P o w e r M a n a g e r . P A R T I A L _ W A K E _ L O C K , t a g ) ; w l . a c q u i r e ( ) ; w l . r e l e a s e ( ) ;
  13. LE RÉSEAU, C'EST SIMPLE   U R L u

    r l = n e w U R L ( " h t t p : / / d r o i d c o n . f r / " ) ; H t t p U R L C o n n e c t i o n c o n n e c t i o n = ( H t t p U R L C o n n e c t i o n ) u r l . o p e n C o n n e c t i o n ( ) ; t r y { I n p u t S t r e a m i n = n e w B u f f e r e d I n p u t S t r e a m ( c o n n e c t i o n . g e t I n p u t S t r e a m ( ) ) ; r e a d S t r e a m ( i n ) ; } f i n a l l y { u r l C o n n e c t i o n . d i s c o n n e c t ( ) ; }
  14. FAST DORMANCY 3GPP TS 25.331 r7 8.1.14.1 General The signalling

    connection release indication procedure is used by the UE to indicate to the UTRAN that one of its signalling connections has been released. 8.1.14.2 Initiation The UE shall: - remove the signalling connection with the identity indicated by upper layers from the variable ESTABLISHED_SIGNALLING_CONNECTIONS; - transmit a SIGNALLING CONNECTION RELEASE INDICATION message on DCCH using AM RLC. 3GPP TS 25.331 r8 8.1.14.1 General The signalling connection release indication procedure is used by the UE to indicate to the UTRAN that one of its signalling connections has been released or it is used by the UE to request UTRAN to initiate a state transition to a battery efficient RRC state. The procedure may in turn initiate the RRC connection release procedure. 8.1.14.2 Initiation The UE shall not locally release the PS signalling connection after it has sent the SIGNALLING CONNECTION RELEASE INDICATION message with the IE "Signalling Connection Release Indication Cause" set to "UE Requested PS Data session end". 3GPP TS 36.331 5.3.9 RRC connection release requested by upper layers 5.3.9.2 Initiation The UE initiates the procedure when upper layers request the release of the RRC connection. The UE shall not initiate the procedure for power saving purposes.
  15. APPLICATION RESOURCE OPTIMIZER analyse le traffic réseau du terminal simule

    la machine d'états RRC propose des optimisations donne des statistiques
  16. VOLTA API JobScheduler pour optimiser l'ordonnancement d'operations J o b

    S c h e d u l e r s c h e d u l e r = ( J o b S c h e d u l e r ) g e t S y s t e m S e r v i c e ( C o n t e x t . J O B _ S C H E D U L E R _ S E R V I C E ) . . . J o b I n f o . B u i l d e r b u i l d e r = n e w J o b I n f o . B u i l d e r ( i d , s e r v i c e C o m p o n e n t ) ; b u i l d e r . s e t M i n i m u m L a t e n c y ( L o n g . v a l u e O f ( d e l a y ) * 1 0 0 0 ) ; b u i l d e r . s e t O v e r r i d e D e a d l i n e ( L o n g . v a l u e O f ( d e a d l i n e ) * 1 0 0 0 ) ; b u i l d e r . s e t R e q u i r e d N e t w o r k T y p e ( J o b I n f o . N E T W O R K _ T Y P E _ U N M E T E R E D ) ; b u i l d e r . s e t R e q u i r e s D e v i c e I d l e ( t r u e ) ; b u i l d e r . s e t R e q u i r e s C h a r g i n g ( t r u e ) ; . . . s c h e d u l e r . s c h e d u l e ( b u i l d e r . b u i l d ( ) ) ; Battery historian pour faciliter le diagnostique v o l t a ~ $ a d b s h e l l d u m p s y s b a t t e r y s t a t s - - e n a b l e f u l l - w a k e - h i s t o r y v o l t a ~ $ a d b s h e l l d u m p s y s b a t t e r y s t a t s - - r e s e t v o l t a ~ $ a d b s h e l l b u g r e p o r t > b u g r e p o r t . t x t v o l t a ~ $ w c - l b u g r e p o r t . t x t 1 7 2 5 0 6 d a t a / b u g r e p o r t - n e x u s 6 . t x t v o l t a ~ / g o w o r k / s r c / g i t h u b . c o m / g o o g l e / b a t t e r y - h i s t o r i a n ( m a s t e r ) $ g o r u n \ > c m d / b a t t e r y - h i s t o r i a n / b a t t e r y - h i s t o r i a n . g o 2 0 1 5 / 1 1 / 0 8 0 9 : 5 1 : 1 1 L i s t e n i n g o n p o r t : 9 9 9 9
  17. DOZE plus d'alarme plus de wakelock plus de réseau plus

    de problème de batterie peut entrainer des problèmes dans l'appli
  18. DOZE d o z e ~ $ a d b

    s h e l l d u m p s y s b a t t e r y u n p l u g d o z e ~ $ a d b s h e l l d u m p s y s d e v i c e i d l e S e t t i n g s : i n a c t i v e _ t o = + 3 0 m 0 s 0 m s i d l e _ a f t e r _ i n a c t i v e _ t o = + 3 0 m 0 s 0 m s i d l e _ p e n d i n g _ t o = + 5 m 0 s 0 m s i d l e _ t o = + 6 0 m 0 s 0 m s i d l e _ f a c t o r = 2 . 0 m i n _ t i m e _ t o _ a l a r m = + 6 0 m 0 s 0 m s m a x _ t e m p _ a p p _ w h i t e l i s t _ d u r a t i o n = + 5 m 0 s 0 m s m m s _ t e m p _ a p p _ w h i t e l i s t _ d u r a t i o n = + 6 0 s 0 m s s m s _ t e m p _ a p p _ w h i t e l i s t _ d u r a t i o n = + 2 0 s 0 m s W h i t e l i s t s y s t e m a p p s : c o m . g o o g l e . a n d r o i d . g m s c o m . g o o g l e . a n d r o i d . a p p s . t y c h o c o m . a n d r o i d . o m a d m . s e r v i c e W h i t e l i s t a l l a p p i d s : 1 0 0 0 6 m S c r e e n O n = t r u e m C h a r g i n g = f a l s e m S i g M o t i o n A c t i v e = f a l s e
  19. DOZE d o z e ~ $ a d b

    s h e l l d u m p s y s d e v i c e i d l e s t e p S t e p p e d t o : I D L E _ P E N D I N G $ a d b s h e l l d u m p s y s d e v i c e i d l e . . . m S t a t e = I D L E _ P E N D I N G m I n a c t i v e T i m e o u t = + 3 0 m 0 s 0 m s m N e x t A l a r m T i m e = + 2 8 m 4 4 s 1 3 1 m s m N e x t I d l e P e n d i n g D e l a y = + 5 m 0 s 0 m s m N e x t I d l e D e l a y = + 6 0 m 0 s 0 m s a d b s h e l l d u m p s y s d e v i c e i d l e s t e p S t e p p e d t o : S E N S I N G | I D L E _ M A I N T E N A N C E L O C A T I N G $ a d b s h e l l d u m p s y s d e v i c e i d l e s t e p S t e p p e d t o : I D L E . . . m N e x t I d l e D e l a y = + 2 h 0 m 0 s 0 m s
  20. DOZE # . . . u n p e u

    p l u s t a r d . . . $ a d b s h e l l d u m p s y s d e v i c e i d l e m S c r e e n O n = t r u e m C h a r g i n g = f a l s e m S i g M o t i o n A c t i v e = f a l s e m S e n s i n g = f a l s e m N o t M o v i n g = t r u e m L o c a t i n g = f a l s e m H a v e G p s = t r u e m L o c a t e d = f a l s e m L a s t G e n e r i c L o c a t i o n = L o c a t i o n [ f u s e d 4 8 . 7 2 7 3 3 4 , - 3 . 4 6 8 2 3 1 a c c = 2 9 e t = + 2 d 1 8 h 3 8 m 2 2 s 1 5 9 m s m L a s t G p s L o c a t i o n = L o c a t i o n [ g p s 4 8 . 7 2 7 2 6 9 , - 3 . 4 6 8 2 9 8 a c c = 2 6 e t = + 2 d 1 8 h 3 8 m 2 4 s 1 5 6 m s a l t = 1 2 1 . 0 m S t a t e = A C T I V E m I n a c t i v e T i m e o u t = + 3 0 m 0 s 0 m s
  21. COMMENT REÇOIT ON LES PUSH DE GCM ? d o

    z e ~ $ a d b s h e l l d u m p s y s d e v i c e i d l e S e t t i n g s : m a x _ t e m p _ a p p _ w h i t e l i s t _ d u r a t i o n = + 5 m 0 s 0 m s . . . W h i t e l i s t s y s t e m a p p s : c o m . g o o g l e . a n d r o i d . g m s d o z e ~ $ a d b s h e l l d u m p s y s p a c k a g e c o m . g o o g l e . a n d r o i d . g m s . . . a n d r o i d . p e r m i s s i o n . C H A N G E _ D E V I C E _ I D L E _ T E M P _ W H I T E L I S T : g r a n t e d = t r u e d o z e ~ $ a d b s h e l l d u m p s y s p o w e r P O W E R M A N A G E R ( d u m p s y s p o w e r ) P o w e r M a n a g e r S t a t e : m D e v i c e I d l e T e m p W h i t e l i s t = [ ]
  22. https://source.android.com/devices/tech/power/device.html BATTERY MANAGER / * * * I n s

    t a n t a n e o u s b a t t e r y c u r r e n t i n m i c r o a m p e r e s , a s a n i n t e g e r . P o s i t i v e * v a l u e s i n d i c a t e n e t c u r r e n t e n t e r i n g t h e b a t t e r y f r o m a c h a r g e s o u r c e , * n e g a t i v e v a l u e s i n d i c a t e n e t c u r r e n t d i s c h a r g i n g f r o m t h e b a t t e r y . * / B a t t e r y M a n a g e r m B a t t e r y M a n a g e r = ( B a t t e r y M a n a g e r ) C o n t e x t . g e t S y s t e m S e r v i c e ( C o n t e x t . B A T T E R Y _ S E R V I C E ) ; L o n g e n e r g y = m B a t t e r y M a n a g e r . g e t I n t P r o p e r t y ( B A T T E R Y _ P R O P E R T Y _ C U R R E N T _ N O W ) ;
  23. POWER MONITOR ~ / c t s / t o

    o l s / u t i l s $ p y t h o n m o n s o o n . p y - - s t a t u s - - d e v i c e / d e v / t t y . u s b m o d e m 1 4 1 1 ~ / c t s / t o o l s / u t i l s $ p y t h o n m o n s o o n . p y - - v o l t a g e = 3 . 8 5 - - d e v i c e / d e v / t t y . u s b m o d e m 1 4 1 1 ~ / c t s / t o o l s / u t i l s $ p y t h o n m o n s o o n . p y - - s a m p l e s - 1 - - h z 2 0 0 - - d e v i c e / d e v / t t y . u s b m o d e m 1 4 1 1
  24. FIN