Porting Android to Gear 2

Search This thread

kavinzhao

Senior Member
Apr 6, 2015
196
117
Shanghai
Pity no touchscreen.
And Wear is trying to go ONLINE?
 

Attachments

  • 1430217158834.jpg
    1430217158834.jpg
    27.8 KB · Views: 1,382

kavinzhao

Senior Member
Apr 6, 2015
196
117
Shanghai
On the "Just a minute" screen

No, it turned to Cant Connect To The Internet(see my next post. Pic in it.)

---------- Post added at 12:13 PM ---------- Previous post was at 12:02 PM ----------

biktor_gj I think touchscreen's problem is far from that easy. Even on my "no more crashing" device it doesn't respond *at all*. From it can wake up the device I suggest that the kernel gets the signal, but didn't transmit it to Android Wear or need some calibration or something like that. What do you think?

P.S. Sorry, I mean "previous post" in the previous post.
 
Last edited:

biktor_gj

Senior Member
Jan 25, 2008
1,408
7,003
The good, the bad and the ugly

No, it turned to Cant Connect To The Internet(see my next post. Pic in it.)

---------- Post added at 12:13 PM ---------- Previous post was at 12:02 PM ----------

biktor_gj I think touchscreen's problem is far from that easy. Even on my "no more crashing" device it doesn't respond *at all*. From it can wake up the device I suggest that the kernel gets the signal, but didn't transmit it to Android Wear or need some calibration or something like that. What do you think?

P.S. Sorry, I mean "previous post" in the previous post.

Are you sure it's not crashing? Did you check the logcat? Since you removed the MediaProvider half the framework won't work... The only thing I can tell you (for sure) about the TS is this:
Code:
I/SystemServiceManager(  407): Starting phase 100
I/DisplayManagerService(  407): Display device added: DisplayDeviceInfo{"Built-in Screen": 320 x 320, 59.0 fps, density 240, 135.466 x 135.466 dpi, touch INTERNAL, rotation 0, type BUILT_IN, state UNKNOWN, FLAG_DEFAULT_DISPLAY, FLAG_ROTATES_WITH_CONTENT, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS}
I/SystemServer(  407): Package Manager
And that it works perfectly calibrated on recovery, so, being capacitive, it shouldn't need that (I think)... But maybe it's the density what's messed up or something else.
Anyway, first we need to clear out all the crashing stuff before we move forward. Now we know it can boot, which was the first important step. Now we have to make it work correctly, with the least possible amount of dependencies over binary libraries not designed for the watch., so...

The good: I've built a tinyalsa-based audio library which loads correctly and doesn't crash. I don't expect it to actually work, but it's enough for now (the YMU831 is exposed as an ALSA device so I can pick up Qualcomm's full alsa library and modify it so it works with ours if it it's needed):

Code:
I/AudioPolicyManagerBase(  106): loadAudioPolicyConfig() loaded /system/etc/audio_policy.conf
E/audio_route(  106): Control 'Clear Dsp Parameter' already exists in path 'handsfree-bt-music-speaker'
E/audio_route(  106): Control 'MICBIAS SWITCH' doesn't exist - skipping
E/audio_route(  106): Control 'Clear Dsp Parameter' already exists in path 'param_loopback_mic'
E/audio_route(  106): Control 'MICBIAS SWITCH' doesn't exist - skipping
E/audio_route(  106): Control 'Clear Dsp Parameter' already exists in path 'loopback-packet-main-mic'
E/audio_route(  106): Control 'Clear Dsp Parameter' already exists in path 'loopback-packet-second-mic'
E/audio_route(  106): Control 'Clear Dsp Parameter' already exists in path 'bt-hfp-2mic-svoice-rec'
I/AudioFlinger(  106): loadHwModule() Loaded primary audio interface from B2 audio HW HAL (audio) handle 1
I/AudioFlinger(  106): HAL output buffer size 512 frames, normal mix buffer size 1024 frames

The bad: Mediaserver keeps crashing, so the issue is not resolved, so the problem might come from somewhere else.


The ugly:
On each crashlog, you can see libmedia.so in the middle of the problem:
Code:
I/DEBUG   (  103): backtrace:
I/DEBUG   (  103):     #00 pc 00015d3c  /system/lib/libaudioflinger.so
I/DEBUG   (  103):     #01 pc 00015e01  /system/lib/libaudioflinger.so
I/DEBUG   (  103):     #02 pc 00017107  /system/lib/libaudioflinger.so
I/DEBUG   (  103):     #03 pc 0006524f  /system/lib/libmedia.so (android::AudioSystem::setParameters(int, android::String8 const&)+394)
I/DEBUG   (  103):     #04 pc 0002796d  /system/lib/libaudioflinger.so
I/DEBUG   (  103):     #05 pc 0000e999  /system/lib/libutils.so (android::Thread::_threadLoop(void*)+112)
I/DEBUG   (  103):     #06 pc 0000e521  /system/lib/libutils.so
I/DEBUG   (  103):     #07 pc 00013ab5  /system/lib/libc.so
I/DEBUG   (  103):     #08 pc 00012687  /system/lib/libc.so (__bionic_clone_entry+6)
I/DEBUG   (  103):     #09 pc 00013c61  /system/lib/libc.so (pthread_create+340)
Now, that library is coming from the kminilte system image. Why? because HWComposer had a dependency on a function that is met on that version of the library. If you replace that with the original Wear image, it doesn't display video and surfaceflinger crashes because the hardware composer cannot be initialized. But I think that by overwriting the original, something may be crashing on the audio server, creating all these problems.

This is a partial list of all the libraries I needed to copy/replace so video would work:
Code:
libMali.so
libion.so
libion_exynos.so
libcsc.so
libexynosutils.so
libexynosfimc.so
libexynosv4l2.so
libExynosIPService.so
libMcClient.so
hw/hwcomposer.b2.so
libhwcutils.so
libmpp.so
libfimg.so
libdisplay.so
libhwcutilsmodule.so
libhdmi.so
libdisplaymodule.so
libhdmimodule.so
libExynosHWCService.so
libvirtualdisplay.so
libvirtualdisplaymodule.so
libmedia.so <-- Contains reference to symbol _ZN7android10WFDService11instantiateEv required 
			for hwcomposer.exynos3
libnbaio.so <-- required by libmedia.so

Yes, there are also libraries for the camera module. It didn't boot without those either. So, my next step will be rebuilding the hardware composer driver. And since I have to do that, I will recreate the device & vendor folders I started making for Cyanogenmod, using opensource components for everything except the Mali library. It will take me more time, but hopefully, it will allow me to fix the 'power.b2.so' library, and at least, part of the sensor library too, and make it more feasible to have a fully functional Android* in the watch. If all that works out in the best possible case scenario, we would have video, audio, sensors and power management working. What do you guys think?

* Any Android variant.
 

kavinzhao

Senior Member
Apr 6, 2015
196
117
Shanghai
Are you sure it's not crashing? Did you check the logcat? Since you removed the MediaProvider half the framework won't work... The only thing I can tell you (for sure) about the TS is this:
Code:
I/SystemServiceManager(  407): Starting phase 100
I/DisplayManagerService(  407): Display device added: DisplayDeviceInfo{"Built-in Screen": 320 x 320, 59.0 fps, density 240, 135.466 x 135.466 dpi, touch INTERNAL, rotation 0, type BUILT_IN, state UNKNOWN, FLAG_DEFAULT_DISPLAY, FLAG_ROTATES_WITH_CONTENT, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS}
I/SystemServer(  407): Package Manager
And that it works perfectly calibrated on recovery, so, being capacitive, it shouldn't need that (I think)... But maybe it's the density what's messed up or something else.
Anyway, first we need to clear out all the crashing stuff before we move forward. Now we know it can boot, which was the first important step. Now we have to make it work correctly, with the least possible amount of dependencies over binary libraries not designed for the watch., so...

The log only said that the touchscreen is internal, nothing else. Any reaction when you touch it?

And making half the framework doesn't work seems fine. At least it is working with no more crashing reports. Anyone checked the logcat?

Huh? Any android? But we want Android Wear!
 
Last edited:
  • Like
Reactions: almurphy555

biktor_gj

Senior Member
Jan 25, 2008
1,408
7,003
The log only said that the touchscreen is internal, nothing else. Any reaction when you touch it?

And making half the framework doesn't work seems fine. At least it is working with no more crashing reports. Anyone checked the logcat?

Sorry, wrong part of the logcat, wanted to paste this:

Code:
F/libc    (  443): Fatal signal 11 (SIGSEGV) at 0x2 (code=1), thread 454 (ApmAudio)

E/EventHub(  407): could not get driver version for /dev/input/mice, Not a typewriter

I/InputReader(  407): Device added: id=-1, name='Virtual', sources=0x00000301

I/InputReader(  407): Device added: id=8, name='LPM_MOTION', sources=0x00000101

I/InputReader(  407): Device added: id=3, name='ymu831 Headset', sources=0x80000101

I/InputReader(  407): Device added: id=2, name='gpio-keys', sources=0x00000101

I/InputReader(  407):   Touch device 'sec_touchscreen' could not query the properties of its associated display.  The device will be inoperable until the display size becomes available.

I/InputReader(  407): Device added: id=1, name='sec_touchscreen', sources=0x00001002

I/DEBUG   (  103): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

I/DEBUG   (  103): Build fingerprint: 'samsung/b2/b2:4.4W.1/KGW42N/1387258:user/release-keys'

I/DEBUG   (  103): Revision: '13'

I/DEBUG   (  103): pid: 443, tid: 454, name: ApmAudio  >>> /system/bin/mediaserver

Then the audio service crashes again and again and again

If you keep it in the bootloop, every touch event gets reported on the logcat, saying that the window is still unavailable for touch events
 
Last edited:

kavinzhao

Senior Member
Apr 6, 2015
196
117
Shanghai
I/InputReader( 407): Touch device 'sec_touchscreen' could not query the properties of its associated display. The device will be inoperable until the display size becomes available.

I/InputReader( 407): Device added: id=1, name='sec_touchscreen', sources=0x00001002

I/InputReader( 407): Reconfiguring input devices. changes=0x00000004

I/InputReader( 407): Device reconfigured: id=1, name='sec_touchscreen', size 320x320, orientation 0, mode 1, display id 0

Inoperable until size is available...and then reconfigured. Any response from Android when you touch the screen now?

---------- Post added at 02:03 PM ---------- Previous post was at 01:37 PM ----------

A little off-topic word: I think you're wasting to much time on audio. Why not skip audio and make the OS usable then go back for audio? Audio is slowing down the entire process.

---------- Post added at 02:39 PM ---------- Previous post was at 02:03 PM ----------

That's funny, biktor_gj , when I put on the charger with device off, it boots to recovery....Sure bootloader didn't say systemd.utils="recovery" (or something like that).
 
Last edited:

biktor_gj

Senior Member
Jan 25, 2008
1,408
7,003
Inoperable until size is available...and then reconfigured. Any response from Android when you touch the screen now?

---------- Post added at 02:03 PM ---------- Previous post was at 01:37 PM ----------

A little off-topic word: I think you're wasting to much time on audio. Why not skip audio and make the OS usable then go back for audio? Audio is slowing down the entire process.

---------- Post added at 02:39 PM ---------- Previous post was at 02:03 PM ----------

That's funny, biktor_gj , when I put on the charger with device off, it boots to recovery....Sure bootloader didn't say systemd.utils="recovery" (or something like that).

When you remove MediaProvider and ClockworkSetup it crashes even harder. You can see it on logcat. When it crashes, it takes the InputEvent handler, and half the system with it, because mediaserver is still crashing. Then all the system server goes down and restarts.
Partial log:
Code:
I/AudioFlinger(  625): loadHwModule() error -22 loading module primary 

W/AudioPolicyManagerBase(  625): could not open HW module primary

E/AudioPolicyManagerBase(  625): Not output found for attached devices 00000002

E/AudioPolicyManagerBase(  625): Failed to open primary output

E/AudioPolicyManagerBase(  625): getDeviceForStrategy() speaker device not found for STRATEGY_SONIFICATION

E/AudioPolicyManagerBase(  625): getDeviceForStrategy() speaker device not found for STRATEGY_SONIFICATION

E/AudioPolicyService(  625): couldn't init_check the audio policy (No such device)

E/AudioService(  409): Media server started.

F/libc    (  625): Fatal signal 11 (SIGSEGV) at 0x0 (code=1), thread 625 (mediaserver)

I/FusedLocation(  409): engine started (com.android.location.fused)

I/DEBUG   (  472): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

I/DEBUG   (  472): Build fingerprint: 'samsung/b2/b2:4.4W.1/KGW42N/1387258:user/release-keys'

I/DEBUG   (  472): Revision: '13'

I/DEBUG   (  472): pid: 625, tid: 625, name: mediaserver  >>> /system/bin/mediaserver <<<

I/DEBUG   (  472): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000

W/NativeCrashListener(  409): Couldn't find ProcessRecord for pid 625

I/GCoreUlr(  601): Not starting ULR on wearable device.

I/ActivityManager(  409): Delay finish: com.google.android.gms/.wearable.init.InitializeGmsWearableReceiver

I/ActivityManager(  409): Resuming delayed broadcast

I/MultiDex(  557): install

I/MultiDex(  557): MultiDexExtractor.load(/system/priv-app/PrebuiltGmsCoreForClockworkWearable.apk, false)

I/DEBUG   (  472):     r0 40e6850c  r1 00000000  r2 00000000  r3 40a6c8d0

I/DEBUG   (  472): AM write failure (32 / Broken pipe)

I/DEBUG   (  472):     r4 40e6850c  r5 00000000  r6 00000199  r7 bebcd6d8

I/DEBUG   (  472):     r8 00000199  r9 00000000  sl 40a6c868  fp bebcdb6c

I/DEBUG   (  472):     ip 4013af38  sp bebcd6a8  lr 40032e05  pc 40032d3c  cpsr 800f0030

I/DEBUG   (  472):     d0  697472617473656e  d1  006e0069006c0067

I/DEBUG   (  472):     d2  006900640065003d  d3  00410049002e0074

I/DEBUG   (  472):     d4  006f006900640075  d5  0069006c006f0050

I/DEBUG   (  472):     d6  0065005300790063  d7  0063006900760072

I/DEBUG   (  472):     d8  0000000000000000  d9  0000000000000000

I/DEBUG   (  472):     d10 0000000000000000  d11 0000000000000000

I/DEBUG   (  472):     d12 0000000000000000  d13 0000000000000000

I/DEBUG   (  472):     d14 0000000000000000  d15 0000000000000000

I/DEBUG   (  472):     d16 0000000000000000  d17 0000000000000fff

I/DEBUG   (  472):     d18 41bbb3fbbd000000  d19 0000000000000000

I/DEBUG   (  472):     d20 0000000000000000  d21 0000000000000000

I/DEBUG   (  472):     d22 0000000000000000  d23 0000000000000000

I/DEBUG   (  472):     d24 0000000000000000  d25 0000000000000000

I/DEBUG   (  472):     d26 0000000000000000  d27 0000000000000000

I/DEBUG   (  472):     d28 0000000000000000  d29 0000000000000000

I/DEBUG   (  472):     d30 0000000000000000  d31 0000000000000000

I/DEBUG   (  472):     scr 00000010

I/DEBUG   (  472): 

I/DEBUG   (  472): backtrace:

I/DEBUG   (  472):     #00 pc 00015d3c  /system/lib/libaudioflinger.so

I/DEBUG   (  472):     #01 pc 00015e01  /system/lib/libaudioflinger.so

I/DEBUG   (  472):     #02 pc 00017107  /system/lib/libaudioflinger.so

I/DEBUG   (  472):     #03 pc 0005d2a5  /system/lib/libmedia.so (android::BnAudioFlinger::onTransact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+1096)

I/DEBUG   (  472):     #04 pc 000168ed  /system/lib/libbinder.so (android::BBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+60)

I/DEBUG   (  472):     #05 pc 0001afad  /system/lib/libbinder.so (android::IPCThreadState::executeCommand(int)+540)
I/DEBUG   (  472):     #06 pc 0001b0cf  /system/lib/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+38)
I/DEBUG   (  472):     #07 pc 0001b111  /system/lib/lbbinder.so (android::IPCThreadState::joinThreadPool(bool)+48)
I/DEBUG   (  472):     #08 pc 000015f5  /system/bin/mediaserver
I/DEBUG   (  472):     #09 pc 0000db2b  /system/lib/libc.so (__libc_init+50)
I/DEBUG   (  472):     #10 pc 00001868  /system/bin/mediaserver
I/DEBUG   (  472): 
I/DEBUG   (  472): stack:
I/DEBUG   (  472):          bebcd668  00000010  
I/DEBUG   (  472):          bebcd66c  0000000c  
I/DEBUG   (  472):          bebcd670  4007b881  /system/lib/libc.so (dlmalloc)
I/DEBUG   (  472):          bebcd674  40e68510  
I/DEBUG   (  472):          bebcd678  00000000  
I/DEBUG   (  472):          bebcd67c  00000199  
I/DEBUG   (  472):          bebcd680  bebcd6d8  [stack]
I/DEBUG   (  472):          bebcd684  00000199  
I/DEBUG   (  472):          bebcd688  00000000  
I/DEBUG   (  472):          bebcd68c  40a6c868  
I/DEBUG   (  472):          bebcd690  bebcdb6c  [stack]
I/DEBUG   (  472):          bebcd694  4007aa1d  /system/lib/libc.so (malloc+12)
I/DEBUG   (  472):          bebcd698  4013a960  /system/lib/libutils.so
I/DEBUG   (  472):          bebcd69c  400c991d  /system/lib/libstdc++.so (operator new(unsigned int)+6)
I/DEBUG   (  472):          bebcd6a0  40e68504  
I/DEBUG   (  472):          bebcd6a4  40032d51  /system/lib/libaudioflinger.so
I/DEBUG   (  472):     #00  bebcd6a8  40e68500  
I/DEBUG   (  472):          bebcd6ac  40032e05  /system/lib/libaudioflinger.so
I/DEBUG   (  472):     #01  bebcd6b0  00000199  
I/DEBUG   (  472):          bebcd6b4  bebcd6d8  [stack]
I/DEBUG   (  472):          bebcd6b8  40a6c788  
I/DEBUG   (  472):          bebcd6bc  bebcd6e0  [stack]
I/DEBUG   (  472):          bebcd6c0  40e68500  
I/DEBUG   (  472):          bebcd6c4  4003410b  /system/lib/libaudioflinger.so
I/DEBUG   (  472):     #02  bebcd6c8  40a6cfc0  
I/DEBUG   (  472):          bebcd6cc  40a6c79c  
I/DEBUG   (  472):          bebcd6d0  40a6d070  /dev/binder
I/DEBUG   (  472):          bebcd6d4  0000000f  
I/DEBUG   (  472):          bebcd6d8  40a6c788  
I/DEBUG   (  472):          bebcd6dc  00000000  
I/DEBUG   (  472):          bebcd6e0  40a6c788  
I/DEBUG   (  472):          bebcd6e4  bebcd8dc  [stack]
I/DEBUG   (  472):          bebcd6e8  00000000  
I/DEBUG   (  472):          bebcd6ec  bebcd8ac  [stack]
I/DEBUG   (  472):          bebcd6f0  bebcd8a8  [stack]
I/DEBUG   (  472):          bebcd6f4  000003f5  
I/DEBUG   (  472):          bebcd6f8  00000271  
I/DEBUG   (  472):          bebcd6fc  401e52a7  /system/lib/libmedia.so (android::BnAudioFlinger::onTransact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+1098)
As I said, removing Android audio is not a matter of removing files, but disabling the service on the framework so AudioFlinger doesn't run as a service, as requested by the system server. To do that you have to recompile it...
Logcat: http://pastebin.com/uBjgb0Ha
If you want more info check this:https://groups.google.com/forum/#!topic/android-porting/uHgdqhMyNHo
 
Last edited:

erickwill

Senior Member
Nov 30, 2008
2,008
3,625
Inoperable until size is available...and then reconfigured. Any response from Android when you touch the screen now?

---------- Post added at 02:03 PM ---------- Previous post was at 01:37 PM ----------

A little off-topic word: I think you're wasting to much time on audio. Why not skip audio and make the OS usable then go back for audio? Audio is slowing down the entire process.

---------- Post added at 02:39 PM ---------- Previous post was at 02:03 PM ----------

That's funny, biktor_gj , when I put on the charger with device off, it boots to recovery....Sure bootloader didn't say systemd.utils="recovery" (or something like that).

When you remove MediaProvider and ClockworkSetup it crashes even harder. You can see it on logcat. When it crashes, it takes the InputEvent handler, and half the system with it, because mediaserver is still crashing. Then all the system server goes down and restarts.
Partial log:
Code:
I/AudioFlinger(  625): loadHwModule() error -22 loading module primary 

W/AudioPolicyManagerBase(  625): could not open HW module primary

E/AudioPolicyManagerBase(  625): Not output found for attached devices 00000002

E/AudioPolicyManagerBase(  625): Failed to open primary output

E/AudioPolicyManagerBase(  625): getDeviceForStrategy() speaker device not found for STRATEGY_SONIFICATION

E/AudioPolicyManagerBase(  625): getDeviceForStrategy() speaker device not found for STRATEGY_SONIFICATION

E/AudioPolicyService(  625): couldn't init_check the audio policy (No such device)

E/AudioService(  409): Media server started.

F/libc    (  625): Fatal signal 11 (SIGSEGV) at 0x0 (code=1), thread 625 (mediaserver)

I/FusedLocation(  409): engine started (com.android.location.fused)

I/DEBUG   (  472): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

I/DEBUG   (  472): Build fingerprint: 'samsung/b2/b2:4.4W.1/KGW42N/1387258:user/release-keys'

I/DEBUG   (  472): Revision: '13'

I/DEBUG   (  472): pid: 625, tid: 625, name: mediaserver  >>> /system/bin/mediaserver <<<

I/DEBUG   (  472): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000

W/NativeCrashListener(  409): Couldn't find ProcessRecord for pid 625

I/GCoreUlr(  601): Not starting ULR on wearable device.

I/ActivityManager(  409): Delay finish: com.google.android.gms/.wearable.init.InitializeGmsWearableReceiver

I/ActivityManager(  409): Resuming delayed broadcast

I/MultiDex(  557): install

I/MultiDex(  557): MultiDexExtractor.load(/system/priv-app/PrebuiltGmsCoreForClockworkWearable.apk, false)

I/DEBUG   (  472):     r0 40e6850c  r1 00000000  r2 00000000  r3 40a6c8d0

I/DEBUG   (  472): AM write failure (32 / Broken pipe)

I/DEBUG   (  472):     r4 40e6850c  r5 00000000  r6 00000199  r7 bebcd6d8

I/DEBUG   (  472):     r8 00000199  r9 00000000  sl 40a6c868  fp bebcdb6c

I/DEBUG   (  472):     ip 4013af38  sp bebcd6a8  lr 40032e05  pc 40032d3c  cpsr 800f0030

I/DEBUG   (  472):     d0  697472617473656e  d1  006e0069006c0067

I/DEBUG   (  472):     d2  006900640065003d  d3  00410049002e0074

I/DEBUG   (  472):     d4  006f006900640075  d5  0069006c006f0050

I/DEBUG   (  472):     d6  0065005300790063  d7  0063006900760072

I/DEBUG   (  472):     d8  0000000000000000  d9  0000000000000000

I/DEBUG   (  472):     d10 0000000000000000  d11 0000000000000000

I/DEBUG   (  472):     d12 0000000000000000  d13 0000000000000000

I/DEBUG   (  472):     d14 0000000000000000  d15 0000000000000000

I/DEBUG   (  472):     d16 0000000000000000  d17 0000000000000fff

I/DEBUG   (  472):     d18 41bbb3fbbd000000  d19 0000000000000000

I/DEBUG   (  472):     d20 0000000000000000  d21 0000000000000000

I/DEBUG   (  472):     d22 0000000000000000  d23 0000000000000000

I/DEBUG   (  472):     d24 0000000000000000  d25 0000000000000000

I/DEBUG   (  472):     d26 0000000000000000  d27 0000000000000000

I/DEBUG   (  472):     d28 0000000000000000  d29 0000000000000000

I/DEBUG   (  472):     d30 0000000000000000  d31 0000000000000000

I/DEBUG   (  472):     scr 00000010

I/DEBUG   (  472): 

I/DEBUG   (  472): backtrace:

I/DEBUG   (  472):     #00 pc 00015d3c  /system/lib/libaudioflinger.so

I/DEBUG   (  472):     #01 pc 00015e01  /system/lib/libaudioflinger.so

I/DEBUG   (  472):     #02 pc 00017107  /system/lib/libaudioflinger.so

I/DEBUG   (  472):     #03 pc 0005d2a5  /system/lib/libmedia.so (android::BnAudioFlinger::onTransact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+1096)

I/DEBUG   (  472):     #04 pc 000168ed  /system/lib/libbinder.so (android::BBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+60)

I/DEBUG   (  472):     #05 pc 0001afad  /system/lib/libbinder.so (android::IPCThreadState::executeCommand(int)+540)
I/DEBUG   (  472):     #06 pc 0001b0cf  /system/lib/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+38)
I/DEBUG   (  472):     #07 pc 0001b111  /system/lib/lbbinder.so (android::IPCThreadState::joinThreadPool(bool)+48)
I/DEBUG   (  472):     #08 pc 000015f5  /system/bin/mediaserver
I/DEBUG   (  472):     #09 pc 0000db2b  /system/lib/libc.so (__libc_init+50)
I/DEBUG   (  472):     #10 pc 00001868  /system/bin/mediaserver
I/DEBUG   (  472): 
I/DEBUG   (  472): stack:
I/DEBUG   (  472):          bebcd668  00000010  
I/DEBUG   (  472):          bebcd66c  0000000c  
I/DEBUG   (  472):          bebcd670  4007b881  /system/lib/libc.so (dlmalloc)
I/DEBUG   (  472):          bebcd674  40e68510  
I/DEBUG   (  472):          bebcd678  00000000  
I/DEBUG   (  472):          bebcd67c  00000199  
I/DEBUG   (  472):          bebcd680  bebcd6d8  [stack]
I/DEBUG   (  472):          bebcd684  00000199  
I/DEBUG   (  472):          bebcd688  00000000  
I/DEBUG   (  472):          bebcd68c  40a6c868  
I/DEBUG   (  472):          bebcd690  bebcdb6c  [stack]
I/DEBUG   (  472):          bebcd694  4007aa1d  /system/lib/libc.so (malloc+12)
I/DEBUG   (  472):          bebcd698  4013a960  /system/lib/libutils.so
I/DEBUG   (  472):          bebcd69c  400c991d  /system/lib/libstdc++.so (operator new(unsigned int)+6)
I/DEBUG   (  472):          bebcd6a0  40e68504  
I/DEBUG   (  472):          bebcd6a4  40032d51  /system/lib/libaudioflinger.so
I/DEBUG   (  472):     #00  bebcd6a8  40e68500  
I/DEBUG   (  472):          bebcd6ac  40032e05  /system/lib/libaudioflinger.so
I/DEBUG   (  472):     #01  bebcd6b0  00000199  
I/DEBUG   (  472):          bebcd6b4  bebcd6d8  [stack]
I/DEBUG   (  472):          bebcd6b8  40a6c788  
I/DEBUG   (  472):          bebcd6bc  bebcd6e0  [stack]
I/DEBUG   (  472):          bebcd6c0  40e68500  
I/DEBUG   (  472):          bebcd6c4  4003410b  /system/lib/libaudioflinger.so
I/DEBUG   (  472):     #02  bebcd6c8  40a6cfc0  
I/DEBUG   (  472):          bebcd6cc  40a6c79c  
I/DEBUG   (  472):          bebcd6d0  40a6d070  /dev/binder
I/DEBUG   (  472):          bebcd6d4  0000000f  
I/DEBUG   (  472):          bebcd6d8  40a6c788  
I/DEBUG   (  472):          bebcd6dc  00000000  
I/DEBUG   (  472):          bebcd6e0  40a6c788  
I/DEBUG   (  472):          bebcd6e4  bebcd8dc  [stack]
I/DEBUG   (  472):          bebcd6e8  00000000  
I/DEBUG   (  472):          bebcd6ec  bebcd8ac  [stack]
I/DEBUG   (  472):          bebcd6f0  bebcd8a8  [stack]
I/DEBUG   (  472):          bebcd6f4  000003f5  
I/DEBUG   (  472):          bebcd6f8  00000271  
I/DEBUG   (  472):          bebcd6fc  401e52a7  /system/lib/libmedia.so (android::BnAudioFlinger::onTransact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+1098)
As I said, removing Android audio is not a matter of removing files, but disabling the service on the framework so AudioFlinger doesn't run as a service, as requested by the system server. To do that you have to recompile it...
Logcat: http://pastebin.com/uBjgb0Ha
If you want more info check this:https://groups.google.com/forum/#!topic/android-porting/uHgdqhMyNHo

@biktor_gj Beautiful work here my friend! :good:
You have achieved many advances so far! I agree with @kavinzhao maybe to make the OS usable first and then go back to audio is a good option.. Let me arrive at my office to set my environment! I would love to play with gear 2 and wear! :D Count me in to collaborate with you guys..
 

The7Suggester

Senior Member
Apr 10, 2014
102
17
I did have a gear 1 watch, and i decided to put NULL v23 on it.
Only due to an unfortunate timing incident on my part, i ended up with a dead watch, so i bought a Gear 2.
I dont quite understand why the port would be to difficult, seeing as the differences between the gear 1 and gear 2
are relatively small.

i.e. InfraRed Port, 800 MHz Processor vs Dual Core 1GHz processor, and heartbeat monitor.
Are you Pauly - the Creator of NULL ?

http://nullproject.net/register/
 

jeffc83

Senior Member
Aug 4, 2010
366
122
Philadelphia "burbs"
I did have a gear 1 watch, and i decided to put NULL v23 on it.
Only due to an unfortunate timing incident on my part, i ended up with a dead watch, so i bought a Gear 2.
I dont quite understand why the port would be to difficult, seeing as the differences between the gear 1 and gear 2
are relatively small.

i.e. InfraRed Port, 800 MHz Processor vs Dual Core 1GHz processor, and heartbeat monitor.
Are you Pauly - the Creator of NULL ?

http://nullproject.net/register/

Please, this is a development thread, not a Q & A section! (again, not trying to be rude but does anyone read before posting anymore?)

Biktor is NOT the creator of NULL. Also, the Gear 1 and Gear 2 are NOT the same...there are too many differences to even try to explain.

EVERYONE - IF YOU ARE NOT CONTRIBUTING DIRECTLY, PLEASE JUST HIT THANKS WHEN BIKTOR POSTS...THIS WILL HELP KEEP THE THREAD CLEAN!!!!
 

SebasC

Senior Member
Nov 16, 2007
226
18
37
Cokato, MN
Seeing this excites me, granted it's a long process I applaud you for getting Android Wear working (Even partially) on the Gear 2 Neo.. I hope in the near future we can see good builds for this... Tizen is nice but Android Wear would be ideal (In my opinion)
 

kavinzhao

Senior Member
Apr 6, 2015
196
117
Shanghai
So I should change my previous posts into "crashing harder". But.....

Agreed. You've come so far, i think you should move on from the audio issue and try to get a basic rom working. Then again, i have no idea how much trouble that is for you.
@biktor_gj Beautiful work here my friend! :good:
You have achieved many advances so far! I agree with @kavinzhao maybe to make the OS usable first and then go back to audio is a good option.. Let me arrive at my office to set my environment! I would love to play with gear 2 and wear! :D Count me in to collaborate with you guys..

Even it needs recompile, I(we) still think it is a good idea to disable audio first and move on. We can't let a not-very-important thing take up all the time. But it is still up to you, biktor. How's things going?
 

biktor_gj

Senior Member
Jan 25, 2008
1,408
7,003
Agreed. You've come so far, i think you should move on from the audio issue and try to get a basic rom working. Then again, i have no idea how much trouble that is for you.

I don't know if I'm not explaining myself correctly or if you guys aren't reading. Audio is not a problem. I have already fixed that. The problem is one of the proprietary libraries, which hwcomposer needs to work, but is not compatible with Wear and makes Android Wear's services crash. This doesn't have anything to do with audio, except that it's the first place where it crashes. But the problem is with hwcomposer library and its dependencies, that needs to be cleaned up.

I did have a gear 1 watch, and i decided to put NULL v23 on it.
Only due to an unfortunate timing incident on my part, i ended up with a dead watch, so i bought a Gear 2.
I dont quite understand why the port would be to difficult, seeing as the differences between the gear 1 and gear 2
are relatively small.

i.e. InfraRed Port, 800 MHz Processor vs Dual Core 1GHz processor, and heartbeat monitor.
Are you Pauly - the Creator of NULL ?

http://nullproject.net/register/

The port is difficult because it's another processor, with different clock, i2c bus config, display configuration, display panel, flash layout, bootloader and an incompatible kernel with no base android rom to work with. The only thing completely shared between Gear1 & 2 is SensorHub, and maybe the camera...

Biktor, i think I have time to join you, if you have time to give me a link to the source code I may be able to try disabling audio and we can develop in parallel.

Again, I have no source code for Android Wear. I'm working with a binary image, because I haven't found a full source code repo for Android Wear. If you want kernel sources you have them in the github repo (look the first post), but I can't get you source code for things I don't have, like android wear's framework, which is what you are asking for...
 

Top Liked Posts

  • There are no posts matching your filters.
  • 273
    Hello everyone!
    Android Wear for Gear 2 / Gear 2 Neo

    This thread is about development of Android Wear for Gear 2 & Gear 2 Neo
    IF YOU HAVE A QUESTION, ASK IT HERE: http://forum.xda-developers.com/gear-2/help/qa-porting-android-to-gear-2-t3018159

    attachment.php.jpg bootlogo.jpg wearboot.php.jpginstallgplay.jpgscreenshot.jpgIMG_20150514_204055.jpgIMG_20150514_100754.jpg

    DISCLAIMER
    Code:
    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.

    Working:
    • 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: https://mega.nz/#!QQwXQKCD!U-y82wTuBflzdBTrLccxrSLoLkTJUGWtEXMZ6TPikQU
    Fixes over previous builds: Text To Speech, IR Support & New Gear Kernel Settings

    Previous builds:
    Beta #3 (Zenwatch based): https://mega.nz/#!FFYjQCxR!Et4bc8QSXstO1oxlAdXNfq82f7QH4cKsj5tnBNLPZog
    Beta #2 (Gear Live based): https://mega.nz/#!IExADLQC!HThMj1Sc_BcPsywQXM0LZopvZd3y1aXiaW-5a5_CHuM
    Beta #1 (Gear Live based): https://mega.nz/#!tQJFxSLS!Xu4_xJkW7qlXgz4IUTbFa2RqN8kWcIf0-UZfRTJ0LyM


    Android Wear 5.1.1
    September 24th, 2015: Android Wear Lollipop - 5.1.1 (build LCA43)
    Full flash Package:
    Mediafire: http://www.mediafire.com/download/aces995ufltx3vb/Wear_511_LCA43__09_24_2015.zip
    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:
    Mediafire: http://www.mediafire.com/download/ar8ir73m32yx05n/Wear_511__08_13_2015.tar
    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:
    Mediafire: http://www.mediafire.com/download/pr3vljpdecep0dd/wear_511__07_22_2015.tar
    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: http://www.mediafire.com/download/cuo5fa95d5tgmv5/bootimage_ADB_ONLY.tar
    ADB+MTP boot image: http://www.mediafire.com/download/bs6rwapqcc35sc6/bootimage_MTP_AND_ADB.tar
    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:
    Mega: https://mega.co.nz/#!0ZxgQYZA!7m986voG9NLYUUx7Nxzx8EiYbdgXxwFi56otuxQFZbM
    Mediafire: http://www.mediafire.com/download/k71o1m16g32x65y/Wear__5_1_1__07_19_2015.zip
    MD5: deffb5160968d81a4e560416315791eb Wear__5_1_1__07_19_2015.zip

    July 13th, 2015: Android Wear Lollipop - 5.1.1 (build LDZ22J)** Infrared support (thanks @bitstra for your IR app!)
    Full flash Package:http://www.mediafire.com/download/6mmb33lftfrr8w8/Wear_511__07_13_2015_Try2.zip

    July 12th, 2015: Android Wear Lollipop - 5.1.1 (build LDZ22J) ** Screen always on + Audio IN/OUT modifications
    Full flash Package: http://www.mediafire.com/download/myzqnv4bkwa55b3/Wear_5_1_1_07_12_2015.zip

    July 5th, 2015: Android Wear Lollipop - 5.1.1 (build LDZ22J) ** Audio support!
    Full flash Package: http://www.mediafire.com/download/eths38jax91sgnd/Wear_511_07_05_2015.zip

    July 1st, 2015: Android Wear Lolipop - 5.1.1 (buildLDZ22J)
    Full Flash Package: http://www.mediafire.com/download/6rzpfswta2s8fg3/Wear_511_07_01_2015.zip

    June 27th, 2015: Android Wear Lolipop - 5.1.1 (build LDZ22J)
    Full Flash Package: http://www.mediafire.com/download/bmcjbaikve5sob2/Gear2_Wear_Lolipop_5.1.1_06292015.tar.zip

    June 27th, 2015: Android Wear Kitkat - 4.4.2W (build KNX01Q)
    Full Flash Package: http://www.mediafire.com/download/2ar5ye1vla8g8gf/full_06_27_2015.zip

    Everything I have/done with the Gear 2 is available on this folder: https://www.mediafire.com/folder/092gaz7gudh0f/Gear2, in case you want to dig a bit deeper ;)
    Installing
    Odin: http://www.mediafire.com/download/v67itqpjitxxogi/Odin3_v3.09(1).zip
    User @alvaromartinezb has made a really good video explaining what you have to do, check it out! https://www.youtube.com/watch?v=bBqg72z8LOk&feature=youtu.be

    @alvaromartinezb Walkthrough video on audio: https://www.youtube.com/watch?v=klYqseFd90g
    KNOWN ISSUES
    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: GOING BACK TO TIZEN MIGHT PROVE DIFFICULT TO ANYBODY WITHOUT KNOWLEDGE OF THE WATCH, SDB, ADB, AND ANYONE WHO DOESN'T USE ODIN. DON'T PM ME FOR IT. IT'S WRITTEN BELOW. ASK IN THE Q&A SECTION PLEASE. THIS IS A DEVELOPMENT THREAD, AND THESE IMAGES ARE FOR DEVELOPMENT ONLY.
    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 : https://www.youtube.com/watch?v=LhzIqFopQNY&feature=youtu.be
    1. Flash this file: http://www.mediafire.com/download/3cg2eazoouur0bs/Tizenmod-Full-Restore.tar
    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
    YOU NEED TO KNOW HOW TO USE ADB/SDB FOR THIS.
    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:
    https://www.mediafire.com/folder/a1tcatuw1a8t3/Full_Restore

    And then follow these steps:
    Code:
    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/opt.zip /system
    cd /system
    unzip opt.zip
    sync
    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
    67
    Moving on

    So, I'm sorry to tell you this, guys, but the day has finally come.

    Some months ago, I started having some issues with my Gear Neo. I would flash anything, and the watch would stop flashing midway dropping a "failed" message on Odin, or wouldn't boot after flashing. After a lot of trying, I finally was able to bring it back to life, but sometimes, the watch would still randomly reboot, show random force closes, and sudden battery drains. The reason for this is that the flash chip in my watch was slowly dying and corrupting the data inside. Those problems have only gone worse, to the point where it can't stay running for more than a minute without dying. I've been testing it over and over again and the result is always the same: I can zero out an entire partition, and read it back and see that some parts get zeroed, and some others read 4, 6, or random characters. That and the kernel dropping I/O errors all the time in dmesg show what that means: after more than a thousand kernels and systems flashed, the flash chip finally gave up.

    I've thought of getting another one to replace it, but my life has changed dramatically and I don't have much time to work on anything lately, and if I were to buy another watch, I think money would be better spent in something newer after all.

    I started this project 20 months ago, with no idea on how to make Android run, a very limited set of skills, and without knowing if I'd ever get anything running in the watch. Finally we ended up with a mostly complete Android Wear experience, iterating through 3 major Wear versions on a watch which was never designed to run it, and with an amazing community helping each other with all issues that have arised through time.

    It's been really fun working on this, and I'm really, deeply thankful for each and every person in this forum which has participated in any way with this project, either making videos, reporting issues or just helping others.

    So, to everyone, since I can't mention the more than 500 persons I was mentioning in this post, THANK YOU, I really hope we'll meet again in another project!
    I'll be in the Gear S forum trying to make this damned, horribly programmed, and full of issues watch behave :)
    62
    Welcome home

    Welcome home, Android
    I've spent four months searching for you :)
    IMG_20150424_101654.jpg
    IMG_20150424_101655.jpg

    We still have a lot of work, but it's nice to see you finally showing up!
    IMG_20150424_101657.jpg

    Edit: Logcat here -> http://pastebin.com/rSPLTCrX

    *flies away to repair all the crashing stuff*
    49
    Already got the update file thanks to @tritus! Took a quick look, version is a little up (MEC23L) but not as up as emulator (MU) and does have Google TTS services. I pushed it into my watch and it fails almost every time I try to start it. In fact, it behaves exactly as the emulator APK. Renders ambient mode half dead and walking like a zombie in the background eating my battery..

    Update is a mix of binary patches/new files, so it'll take me a little while to make a master system image and patch all my stuff into it. We'll see how it works when the framework version is up!

    Will keep you guys posted!
Our Apps
Get our official app!
The best way to access XDA on your phone
Nav Gestures
Add swipe gestures to any Android
One Handed Mode
Eases uses one hand with your phone