from stock to cyanogenmod: the sony ericsson case

86
FROM STOCK TO CYANOGENMOD: THE SONY ERICSSON CASE DROIDCON INDIA | NOVEMBER 19, 2011 DIOGO FERREIRA | DEFER@CYANOGENMOD.COM | @DEFER Saturday, November 19, 11

Upload: diogo-ferreira

Post on 15-Jan-2015

2.856 views

Category:

Technology


0 download

DESCRIPTION

Porting a device to CyanogenMod is (usually) not an easy task. There is an extensive amount of work behind a port that touches every single layer of the Android stack.During this talk, I will be presenting a case study on how we ported 15 Sony Ericsson devices. While there is no specific formula for doing so, this talk will try to present a sequence of steps that we took in making these devices fully operational.You can expect several advanced topics to be discussed, all in an interactive session where I expect people to interrupt if they have questions or suggestions. Among those topics, we will discuss:- Kernel changes- Hardware Interface Layers- Coexisting with other devices- Reverse Engineering

TRANSCRIPT

Page 1: From stock to Cyanogenmod: The Sony Ericsson Case

FROM STOCK TO CYANOGENMOD:

THE SONY ERICSSON CASEDROIDCON INDIA | NOVEMBER 19, 2011

DIOGO FERREIRA | [email protected] | @DEFER

Saturday, November 19, 11

Page 2: From stock to Cyanogenmod: The Sony Ericsson Case

INTRODUCTION

Saturday, November 19, 11

Page 3: From stock to Cyanogenmod: The Sony Ericsson Case

INTRODUCTION

OEM DEVICES RUN SLIGHTLY MODIFIED VERSIONS OF ANDROID

SPORTING FANCY FEATURES AND PERIPHERALS

ADDING UI CUSTOMIZATIONS

Saturday, November 19, 11

Page 4: From stock to Cyanogenmod: The Sony Ericsson Case

INTRODUCTION

OEM DEVICES RUN SLIGHTLY MODIFIED VERSIONS OF ANDROID

SPORTING FANCY FEATURES AND PERIPHERALS

ADDING UI CUSTOMIZATIONS

CYANOGENMOD SUPPORTS MANY DEVICES ACROSS DIFFERENT HARDWARE PLATFORMS

Saturday, November 19, 11

Page 5: From stock to Cyanogenmod: The Sony Ericsson Case

INTRODUCTION

OEM DEVICES RUN SLIGHTLY MODIFIED VERSIONS OF ANDROID

SPORTING FANCY FEATURES AND PERIPHERALS

ADDING UI CUSTOMIZATIONS

CYANOGENMOD SUPPORTS MANY DEVICES ACROSS DIFFERENT HARDWARE PLATFORMS

GET CM!

REPO INIT -U GIT://GITHUB.COM/CYANOGENMOD/ANDROID.GIT -B GINGERBREAD

REPO SYNC -J4

Saturday, November 19, 11

Page 6: From stock to Cyanogenmod: The Sony Ericsson Case

THE RECOVERYPART ONE

Saturday, November 19, 11

Page 7: From stock to Cyanogenmod: The Sony Ericsson Case

PRELIMINARIES

Saturday, November 19, 11

Page 8: From stock to Cyanogenmod: The Sony Ericsson Case

PRELIMINARIES

KEEP A COPY OF THE STOCK SYSTEM FILES

ADB PULL /SYSTEM IS ENOUGH

THESE WILL BE NEEDED LATER ON!

Saturday, November 19, 11

Page 9: From stock to Cyanogenmod: The Sony Ericsson Case

PRELIMINARIES

KEEP A COPY OF THE STOCK SYSTEM FILES

ADB PULL /SYSTEM IS ENOUGH

THESE WILL BE NEEDED LATER ON!

Saturday, November 19, 11

Page 10: From stock to Cyanogenmod: The Sony Ericsson Case

PRELIMINARIES

KEEP A COPY OF THE STOCK SYSTEM FILES

ADB PULL /SYSTEM IS ENOUGH

THESE WILL BE NEEDED LATER ON!

BE FEARLESS, IT IS USUALLY VERY HARD TO BRICK A DEVICE

Saturday, November 19, 11

Page 11: From stock to Cyanogenmod: The Sony Ericsson Case

WE NEED A RECOVERY!

Saturday, November 19, 11

Page 12: From stock to Cyanogenmod: The Sony Ericsson Case

WE NEED A RECOVERY!

BACKUP THE ORIGINAL ROM

Saturday, November 19, 11

Page 13: From stock to Cyanogenmod: The Sony Ericsson Case

WE NEED A RECOVERY!

BACKUP THE ORIGINAL ROM

GO BACK TO IT ANYTIME

Saturday, November 19, 11

Page 14: From stock to Cyanogenmod: The Sony Ericsson Case

WE NEED A RECOVERY!

BACKUP THE ORIGINAL ROM

GO BACK TO IT ANYTIME

ENABLES YOU TO ACTUALLY FLASH

CM

Saturday, November 19, 11

Page 15: From stock to Cyanogenmod: The Sony Ericsson Case

WE NEED A RECOVERY!

BACKUP THE ORIGINAL ROM

GO BACK TO IT ANYTIME

ENABLES YOU TO ACTUALLY FLASH

CM

Saturday, November 19, 11

Page 16: From stock to Cyanogenmod: The Sony Ericsson Case

WE NEED A RECOVERY!

BACKUP THE ORIGINAL ROM

GO BACK TO IT ANYTIME

ENABLES YOU TO ACTUALLY FLASH

CM

BUT YOU NEED A DEVICE REPOSITORY TO COMPILE IT

Saturday, November 19, 11

Page 17: From stock to Cyanogenmod: The Sony Ericsson Case

GETTING THINGS GOING

Saturday, November 19, 11

Page 18: From stock to Cyanogenmod: The Sony Ericsson Case

GETTING THINGS GOING

WE HAVE YOU COVERED!

Saturday, November 19, 11

Page 19: From stock to Cyanogenmod: The Sony Ericsson Case

GETTING THINGS GOING

WE HAVE YOU COVERED!

BUILD/TOOLS/DEVICE/MKVENDOR.SH <MANUFACTURER> <DEVICE> /PATH/TO/YOUR/BOOT.IMG

Saturday, November 19, 11

Page 20: From stock to Cyanogenmod: The Sony Ericsson Case

GETTING THINGS GOING

WE HAVE YOU COVERED!

BUILD/TOOLS/DEVICE/MKVENDOR.SH <MANUFACTURER> <DEVICE> /PATH/TO/YOUR/BOOT.IMG

BUILD/TOOLS/DEVICE/MKVENDOR.SH SEMC ANZU BOOT.IMG

Saturday, November 19, 11

Page 21: From stock to Cyanogenmod: The Sony Ericsson Case

GETTING THINGS GOING

WE HAVE YOU COVERED!

BUILD/TOOLS/DEVICE/MKVENDOR.SH <MANUFACTURER> <DEVICE> /PATH/TO/YOUR/BOOT.IMG

BUILD/TOOLS/DEVICE/MKVENDOR.SH SEMC ANZU BOOT.IMG

WHERE DO I GET THE BOOT IMAGE?

Saturday, November 19, 11

Page 22: From stock to Cyanogenmod: The Sony Ericsson Case

GETTING THINGS GOING

WE HAVE YOU COVERED!

BUILD/TOOLS/DEVICE/MKVENDOR.SH <MANUFACTURER> <DEVICE> /PATH/TO/YOUR/BOOT.IMG

BUILD/TOOLS/DEVICE/MKVENDOR.SH SEMC ANZU BOOT.IMG

WHERE DO I GET THE BOOT IMAGE?

DUMP_IMAGE BOOT /SDCARD/BOOT.IMG

Saturday, November 19, 11

Page 23: From stock to Cyanogenmod: The Sony Ericsson Case

GETTING THINGS GOING

WE HAVE YOU COVERED!

BUILD/TOOLS/DEVICE/MKVENDOR.SH <MANUFACTURER> <DEVICE> /PATH/TO/YOUR/BOOT.IMG

BUILD/TOOLS/DEVICE/MKVENDOR.SH SEMC ANZU BOOT.IMG

WHERE DO I GET THE BOOT IMAGE?

DUMP_IMAGE BOOT /SDCARD/BOOT.IMG

YOU NOW HAVE YOUR BAREBONES DEVICE REPOSITORY OVER AT MANUFACTURER/DEVICE

Saturday, November 19, 11

Page 24: From stock to Cyanogenmod: The Sony Ericsson Case

BUILDING A RECOVERY IMAGE

. BUILD/ENVSETUP.SH

LUNCH FULL_<DEVICE>-ENG

LUNCH FULL_ANZU-ENG

MAKE -J4 RECOVERYIMAGE

YOU WILL HAVE A RECOVERY IMAGE IN OUT/TARGET/PRODUCT/<DEVICE>/RECOVERY.IMG

Saturday, November 19, 11

Page 25: From stock to Cyanogenmod: The Sony Ericsson Case

HOW DO I RUN IT?

Saturday, November 19, 11

Page 26: From stock to Cyanogenmod: The Sony Ericsson Case

HOW DO I RUN IT?USUALLY:

FLASH_IMAGE RECOVERY RECOVERY.IMG

Saturday, November 19, 11

Page 27: From stock to Cyanogenmod: The Sony Ericsson Case

HOW DO I RUN IT?USUALLY:

FLASH_IMAGE RECOVERY RECOVERY.IMG

RARELY:

FASTBOOT FLASH RECOVERY RECOVERY.IMG

Saturday, November 19, 11

Page 28: From stock to Cyanogenmod: The Sony Ericsson Case

HOW DO I RUN IT?USUALLY:

FLASH_IMAGE RECOVERY RECOVERY.IMG

RARELY:

FASTBOOT FLASH RECOVERY RECOVERY.IMG

IN MY CASE:

FASTBOOT BOOT RECOVERY RECOVERY.IMG

FOR SONY ERICSSON, THERE IS NO DEDICATED RECOVERY PARTITION!

Saturday, November 19, 11

Page 29: From stock to Cyanogenmod: The Sony Ericsson Case

AND THEN THERE WAS A RECOVERY

Saturday, November 19, 11

Page 30: From stock to Cyanogenmod: The Sony Ericsson Case

AND THEN THERE WAS A RECOVERY

OR WAS THERE?

Saturday, November 19, 11

Page 31: From stock to Cyanogenmod: The Sony Ericsson Case

AND THEN THERE WAS A RECOVERY

OR WAS THERE?

SONY ERICSSON WAS THE FIRST TO

USE 32-BIT FRAMEBUFFERS

RECOVERY CODE NEEDED TO BE ADAPTED

CHANGES GATHERED FROM

CODEAURORA FORUM

Saturday, November 19, 11

Page 32: From stock to Cyanogenmod: The Sony Ericsson Case

THE FIRST BOOTPART TWO

Saturday, November 19, 11

Page 33: From stock to Cyanogenmod: The Sony Ericsson Case

WHERE TO START?

Saturday, November 19, 11

Page 34: From stock to Cyanogenmod: The Sony Ericsson Case

WHERE TO START?YOUR PREVIOUSLY CREATED DEVICE REPOSITORY!

Saturday, November 19, 11

Page 35: From stock to Cyanogenmod: The Sony Ericsson Case

WHERE TO START?YOUR PREVIOUSLY CREATED DEVICE REPOSITORY!

BOARDCONFIG.MK

FILL IN THE BLANKS! THE BUILD SYSTEM NEEDS TO KNOW YOUR DEVICE

THERE IS PROBABLY A SIMILAR DEVICE IN THE TREE, USE IT!

Saturday, November 19, 11

Page 36: From stock to Cyanogenmod: The Sony Ericsson Case

WHERE TO START?YOUR PREVIOUSLY CREATED DEVICE REPOSITORY!

BOARDCONFIG.MK

FILL IN THE BLANKS! THE BUILD SYSTEM NEEDS TO KNOW YOUR DEVICE

THERE IS PROBABLY A SIMILAR DEVICE IN THE TREE, USE IT!

FOR THE SONY ERICSSON ANZU:

TARGET_BOARD_PLATFORM := MSM7X30

TARGET_CPU_ABI := ARMEABI-V7A

...

Saturday, November 19, 11

Page 37: From stock to Cyanogenmod: The Sony Ericsson Case

WHERE TO START?

Saturday, November 19, 11

Page 38: From stock to Cyanogenmod: The Sony Ericsson Case

WHERE TO START?DEVICE_<DEVICE>.MK

Saturday, November 19, 11

Page 39: From stock to Cyanogenmod: The Sony Ericsson Case

WHERE TO START?DEVICE_<DEVICE>.MK

TELL THE SYSTEM WHAT TO COMPILE!

Saturday, November 19, 11

Page 40: From stock to Cyanogenmod: The Sony Ericsson Case

WHERE TO START?DEVICE_<DEVICE>.MK

TELL THE SYSTEM WHAT TO COMPILE!

DIFFERENT DEVICES HAVE DIFFERENT REQUIREMENTS

Saturday, November 19, 11

Page 41: From stock to Cyanogenmod: The Sony Ericsson Case

WHERE TO START?DEVICE_<DEVICE>.MK

TELL THE SYSTEM WHAT TO COMPILE!

DIFFERENT DEVICES HAVE DIFFERENT REQUIREMENTS

FOR A PRELIMINARY BOOT YOU SHOULD BE OK USING THE DEFAULTS

Saturday, November 19, 11

Page 42: From stock to Cyanogenmod: The Sony Ericsson Case

WHERE TO START?DEVICE_<DEVICE>.MK

TELL THE SYSTEM WHAT TO COMPILE!

DIFFERENT DEVICES HAVE DIFFERENT REQUIREMENTS

FOR A PRELIMINARY BOOT YOU SHOULD BE OK USING THE DEFAULTS

BUT NOTHING WILL WORK

Saturday, November 19, 11

Page 43: From stock to Cyanogenmod: The Sony Ericsson Case

WHERE TO START?DEVICE_<DEVICE>.MK

TELL THE SYSTEM WHAT TO COMPILE!

DIFFERENT DEVICES HAVE DIFFERENT REQUIREMENTS

FOR A PRELIMINARY BOOT YOU SHOULD BE OK USING THE DEFAULTS

BUT NOTHING WILL WORK

BUILD IT!

Saturday, November 19, 11

Page 44: From stock to Cyanogenmod: The Sony Ericsson Case

WHERE TO START?DEVICE_<DEVICE>.MK

TELL THE SYSTEM WHAT TO COMPILE!

DIFFERENT DEVICES HAVE DIFFERENT REQUIREMENTS

FOR A PRELIMINARY BOOT YOU SHOULD BE OK USING THE DEFAULTS

BUT NOTHING WILL WORK

BUILD IT!

LUNCH FULL_<DEVICE>.MK

Saturday, November 19, 11

Page 45: From stock to Cyanogenmod: The Sony Ericsson Case

WHERE TO START?DEVICE_<DEVICE>.MK

TELL THE SYSTEM WHAT TO COMPILE!

DIFFERENT DEVICES HAVE DIFFERENT REQUIREMENTS

FOR A PRELIMINARY BOOT YOU SHOULD BE OK USING THE DEFAULTS

BUT NOTHING WILL WORK

BUILD IT!

LUNCH FULL_<DEVICE>.MK

MAKE -J4 OTAPACKAGE

Saturday, November 19, 11

Page 46: From stock to Cyanogenmod: The Sony Ericsson Case

THE FUN STARTS!

Saturday, November 19, 11

Page 47: From stock to Cyanogenmod: The Sony Ericsson Case

THE FUN STARTS!

Saturday, November 19, 11

Page 48: From stock to Cyanogenmod: The Sony Ericsson Case

PLATFORM SUPPORTPART THREE

Saturday, November 19, 11

Page 49: From stock to Cyanogenmod: The Sony Ericsson Case

WHAT ABOUT IT?ANDROID NEEDS TO KNOW HOW TO TALK TO YOUR HARDWARE

ANDROID FRAMEWORK / USERSPACE

SENSORS AUDIO DISPLAY ...

KERNEL

HARDWARE

Saturday, November 19, 11

Page 50: From stock to Cyanogenmod: The Sony Ericsson Case

ADDING PLATFORM SUPPORT

Saturday, November 19, 11

Page 51: From stock to Cyanogenmod: The Sony Ericsson Case

ADDING PLATFORM SUPPORT

USUALLY YOU DON’T NEED TO, CM ALREADY SUPPORTS:

OMAP3/4, TEGRA 2, QUALCOMM 7X30/8X60/8K

Saturday, November 19, 11

Page 52: From stock to Cyanogenmod: The Sony Ericsson Case

ADDING PLATFORM SUPPORT

USUALLY YOU DON’T NEED TO, CM ALREADY SUPPORTS:

OMAP3/4, TEGRA 2, QUALCOMM 7X30/8X60/8K

IF YOU DO, GET THEM FROM REFERENCE BOARD REPOS:

QUALCOMM: HTTP://WWW.CODEAURORA.ORG

TI: HTTP://WWW.OMAPZOOM.ORG

NVIDIA: HTTP://NV-TEGRA.NVIDIA.COM

LINARO: HTTP://WWW.LINARO.ORG

Saturday, November 19, 11

Page 53: From stock to Cyanogenmod: The Sony Ericsson Case

ADDING PLATFORM SUPPORT: CAVEATS

Saturday, November 19, 11

Page 54: From stock to Cyanogenmod: The Sony Ericsson Case

ADDING PLATFORM SUPPORT: CAVEATS BEWARE: IT SHOULD BE CONTAINED

Saturday, November 19, 11

Page 55: From stock to Cyanogenmod: The Sony Ericsson Case

ADDING PLATFORM SUPPORT: CAVEATS BEWARE: IT SHOULD BE CONTAINED

YOU MUST ENSURE IT WILL NOT BREAK OTHER DEVICES

Saturday, November 19, 11

Page 56: From stock to Cyanogenmod: The Sony Ericsson Case

ADDING PLATFORM SUPPORT: CAVEATS BEWARE: IT SHOULD BE CONTAINED

YOU MUST ENSURE IT WILL NOT BREAK OTHER DEVICES

IF YOU REALLY MUST CHANGE THINGS OUTSIDE THE INTERFACE LAYERS:

Saturday, November 19, 11

Page 57: From stock to Cyanogenmod: The Sony Ericsson Case

ADDING PLATFORM SUPPORT: CAVEATS BEWARE: IT SHOULD BE CONTAINED

YOU MUST ENSURE IT WILL NOT BREAK OTHER DEVICES

IF YOU REALLY MUST CHANGE THINGS OUTSIDE THE INTERFACE LAYERS:

BOARD CONFIG OPTION + #IFDEF

Saturday, November 19, 11

Page 58: From stock to Cyanogenmod: The Sony Ericsson Case

ADDING PLATFORM SUPPORT: CAVEATS BEWARE: IT SHOULD BE CONTAINED

YOU MUST ENSURE IT WILL NOT BREAK OTHER DEVICES

IF YOU REALLY MUST CHANGE THINGS OUTSIDE THE INTERFACE LAYERS:

BOARD CONFIG OPTION + #IFDEF

SYSTEM PROPERTY + ALTERNATING BRANCHES IN THE JAVA SIDE

Saturday, November 19, 11

Page 59: From stock to Cyanogenmod: The Sony Ericsson Case

HARDWARE ABSTRACTION LAYERS

Saturday, November 19, 11

Page 60: From stock to Cyanogenmod: The Sony Ericsson Case

HARDWARE ABSTRACTION LAYERS

THEY LIVE BETWEEN THE FRAMEWORK AND THE KERNEL

Saturday, November 19, 11

Page 61: From stock to Cyanogenmod: The Sony Ericsson Case

HARDWARE ABSTRACTION LAYERS

THEY LIVE BETWEEN THE FRAMEWORK AND THE KERNEL

LIGHTS, GPS, GRALLOC + OVERLAY, AUDIO, CAMERA, SENSORS

Saturday, November 19, 11

Page 62: From stock to Cyanogenmod: The Sony Ericsson Case

HARDWARE ABSTRACTION LAYERS

THEY LIVE BETWEEN THE FRAMEWORK AND THE KERNEL

LIGHTS, GPS, GRALLOC + OVERLAY, AUDIO, CAMERA, SENSORS

A SET OF WELL-DEFINED APIS

Saturday, November 19, 11

Page 63: From stock to Cyanogenmod: The Sony Ericsson Case

HARDWARE ABSTRACTION LAYERS

THEY LIVE BETWEEN THE FRAMEWORK AND THE KERNEL

LIGHTS, GPS, GRALLOC + OVERLAY, AUDIO, CAMERA, SENSORS

A SET OF WELL-DEFINED APIS

IF VENDORS FOLLOW THEM, WE CAN JUST USE PROPRIETARY HALS

Saturday, November 19, 11

Page 64: From stock to Cyanogenmod: The Sony Ericsson Case

HARDWARE ABSTRACTION LAYERS

THEY LIVE BETWEEN THE FRAMEWORK AND THE KERNEL

LIGHTS, GPS, GRALLOC + OVERLAY, AUDIO, CAMERA, SENSORS

A SET OF WELL-DEFINED APIS

IF VENDORS FOLLOW THEM, WE CAN JUST USE PROPRIETARY HALS

IF THEY DO NOT, IT WILL BE A MIX OF:

Saturday, November 19, 11

Page 65: From stock to Cyanogenmod: The Sony Ericsson Case

HARDWARE ABSTRACTION LAYERS

THEY LIVE BETWEEN THE FRAMEWORK AND THE KERNEL

LIGHTS, GPS, GRALLOC + OVERLAY, AUDIO, CAMERA, SENSORS

A SET OF WELL-DEFINED APIS

IF VENDORS FOLLOW THEM, WE CAN JUST USE PROPRIETARY HALS

IF THEY DO NOT, IT WILL BE A MIX OF:

REFERENCE DESIGNS

Saturday, November 19, 11

Page 66: From stock to Cyanogenmod: The Sony Ericsson Case

HARDWARE ABSTRACTION LAYERS

THEY LIVE BETWEEN THE FRAMEWORK AND THE KERNEL

LIGHTS, GPS, GRALLOC + OVERLAY, AUDIO, CAMERA, SENSORS

A SET OF WELL-DEFINED APIS

IF VENDORS FOLLOW THEM, WE CAN JUST USE PROPRIETARY HALS

IF THEY DO NOT, IT WILL BE A MIX OF:

REFERENCE DESIGNS

INTUITION

Saturday, November 19, 11

Page 67: From stock to Cyanogenmod: The Sony Ericsson Case

HARDWARE ABSTRACTION LAYERS

THEY LIVE BETWEEN THE FRAMEWORK AND THE KERNEL

LIGHTS, GPS, GRALLOC + OVERLAY, AUDIO, CAMERA, SENSORS

A SET OF WELL-DEFINED APIS

IF VENDORS FOLLOW THEM, WE CAN JUST USE PROPRIETARY HALS

IF THEY DO NOT, IT WILL BE A MIX OF:

REFERENCE DESIGNS

INTUITION

REVERSE ENGINEERING

Saturday, November 19, 11

Page 68: From stock to Cyanogenmod: The Sony Ericsson Case

OUR HEADER VENDOR’S HEADER

CLASS CAMERAHARDWAREINTERFACE {VOID STARTCAMERA();VOID STOPCAMERA();

}

CLASS CAMERAHARDWAREINTERFACE {VOID STOPCAMERA();VOID STARTCAMERA();

}

SOLVING HAL API BREAKS

Saturday, November 19, 11

Page 69: From stock to Cyanogenmod: The Sony Ericsson Case

OUR HEADER VENDOR’S HEADER

CLASS CAMERAHARDWAREINTERFACE {VOID STARTCAMERA();VOID STOPCAMERA();

}

CLASS CAMERAHARDWAREINTERFACE {VOID STOPCAMERA();VOID STARTCAMERA();

}

SOLVING HAL API BREAKS

0X040X08

Saturday, November 19, 11

Page 70: From stock to Cyanogenmod: The Sony Ericsson Case

OUR HEADER VENDOR’S HEADER

CLASS CAMERAHARDWAREINTERFACE {VOID STARTCAMERA();VOID STOPCAMERA();

}

CLASS CAMERAHARDWAREINTERFACE {VOID STOPCAMERA();VOID STARTCAMERA();

}

SOLVING HAL API BREAKS

0X040X08

0X040X08

Saturday, November 19, 11

Page 71: From stock to Cyanogenmod: The Sony Ericsson Case

OUR HEADER VENDOR’S HEADER

CLASS CAMERAHARDWAREINTERFACE {VOID STARTCAMERA();VOID STOPCAMERA();

}

CLASS CAMERAHARDWAREINTERFACE {VOID STOPCAMERA();VOID STARTCAMERA();

}

SOLVING HAL API BREAKS

0X040X08

0X040X08

CAMERAHARDWAREINTERFACE *HW = GETHARDWARE(); HW = 0X38HW->STARTCAMERA(); (*(0X38+0X04))();

Saturday, November 19, 11

Page 72: From stock to Cyanogenmod: The Sony Ericsson Case

#@#”!#$!”””!!!!!

Saturday, November 19, 11

Page 73: From stock to Cyanogenmod: The Sony Ericsson Case

SOLVING HAL BREAKS

Saturday, November 19, 11

Page 74: From stock to Cyanogenmod: The Sony Ericsson Case

SOLVING HAL BREAKS

COMPARE A KNOWN SOURCE WITH THE BINARY BLOB

NOTE DOWN THE OFFSETS FOR METHOD CALLS

ORDER THE HEADER APPROPRIATELY

Saturday, November 19, 11

Page 75: From stock to Cyanogenmod: The Sony Ericsson Case

SOLVING HAL BREAKS

COMPARE A KNOWN SOURCE WITH THE BINARY BLOB

NOTE DOWN THE OFFSETS FOR METHOD CALLS

ORDER THE HEADER APPROPRIATELY

Saturday, November 19, 11

Page 76: From stock to Cyanogenmod: The Sony Ericsson Case

SOLVING HAL BREAKS

COMPARE A KNOWN SOURCE WITH THE BINARY BLOB

NOTE DOWN THE OFFSETS FOR METHOD CALLS

ORDER THE HEADER APPROPRIATELY

VENDORS COULD EASILY AVOID BREAKING HALS:

ADD METHODS TO THE END OF HEADERS

STOP REORDERING THEM!

Saturday, November 19, 11

Page 77: From stock to Cyanogenmod: The Sony Ericsson Case

FOR SONY ERICSSON

Saturday, November 19, 11

Page 78: From stock to Cyanogenmod: The Sony Ericsson Case

FOR SONY ERICSSON

MOST OF THE HALS WERE GREAT

BUT THEY BROKE THE CAMERA API

REORDERING THE METHODS AFTER REVERSE ENGINEERING FIXED IT

Saturday, November 19, 11

Page 79: From stock to Cyanogenmod: The Sony Ericsson Case

FOR SONY ERICSSON

MOST OF THE HALS WERE GREAT

BUT THEY BROKE THE CAMERA API

REORDERING THE METHODS AFTER REVERSE ENGINEERING FIXED IT

ONCE THE HEADER IS REVERSED, WE ADD IT TO THE DEVICE REPOSITORY

HEADERS ARE COMMON FOR ALL DEVICES

IF YOU CHANGE THE GLOBAL ONE, THINGS WILL BREAK.

Saturday, November 19, 11

Page 80: From stock to Cyanogenmod: The Sony Ericsson Case

FOR SONY ERICSSON

8255 SOC FROM QUALCOMM

7X30 FAMILY, ALREADY SUPPORTED IN CYANOGENMOD

CUSTOM LIGHTS HAL

REMEMBER THE 32-BIT DISPLAY? GRALLOC DID TOO

PRECOMPILED BLOBS FOR GPS, SENSORS AND CAMERA

SOMETIMES YOU JUST DON’T HAVE A CHOICE

Saturday, November 19, 11

Page 81: From stock to Cyanogenmod: The Sony Ericsson Case

CONCLUSIONS

Saturday, November 19, 11

Page 82: From stock to Cyanogenmod: The Sony Ericsson Case

CONCLUSIONS

PORTING A DEVICE IS NOT IMPOSSIBLE

Saturday, November 19, 11

Page 83: From stock to Cyanogenmod: The Sony Ericsson Case

CONCLUSIONS

PORTING A DEVICE IS NOT IMPOSSIBLE

YOU CAN’T BREAK OTHER DEVICES

THIS IS REALLY HARD!

Saturday, November 19, 11

Page 84: From stock to Cyanogenmod: The Sony Ericsson Case

CONCLUSIONS

PORTING A DEVICE IS NOT IMPOSSIBLE

YOU CAN’T BREAK OTHER DEVICES

THIS IS REALLY HARD!

IF THERE IS PLATFORM SUPPORT FOR YOUR DEVICE, SUPPORT CAN BE ADDED IN A FEW HOURS

SOMETIMES AS FEW AS 15 MINUTES

Saturday, November 19, 11

Page 85: From stock to Cyanogenmod: The Sony Ericsson Case

CONCLUSIONS

PORTING A DEVICE IS NOT IMPOSSIBLE

YOU CAN’T BREAK OTHER DEVICES

THIS IS REALLY HARD!

IF THERE IS PLATFORM SUPPORT FOR YOUR DEVICE, SUPPORT CAN BE ADDED IN A FEW HOURS

SOMETIMES AS FEW AS 15 MINUTES

ALWAYS CHECK OUT SIMILAR DEVICES

THE SAME SOC MEANS IT WILL BE SIMILAR

Saturday, November 19, 11

Page 86: From stock to Cyanogenmod: The Sony Ericsson Case

YOUR QUESTIONSPART FOUR

Saturday, November 19, 11