Fingerprint reader MI4s on CM Mi4c ROMs - Xiaomi Mi 4C

Dear sirs, madams,
I'm trying to get the fingerprint-reader on my Xiaomi MI4s working on a(ny) Cyanogenmod ROM and could use some help. Since I'm new to XDA, I couldn't post in the developer form, even though that's probably a better place. My apologies. Currently I'm testing on a Mokee ROM for MI4c (2016-09-16, MOB31E).
I've tried various combinations of fingerprintd, fingerprint-msm5992.so, lib_fpc_tac_shared.so and fingerprint firmware files of other ROMs such as Cyanogenmod kenzo (Redmi Note 3), Nextbit, Gemini (MI5), MIUI8, et cetera. Results:
1) Firmware files (trustlets) load correctly
2) fingerprintd starts and loads the HAL libraries correctly
3) HAL libraries find the fpc1020 device
4) HAL libraries call into the keymaster trustlet, which fails:
Code:
10-08 19:59:21.695 1732 1732 D fpc_tac : fpc_km_tac_get_encapsulated_key begin
10-08 19:59:21.695 1732 1732 D QSEECOMAPI: : QSEECom_get_handle sb_length = 0x400
10-08 19:59:21.696 1732 1732 D QSEECOMAPI: : App is already loaded QSEE and app id = 3
10-08 19:59:21.699 1732 1732 E fpc_tac : fpc_km_tac_get_encapsulated_key KEYMASTER_GET_AUTH_TOKEN_KEY returned status=-16773124
10-08 19:59:21.700 1732 1732 D QSEECOMAPI: : QSEECom_dealloc_memory
10-08 19:59:21.700 1732 1732 D QSEECOMAPI: : QSEECom_shutdown_app, app_id = 3
10-08 19:59:21.702 1732 1732 D fpc_tac : fpc_km_tac_get_encapsulated_key end
The MIUI8 ROM contains a tool 'keymaster_test' which tests the keymaster trustlet. All tests that use the keymaster to create keys fail, which lead me to believe that the problem lies with the keymaster trustlet and not the fingerprint software.
Reverse engineering of the keymaster trustlet shows a call into 'qsee_get_secure_state()', which if it fails logs a failure and exits. I don't see this logging, so am not sure if this path is triggered, but it could be.
My hypothesis is that the keymaster trustlet (which is the MIUI8 original) checks the boot state and 'doesn't like it' on the Mokee ROM and therefore doesn't allow the fingerprint trustlet to generate key material necessary for the fingerprint software to work.
Is there anyone who could shed some light on this topic? Is there a way I could test my hypothesis? Would signing the boot.img help? The MIUI8 boot.img appears to contain an embedded signature/certificate of Yoyodyne Inc., which I think is a default Android certificate. The Mokee boot.img does not appear to contain something like this. Any ideas??

serkoon said:
Dear sirs, madams,
I'm trying to get the fingerprint-reader on my Xiaomi MI4s working on a(ny) Cyanogenmod ROM and could use some help. Since I'm new to XDA, I couldn't post in the developer form, even though that's probably a better place. My apologies. Currently I'm testing on a Mokee ROM for MI4c (2016-09-16, MOB31E).
I've tried various combinations of fingerprintd, fingerprint-msm5992.so, lib_fpc_tac_shared.so and fingerprint firmware files of other ROMs such as Cyanogenmod kenzo (Redmi Note 3), Nextbit, Gemini (MI5), MIUI8, et cetera. Results:
1) Firmware files (trustlets) load correctly
2) fingerprintd starts and loads the HAL libraries correctly
3) HAL libraries find the fpc1020 device
4) HAL libraries call into the keymaster trustlet, which fails:
Code:
10-08 19:59:21.695 1732 1732 D fpc_tac : fpc_km_tac_get_encapsulated_key begin
10-08 19:59:21.695 1732 1732 D QSEECOMAPI: : QSEECom_get_handle sb_length = 0x400
10-08 19:59:21.696 1732 1732 D QSEECOMAPI: : App is already loaded QSEE and app id = 3
10-08 19:59:21.699 1732 1732 E fpc_tac : fpc_km_tac_get_encapsulated_key KEYMASTER_GET_AUTH_TOKEN_KEY returned status=-16773124
10-08 19:59:21.700 1732 1732 D QSEECOMAPI: : QSEECom_dealloc_memory
10-08 19:59:21.700 1732 1732 D QSEECOMAPI: : QSEECom_shutdown_app, app_id = 3
10-08 19:59:21.702 1732 1732 D fpc_tac : fpc_km_tac_get_encapsulated_key end
The MIUI8 ROM contains a tool 'keymaster_test' which tests the keymaster trustlet. All tests that use the keymaster to create keys fail, which lead me to believe that the problem lies with the keymaster trustlet and not the fingerprint software.
Reverse engineering of the keymaster trustlet shows a call into 'qsee_get_secure_state()', which if it fails logs a failure and exits. I don't see this logging, so am not sure if this path is triggered, but it could be.
My hypothesis is that the keymaster trustlet (which is the MIUI8 original) checks the boot state and 'doesn't like it' on the Mokee ROM and therefore doesn't allow the fingerprint trustlet to generate key material necessary for the fingerprint software to work.
Is there anyone who could shed some light on this topic? Is there a way I could test my hypothesis? Would signing the boot.img help? The MIUI8 boot.img appears to contain an embedded signature/certificate of Yoyodyne Inc., which I think is a default Android certificate. The Mokee boot.img does not appear to contain something like this. Any ideas??
Click to expand...
Click to collapse
i'm using mi4s (CM 14.1 mi4c) and fingerprint didn't work, how to fix it ? please help me

Would love to see this working. It's the Achilles heel in our otherwise terrific device. Any testing or logs you might need, I'm your man.
For what it's worth, @AndropaX and @ketut.kumajaya have both tried (unsuccessfully) to achieve this. Although they didn't manage it, they may well have insight that you haven't looked into yet. Perhaps send an them a quick message to see if they have anything that might help you get a little further or some ideas you haven't looked into.
Keep up the good work

Any progress mate?
Sent from my Pixel XL using XDA-Developers mobile app

serkoon said:
Dear sirs, madams,
I'm trying to get the fingerprint-reader on my Xiaomi MI4s working on a(ny) Cyanogenmod ROM and could use some help. Since I'm new to XDA, I couldn't post in the developer form, even though that's probably a better place. My apologies. Currently I'm testing on a Mokee ROM for MI4c (2016-09-16, MOB31E).
I've tried various combinations of fingerprintd, fingerprint-msm5992.so, lib_fpc_tac_shared.so and fingerprint firmware files of other ROMs such as Cyanogenmod kenzo (Redmi Note 3), Nextbit, Gemini (MI5), MIUI8, et cetera. Results:
1) Firmware files (trustlets) load correctly
2) fingerprintd starts and loads the HAL libraries correctly
3) HAL libraries find the fpc1020 device
4) HAL libraries call into the keymaster trustlet, which fails:
Code:
10-08 19:59:21.695 1732 1732 D fpc_tac : fpc_km_tac_get_encapsulated_key begin
10-08 19:59:21.695 1732 1732 D QSEECOMAPI: : QSEECom_get_handle sb_length = 0x400
10-08 19:59:21.696 1732 1732 D QSEECOMAPI: : App is already loaded QSEE and app id = 3
10-08 19:59:21.699 1732 1732 E fpc_tac : fpc_km_tac_get_encapsulated_key KEYMASTER_GET_AUTH_TOKEN_KEY returned status=-16773124
10-08 19:59:21.700 1732 1732 D QSEECOMAPI: : QSEECom_dealloc_memory
10-08 19:59:21.700 1732 1732 D QSEECOMAPI: : QSEECom_shutdown_app, app_id = 3
10-08 19:59:21.702 1732 1732 D fpc_tac : fpc_km_tac_get_encapsulated_key end
The MIUI8 ROM contains a tool 'keymaster_test' which tests the keymaster trustlet. All tests that use the keymaster to create keys fail, which lead me to believe that the problem lies with the keymaster trustlet and not the fingerprint software.
Reverse engineering of the keymaster trustlet shows a call into 'qsee_get_secure_state()', which if it fails logs a failure and exits. I don't see this logging, so am not sure if this path is triggered, but it could be.
My hypothesis is that the keymaster trustlet (which is the MIUI8 original) checks the boot state and 'doesn't like it' on the Mokee ROM and therefore doesn't allow the fingerprint trustlet to generate key material necessary for the fingerprint software to work.
Is there anyone who could shed some light on this topic? Is there a way I could test my hypothesis? Would signing the boot.img help? The MIUI8 boot.img appears to contain an embedded signature/certificate of Yoyodyne Inc., which I think is a default Android certificate. The Mokee boot.img does not appear to contain something like this. Any ideas??
Click to expand...
Click to collapse
I've been looking into this as well, tried various combinations of drivers, firmware, from Nubia Z11, redmi note3, nextbit, gemeni, etc. I think we pretty much followed the same path and no luck. I was just about to look into the MIUI rom and i came across your thread, and it seems like you might be on to something any updates?
I'll look into what you mentioned and see what i find.

If you can share your qsee_log that can find out what caused the KEYMASTER_GET_AUTH_TOKEN_KEY failed.
It's really easy to debug.
Thanks.
---------- Post added at 07:51 AM ---------- Previous post was at 07:34 AM ----------
chriswu420 said:
If you can share your qsee_log that can find out what caused the KEYMASTER_GET_AUTH_TOKEN_KEY failed.
It's really easy to debug.
Thanks.
Click to expand...
Click to collapse
It can be see from your log, the returned errno 16773124 which means "QSEE_MESSAGE_ERROR_BAD_DEST_APPNAME".
It shows that your fingerprint TA might not be in the keymaster.
Please check the keymaster_oem_config.xml in your environment and make sure that your device is in the list.
Hope it will help you.

The keymaster has a whitelist that should contain 'fpctzappfingerprint'. Instead, it will probably contain just 'fingerprint', which is the name of the default QC fingerprint TA. Run strings through some compatible keymaster TAs and look for 'fingerprint'. If you find 'fpctzappfingerprint', use that keymaster instead. Keep your fingers crossed when you reboot. HTH

aasrasra said:
The keymaster has a whitelist that should contain 'fpctzappfingerprint'. Instead, it will probably contain just 'fingerprint', which is the name of the default QC fingerprint TA. Run strings through some compatible keymaster TAs and look for 'fingerprint'. If you find 'fpctzappfingerprint', use that keymaster instead. Keep your fingers crossed when you reboot. HTH
Click to expand...
Click to collapse
Any chance we could apply this to a rom and test it? Would love to see the fpr working
Sent from my Mi-4s using XDA-Developers Legacy app

Related

aosp kitkat4.4 nexus 7(deb) not boot

hi all:
i download aosp kitkat4.4 source codes from google website. i compiled the code. i got the ROM.but when i flash the ROM to my device nexus 7(deb). it cannot boot.
from the log. i found that following error log. the sentence "couldn't find an OpenGL ES implementation" maybe cause the fatal question.
any advices is welcomed !
thank
brian
02-10 08:37:07.375: E/QCOMKeyMaster(17633): failed to load qseecom library
02-10 08:37:07.375: E/keystore(17633): could not open keymaster device in keystore (Operation not permitted)
02-10 08:37:07.375: E/keystore(17633): keystore keymaster could not be initialized; exiting
02-10 08:37:07.405: A/libEGL(17630): couldn't find an OpenGL ES implementation
02-10 08:37:07.405: A/libc(17630): Fatal signal 6 (SIGABRT) at 0x000044de (code=-6), thread 17630 (surfaceflinger)
02-10 08:37:07.575: E/msm8960_platform(17632): platform_init: DLOPEN failed for libacdbloader.so
02-10 08:37:07.575: E/msm8960_platform(17632): platform_init: DLOPEN failed for libcsd-client.so
02-10 08:37:07.575: E/MonoPipe(17632): Failed to fetch local time frequency when constructing a MonoPipe (res = -32). getNextWriteTimestamp calls will be non-functional

[5.1.x] [SM-T325] CyanogenMod 12.1 UNOFFICIAL Nightlies for the Tab Pro 8.4 LTE

CyanogenMod is a free, community built, aftermarket firmware distribution of Android 5.1.x (Lollipop), which is designed to increase performance and reliability over stock Android for your device.
Code:
#include <std_disclaimer.h>
/*
* Your warranty is now void.
*
* We are not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this ROM
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at us for messing up your device, we will laugh at you.
*
*/
CyanogenMod is based on the Android Open Source Project with extra contributions from many people within the Android community. It can be used without any need to have any Google application installed. You will need to provide your own Google Applications package (gapps). CyanogenMod does still include various hardware-specific code, which is also slowly being open-sourced anyway.
All the source code for CyanogenMod is available in the CyanogenMod Github repo. And if you would like to contribute to CyanogenMod, please visit our Gerrit Code Review. Your changelog is whatever was merged into gerrit.
Instructions
First time flashing CyanogenMod 12.1 on your device, or coming from another ROM?
Download the zip(s).
Install a compatible Recovery
Perform a NANDroid backup of your current ROM (Optional)
Wipe data & cache partitions of your device (required when coming from stock!).
Flash CyanogenMod.
Optional: Install the Google Apps addon package.
Known Issues
* None
Other Issues?
Before posting on this thread, make sure of a few things:
You've utilized the search function of the forums. Nothing irritates me more than lazy people who do not search for an answer before asking.
If you are the only one having a problem. Boot into recovery, wipe data/factory reset, reflash the rom/gapps and nothing else. Boot up and see if the problem persists.
Make sure your post is relevant to this thread. "I'm having problems rooting/unlocking" is NOT relevant here.
LOGS LOGS LOGS!!!! Use this: SysLog by Tortel
Download Links
CyanogenMod: download.crpalmer.org
Google apps addon:
Download: http://d-h.st/users/dhacker29/?fld_id=27426 (use latest lpmr1 gapps)
XDA:DevDB Information
CyanogenMod 12.1 for MondrianLTE (Unofficial), ROM for the Samsung Galaxy Tab Pro 12.2, 10.1, 8.4
Contributors
crpalmer
ROM OS Version: 5.1.x Lollipop
Version Information
Status: No Longer Updated
Created 2015-04-18
Last Updated 2016-02-13
Reserved
Works fine
ROM works fine, made a dirty flash from CM12.
No problems at all.
http://review.cyanogenmod.org/#/c/95004/2
hopefully merged soon (already in cm12 since late march..just noticed recently in cm12 builds in mms.apk...should have known by looking at the history for the cm12 version)
EDIt
One thing though
Email exchange (hotmail etc) app has a repeated error popup during sync..this is from 4/17 build and also today's 4/18...was not the case till 4/16..noticed the apk file size has changed (not sure what..but it starts giving error popups during sync...pretty irritating as have to somehow get it to stop the sync to stop the popup...using the cm12.1 email apk 5.82mb from 4/16 or earlier fixes the issue)
cm12 not having such issues,.at least from 4.16 to 4/18 no email.apk file size changes..no sync issues
Edit attached mixer file to address earpiece echo for other caller not speakerphone echo for other caller.. change zip in extension to xml.. not a zip file..put in system etc folder permissions 644
Does miracast work with this build? I know CM started enabling the feature, but it didn't work when I last tried it with my SM-T315. Thank you for your answer.
Can I just ask a general question to all who have flashed this on the T325, what version specifically of TWRP did you use to flash this? Been having some issues and just want to compare.
RavenY2K3 said:
Can I just ask a general question to all who have flashed this on the T325, what version specifically of TWRP did you use to flash this? Been having some issues and just want to compare.
Click to expand...
Click to collapse
TWRP 2.8.5.0 here. Any later version will work as well.
Hello,
Thank you @crpalmer - great job with this rom!
Any chance I could buy you a beer to express my gratitude? I don't see a donations link in the OP
vrl13 said:
Hello,
Thank you @crpalmer - great job with this rom!
Any chance I could buy you a beer to express my gratitude? I don't see a donations link in the OP
Click to expand...
Click to collapse
Thanks!
There's a donate link in my profile but I prefer not to clutter up useful information with extra donate links...
My PayPal is [email protected].
Beer uploaded: 7UG08116JF1461945
Thanks again!
Sent from my SM-T325 using Tapatalk
Anyone having issues with there WiFi. Sometimes it picks up my wifi other times it doesn't. Sees all the others around the building but not mine.
Sent from my Nexus 6 using XDA Free mobile app
mackenzie121 said:
Anyone having issues with there WiFi. Sometimes it picks up my wifi other times it doesn't. Sees all the others around the building but not mine.
Sent from my Nexus 6 using XDA Free mobile app
Click to expand...
Click to collapse
Hello,
I'm having no issue with both 2.4 and 5ghz wifi in my home.
Sounds like a router problem though.. can your other devices pick your wifi without a hitch?
Maybe it would help using a fixed IP, in case you are using DHCP now.
Regards.
Sent from my SM-T325 using Tapatalk
RavenY2K3 said:
Can I just ask a general question to all who have flashed this on the T325, what version specifically of TWRP did you use to flash this? Been having some issues and just want to compare.
Click to expand...
Click to collapse
I used TWRP 2.8.6.0. I already flashed several nightlies on this tablet, no issues.
---------- Post added at 10:41 PM ---------- Previous post was at 10:26 PM ----------
Is the changelog the same of the nightlies for "MONDRIANWIFI"? Thanks
Is it support cifs ?
Device encryption doesn't work. Build 20150507
Log:
Code:
D/Cryptfs ( 247): unmounting /data succeeded
D/QSEECOMAPI: ( 247): QSEECom_get_handle sb_length = 0x2000
D/QSEECOMAPI: ( 247): App is not loaded in QSEE
E/QSEECOMAPI: ( 247): Error::Cannot open the file /vendor/firmware/keymaster/keymaster.mdt
E/QSEECOMAPI: ( 247): Error::Loading image failed with ret = -1
D/QSEECOMAPI: ( 247): QSEECom_get_handle sb_length = 0x2000
D/QSEECOMAPI: ( 247): App is not loaded in QSEE
E/QSEECOMAPI: ( 247): Error::Cannot open the file /firmware/image/keymaste.mdt
E/QSEECOMAPI: ( 247): Error::Loading image failed with ret = -1
E/QCOMKeyMaster( 247): Loading keymaster app failed
E/Cryptfs ( 247): could not open keymaster device in keystore (Operation not permitted)
E/Cryptfs ( 247): Failed to init keymaster
F/libc ( 247): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x3c in tid 316 (vold)
F/libc ( 247): Unable to open connection to debuggerd: Connection refused
W/vold ( 316): type=1400 audit(0.0:190): avc: denied { search } for name="/" dev="mmcblk0p1" ino=1 scontext=u:r:vold:s0 tcontext=u:object_r:firmware_file:s0 tclass=dir
W/vold ( 316): type=1300 audit(0.0:190): arch=40000028 syscall=322 per=800000 success=no exit=-13 a0=ffffff9c a1=b62f84fc a2=20000 a3=0 items=1 ppid=1 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 exe="/system/bin/vold" subj=u:r:vold:s0 key=(null)
W/auditd ( 314): type=1307 audit(0.0:190): cwd="/"
W/auditd ( 314): type=1302 audit(0.0:190): item=0 name="/vendor/firmware/keymaster/keymaster.mdt"
W/auditd ( 314): type=1320 audit(0.0:190):
W/vold ( 316): type=1400 audit(0.0:191): avc: denied { search } for name="/" dev="mmcblk0p1" ino=1 scontext=u:r:vold:s0 tcontext=u:object_r:firmware_file:s0 tclass=dir
W/vold ( 316): type=1300 audit(0.0:191): arch=40000028 syscall=322 per=800000 success=no exit=-13 a0=ffffff9c a1=b62f84fc a2=20000 a3=0 items=1 ppid=1 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 exe="/system/bin/vold" subj=u:r:vold:s0 key=(null)
W/auditd ( 314): type=1307 audit(0.0:191): cwd="/"
W/auditd ( 314): type=1302 audit(0.0:191): item=0 name="/firmware/image/keymaste.mdt"
W/auditd ( 314): type=1320 audit(0.0:191):
W/vold ( 316): type=1701 audit(0.0:192): auid=4294967295 uid=0 gid=0 ses=4294967295 subj=u:r:vold:s0 reason="memory violation" sig=11
I/Vold ( 8391): Vold 2.1 (the revenge) firing up
D/Vold ( 8391): Volume sdcard1 state changing -1 (Initializing) -> 0 (No-Media)
D/Vold ( 8391): Volume usbdisk state changing -1 (Initializing) -> 0 (No-Media)
I/Cryptfs ( 8391): Check if PFE is activated on Boot
E/Cryptfs ( 8391): Bad magic for real block device /dev/block/platform/msm_sdcc.1/by-name/userdata
E/Cryptfs ( 8391): Error getting crypt footer and key
I see, that file /vendor/firmware/keymaster/keymaster.mdt exists:
# ls -la /system/vendor/firmware/keymaster/keymaster.mdt
lrw-r--r-- root root 2015-05-07 07:04 keymaster.mdt -> /firmware/image/keymaste.mdt
# ls -la /firmware/image/keymaste.mdt <
-r--r----- system drmrpc 12892 2014-11-13 05:32 keymaste.mdt
Any ideas how to fix it? Thanks.
crpalmer said:
CyanogenMod
Click to expand...
Click to collapse
f2fs support?
I am waiting for 10 minutes, hanging on the logo
Alexey71 said:
f2fs support?
I am waiting for 10 minutes, hanging on the logo
Click to expand...
Click to collapse
Try again with today's build and let me know.
crpalmer said:
Try again with today's build and let me know.
Click to expand...
Click to collapse
For me :
cm-12.1-20150523-UNOFFICIAL-mondrianlte.zip work fine but
cm-12.1-20150527-UNOFFICIAL-mondrianlte.zip and cm-12.1-20150528-UNOFFICIAL-mondrianlte.zip don't work : hanging on the logo
27-28 build not work (ext4-f2fs)
26 build work ext4
Builds 0527 and 0528 does not boot; instead, causes shutdown of the tab.

Debugging LibStageFright Woes - Disabling MiniJail/SECCOMP

I'm having problems debugging libstagefright.
Code:
#6 0xe6c9c740 in vpx_codec_decode () from target:/system/lib/libstagefright_soft_vpxdec.so
#7 0xe6c98f74 in android::SoftVPX::onQueueFilled(unsigned int) () from target:/system/lib/libstagefright_soft_vpxdec.so
#8 0xe88570f2 in android::SimpleSoftOMXComponent::onMessageReceived(android::sp<android::AMessage> const&) () from target:/system/lib/libstagefright_omx.so
#9 0xe885813e in android::AHandlerReflector<android::SimpleSoftOMXComponent>::onMessageReceived(android::sp<android::AMessage> const&) ()
from target:/system/lib/libstagefright_omx.so
#10 0xe8d24556 in android::AHandler::deliverMessage(android::sp<android::AMessage> const&) () from target:/system/lib/libstagefright_foundation.so
#11 0xe8d26a6a in android::AMessage::deliver() () from target:/system/lib/libstagefright_foundation.so
#12 0xe8d251d2 in android::ALooper::loop() () from target:/system/lib/libstagefright_foundation.so
#13 0xe83592b4 in android::Thread::_threadLoop(void*) () from target:/system/lib/libutils.so
#14 0xe8694812 in __pthread_start(void*) () from target:/system/lib/libc.so
#15 0xe866736a in __start_thread () from target:/system/lib/libc.so
#16 0x00000000 in ?? () from target:/system/vendor/bin/hw/[email protected]
I can debug code up until I get to android::SoftVPX:: onQueueFilled, once the call to vpx_codec_decode() is made, and I step, I get this error:
Thread 12 received signal SIGSYS, Bad system call.
It would appear to be due to this syscall made inside of __pthread_cond_timedwait():
Code:
Thread 13 (Thread 2656.12953):
#0 0xe8664e50 in syscall () from target:/system/lib/libc.so
#1 0xe86941a6 in __pthread_cond_timedwait(pthread_cond_internal_t*, pthread_mutex_t*, bool, timespec const*) () from target:/system/lib/libc.so
#2 0xe884cc58 in android::eek:MXNodeInstance::CallbackDispatcher::loop() () from target:/system/lib/libstagefright_omx.so
#3 0xe884cd04 in android::eek:MXNodeInstance::CallbackDispatcherThread::threadLoop() () from target:/system/lib/libstagefright_omx.so
#4 0xe8359236 in android::Thread::_threadLoop(void*) () from target:/system/lib/libutils.so
#5 0xe8694812 in __pthread_start(void*) () from target:/system/lib/libc.so
#6 0xe866736a in __start_thread () from target:/system/lib/libc.so
#7 0x00000000 in ?? () from target:/system/vendor/bin/hw/[email protected]
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
Code:
(gdb) disas __pthread_cond_timedwait
...........
0xe86941a0 <+100>: movs r0, #240 ; 0xf0
0xe86941a2 <+102>: blx 0xe8661478 <[email protected]>
Syscall #240 appears to be the futex syscall (correct me if I'm wrong)...I added that to the media.codec seccomp profile file on the file system, along with a load of other syscalls, but it still doesn't work and I'm stuck, I don't know what to do as I need to be able to step through the code and it just errors out.
Any ideas on how to disable minijail/seccomp or add the correct syscall number so it doesn't bale once it enters vpx_codec_decode() from android::SoftVPX:: onQueueFilled?
Sorry to bump this, but here's some more output:
Code:
Thread 11 hit Breakpoint 1, 0xf1298e3e in android::SoftVPX:: onQueueFilled(unsigned int) () from target:/system/lib/libstagefright_soft_vpxdec.so
(gdb) c
Continuing.
Thread 11 hit Breakpoint 2, 0xf1298f6c in android::SoftVPX:: onQueueFilled(unsigned int) () from target:/system/lib/libstagefright_soft_vpxdec.so
(gdb) si
0xf1298f70 in android::SoftVPX::onQueueFilled(unsigned int) () from target:/system/lib/libstagefright_soft_vpxdec.so
(gdb) disas
0xf1298f6c <+320>: add.w r1, r12, lr
=> 0xf1298f70 <+324>: blx 0xf1297614 <[email protected]>
0xf1298f74 <+328>: mov r3, r0
0xf1298f76 <+330>: cmp r3, #0
0xf1298f78 <+332>: bne.n 0xf1298ffc <_ZN7android7SoftVPX13onQueueFilledEj+464>
0xf1298f7a <+334>: strb.w r11, [r10, #4]
(gdb) si
Thread 11 received signal SIGSYS, Bad system call.
0xf1297618 in [email protected] () from target:/system/lib/libstagefright_soft_vpxdec.so
As soon as I step into [email protected] I get that bad syscall error. I just don't really understand what the hell is going on.
int80 said:
Sorry to bump this, but here's some more output:
Code:
Thread 11 hit Breakpoint 1, 0xf1298e3e in android::SoftVPX:: onQueueFilled(unsigned int) () from target:/system/lib/libstagefright_soft_vpxdec.so
(gdb) c
Continuing.
Thread 11 hit Breakpoint 2, 0xf1298f6c in android::SoftVPX:: onQueueFilled(unsigned int) () from target:/system/lib/libstagefright_soft_vpxdec.so
(gdb) si
0xf1298f70 in android::SoftVPX::onQueueFilled(unsigned int) () from target:/system/lib/libstagefright_soft_vpxdec.so
(gdb) disas
0xf1298f6c <+320>: add.w r1, r12, lr
=> 0xf1298f70 <+324>: blx 0xf1297614 <[email protected]>
0xf1298f74 <+328>: mov r3, r0
0xf1298f76 <+330>: cmp r3, #0
0xf1298f78 <+332>: bne.n 0xf1298ffc <_ZN7android7SoftVPX13onQueueFilledEj+464>
0xf1298f7a <+334>: strb.w r11, [r10, #4]
(gdb) si
Thread 11 received signal SIGSYS, Bad system call.
0xf1297618 in [email protected] () from target:/system/lib/libstagefright_soft_vpxdec.so
As soon as I step into [email protected] I get that bad syscall error. I just don't really understand what the hell is going on.
Click to expand...
Click to collapse
gdb set force-mode thumb?
gellmar said:
gdb set force-mode thumb?
Click to expand...
Click to collapse
Thanks for the reply, but unfortunately not. I think it's something to do with threading and minijail/SECCOMP.
Code:
(gdb) set arm force-mode thumb
(gdb) si
[New Thread 2652.11026]
Thread 9 received signal SIGSYS, Bad system call.
0xe8a16618 in [email protected] () from target:/system/lib/libstagefright_soft_vpxdec.so

Getting the Thermal Camera Working on the Blackview BV9800 Pro under a Custom ROM

The Blackview BV9800 Pro is a relatively rare device, and has no support from LineageOS or any other popular ROM project I can find. This is kind of a shame, because it's a pretty cool device - in particular, it has an integrated thermal camera, and is also just a nice ruggedized phone at a surprisingly low price. The bootloader is unlockable out of the box without any need for an unlock code or other nonsense from the vendor, which is also a big bonus.
Being a Project Treble-compatible device, it's possible to run unofficial GSI builds of LineageOS on it, such as these, which are replacement images to flash over /system. These work well with the majority of the BV9800 Pro's functions (wireless, visible-light cameras, sensors, etc.), but getting the thermal camera to work requires a little bit more work. I have done this successfully, so I wanted to share what I did in case anyone else finds themselves in the same situation.
I have only tested these procedures on a BV9800 Pro (EEA version), running LineageOS 16 (Android 9) from the link above. Other versions of Android may work, but I do not know whether they do or not, and decided to stay with Android 9, since this is what the vendor ships on the device. Your results may vary if you decide to try a newer version.
The factory MyFLIR app for the device can be found at this location in the stock ROM:
Code:
/system/app/myflir-bv2.3.6-release-signed/myflir-bv2.3.6-release-signed.apk
However, if you try to just install it like a normal app package under LineageOS, it crashes on startup without providing any useful information. The system logs reveal that it crashes because it's trying to communicate with a system service that manages the thermal camera, but this service isn't installed. Fortunately, you can install it by just copying a few files from the factory ROM over to the LineageOS system. The files in question are located at these paths in the factory ROM:
Code:
/system/bin/leptonServer
/system/etc/init/LeptonCameraServer.rc
/system/lib64/libleptoncamera.so
If you copy these files to the same paths in the LineageOS /system tree, then the Lepton camera server backend, which is required for the MyFLIR app to function, will be installed and configured to start at boot.
SELinux seems to prevent the app from connecting to the Lepton server on my device, so I had to disable it by running
Code:
setenforce 0
in a root shell on the device. I didn't install it as a system app, though, which could be part of the problem. I don't know much about how SELinux actually works, but I feel comfortable enough disabling it. If you don't want to disable it, you can probably find information about how to make it allow the FLIR app to work, but I'm afraid I can't be of much help there.
You can find a copy of the stock BV9800 Pro ROM here on the Blackview forum.
If you want to root the stock ROM to allow you to inspect /system, this thread explains how. If you prefer, you can instead extract the ROM zip archive on a computer, decompress the included system.img with simg2img, and mount it to inspect the contents directly, which is what I did. Modifying /system on a running device can be difficult these days, so it will probably work best to mount up the GSI image the same way and copy the files into it, rather than try to edit it in-place on a running device.
I hope this information helps. The thermal camera is one of the most important (and expensive) features of the BV9800 Pro, and getting it working was pretty much the deciding factor for me as to whether I would keep the (kind of bad) factory ROM, or get to enjoy all the perks of LineageOS. I'm not really knowledgeable enough to write a complete and trustworthy guide to installing LineageOS, though, so if you're just getting started, you'll want to find a more detailed tutorial about how installing custom ROMs (especially GSI/Treble builds) works.
That's a cool rugged phone. Stock it's running on Pie... personally I leave it be and optimize it as best I could to get maximum battery life.
I was looking at these... FLIR, hell yes.
I was following your guide, I'm using my Blackview 9800pro without GApps (but with MicroG 0.2.18.204714) on LineageOS 17.1-20210321. When opening the MyFlir camera or gallery app, it asks me for all the relevant permissions on the first start and then promptly crashes every time I open it. I tried both as a system and a regular app, with and without selinux. In the error below, it complains about not finding the right function in libvndksupport.so. This library is much smaller in LineageOS than it is shipped in the Stock ROM from Blackview. Replacing the LineageOS shared object file with the one from Blackview causes my phone not to boot. Is there something I am missing that causes my instance of the app (I tried both 2.3.6 and 2.3.8) to crash?
Code:
04-28 00:27:34.047 1383 5788 I ActivityTaskManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.flir.tiger/com.flir.monarch.ui.MainActivity bnds=[27,996][232,1321]} from uid 10121
04-28 00:27:34.057 783 804 I [email protected]: powerHintAsync hint:8, data:1
04-28 00:27:34.061 783 803 I libPowerHal: 8: legacy set freq: 1989000 -1 2106000 -1
04-28 00:27:34.076 1383 1420 E system_server: Invalid ID 0x00000000.
04-28 00:27:34.077 1383 1419 W ActivityManager: Stopping service due to app idle: u0a216 -10s135ms com.flir.tiger/com.flir.monarch.media.MediaScanner
04-28 00:27:34.084 1008 1008 D Zygote : Forked child process 7648
04-28 00:27:34.087 1383 1426 I ActivityManager: Start proc 7648:com.flir.tiger/u0a216 for pre-top-activity {com.flir.tiger/com.flir.monarch.ui.MainActivity}
04-28 00:27:34.147 1579 1579 D ImageWallpaper: wallpaper visibility changes to: false
04-28 00:27:34.161 762 864 I hwcomposer: [DEV] 1024 0 0 0
04-28 00:27:34.162 762 864 I hwcomposer: [DEV] 0 741 0 0
04-28 00:27:34.162 762 864 I hwcomposer: [DEV] 0 0 470 0
04-28 00:27:34.162 762 864 I hwcomposer: [DEV] 0 0 0 1024
04-28 00:27:34.173 7648 7648 D FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization.
04-28 00:27:34.174 7648 7648 D FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization.
04-28 00:27:34.174 7648 7648 I FirebaseInitProvider: FirebaseApp initialization successful
04-28 00:27:34.177 762 864 I hwcomposer: [DEV] [DEV] (Send identity matrix)
04-28 00:27:34.187 7648 7673 I FA : App measurement is starting up, version: 15300
04-28 00:27:34.187 7648 7673 I FA : To enable debug logging run: adb shell setprop log.tag.FA VERBOSE
04-28 00:27:34.187 7648 7673 I FA : To enable faster debug mode event logging run:
04-28 00:27:34.187 7648 7673 I FA : adb shell setprop debug.firebase.analytics.app com.flir.tiger
04-28 00:27:34.196 762 864 I hwcomposer: [DEV] 1024 0 0 0
04-28 00:27:34.196 762 864 I hwcomposer: [DEV] 0 741 0 0
04-28 00:27:34.196 762 864 I hwcomposer: [DEV] 0 0 470 0
04-28 00:27:34.196 762 864 I hwcomposer: [DEV] 0 0 0 1024
04-28 00:27:34.200 7648 7648 I CrashlyticsCore: Initializing Crashlytics 2.6.8.32
04-28 00:27:34.207 7648 7686 W ContextImpl: Failed to ensure /data/user/0/com.google.android.gms/shared_prefs: mkdir failed: EACCES (Permission denied)
04-28 00:27:34.208 7648 7648 I CrashlyticsInitProvider: CrashlyticsInitProvider initialization successful
04-28 00:27:34.212 762 864 I hwcomposer: [DEV] [DEV] (Send identity matrix)
04-28 00:27:34.220 2428 2428 D GmsMeasureBrokerSvc: onBind: Intent { act=com.google.android.gms.measurement.START pkg=com.google.android.gms }
04-28 00:27:34.222 3179 3179 D GmsGcmRegister: onBind: Intent { act=com.google.android.c2dm.intent.REGISTER pkg=com.google.android.gms }
04-28 00:27:34.223 1024 1024 I netd : firewallSetUidRule(2, 10161, 1) <2.63ms>
04-28 00:27:34.227 1024 1024 I netd : firewallSetUidRule(2, 10160, 1) <1.74ms>
04-28 00:27:34.230 1024 1024 I netd : firewallSetUidRule(2, 10157, 1) <2.14ms>
04-28 00:27:34.233 1024 1024 I netd : firewallSetUidRule(2, 10151, 1) <1.85ms>
04-28 00:27:34.236 7648 7648 I ashmem : memfd: device VNDK version (28) is < Q so using ashmem.
04-28 00:27:34.277 7648 7648 D AndroidRuntime: Shutting down VM
04-28 00:27:34.277 7648 7648 E AndroidRuntime: FATAL EXCEPTION: main
04-28 00:27:34.277 7648 7648 E AndroidRuntime: Process: com.flir.tiger, PID: 7648
04-28 00:27:34.277 7648 7648 E AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "android_get_exported_namespace" referenced by "/data/app/com.flir.tiger-EcVVz9vk2XWvVymOtKJxOQ==/lib/arm64/libvndksupport.so"...
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at java.lang.Runtime.loadLibrary0(Runtime.java:1071)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at java.lang.Runtime.loadLibrary0(Runtime.java:1007)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at java.lang.System.loadLibrary(System.java:1667)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at com.flir.flirone.sdk.FlirOne.<clinit>(FlirOne.java:59)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at com.flir.flirone.sdk.FlirOne.registerDeviceCallback(FlirOne.java:341)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at com.flir.monarch.app.ForegroundApplication.onActivityStarted(ForegroundApplication.java:88)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at android.app.Application.dispatchActivityStarted(Application.java:406)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at android.app.Activity.dispatchActivityStarted(Activity.java:1238)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at android.app.Activity.onStart(Activity.java:1723)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:614)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at com.flir.monarch.ui.MainActivity.onStart(MainActivity.java:79)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1432)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at android.app.Activity.performStart(Activity.java:7847)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3294)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:107)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at android.os.Looper.loop(Looper.java:214)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7356)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:491)
04-28 00:27:34.277 7648 7648 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940)
04-28 00:27:35.334 1383 5501 D AlarmManagerService: Kernel timezone updated to -120 minutes west of GMT
04-28 00:27:35.348 1383 6143 D AlarmManagerService: Kernel timezone updated to -120 minutes west of GMT
04-28 00:27:35.709 1090 1371 I 1090 1371 [sunwave-hal] : (711) 'healthMonitoringThread' enter.
04-28 00:27:35.710 1090 1371 I 1090 1371 [sunwave-client] : (90) ---8<---- TA LOG BEGINS ---------
04-28 00:27:35.710 1090 1371 I 1090 1371 [sunwave-ta-core] : (2869) 'sf_get_device_state' state:0008
04-28 00:27:35.710 1090 1371 I 1090 1371 [sunwave-client] : (107) --------- TA LOG FINISH ---->8---
Thanks for the info for the flir Camera,
It works fine with lineage OS 16 !
I want to add the info I got while doing it:
It does not work with all version of Andy Custom Lineage OS: I could not make it works with this one: lineage-16.0-20191017-UNOFFICIAL-treble_arm64_bvN.img.xz the lepton server had a seg fault.
I try with a lineage OS 18 , the lepton server worked but the application failed, I will look into it one day... maybe
I root my phone with magisk
I used a script to bypass SElinux and start the server when i want ( because i don't know if it wise to always have SElinux in permissive mode)
tylab said:
Thanks for the info for the flir Camera,
It works fine with lineage OS 16 !
I want to add the info I got while doing it:
It does not work with all version of Andy Custom Lineage OS: I could not make it works with this one: lineage-16.0-20191017-UNOFFICIAL-treble_arm64_bvN.img.xz the lepton server had a seg fault.
I try with a lineage OS 18 , the lepton server worked but the application failed, I will look into it one day... maybe
I root my phone with magisk
I used a script to bypass SElinux and start the server when i want ( because i don't know if it wise to always have SElinux in permissive mode)
Click to expand...
Click to collapse
thank u for the additional info!,so which version of lineage os 16 worked for u? iam on lineage-16.0-20191017-UNOFFICIAL-treble_arm64_bvN.img.xz and tried the author's steps but didn't work for me, also it'd be nice if u share with us the script u use to bybass selinux,thanks.
I want to report back some of my own success in regards to this thread. I have the camera working, but it's not a perfect solution and was wondering if you guys could assist me in checking what I could have possibly missed. I'm running it on the most current Lineage OS 18.1; I've compiled a version using the Treble ROM lineage-18.1-20210512-UNOFFICIAL-treble_arm64_bvS with Magisk as root (I also added MindTheGapps into it after some workarounds with the mounts, and had to register my device as an "unsupported device").
I followed the OP's guide to the T, and still couldn't get the app to even open. The logs revealed it was trying to call leptonServer, nulling out after five tries, and then crashing. Narrowed this down to being an issue with the /bin/leptonServer file itself being set as -rwx-r--r--, and changing it to -rwxr-x-r-x got the app to boot up. The only problem is, for the camera to actually start, I have to open a terminal session and start leptonServer from there, and I assume this has something to do with the SELinux policies in place. I've fought half the battle and got a version of sepolicy-inject set up to run (using the following policy: allow untrusted_app_27 default_android_service:service_manager { find }; (sepolicy-inject -s untrusted_app_27 -t default_android_service -c service_manager -p find (if this doesn't work for you, try doing logcat ServiceManager:V SELinux:V *:S to find the relevant SELinux policies that you need to apply, and follow the formulas))), but I figure this is still erroring out somewhere, since, after a restart, the only way I can get it working again is to go and disable SELinux using setenforce to 0 and then starting the server again using some sort of terminal. I also installed the MyFlir app as a system app.
I believe that part of the issue might be that I haven't properly added the SELinux policy, but I'm not entirely positive how I would go about testing this (I've more or less just gotten into the ROM building scene last week, but feel I have somewhat of an edge being a software developer for a living). I think if I boot into recovery I can grab the sepolicy file, but I'm not sure what else to do with it at this point.
The error I get when it's not running, aside from the PID is pretty consistent too:
05-31 19:19:06.814 372 372 E SELinux : avc: denied { find } for pid=20308 uid=10195 name=LeptonCameraService scontext=u:r:untrusted_app_27:s0:c195,c256,c512,c768 tcontext=ubject_r:default_android_service:s0 tclass=service_manager permissive=0
Hopefully, this helps someone to find the right answers before I can; I know I'll keep tinkering with it until I find the solution (I'm also attempting to overcome the CTSProfile/Basic failure in Magisk, which I plan to make a guide if I can find an answer).
I get the same error as @&00&V5yt$r2$E!n1IDUiJ9bF on Lineage18.1 - treble_arm64_bvS-userdebug
04-28 00:27:34.277 7648 7648 E AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "android_get_exported_namespace" referenced by "/data/app/com.flir.tiger-EcVVz9vk2XWvVymOtKJxOQ==/lib/arm64/libvndksupport.so"...
My leptonServer is working correctly and service runs from the start so it I feel this is related to the /system/app/myflir-bv2.3.6-release-signed.
Are you guys using a different version of the app?
Flir said:
I get the same error as @&00&V5yt$r2$E!n1IDUiJ9bF on Lineage18.1 - treble_arm64_bvS-userdebug
04-28 00:27:34.277 7648 7648 E AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "android_get_exported_namespace" referenced by "/data/app/com.flir.tiger-EcVVz9vk2XWvVymOtKJxOQ==/lib/arm64/libvndksupport.so"...
My leptonServer is working correctly and service runs from the start so it I feel this is related to the /system/app/myflir-bv2.3.6-release-signed.
Are you guys using a different version of the app?
Click to expand...
Click to collapse
I also used myflir-bv2.3.6-release-signed, pulled straight from the currently available 9.0 ROM.
For that specifically, if you are looking at the most recent ROM build available from Blackview, in the directory /system/system/app/myflir-bv2.3.6-release-signed, there is both the APK and a lib folder. I'd copy the lib folder over to your phone in that same directory; I think you're missing the dependencies from there.
If you already have those libaries in there, try the read/write settings on the folder too.
Hi bv9800 pro customers! Anyone tryed the magisk module in the thread https://forum.xda-developers.com/t/blackview-bv9900pro-magisk-modules.4331187/
to get flir worked on linage?
ilich79 said:
Hi bv9800 pro customers! Anyone tryed the magisk module in the thread https://forum.xda-developers.com/t/blackview-bv9900pro-magisk-modules.4331187/
to get flir worked on linage?
Click to expand...
Click to collapse
Hi ilich79
I tryed the magisk module for BV9900pro.
I have installed it manualy to improve my understanding.
First, selinux block as always :
E/SELinux ( 338): avc: denied { find } for pid=18411 uid=10175 name=LeptonCameraService scontext=u:r:priv_app:s0:c512,c768 tcontext=u:object_r:default_android_service:s0 tclass=service_manager permissive=0
After enforce selinux and relanch the leptonServer.
Application launch completly but the camera send only the first image and block after that
So, i replace the leptonServer by the old one and retry.
Finally it works fully.
I someone know how to correctly set the selinux policy for this app ? I will be graceful
May be this can help?
[MODULE] SELinux Mode Inverter (Advanced SELinux Mode Changer)
It Is Now A Part Of The Main Module Of MultiFunctions & Its Thread https://forum.xda-developers.com/apps/magisk/module-multifunctions-bootloop-t3933386. Introduction: Simple Module To Invert The Default Android SELinux Mode During Startup ([From...
forum.xda-developers.com
Flir said:
I get the same error as @&00&V5yt$r2$E!n1IDUiJ9bF on Lineage18.1 - treble_arm64_bvS-userdebug
04-28 00:27:34.277 7648 7648 E AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "android_get_exported_namespace" referenced by "/data/app/com.flir.tiger-EcVVz9vk2XWvVymOtKJxOQ==/lib/arm64/libvndksupport.so"...
My leptonServer is working correctly and service runs from the start so it I feel this is related to the /system/app/myflir-bv2.3.6-release-signed.
Are you guys using a different version of the app?
Click to expand...
Click to collapse
I get the same error, @QuentinX5 : Did you use a different version? Would be nice to have a Lineage upgrade.
Regarding the problem with the MyFlir camera app: I had the same problem (unable to read camera files). I looked everywhere. I mean, everywhere trying to find an answer. There's also a video on youtube with comments suggesting flashing the APD.BIN file (I did not try). I even translated different language websites. Finally, I contacted the BV customer support and their reply was the classic (clear the app cache), which doesn't work at all and not just for me. I tried to get the APK file from the image and installing it which didn't work either.
Here's the simple magic solution that kept me trying for a week, and no one wrote it anywhere:
There's a folder named (com.flir.tiger) inside the Android folder in the phone storage with the contents:
com.flir.tiger\files\iron
com.flir.tiger\files\CameraFiles\system\calib.rsc
com.flir.tiger\files\CameraFiles\system\maps\ds_we_ap_fi_le_LCFMap.fff
Just copy the folder from another phone and paste it on your phone, and that's it!
thelaseman said:
Regarding the problem with the MyFlir camera app: I had the same problem (unable to read camera files). I looked everywhere. I mean, everywhere trying to find an answer. There's also a video on youtube with comments suggesting flashing the APD.BIN file (I did not try). I even translated different language websites. Finally, I contacted the BV customer support and their reply was the classic (clear the app cache), which doesn't work at all and not just for me. I tried to get the APK file from the image and installing it which didn't work either.
Here's the simple magic solution that kept me trying for a week, and no one wrote it anywhere:
There's a folder named (com.flir.tiger) inside the Android folder in the phone storage with the contents:
com.flir.tiger\files\iron
com.flir.tiger\files\CameraFiles\system\calib.rsc
com.flir.tiger\files\CameraFiles\system\maps\ds_we_ap_fi_le_LCFMap.fff
Just copy the folder from another phone and paste it on your phone, and that's it!
Click to expand...
Click to collapse
Hi do you think your solution works for all lineageos releases? If I change the stock rom I was thinking on putting release 19.1
thelaseman said:
Regarding the problem with the MyFlir camera app: I had the same problem (unable to read camera files). I looked everywhere. I mean, everywhere trying to find an answer. There's also a video on youtube with comments suggesting flashing the APD.BIN file (I did not try). I even translated different language websites. Finally, I contacted the BV customer support and their reply was the classic (clear the app cache), which doesn't work at all and not just for me. I tried to get the APK file from the image and installing it which didn't work either.
Here's the simple magic solution that kept me trying for a week, and no one wrote it anywhere:
There's a folder named (com.flir.tiger) inside the Android folder in the phone storage with the contents:
com.flir.tiger\files\iron
com.flir.tiger\files\CameraFiles\system\calib.rsc
com.flir.tiger\files\CameraFiles\system\maps\ds_we_ap_fi_le_LCFMap.fff
Just copy the folder from another phone and paste it on your phone, and that's it!
Click to expand...
Click to collapse
Hi, I'm trying to get the flir camera working on lineage 19.1 can @thelaseman gime me the file you write about? beacause I don't have another phone to copy from.
Thanks
Max
max74926 said:
Hi, I'm trying to get the flir camera working on lineage 19.1 can @thelaseman gime me the file you write about? beacause I don't have another phone to copy from.
Thanks
Max
Click to expand...
Click to collapse
If you are still looking for it I might be able to extract these files for you.
@thelaseman @QuentinX5
Is anyone still using a BV9800 Pro with a Lineage ROM? What version are you on, what specific build did you install, did you encounter any specific issues, were they fixable and how?
Not asking for a full guide (wouldn't mind of course ) but before I start messing with what is currently my daily driver I'd like to know if anyone else was successful with a certain version. Particularly interested if any newer versions have also ended up working with the FLIR-camera.
Hi @dj__jg,
I use the attached files for lineage 19.1 GSI (https://forum.xda-developers.com/t/gsi-12-lineageos-19-x-gsi-a64b-64b.4358041/).
My camera calib is wrong (the thermal camera is upside down.) so I don't push the calib file here, if you have a good one, i'm interested.
I don't have fixed the selinux error for the moment, so just disable it went you launch the '/system/bin/leptonServer'
I missnamed the attached file, it's for BV9800 pro
I suddenly feel very stupid, I just realised I've gotten confused about my phones model number
I actually have a Blackview ninethousandninehundred pro, not 9800. I either had a brainfart or made a typo as I was searching if anyone had managed to use a recent Lineage ROM on it and accidentally ended up on this thread and didn't notice.
Luckily I didn't upload my calib file etc here, or someone could have gotten very confused. I think I will try to run a GSI build at some point, but when I have some more spare time/don't need this phone every day. The information about the com.flir.tiger folder is still very handy because it is the same on my model, I hope the same tactics will work to get the FLIR working in a GSI build.
(Wrote out the model number in text so other people googling the model number won't end up confused on this thread without even making a typo)
It's my bad i missnamed my file, it's 9800 pro not 9800 (who don't have thermal camera)

[CLOSED] [ROM - DEV] WearOS 2 for Gear S3

DISCLAIMER
Code:
Your warranty is now void (if you still have one).
Read the steps carefully!
I am not responsible for data loss, bricked devices or devices which will need USB soldering!
If you do not know what you're doing, stop here!
[COLOR=rgb(243, 121, 52)][B]Latest Release:[/B][/COLOR] 22/06/2022 22:58
[B]BATTERY PERCENTAGE FIX FOR 22/06/2022 RELEASE (CURRENT BUILD):[/B]
With latest release (22/06/2022), some people's battery percentage is stucked at the same level and is not updating until reboot. Here is the fix for that. No need to wipe data or do something special. This file contains kernel update only. Just flash directly with netOdin/Odin.
[B][COLOR=rgb(184, 49, 47)]GEAR S3 FRONTIER/CLASSIC ONLY!![/COLOR][/B] Installed and tested on a few SM-R760 Frontier and get succeed. SM-R770 Classic is also confirmed.
[B]BUT [COLOR=rgb(184, 49, 47)]Korean and LTE versions are NOT TESTED. THEY USE DIFFERENT KERNEL CONFIGURATION. IT WILL PROBABLY CAUSE HARD BRICK!! USE YOUR OWN RISK![/COLOR]
[COLOR=rgb(243, 121, 52)]BEFORE INSTALLATION[/COLOR][/B]
[LIST]
[*][COLOR=rgb(184, 49, 47)][B][COLOR=rgb(184, 49, 47)]DISABLE REACTIVATION LOCK[/COLOR][/B][/COLOR]
[*][COLOR=rgb(184, 49, 47)][B]Charge your watch to 100%[/B][/COLOR]
[*]Keep your device charging while installing firmware
[*]Have a stable computer with Wifi
[*]Take note your current Tizen firmware version for going back to Tizen
[*]Backup all your data
[*]Keep your watch close to your wireless adapter
[/LIST]
[B][COLOR=rgb(243, 121, 52)]INSTALLATION [/COLOR][/B][URL='https://mega.nz/file/gFRVxb6K#A0c0dnw2TspeLzo-m9jWnuieG1vTPfh2Mq5vbQzz0a0'][B](View Detailed Document Here)[/B][/URL]
[LIST]
[*]Flashing process is the same as flashing combination or Tizen firmware
[*][COLOR=rgb(184, 49, 47)][B]Wireless flashing takes 15~45 minutes.[/B][/COLOR]
[/LIST]
[LIST=1]
[*]Extract downloaded zip file to get tar file
[*]Enter wireless download mode
[*]Switch to AP mode
[*]Connect to watch from your wireless adapter
[*]Select tar file for AP section
[*]Flash
[/LIST]
[COLOR=rgb(184, 49, 47)][B]DO NOT interrupt flashing process!
DO NOT shutdown your computer or allow your computer to sleep!
DO NOT enter recovery before WearOS boots completely![/B][/COLOR]
[B][COLOR=rgb(65, 168, 95)]WHAT IS WORKING[/COLOR][/B]
[LIST]
[*]WearOS functions (Notifications, Play Store, Google Account, Assistant etc)
[*]Always on display
[*]Wifi
[*]Bluetooth
[*]Vibrator
[*]Bezel (works like crown)
[*]Tap to wake
[*]Palm to suspend
[*]Mic
[*]HRM (Hear Rate Monitor - Sensor)
[*]Sensors (Accelometer, Gyroscope, Light)
[*]Audio
[*]TWRP
[/LIST]
[B][COLOR=rgb(184, 49, 47)]KNOWN BUGS[/COLOR][/B]
[LIST]
[*]Poor Battery Life compared to Tizen (Old device, new operation system)
[*]Audio (Low sound level, bad quality)
[*]HFP calls on watch (Bad noises, distorted sound)
[*]Some menus on Settings belongs to Ticwatch (just ignore them)
[*]Offline charging boots device
[*]GPS is not working
[*]NFC is not working
[*]Step Counter is not working
[*]Some green text above SAMSUNG logo while booting
[*]Same green text on Wireless Download Mode. It prevents debug messages (Switching to AP mode etc) [B]but functionality is not effected.[/B]
[*]If device goes to TWRP, just click Reboot -> System.
[*]Selinux is in Permissive mode
[*]ADB Root is active
[*]KNOX will be tripped!!
[/LIST]
[B][COLOR=rgb(243, 121, 52)]RESETTING WATCH OR CONNECTING NEW DEVICE[/COLOR]
[COLOR=rgb(184, 49, 47)]NEVER use WearOS settings menu to reset watch!!! It is not tested and may be brick your device.[/COLOR][/B]
Option 1: Flash WearOS again
Option 2: Boot to TWRP and Wipe Data [COLOR=rgb(184, 49, 47)][B](IMPORTANT! Be sure “Use rm -rf instead of formatting” is selected on TWRP settings. (TWRP Settings -> General Settings)[/B][/COLOR]
[COLOR=rgb(243, 121, 52)][B]GOING BACK TO TIZEN[/B][/COLOR]
[LIST=1]
[*]Find and download your Tizen firmware from internet. (Remember, you took note your firmware version before installation)
[*]If you can not find your firmware you can try [URL='https://mega.nz/file/JYoQ2AgY#rqw2jZm_eJHjmGkKz4lzVProxyE1DpZA20jYYce-2ow']THIS TIZEN FIRMWARE[/URL]. [COLOR=rgb(184, 49, 47)][B](It may has different CSC. Be careful!)[/B][/COLOR]
[*]Flash
[/LIST]
[B][COLOR=rgb(243, 121, 52)]TELEGRAM GROUP
SOURCES[/COLOR][/B]
[URL='https://github.com/parasetam0l']Github (parasetam0l)[/URL] for kernel, device tree and other SMDK - Samsung related files.
[B][COLOR=rgb(243, 121, 52)]THANKS TO[/COLOR][/B]
[URL='https://github.com/TO21Consortium/SGSWPlatform']TO21Consortium[/URL] for beautiful SMDK source
[URL='https://github.com/YariKartoshe4ka/redline_kernel_samsung_j4lte']YariKartoshe4k[/URL] for Exynos 7570 kernel source
[URL='https://github.com/Biktorgj/android_device_samsung_pontesolo/tree/master/libsensors']Biktorgj[/URL] for Gear S and SSP sensor sources
[URL='https://wear.revtechs.me/en/download']OneOS [/URL]for TicWatch WearOS2 system dump
Many other developers I came across with Google search.
[USER=12140719]@trapecija[/USER] For SM-R770 Classic feedback
DEVELOPER NOTES :
Soldering USB and Odin USB mode: Done
Install Combination firmware (COMBINATION-FT30_R760XXU2CQL1): Done
Root Access (Combination firmware is pre rooted): Done
Build Tizen Kernel: Done
Upstream Tizen Kernel to latest (from 3.18.14 to 3.18.140): Done
Enable Android configs and disable some Samsung stuff on kernel: Done
Kernel cmdline patch for booting from mmc: Done
TWRP device tree: Done
Build TWRP: Done
MM (memory management) and FB (framebuffer) patch for IOMMU error: Done
PMIC patch for enabling USB: Done
Created fstab file: Done
Update Android Binder kernel driver: Done
Android Boots with ADB support: Done
USB Charging: Done
Mali T720 GPU Driver Update: Done
Decon Framebuffer: Done
S6E36W2X01 LCD Panel: Done
Compile AOSP9: Done
WearOS2 Port: Done
Broadcom 43102 Wifi and Bluetooth SDIO: Done
Palm to suspend: Done
Audio: Partially Fixed (Low sound level and quality)
HFP (Handsfree Protocol): Partially Fixed (Mic works, speaker distorted sound)
Brightness: Done
Vibration: Done
LSM6DSL Accelometer and Gyroscope Sensor: Done
TSL2584 Light Sensor: Done
PPS960 Heart Rate Sensor: Done
SSP Sensor Hub: Partially
Tap to Wake: Done
Always on display: Done
Bezel: Done
THINGS TO DO:
GPS
NFC
Offline charging
Step Counter
Power Optimizations (power.exynos5)
Audio and HFP (mixer_paths.xml)
SSP Sensor Hub
...
...
...
WearOS 3
Code:
ls -l /dev/disk/by-partlabel
lrwxrwxrwx 1 root root 15 Jan 20 23:11 boot -> ../../mmcblk0p8
lrwxrwxrwx 1 root root 15 Jan 20 23:11 cm -> ../../mmcblk0p7
lrwxrwxrwx 1 root root 15 Jan 20 23:11 cpnvcore -> ../../mmcblk0p3
lrwxrwxrwx 1 root root 15 Jan 20 23:11 csa -> ../../mmcblk0p2
lrwxrwxrwx 1 root root 16 Jan 20 23:11 csc -> ../../mmcblk0p11
lrwxrwxrwx 1 root root 16 Jan 20 23:11 module -> ../../mmcblk0p10
lrwxrwxrwx 1 root root 15 Jan 20 23:12 param -> ../../mmcblk0p6
lrwxrwxrwx 1 root root 15 Jan 20 23:11 ramdisk1 -> ../../mmcblk0p5
lrwxrwxrwx 1 root root 15 Jan 20 23:11 ramdisk2 -> ../../mmcblk0p4
lrwxrwxrwx 1 root root 15 Jan 20 23:11 recovery -> ../../mmcblk0p9
lrwxrwxrwx 1 root root 16 Jan 20 23:11 rootfs -> ../../mmcblk0p14
lrwxrwxrwx 1 root root 16 Jan 20 23:11 steady -> ../../mmcblk0p15
lrwxrwxrwx 1 root root 16 Jan 20 23:11 system-data -> ../../mmcblk0p12
lrwxrwxrwx 1 root root 15 Jan 20 23:11 tup -> ../../mmcblk0p1
lrwxrwxrwx 1 root root 16 Jan 20 23:11 user -> ../../mmcblk0p13
Code:
(parted) print
print
Model: MMC FJX7AA (sd/mmc)
Disk /dev/block/mmcblk0: 3909MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 4194kB 37.7MB 33.6MB tup
2 37.7MB 46.1MB 8389kB ext4 csa
3 46.1MB 48.2MB 2097kB cpnvcore
4 48.2MB 69.2MB 21.0MB ext2 ramdisk2
5 69.2MB 77.6MB 8389kB ext2 ramdisk1
6 77.6MB 86.0MB 8389kB param
7 86.0MB 89.1MB 3146kB cm
8 89.1MB 106MB 16.8MB boot
9 106MB 123MB 16.8MB recovery
10 123MB 139MB 16.8MB ext4 module
11 139MB 339MB 199MB ext4 csc
12 339MB 504MB 166MB ext4 system-data
13 504MB 2538MB 2033MB ext4 user
14 2538MB 3907MB 1369MB ext4 rootfs
15 3907MB 3907MB 262kB steady
I will use
system-data -> /recovery
csc -> /cache
user -> / (system as root)
rootfs -> /data
UPDATE:
I am using
Code:
SM-R870_samsung-freshbl-freshbl-11-RWD1.210503.001-R870XXU1BUH9-user-release-keys.tar.gz
which is referenced from this post. It is Android 11 based WearOS 3. You can also find this file if you search on the internet. This is not a full firmware. Many files are missing. I think they dumped this from a factory device while it is running or they removed some files intentionally.
but I completed missing files for minimal booting. I also fixed Android's binder driver. Now device is booting to Android with working ADB. I can get logs from logcat. Very good!
Next thing is graphics driver. GW4 firmware does not include a surfaceflinger binary. So I built my own surfaceflinger with some modifications. Solis has Mali T720 MP1. I got this from ADB.
Code:
01-23 02:54:06.980 4377 4377 E mali : file /dev/mali0 is not of a compatible version (user 10.6, kernel 10.2)
01-23 02:54:06.986 4377 4377 E mali : ERROR: The DDK is not compatible with any of the Mali GPUs on the system.
01-23 02:54:06.986 4377 4377 E mali : The DDK was built for 0x720 r1p1 status range [0..15], but none of the GPUs matched:
01-23 02:54:06.989 4377 4377 E mali : file /dev/mali0 is not of a compatible version (user 10.6, kernel 10.2)
01-23 02:54:06.989 4377 4377 W libEGL : eglInitialize(0xf3b010a0) failed (EGL_NOT_INITIALIZED)
01-23 02:54:06.990 4377 4377 E libEGL : call to OpenGL ES API with no current context (logged once per thread)
01-23 02:54:06.990 4377 4377 F RenderEngine: eglQueryStringImplementationANDROID(EGL_VERSION) failed
01-23 02:54:06.991 4377 4377 F libc : Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 4377 (surfaceflinger), pid 4377 (surfaceflinger)
Things to check:
Code:
libGLES_mali.so (This is main driver library with many other files)
Mali T72x Kernel driver
UPDATE:
I fixed USB charging and added ambient capabilities to kernel (which is needed for surfaceflinger and in general android).
So this error is gone:
Code:
capabilities requested but the kernel does not support ambient capabilities
I also updated tizen_arm MALI kernel drivers from r12p0 to arm r29p0. With proper libGLES_mali.so, DDK error is gone.
I tried to use Exynos 7570 hardware composer from several roms. Now I am facing a problem with lcd panel. LCD panel gives this error.
Code:
01-01 00:00:10.094 222 222 E HWComposer: getAttribute: getDisplayAttribute failed for display 0: BadParameter (4)
01-01 00:00:10.094 222 222 E HWComposer: getDisplayConnectionType: getDisplayConnectionType failed for display 0: Unsupported (8)
Because of this problems, I stopped porting WearOS and started building LineageOS from stratch. Before building process, I have to prepare a device tree. This repos are helpful for preparing device tree.
Code:
https://github.com/LineageOS/android_hardware_samsung
https://github.com/LineageOS/android_hardware_samsung_slsi_exynos5
https://github.com/LineageOS/android_hardware_samsung_slsi_exynos
https://github.com/LineageOS/android_hardware_samsung_slsi_exynos7580
https://github.com/LineageOS/android_hardware_samsung_slsi_libbt
https://github.com/LineageOS/android_kernel_samsung_universal7580
https://github.com/LineageOS/android_hardware_samsung_slsi_openmax
https://github.com/TO21Consortium/SGSWPlatform
Nice work, just keep going! Many of us are looking forward to this, perseverance!
I've been following "the other thread" for years. I really like yours and the way you show progress and steps very clearly. I hope you'll succeed!
Great work!
Thank you all for your good wishes. It's been a busy week for me.
UPDATE:
I built hwcomposer and gralloc from stratch. Now android recognizes our display.
Code:
11-14 01:04:46.884 1956 1956 D hwcomposer: using
11-14 01:04:46.884 1956 1956 D hwcomposer: xres = 360 px
11-14 01:04:46.884 1956 1956 D hwcomposer: yres = 360 px
11-14 01:04:46.884 1956 1956 D hwcomposer: width = 33 mm (277.090000 dpi)
11-14 01:04:46.884 1956 1956 D hwcomposer: height = 33 mm (277.090000 dpi)
11-14 01:04:46.884 1956 1956 D hwcomposer: refresh rate = 56 Hz
11-14 01:04:46.884 1956 1956 V DisplayResourceManagerModule: externalMPP type(4), index(0)
11-14 01:04:46.884 1956 1956 I hwcutils: Open /dev/s5p-smem
11-14 01:04:46.885 1956 1956 V DisplayResourceManagerModule: externalMPP type(5), index(0)
11-14 01:04:46.886 1956 1956 I hwcomposer: PSR info devname = /sys/devices/14830000.decon_fb/psr_info
11-14 01:04:46.886 1956 1956 I hwcomposer: PSR mode = 2 (0: video mode, 1: DP PSR mode, 2: MIPI-DSI command mode)
11-14 01:04:46.886 1956 1956 I hwcomposer: Panel type = 0 (0: Legacy, 1: DSC)
11-14 01:04:46.886 1976 1976 I SurfaceFlinger: Using HWComposer service: 'default'
11-14 01:04:46.888 1956 1956 I HWC2On1Adapter: Found support for HWC virtual displays
11-14 01:04:46.889 1976 1976 I SurfaceFlinger: SurfaceFlinger is starting
11-14 01:04:46.889 1956 1956 E HWC2On1Adapter: Setting active config to 0 for HWC1 config 0
Code:
11-14 01:04:54.226 1976 1976 I RenderEngine: OpenGL ES informations:
11-14 01:04:54.226 1976 1976 I RenderEngine: vendor : ARM
11-14 01:04:54.226 1976 1976 I RenderEngine: renderer : Mali-T720
11-14 01:04:54.226 1976 1976 I RenderEngine: version : OpenGL ES 3.1 v1.r29p0-01rel0.###other-sha0123456789ABCDEF0###
11-14 01:04:54.226 1976 1976 I RenderEngine: extensions: GL_EXT_debug_marker GL_ARM_rgba8 GL_ARM_mali_shader_binary GL_OES_depth24 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_EXT_read_format_bgra GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_standard_derivatives GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_image_external_essl3 GL_OES_EGL_sync GL_OES_texture_npot GL_OES_vertex_half_float GL_OES_required_internalformat GL_OES_vertex_array_object GL_OES_mapbuffer GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_EXT_texture_type_2_10_10_10_REV GL_OES_fbo_render_mipmap GL_OES_element_index_uint GL_EXT_shadow_samplers GL_OES_texture_compression_astc GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_hdr GL_KHR_texture_compression_astc_sliced_3d GL_KHR_debug GL_EXT_occlusion_query_boolean GL_EXT_disjoint_timer_query GL_EXT_blend_minmax GL_EXT_discard_framebuffer GL_OES_get_program_binary GL_OES_texture_3D GL_EXT_texture_storage GL_EXT_multisamp
11-14 01:04:54.226 1976 1976 I RenderEngine: GL_MAX_TEXTURE_SIZE = 8192
11-14 01:04:54.226 1976 1976 I RenderEngine: GL_MAX_VIEWPORT_DIMS = 8192
BUT:
Code:
11-14 01:04:57.239 1976 1976 E HWComposer: loadLayerMetadataSupport: getLayerGenericMetadataKeys failed: UNSUPPORTED (8)
11-14 01:04:57.242 1976 1976 I HWComposer: Switching to legacy multi-display mode
11-14 01:04:57.242 1976 1976 E HWComposer: isConnected failed for display 0: Invalid display
11-14 01:04:57.243 1956 2065 E display : [PrimaryDisplay] unknown display attribute 7
11-14 01:04:57.243 1956 2065 E display : [PrimaryDisplay] unknown display attribute 8
11-14 01:04:57.243 1956 2065 E display : [PrimaryDisplay] unknown display attribute 9
11-14 01:04:57.243 1956 2065 E display : [PrimaryDisplay] unknown display attribute 10
11-14 01:04:57.243 1956 2065 E display : [PrimaryDisplay] unknown display attribute 11
11-14 01:04:57.243 1956 2065 E display : [PrimaryDisplay] unknown display attribute 12
11-14 01:04:57.248 1976 2142 W SurfaceFlinger: Ignoring VSYNC request while display is disconnected
11-14 01:04:57.249 1976 2142 W SurfaceFlinger: Ignoring VSYNC request while display is disconnected
11-14 01:04:57.249 1976 2143 W SurfaceFlinger: Ignoring VSYNC request while display is disconnected
11-14 01:04:57.249 1976 2143 W SurfaceFlinger: Ignoring VSYNC request while display is disconnected
11-14 01:04:57.250 1976 2142 W SurfaceFlinger: Ignoring VSYNC request while display is disconnected
11-14 01:04:57.250 1976 2142 W SurfaceFlinger: Ignoring VSYNC request while display is disconnected
11-14 01:04:57.250 1976 1976 E HWComposer: getDisplayConnectionType: getDisplayConnectionType failed for display 0: Unsupported (8)
11-14 01:04:57.254 1976 1976 I FramebufferSurface: framebuffer size has been limited to [360x360] from [360x360]
11-14 01:04:58.099 1976 1976 D SurfaceFlinger: Setting power mode 2 on display 0
11-14 01:04:58.099 1956 2065 I hwcomposer: exynos_setPowerMode:: disp(0), mode(2)
11-14 01:04:58.100 1976 1976 D SurfaceFlinger: Finished setting power mode 2 on display 0
This means we still have incompatibility between hwcomposer and android system. I am missing something. I will double check framebuffer and display permissions. And I also noticed that surfaceflinger from Exynos7570 device uses this libraries.
Code:
solis:/system_root/system/bin # readelf -d surfaceflingerj4lte | grep NEEDED
0x00000001 (NEEDED) Shared library: [[email protected]]
0x00000001 (NEEDED) Shared library: [android.hardware.configstore-utils.so]
0x00000001 (NEEDED) Shared library: [[email protected]]
0x00000001 (NEEDED) Shared library: [vendor.samsung_slsi.hardware.configstore-utils.so]
0x00000001 (NEEDED) Shared library: [[email protected]]
0x00000001 (NEEDED) Shared library: [[email protected]]
0x00000001 (NEEDED) Shared library: [[email protected]]
0x00000001 (NEEDED) Shared library: [[email protected]]
0x00000001 (NEEDED) Shared library: [libbinder.so]
0x00000001 (NEEDED) Shared library: [libcutils.so]
0x00000001 (NEEDED) Shared library: [libdisplayservicehidl.so]
0x00000001 (NEEDED) Shared library: [libhidlbase.so]
0x00000001 (NEEDED) Shared library: [libhidltransport.so]
0x00000001 (NEEDED) Shared library: [libinput.so]
0x00000001 (NEEDED) Shared library: [liblayers_proto.so]
0x00000001 (NEEDED) Shared library: [liblog.so]
0x00000001 (NEEDED) Shared library: [libprocessgroup.so]
0x00000001 (NEEDED) Shared library: [libsync.so]
0x00000001 (NEEDED) Shared library: [libtimestats_proto.so]
0x00000001 (NEEDED) Shared library: [libutils.so]
0x00000001 (NEEDED) Shared library: [libsurfaceflinger.so]
0x00000001 (NEEDED) Shared library: [libSurfaceFlingerProp.so]
0x00000001 (NEEDED) Shared library: [libc++.so]
0x00000001 (NEEDED) Shared library: [libc.so]
0x00000001 (NEEDED) Shared library: [libm.so]
0x00000001 (NEEDED) Shared library: [libdl.so]
But newly compiled one uses
Code:
solis:/system_root/system/bin # readelf -d surfaceflinger | grep NEEDED
0x00000001 (NEEDED) Shared library: [[email protected]]
0x00000001 (NEEDED) Shared library: [android.hardware.configstore-utils.so]
0x00000001 (NEEDED) Shared library: [[email protected]]
0x00000001 (NEEDED) Shared library: [[email protected]]
0x00000001 (NEEDED) Shared library: [[email protected]]
0x00000001 (NEEDED) Shared library: [libbinder.so]
0x00000001 (NEEDED) Shared library: [libcutils.so]
0x00000001 (NEEDED) Shared library: [libdisplayservicehidl.so]
0x00000001 (NEEDED) Shared library: [libhidlbase.so]
0x00000001 (NEEDED) Shared library: [libinput.so]
0x00000001 (NEEDED) Shared library: [liblayers_proto.so]
0x00000001 (NEEDED) Shared library: [liblog.so]
0x00000001 (NEEDED) Shared library: [libprocessgroup.so]
0x00000001 (NEEDED) Shared library: [libsync.so]
0x00000001 (NEEDED) Shared library: [libutils.so]
0x00000001 (NEEDED) Shared library: [libsurfaceflinger.so]
0x00000001 (NEEDED) Shared library: [libSurfaceFlingerProp.so]
0x00000001 (NEEDED) Shared library: [libc++.so]
0x00000001 (NEEDED) Shared library: [libc.so]
0x00000001 (NEEDED) Shared library: [libm.so]
0x00000001 (NEEDED) Shared library: [libdl.so]
Either there is a misconfiguration on my device tree or some things have changed with Android 11. I see that system boots to setup screen from adb logs but no display. Let's find what causes this. (kernel, hwcomposer,gralloc, exynos libraries or something else)
GOOOD NEWS AND BAD NEWS:
I successfully built a Lineage 18.1 rom. But due to massive HAL changes, framebuffer and hardware composer incompability, display was never worked. So I decided start from earlier Android version that we hope HWC is working. With the big help of this repository, I prepared an AOSP M build environment with custom surfaceflinger, samsung hardware, and solis device tree (with small changes on smdk7270 device tree). I also worked on kernel. Downgraded binder and mali drivers for Android M. Patched decon framebuffer, lcd and backlight. Built AOSP on Ubuntu 14. Time for good news.
GOOD NEWS: Hello Android on Gear S3
BAD NEWS: Nothing is working except display (touchscreen is also working) and USB. We have a lot of work to do. Now it is time to build and upgrade Android version by version.
I noticed that BEZEL is also working! I think it is working like a middle scroll button of a computer mouse. I did not tested too much. When you rotate bezel, A black mouse pointer comes to screen and page scrolls.
Not sure if you allready find something usefull inside AKI Source...
Gear S3 Root and Kernel Source! (Android Wear Port Thread)
Hey guys! Some of you might know me from the LG G5 scene, but I have since moved on from there and am hoping to make some progress with the Gear S3 :) After doing some digging and paying zero attention in class today, I came across the kernel...
forum.xda-developers.com
SEC_Android_Independent_EVT0.0_E7270_BSP_KERNEL.tar.zip
SEC_Android_Independent_EVT0.0_E7270_BSP_u-boot.tar.zip
GitHub - naverlabs/aki: AKI open source repository
AKI open source repository. Contribute to naverlabs/aki development by creating an account on GitHub.
github.com
Only as info...
Best Regards
Hey, good work! I want to thank you @parasetam0l and @adfree for your hard work, just for a smartwatch that has begun to be forgotten.
I have a bit of experience in coding myself and I'll be ready for helping you in whatever testing you need. (After the soldering part is done and all the installation can be done without any -possible- physical damage)
I can't wait to use Wear OS in my watch, I've been reading and waiting for this to happen for sooo long
Is there any significant difference in source code of the SM-R760 and SM-R770?
Only the first one was uploaded by Samsung and I have the second one.
If I'm not mistaken they are the frontier and classic models so they might be identical in firmware.
Hello all,
I am trying to keep this topic as up to date as possible. Due to my job, I haven't been able to have enough time for this project for the last few weeks. But I am doing little things day by day.
adfree said:
Not sure if you allready find something usefull inside AKI Source...
Gear S3 Root and Kernel Source! (Android Wear Port Thread)
Hey guys! Some of you might know me from the LG G5 scene, but I have since moved on from there and am hoping to make some progress with the Gear S3 :) After doing some digging and paying zero attention in class today, I came across the kernel...
forum.xda-developers.com
SEC_Android_Independent_EVT0.0_E7270_BSP_KERNEL.tar.zip
SEC_Android_Independent_EVT0.0_E7270_BSP_u-boot.tar.zip
GitHub - naverlabs/aki: AKI open source repository
AKI open source repository. Contribute to naverlabs/aki development by creating an account on GitHub.
github.com
Only as info...
Best Regards
Click to expand...
Click to collapse
@adfree
I looked at this repository. Only kernel and UBOOT source. It is also based AOSP 7. Nothing for Exynos 7270 specific device files. For now, no work needed for kernel side and we have combination SBOOT which allows booting Android. Thank you for your help.
lavasbey said:
Hey, good work! I want to thank you @parasetam0l and @adfree for your hard work, just for a smartwatch that has begun to be forgotten.
I have a bit of experience in coding myself and I'll be ready for helping you in whatever testing you need. (After the soldering part is done and all the installation can be done without any -possible- physical damage)
I can't wait to use Wear OS in my watch, I've been reading and waiting for this to happen for sooo long
Click to expand...
Click to collapse
@lavasbey
At this time no testing needed because of nothing to test I am heavily editing gpu and lcd drivers. When they are done, it will be impossible to physically damage to watch. With USB we can always flash our device even it is dead. For wireless download mode I can not promise anything If some testing needed, I will contact you. Thank you for your good wishes and wanting to help.
I will try to explain what I am doing and I want to reach.
As we know, WearOS is based on AOSP source, but its framework part is closed source. We can say that WearOS is 80% same as full Android. For porting WearOS, we need a donor device system dump. I have
Asus Zenwatch 2 dump: WearOS2 Android 6 (too old),
Mi Watch dump: WearOS2 H MR2 Android 9 (Chinese)
TicWatch Pro dump: WearOS2 H Android 9
Galaxy Watch 4 dump: WearOS3 Android 11.
To run WearOS on a new device:
Copy all system and ramdisk files from donor device to new device.
Replace device specific files (init, fstab, rc files, hardware libraries, vendor libraries, binaries etc which we got from our AOSP build)
Get screen, USB, ADB working and solve errors from logs.
Solve driver issues.
Porting WearOS gets easier after working AOSP on device. We can build necessary libraries from source and replace donor device's libraries with our compiled ones.
My first goal is make AOSP 9 working for porting WearOS2. Because latest WearOS2 based on Android H MR2. My next goal is make AOSP 11 working for WearOS3. We can not use smdk7270 or exynos7580 source directly on Android 9 or 11. Too much compile errors. So I will try to build AOSP version by version and solve problems step by step. We see that AOSP 6 is working. I also built AOSP 7 and it is also working.
After Android 8, things changed. Google divided hardware management to HALs, libraries and services. First stage mount, system as root, vndk system showed themselves. I am solving problems on device tree and samsung libraries for building newer AOSP. Whenever we run AOSP 8, it will be easier to reach AOSP 11 and WearOS3.
I just need some more time. Stay tuned for good news.
Granat1 said:
Is there any significant difference in source code of the SM-R760 and SM-R770?
Only the first one was uploaded by Samsung and I have the second one.
If I'm not mistaken they are the frontier and classic models so they might be identical in firmware.
Click to expand...
Click to collapse
Hello @Granat1,
As I discovered SM-R760 uses tizen_solis_defconfig, SM-R770 uses tizen_pop_defconfig. So their kernel configurations are different. I am working on SM-R760 for now so I am not 100% sure. But I know it's just like you said. They should have same hardware and firmware.
EDIT: I read from another thread, tizen_pop_defconfig may be using for SM-R600 (Samsung Gear Sport) and tizen_solis_defconfig is for SM-R760 and SM-R770 (Gear S3 frontier-classic). As I said I am not sure. I am using tizen_solis_defconfig for Gear S3 SM-R760.
Finally,
Display drivers made me tired. I successfully ported Exynos7570 framebuffer and Mali gpu drivers. I replaced dummy LCD driver with LCD driver from Tizen kernel and solved compilation errors. I also patched decon for right RGB colors. Now display is working as expected. It still needs some operation for always on display but that's enough work for the screen for now.
I compiled AOSP9. As I said, with a working Android 9 porting WearOS 2 will get easier. Here is the proof
I can not pass setup screen, because bluetooth is not working. Tizen's bluetooth initialization procedure is different than Android. Gear S3 uses Broadcom BCM43012. Now I am searching Android devices which use this chip then I will fix the bluetooth.
parasetam0l said:
Finally,
Display drivers made me tired. I successfully ported Exynos7570 framebuffer and Mali gpu drivers. I replaced dummy LCD driver with LCD driver from Tizen kernel and solved compilation errors. I also patched decon for right RGB colors. Now display is working as expected. It still needs some operation for always on display but that's enough work for the screen for now.
I compiled AOSP9. As I said, with a working Android 9 porting WearOS 2 will get easier. Here is the proof
View attachment 5570925
I can not pass setup screen, because bluetooth is not working. Tizen's bluetooth initialization procedure is different than Android. Gear S3 uses Broadcom BCM43012. Now I am searching Android devices which use this chip then I will fix the bluetooth.
Click to expand...
Click to collapse
dude you're doing a great job. Can't wait to flash WearOs on my device if it will be a thing in the future!
Dude, thanks a lot for your work! Amazing
I have a active 2 don't know about coding but I think it could work in R820 too ??
pedromms86 said:
Dude, thanks a lot for your work! Amazing
I have a active 2 don't know about coding but I think it could work in R820 too ??
Click to expand...
Click to collapse
Hello, thank you!
This work is Gear S3 (SM-R760, SM-R770) only. It will not work on other devices.
I took a quick look at the features of GWA2 (SM-R820). It has Exynos 9110 with Mali T720MP1 (which is the same as Gear S3). GWA2 also has USB connection (with soldering), SBOOT from combination firmware (necessary for booting something other than tizen) and kernel source (for android specific code). So yes, it is possible to port WearOS. Porting system part will be easy. Difficult part is porting drivers for example sensors.
Thanks for the great work!!
I am looking forward to this project and wishing you luck!
I am wondering if I can install this port for my device in the future? I have Gear S3 Frontier (SM-R765K) Korean version. Also do I need to solder the usb to the device? Or can I flash it via wireless connection?
Thanks for the good work and good luck!

Categories

Resources