Porting Android to Gear 2

1,408 posts
Thanks Meter: 7,054
By biktor_gj, Senior Member on 4th January 2015, 12:42 PM
Post Reply Email Thread
Hello everyone!
Android Wear for Gear 2 / Gear 2 Neo

This thread is about development of Android Wear for Gear 2 & Gear 2 Neo

Click image for larger version

Name:	attachment.php.jpg
Views:	72754
Size:	28.1 KB
ID:	3279773 Click image for larger version

Name:	bootlogo.jpg
Views:	66222
Size:	42.8 KB
ID:	3279774 Click image for larger version

Name:	wearboot.php.jpg
Views:	69184
Size:	43.5 KB
ID:	3279775Click image for larger version

Name:	installgplay.jpg
Views:	65396
Size:	24.4 KB
ID:	3299034Click image for larger version

Name:	screenshot.jpg
Views:	67328
Size:	100.3 KB
ID:	3299035Click image for larger version

Name:	IMG_20150514_204055.jpg
Views:	56608
Size:	272.7 KB
ID:	3312899Click image for larger version

Name:	IMG_20150514_100754.jpg
Views:	56102
Size:	278.0 KB
ID:	3312900

Your warranty is now void. Not only void,
 it's not comming back. The moment you 
flash anything on this thread you can say 
goodbye to it. I almost hard bricked my 
watch once. It can happen to you too.
 I do my best to post things that aren't 
dangerous for the device, but anything 
as simple as a 9 instead of a 4 in the GPU
 driver might make it overheat and kill it.
Everything here is at your own risk. 
You have been warned.

Current development stage
Kernel:: Still work in progress. Most functions are working correctly. Expect some bugs.
GITHUB REPO: Github Android B2 Repository
Recovery:: Minimal image. Not actively worked on, but enough to wipe and access ADB: MediaFire
Android: Most of it is working, and for me at least, IS usable. Some things are still missing and will need to be worked out though.

  • Boot
  • USB: ADB, MTP [july 19th]
  • Display: Software rendering, OpenGL and mixed compositions
  • Screen dimming
  • Screen always on
  • Battery reporting and charging
  • Oportunistic Sleep (kernel)
  • Bluetooth: basic functionality (working for notifications, music control etc), Tethered internet access (still some bugs to work out though)
  • Vibration
  • Heart Rate Monitor
  • Accelerometer sensor
  • Step counter
  • Gyroscope (this includes tilt to wake)
  • Power management: CPU Hotplugging, frequency scaling, Amoled LPM, runtime suspend and opportunistic sleep.
    Depending on use, can give from 12 to 48 hours of battery life. Normal use gives me about 18-20 hours with screen always on
  • Audio: Input and Output
  • Infrared
  • Basic TWRP recovery functions
Not working:
  • Camera
  • There's no way of playing music to the speaker directly from the watch
  • There's no gallery app
  • Palm-on-screen to suspend
  • Anything that's not specifically put as "working"

Android Wear 6
Remember: These are BETA, things may or may not work. No support, no nothing, just sharing them with you so you can play with them. I already know what works and what doesn't, and I'm trying to fix everything

March 4, 2016:!QQwXQKCD!U-y82wTuB...GWtEXMZ6TPikQU
Fixes over previous builds: Text To Speech, IR Support & New Gear Kernel Settings

Previous builds:
Beta #3 (Zenwatch based):!FFYjQCxR!Et4bc8QSX...cKsj5tnBNLPZog
Beta #2 (Gear Live based):!IExADLQC!HThMj1Sc_...aXiaW-5a5_CHuM
Beta #1 (Gear Live based):!tQJFxSLS!Xu4_xJkW7...If0-UZfRTJ0LyM

Android Wear 5.1.1
September 24th, 2015: Android Wear Lollipop - 5.1.1 (build LCA43)
Full flash Package:
Includes: Kernel Settings application, IR App:
** PREROOTED, no need to install anything else
Translate app DOES NOT WORK!

Previous builds:
August 13th, 2015: Android Wear Lollipop - 5.1.1 (build LDZ22J)** Bugfix release,
Full flash Package:
Includes: Kernel Settings application:
* Control vibration intensity
* Control brightness in ambient mode
* Enable / Disable Partial Redraws (enable for best battery life)
* Enable / Disable Idle Mode (reduces color depth in ambient mode to enhance battery life)

July 22nd, 2015: Android Wear Lollipop - 5.1.1 (build LDZ22J)** Bugfix release
Full flash Package:
md5: def249f18214c7ca00a5bc65391d0c0f wear_511__07_22_2015.tar
After flashing the big file, flash one of these, depending on what you need:
ADB only boot image:
ADB+MTP boot image:
July 17th, 2015: Android Wear Lollipop - 5.1.1 (build LDZ22J)** Screen always on in Low Power Mode, MTP Support, @bitstra IR App Updated
Full flash Package:
MD5: deffb5160968d81a4e560416315791eb

July 13th, 2015: Android Wear Lollipop - 5.1.1 (build LDZ22J)** Infrared support (thanks @bitstra for your IR app!)
Full flash Package:

July 12th, 2015: Android Wear Lollipop - 5.1.1 (build LDZ22J) ** Screen always on + Audio IN/OUT modifications
Full flash Package:

July 5th, 2015: Android Wear Lollipop - 5.1.1 (build LDZ22J) ** Audio support!
Full flash Package:

July 1st, 2015: Android Wear Lolipop - 5.1.1 (buildLDZ22J)
Full Flash Package:

June 27th, 2015: Android Wear Lolipop - 5.1.1 (build LDZ22J)
Full Flash Package:

June 27th, 2015: Android Wear Kitkat - 4.4.2W (build KNX01Q)
Full Flash Package:

Everything I have/done with the Gear 2 is available on this folder:, in case you want to dig a bit deeper
User @alvaromartinezb has made a really good video explaining what you have to do, check it out!

@alvaromartinezb Walkthrough video on audio:
USB doesn't work! --> Check if you're running latest build, check your drivers. Windows 7 may have some issues with MTP
ADB doesn't work! --> You might need to manually install the driver on the device manager in Windows (you can use Google SDK's bundled driver)
Battery doesn't last! --> Be careful with battery hog watchfaces, some will prevent the watch from entering suspend, or keep the heart rate sensor active at all times.
I can't play music from the watch to the speaker --> I haven't found an app that works. We're the only people with a speaker on an Android Wear device, and there aren't many 3rd party apps for that. Driver level is OK
I can't take photos! --> Work in progress, everything takes time, and my watch doesn't even have a camera!
Calls don't get routed through the watch and without it I will die! --> Then go back to Tizen. That functionality doesn't exist in Android Wear, and hundreds of hours of work for a function that probably wouldn't end up working anyway. And I hated it when I had it on Tizen, it only gave my phone issues when connecting to my car's bluetooth handsfree, and forcing me to choose back my phone on each and every call. I'm not developing that. If you want to try to code it yourself and you succeed, I can link to your work if you want, but I'm not wasting my time on that.

Going back to Tizen
BE ADVISED (again): There's no PIT file for this watch. If your favourite flashing app for samsung phones requests one, use Odin. I know, I don't like it either. But we live in a world full of virtual machines with the ability to share USB ports. Now it's your chance to use them if you don't feel like installing Windows in your machine.

*. Walkthrough video by @alvaromartinezb :
1. Flash this file:
2. When it fails to boot and the screen goes blank, reboot to the bootloader menu and select recovery.

Extreme Recovery mode - Only use if above method doesn't work
It may happen that you try to recover your watch but for whatever reason it still enters a bootloop when attempting to boot Tizen. This might happen if you played with partitions, if some permissions were set where they shouldn't be, etc. If you enter recovery mode in Tizen and you don't see a confirmation that the watch is being restored to default, you can try this:

*NOTE* This is highly destructive. You do this wrong, your watch might not boot again. I'm not responsible for whatever damage you do to your watch.

First of all download everything from this folder:

And then follow these steps:
1. Flash TizenModFull
It will start rebooting itself
2. Flash recovery_fota_cache
3. Enter recovery, and run the following commands through ADB:
adb shell ->
umount /data
mount /dev/block/mmcblk0p15 /system
mount /dev/block/mmcblk0p13 /system/opt
mount /dev/block/mmcblk0p14 /system/opt/usr
rm -rf /system/opt
cp /system/usr/system/RestoreDir/ /system
cd /system
cd /
umount /system/opt/usr
umount /system/opt
umount /system
Exit the shell and select "Reboot -> PowerOff" from TWRP
4. Now press and hold the power button until "Rebooting..." appears, then enter Download mode
5. Flash kernel_tizen.tar
6. Reboot again to download mode
7. Flash tizenmod2.tar
Some info about the device
Gear 2 specifications
Samsung Exynos 3250, dual core up to 1GHz
512 Mb of RAM
4 Gb of flash, divided in 15 partitions (see below)
Mali 400 GPU, using Exynos DRM driver
YMU381 audio, supported by ALSA
BCM4334W Bluetooth/WLAN controller, already supported by Android in a bunch of phones
Samsung SensorHub (STM32) controlling Gyro/accelerometer and HRM. Supported in the kernel and seen in Android HAL.

Partition layout

bota0 -> ../../mmcblk0p1
bota1 -> ../../mmcblk0p2
csa -> ../../mmcblk0p3 --> ext4 -> /csa
boot -> ../../mmcblk0p5 --> Main Kernel
csc -> ../../mmcblk0p12 --> ext4 -> /system/csc
fota -> ../../mmcblk0p10 --> seems empty
ramdisk-recovery -> mmcblk0p8 -> ext4 -> Unused in tizen --> USED AS BOOT PARTITION IN ANDROID
module -> ../../mmcblk0p9 --> ext4 -> /lib/modules --> USED FOR TWRP IN ANDROID
rootfs -> ../../mmcblk0p15 ext4 "/" --> Root file system, recovery works from here too. If you break it it will only boot to download mode. --> USED AS SYSTEM PARTITION IN ANDROID
system -> ../../mmcblk0p11 EMPTY --> Did samsung start with Android on this thing then changed their minds?
system-data -> ../../mmcblk0p13 --> ext4, /opt --> If you erase this partition, your watch won't boot back into Tizen. Do not touch it unless you have a backup and know your way into restoring it.
user -> ../../mmcblk0p14 EXT4, /opt/usr --> all user data, including the MTP available part (/opt/usr/media) --> USED AS DATA & SDCARD IN ANDROID
The Following 273 Users Say Thank You to biktor_gj For This Useful Post: [ View ] Gift biktor_gj Ad-Free
4th January 2015, 11:06 PM |#2  
McGuigew's Avatar
Senior Member
Thanks Meter: 96
Donate to Me

I am no expert nor able to understand the details but I would like to thank you for this interesting work and I hope a skilled developper will help you through this. I am following this very closely!
The Following 7 Users Say Thank You to McGuigew For This Useful Post: [ View ] Gift McGuigew Ad-Free
5th January 2015, 12:42 AM |#3  
tpike's Avatar
Senior Member
Thanks Meter: 205
Well done!
The Following 3 Users Say Thank You to tpike For This Useful Post: [ View ] Gift tpike Ad-Free
6th January 2015, 12:06 PM |#4  
biktor_gj's Avatar
OP Senior Member
Thanks Meter: 7,054
Donate to Me
A little progress update...

I've built a base image for wear with all the required libraries I could find. It wonderfully crashes on the first boot stage:
- waiting for device -
--------- beginning of main
F/libc    (   94): Fatal signal 6 (SIGABRT) at 0x5e (code=-6), thread 94 (surfaceflinger)
F/libc    (  182): Fatal signal 6 (SIGABRT) at 0xb6 (code=-6), thread 182 (surfaceflinger)
F/libc    (  250): Fatal signal 6 (SIGABRT) at 0xfa (code=-6), thread 250 (surfaceflinger)
F/libc    (  322): Fatal signal 6 (SIGABRT) at 0x142 (code=-6), thread 322 (surfaceflinger)
F/libc    (  379): Fatal signal 6 (SIGABRT) at 0x17b (code=-6), thread 379 (surfaceflinger)
F/libc    (  435): Fatal signal 6 (SIGABRT) at 0x1b3 (code=-6), thread 435 (surfaceflinger)
F/libc    (  489): Fatal signal 6 (SIGABRT) at 0x1e9 (code=-6), thread 489 (surfaceflinger)
F/libc    (  544): Fatal signal 6 (SIGABRT) at 0x220 (code=-6), thread 544 (surfaceflinger)
F/libc    (  600): Fatal signal 6 (SIGABRT) at 0x258 (code=-6), thread 600 (surfaceflinger)
As far as I can guess, surfaceflinger can't start the hw composite device (the mali gpu) and crashes all the time. I think it's all related to the kernel but not too sure if I messed up somewhere else too (probably yes )

Right now I'm trying to clean up the kernel config to get rid of all the useless drivers and get ION working. Any kernel developers out there?

I will be leaving some stuff in Mediafire in case someone's willing to take a look:

Right now:
droid.tar.md5 --> minimal kernel to boot with android adb support
Kernel-Config-Android-ADB-minimal --> config file for the kernel (with mimal android support and part of the settings -no video-)
system.tar.md5 --> trashed up image of Android Wear with at least part of the exynos and mali libraries to help it boot. It crashes on boot but adb is available. Also fstab is messed up, but each thing at a time...

CAUTION: As it's always said, I'm in no way responsible for any damage done to your device if things go wrong. Do NOT touch the bootloader. And keep a ODIN package for restore when you want to go back. This will wipe your Tizen system partition.
The Following 24 Users Say Thank You to biktor_gj For This Useful Post: [ View ] Gift biktor_gj Ad-Free
6th January 2015, 03:07 PM |#5  
Mr.Mefisto's Avatar
Senior Member
Thanks Meter: 3,104
Donate to Me
Thumbs up Great work!
@biktor_gj i appreciate your development and your hard work! I really hope that you will succeed! My personal life is very stressing, and my laptop is down to help you in any way! I just wrote this to congrats your ambition and continuous work on this amazing smartwatch, that i just bought it for 1 week!
The Following 3 Users Say Thank You to Mr.Mefisto For This Useful Post: [ View ] Gift Mr.Mefisto Ad-Free
9th January 2015, 11:38 AM |#6  
andrew.mackew's Avatar
Senior Member
Thanks Meter: 1,274
Awesome to see some development for our Gear 2! Congrats @biktor_gj and please keep it up!
Looking forward to test something new, please count me in.
The Following 2 Users Say Thank You to andrew.mackew For This Useful Post: [ View ] Gift andrew.mackew Ad-Free
10th January 2015, 02:21 PM |#7  
andrew.mackew's Avatar
Senior Member
Thanks Meter: 1,274
I'm really eager to know how development is going on.
The Following 2 Users Say Thank You to andrew.mackew For This Useful Post: [ View ] Gift andrew.mackew Ad-Free
11th January 2015, 04:48 AM |#8  
hashcheck's Avatar
Senior Member
Thanks Meter: 614
Skin1980 may help. He is an awesome developer
The Following 2 Users Say Thank You to hashcheck For This Useful Post: [ View ] Gift hashcheck Ad-Free
11th January 2015, 10:20 AM |#9  
biktor_gj's Avatar
OP Senior Member
Thanks Meter: 7,054
Donate to Me
Hey, right now stuck in here:
 CHK     include/linux/version.h
  CHK     include/generated/utsrelease.h
make[1]: 'include/generated/mach-types.h' is up to date.
  CALL    scripts/
  CHK     include/generated/compile.h
  CC      drivers/gpu/ion/ion_chunk_heap.o
drivers/gpu/ion/ion_chunk_heap.c: In function ‘ion_chunk_heap_free’:
drivers/gpu/ion/ion_chunk_heap.c:108:4: error: implicit declaration of function ‘__dma_page_cpu_to_dev’ [-Werror=implicit-function-declaration]
cc1: all warnings being treated as errors
scripts/ recipe for target 'drivers/gpu/ion/ion_chunk_heap.o' failed
make[3]: *** [drivers/gpu/ion/ion_chunk_heap.o] Error 1
scripts/ recipe for target 'drivers/gpu/ion' failed
make[2]: *** [drivers/gpu/ion] Error 2
scripts/ recipe for target 'drivers/gpu' failed
make[1]: *** [drivers/gpu] Error 2
Makefile:948: recipe for target 'drivers' failed
make: *** [drivers] Error 2
I really don't know if kernel source is messed up in purpose, if it's simply an old tree and should be trying to port the board config to a newer release (exynos 3250 support is merged in newer releases I think) or why the h*** it can't find a function that is declared in dma-mapping but not found by the ion driver.

OR it maybe colliding with the exynos drm driver, which seems to not be the same as the one defined in CONFIG_EXYNOS_HW_DRM (which is used by the exynos 3470) and in which the tizen-display module (gear2/neo display driver) depends...
Brain hurts
The Following 17 Users Say Thank You to biktor_gj For This Useful Post: [ View ] Gift biktor_gj Ad-Free
11th January 2015, 09:25 PM |#10  
Thanks Meter: 19
Wow I would be so happy if I could start using my watch again. Could not handle being on a samsung based rom, and the workarounds have been unpleasant to use.
I hope you are making progress, as soon as this can do anything useful I will flash it to my watch. Wish I could help but I am not a skilled programmer.
12th January 2015, 04:53 PM |#11  
Thanks Meter: 19
Also since the Gear Live is similar though not identical, would using that as a base make it easier to port Android? Might be too dissimilar
Post Reply Subscribe to Thread

Guest Quick Reply (no urls or BBcode)
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes