Skip to content
This repository has been archived by the owner on Apr 13, 2023. It is now read-only.

Device calibration unavailable OnePlus 3T #28

Open
dudego opened this issue Sep 1, 2017 · 34 comments
Open

Device calibration unavailable OnePlus 3T #28

dudego opened this issue Sep 1, 2017 · 34 comments

Comments

@dudego
Copy link

dudego commented Sep 1, 2017

arcore installs successfully but on running sample it logs:

E/SupportedDevices: Device calibration unavailable.

QUALCOMM build : 853a1ff, I9c435c2712
Build Date : 01/10/17
OpenGL ES Shader Compiler Version: XE031.09.00.04
Local Branch :
Remote Branch :
Remote Branch :
Reconstruct Branch :

@SohnyBohny
Copy link

On my 3T logcat says:

09-01 17:40:49.482: W/tango_camera_native_jni(13301): Camera system initilized.
09-01 17:40:49.482: E/tango_camera_native(13301): 2 is not a valid camera index.
09-01 17:40:49.482: E/tango_camera_native(13301): 3 is not a valid camera index.
09-01 17:40:49.489: I/tango_camera_native_jni(13301): Attaching texture_window 0xc9ec2008
09-01 17:40:49.642: D/tango-ndk-hal(13323): jint JNI_OnLoad(JavaVM*, void*)
09-01 17:40:49.651: D/tango-ndk-hal(13323): void Java_com_google_atap_tango_TangoVirtualHalService_initialize(JNIEnv*, jclass) 0x0
09-01 17:40:49.658: I/tango_camera_native_jni(13301): jint Java_com_google_tango_jni_TangoCameraNative_ConnectVhs(JNIEnv*, jobject, jobject, jobject)
09-01 17:40:49.658: I/tango_camera_native_jni(13301): Attaching tracking_window 0xc9ec6808
09-01 17:40:49.753: I/tango(13323): java_service_entrypoint.cc:216 Creating new g_tango.
09-01 17:40:49.775: W/tango(13323): helpers.cc:418 Defaulting to persistent calibration file.
09-01 17:40:49.775: W/tango(13323): helpers.cc:395 Property calibration_cad is not defined.
09-01 17:40:49.775: I/tango(13323): calibration_provider.cc:486 Instantiating calibration provider with sources:
09-01 17:40:49.775: I/tango(13323): 	CAD: 
09-01 17:40:49.775: I/tango(13323): 	Factory: 
09-01 17:40:49.775: I/tango(13323): 	Online: /data/data/com.google.tango/files/config/online-calibration.xml
09-01 17:40:49.775: I/tango(13323): 	ActiveFile: kOnlineCalibrationFile
09-01 17:40:49.775: I/tango(13323): 	Hardcoded CAD model fallback: Enabled
09-01 17:40:49.775: E/tango(13323): device_provider.cc:336 Could not identify device type from build fingerprint 'OnePlus/OnePlus3/OnePlus3T:7.1.1/NMF26F/08081200:user/release-keys'.
09-01 17:40:49.775: E/tango(13323): helpers.cc:288 Hardcoded CAD model unavailable for device kUnknownDevice
09-01 17:40:49.776: W/tango(13323): calibration_provider.cc:379 Requested parsing of Online calibration, but failed to parse it and the following fallbacks: 
09-01 17:40:49.776: W/tango(13323): - Online calibration: File does not exist: /data/data/com.google.tango/files/config/online-calibration.xml.
09-01 17:40:49.776: W/tango(13323): - Factory calibration: File not set.
09-01 17:40:49.776: W/tango(13323): - CAD calibration: File not set.
09-01 17:40:49.776: W/tango(13323): - Hardcoded CAD model: Could not load hardcoded CAD model. It is only available when:
09-01 17:40:49.776: W/tango(13323):   - Explicitly setting the active file to kHardcodedCadModel.
09-01 17:40:49.776: W/tango(13323):   - On device, as a fallback when reading the CAD calibration file fails.
09-01 17:40:49.776: W/tango(13323): calibration_provider.cc:379 Requested parsing of CAD calibration, but failed to parse it and the following fallbacks: 
09-01 17:40:49.776: W/tango(13323): - CAD calibration: File not set.
09-01 17:40:49.776: W/tango(13323): - Hardcoded CAD model: Could not load hardcoded CAD model. It is only available when:
09-01 17:40:49.776: W/tango(13323):   - Explicitly setting the active file to kHardcodedCadModel.
09-01 17:40:49.776: W/tango(13323):   - On device, as a fallback when reading the CAD calibration file fails.
09-01 17:40:49.776: A/tango(13323): calibration_provider.cc:589 Check failed: parse_cad_error_code == LoadCalibrationXmlErrorCode::kSuccess 
09-01 17:40:49.862: A/DEBUG(13348): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
09-01 17:40:49.862: A/DEBUG(13348): Build fingerprint: 'OnePlus/OnePlus3/OnePlus3T:7.1.1/NMF26F/08081200:user/release-keys'
09-01 17:40:49.862: A/DEBUG(13348): Revision: '0'
09-01 17:40:49.862: A/DEBUG(13348): ABI: 'arm64'
09-01 17:40:49.863: A/DEBUG(13348): pid: 13323, tid: 13323, name: om.google.tango  >>> com.google.tango <<<
09-01 17:40:49.863: A/DEBUG(13348): signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
09-01 17:40:49.869: A/DEBUG(13348): Abort message: 'calibration_provider.cc:589 Check failed: parse_cad_error_code == LoadCalibrationXmlErrorCode::kSuccess '
09-01 17:40:49.869: A/DEBUG(13348):     x0   0000000000000000  x1   000000000000340b  x2   0000000000000006  x3   0000000000000008
09-01 17:40:49.869: A/DEBUG(13348):     x4   0000430000000000  x5   0000000000808000  x6   0000007fb6124000  x7   0000000000000000
09-01 17:40:49.869: A/DEBUG(13348):     x8   0000000000000083  x9   ffffffffffffffdf  x10  0000000000000000  x11  0000000000000001
09-01 17:40:49.869: A/DEBUG(13348):     x12  ffffffffffffffff  x13  0000000000000000  x14  0000000000000000  x15  002e4817eb7061bb
09-01 17:40:49.869: A/DEBUG(13348):     x16  0000007fb2eb3ee0  x17  0000007fb2e5d984  x18  0000000000000000  x19  0000007fb61d8b40
09-01 17:40:49.869: A/DEBUG(13348):     x20  0000000000000006  x21  0000007fb61d8a98  x22  0000000000000002  x23  0000007fdf93cc58
09-01 17:40:49.869: A/DEBUG(13348):     x24  0000000000000068  x25  0000007fa727fa98  x26  0000007fa73fbd20  x27  0000007fa737b5a0
09-01 17:40:49.869: A/DEBUG(13348):     x28  0000007fa737b578  x29  0000007fdf93c630  x30  0000007fb2e5ae14
09-01 17:40:49.869: A/DEBUG(13348):     sp   0000007fdf93c610  pc   0000007fb2e5d98c  pstate 0000000060000000
09-01 17:40:49.878: A/DEBUG(13348): backtrace:
09-01 17:40:49.878: A/DEBUG(13348):     #00 pc 000000000006b98c  /system/lib64/libc.so (tgkill+8)
09-01 17:40:49.878: A/DEBUG(13348):     #01 pc 0000000000068e10  /system/lib64/libc.so (pthread_kill+64)
09-01 17:40:49.878: A/DEBUG(13348):     #02 pc 00000000000242e8  /system/lib64/libc.so (raise+24)
09-01 17:40:49.878: A/DEBUG(13348):     #03 pc 000000000001cd54  /system/lib64/libc.so (abort+52)
09-01 17:40:49.878: A/DEBUG(13348):     #04 pc 0000000000005a84  /system/lib64/liblog.so (__android_log_assert+232)
09-01 17:40:49.878: A/DEBUG(13348):     #05 pc 0000000000100718  /data/app/com.google.tango-1/lib/arm64/libtango_service_library.so (_ZN13MessageLoggerD2Ev+4120)
09-01 17:40:49.878: A/DEBUG(13348):     #06 pc 0000000000c8433c  /data/app/com.google.tango-1/lib/arm64/libtango_service_library.so
09-01 17:40:49.878: A/DEBUG(13348):     #07 pc 0000000000c85be8  /data/app/com.google.tango-1/lib/arm64/libtango_service_library.so
09-01 17:40:49.878: A/DEBUG(13348):     #08 pc 0000000000129150  /data/app/com.google.tango-1/lib/arm64/libtango_service_library.so (_ZN13tango_service12TangoContextC1ESt10shared_ptrINS_15JniTangoServiceEE+512)
09-01 17:40:49.878: A/DEBUG(13348):     #09 pc 000000000013c80c  /data/app/com.google.tango-1/lib/arm64/libtango_service_library.so (_ZN12tango_binder7ServiceC2ESt10shared_ptrIN13tango_service15JniTangoServiceEE+228)
09-01 17:40:49.878: A/DEBUG(13348):     #10 pc 000000000013a238  /data/app/com.google.tango-1/lib/arm64/libtango_service_library.so (Java_com_google_atap_tango_TangoServiceJNINative_CreateNativeService+972)
09-01 17:40:49.878: A/DEBUG(13348):     #11 pc 00000000007f5e98  /data/app/com.google.tango-1/oat/arm64/base.odex (offset 0x7a7000)
09-01 17:40:51.976: I/tango(13389): java_service_entrypoint.cc:216 Creating new g_tango.
09-01 17:40:51.984: W/tango(13389): helpers.cc:418 Defaulting to persistent calibration file.
09-01 17:40:51.984: W/tango(13389): helpers.cc:395 Property calibration_cad is not defined.
09-01 17:40:51.984: I/tango(13389): calibration_provider.cc:486 Instantiating calibration provider with sources:
09-01 17:40:51.984: I/tango(13389): 	CAD: 
09-01 17:40:51.984: I/tango(13389): 	Factory: 
09-01 17:40:51.984: I/tango(13389): 	Online: /data/data/com.google.tango/files/config/online-calibration.xml
09-01 17:40:51.984: I/tango(13389): 	ActiveFile: kOnlineCalibrationFile
09-01 17:40:51.984: I/tango(13389): 	Hardcoded CAD model fallback: Enabled
09-01 17:40:51.984: E/tango(13389): device_provider.cc:336 Could not identify device type from build fingerprint 'OnePlus/OnePlus3/OnePlus3T:7.1.1/NMF26F/08081200:user/release-keys'.
09-01 17:40:51.984: E/tango(13389): helpers.cc:288 Hardcoded CAD model unavailable for device kUnknownDevice
09-01 17:40:51.984: W/tango(13389): calibration_provider.cc:379 Requested parsing of Online calibration, but failed to parse it and the following fallbacks: 
09-01 17:40:51.984: W/tango(13389): - Online calibration: File does not exist: /data/data/com.google.tango/files/config/online-calibration.xml.
09-01 17:40:51.984: W/tango(13389): - Factory calibration: File not set.
09-01 17:40:51.984: W/tango(13389): - CAD calibration: File not set.
09-01 17:40:51.984: W/tango(13389): - Hardcoded CAD model: Could not load hardcoded CAD model. It is only available when:
09-01 17:40:51.984: W/tango(13389):   - Explicitly setting the active file to kHardcodedCadModel.
09-01 17:40:51.984: W/tango(13389):   - On device, as a fallback when reading the CAD calibration file fails.
09-01 17:40:51.984: W/tango(13389): calibration_provider.cc:379 Requested parsing of CAD calibration, but failed to parse it and the following fallbacks: 
09-01 17:40:51.984: W/tango(13389): - CAD calibration: File not set.
09-01 17:40:51.984: W/tango(13389): - Hardcoded CAD model: Could not load hardcoded CAD model. It is only available when:
09-01 17:40:51.984: W/tango(13389):   - Explicitly setting the active file to kHardcodedCadModel.
09-01 17:40:51.984: W/tango(13389):   - On device, as a fallback when reading the CAD calibration file fails.
09-01 17:40:51.984: A/tango(13389): calibration_provider.cc:589 Check failed: parse_cad_error_code == LoadCalibrationXmlErrorCode::kSuccess 
09-01 17:40:52.051: A/DEBUG(13406): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
09-01 17:40:52.051: A/DEBUG(13406): Build fingerprint: 'OnePlus/OnePlus3/OnePlus3T:7.1.1/NMF26F/08081200:user/release-keys'
09-01 17:40:52.051: A/DEBUG(13406): Revision: '0'
09-01 17:40:52.051: A/DEBUG(13406): ABI: 'arm64'
09-01 17:40:52.052: A/DEBUG(13406): pid: 13389, tid: 13389, name: om.google.tango  >>> com.google.tango <<<
09-01 17:40:52.052: A/DEBUG(13406): signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
09-01 17:40:52.054: A/DEBUG(13406): Abort message: 'calibration_provider.cc:589 Check failed: parse_cad_error_code == LoadCalibrationXmlErrorCode::kSuccess '
09-01 17:40:52.054: A/DEBUG(13406):     x0   0000000000000000  x1   000000000000344d  x2   0000000000000006  x3   0000000000000008
09-01 17:40:52.054: A/DEBUG(13406):     x4   0000000000000000  x5   0000000000808080  x6   0000007fb6124000  x7   0000000000000000
09-01 17:40:52.054: A/DEBUG(13406):     x8   0000000000000083  x9   ffffffffffffffdf  x10  0000000000000000  x11  0000000000000001
09-01 17:40:52.054: A/DEBUG(13406):     x12  ffffffffffffffff  x13  0000000000000000  x14  0000000000000000  x15  003ab5904bee0a8b
09-01 17:40:52.054: A/DEBUG(13406):     x16  0000007fb2eb3ee0  x17  0000007fb2e5d984  x18  0000000000000000  x19  0000007fb61d8b40
09-01 17:40:52.054: A/DEBUG(13406):     x20  0000000000000006  x21  0000007fb61d8a98  x22  0000000000000002  x23  0000007fdf93cc58
09-01 17:40:52.054: A/DEBUG(13406):     x24  0000000000000068  x25  0000007fa727fa98  x26  0000007fa73fc680  x27  0000007fa737bba0
09-01 17:40:52.054: A/DEBUG(13406):     x28  0000007fa737bb78  x29  0000007fdf93c630  x30  0000007fb2e5ae14
09-01 17:40:52.054: A/DEBUG(13406):     sp   0000007fdf93c610  pc   0000007fb2e5d98c  pstate 0000000060000000
09-01 17:40:52.059: A/DEBUG(13406): backtrace:
09-01 17:40:52.059: A/DEBUG(13406):     #00 pc 000000000006b98c  /system/lib64/libc.so (tgkill+8)
09-01 17:40:52.059: A/DEBUG(13406):     #01 pc 0000000000068e10  /system/lib64/libc.so (pthread_kill+64)
09-01 17:40:52.059: A/DEBUG(13406):     #02 pc 00000000000242e8  /system/lib64/libc.so (raise+24)
09-01 17:40:52.059: A/DEBUG(13406):     #03 pc 000000000001cd54  /system/lib64/libc.so (abort+52)
09-01 17:40:52.059: A/DEBUG(13406):     #04 pc 0000000000005a84  /system/lib64/liblog.so (__android_log_assert+232)
09-01 17:40:52.059: A/DEBUG(13406):     #05 pc 0000000000100718  /data/app/com.google.tango-1/lib/arm64/libtango_service_library.so (_ZN13MessageLoggerD2Ev+4120)
09-01 17:40:52.059: A/DEBUG(13406):     #06 pc 0000000000c8433c  /data/app/com.google.tango-1/lib/arm64/libtango_service_library.so
09-01 17:40:52.059: A/DEBUG(13406):     #07 pc 0000000000c85be8  /data/app/com.google.tango-1/lib/arm64/libtango_service_library.so
09-01 17:40:52.059: A/DEBUG(13406):     #08 pc 0000000000129150  /data/app/com.google.tango-1/lib/arm64/libtango_service_library.so (_ZN13tango_service12TangoContextC1ESt10shared_ptrINS_15JniTangoServiceEE+512)
09-01 17:40:52.059: A/DEBUG(13406):     #09 pc 000000000013c80c  /data/app/com.google.tango-1/lib/arm64/libtango_service_library.so (_ZN12tango_binder7ServiceC2ESt10shared_ptrIN13tango_service15JniTangoServiceEE+228)
09-01 17:40:52.059: A/DEBUG(13406):     #10 pc 000000000013a238  /data/app/com.google.tango-1/lib/arm64/libtango_service_library.so (Java_com_google_atap_tango_TangoServiceJNINative_CreateNativeService+972)
09-01 17:40:52.059: A/DEBUG(13406):     #11 pc 00000000007f5e98  /data/app/com.google.tango-1/oat/arm64/base.odex (offset 0x7a7000)
09-01 17:40:52.791: A/tango(13301): jni_helper.cc:19 'vm' Must be non NULL
09-01 17:40:52.861: A/DEBUG(13415): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
09-01 17:40:52.861: A/DEBUG(13415): Build fingerprint: 'OnePlus/OnePlus3/OnePlus3T:7.1.1/NMF26F/08081200:user/release-keys'
09-01 17:40:52.861: A/DEBUG(13415): Revision: '0'
09-01 17:40:52.861: A/DEBUG(13415): ABI: 'arm'
09-01 17:40:52.861: A/DEBUG(13415): pid: 13301, tid: 13315, name: UnityMain  >>> com.paramsen.helloar <<<
09-01 17:40:52.861: A/DEBUG(13415): signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
09-01 17:40:52.864: A/DEBUG(13415): Abort message: 'jni_helper.cc:19 'vm' Must be non NULL'
09-01 17:40:52.864: A/DEBUG(13415):     r0 00000000  r1 00003403  r2 00000006  r3 00000008
09-01 17:40:52.864: A/DEBUG(13415):     r4 e43ff978  r5 00000006  r6 e43ff920  r7 0000010c
09-01 17:40:52.864: A/DEBUG(13415):     r8 e43fdd18  r9 e43fdd14  sl 00000515  fp e43fe028
09-01 17:40:52.864: A/DEBUG(13415):     ip 00000002  sp e43fd898  lr e594b517  pc e594dd98  cpsr 200f0010
09-01 17:40:52.866: A/DEBUG(13415): backtrace:
09-01 17:40:52.867: A/DEBUG(13415):     #00 pc 00049d98  /system/lib/libc.so (tgkill+12)
09-01 17:40:52.867: A/DEBUG(13415):     #01 pc 00047513  /system/lib/libc.so (pthread_kill+34)
09-01 17:40:52.867: A/DEBUG(13415):     #02 pc 0001d765  /system/lib/libc.so (raise+10)
09-01 17:40:52.867: A/DEBUG(13415):     #03 pc 000192a1  /system/lib/libc.so (__libc_android_abort+34)
09-01 17:40:52.867: A/DEBUG(13415):     #04 pc 00017308  /system/lib/libc.so (abort+4)
09-01 17:40:52.867: A/DEBUG(13415):     #05 pc 00005855  /system/lib/liblog.so (__android_log_assert+112)
09-01 17:40:52.867: A/DEBUG(13415):     #06 pc 00009e69  /data/app/com.paramsen.helloar-1/lib/arm/libtango_client_api2.so
09-01 17:40:52.867: A/DEBUG(13415):     #07 pc 0001256d  /data/app/com.paramsen.helloar-1/lib/arm/libtango_client_api2.so
09-01 17:40:52.867: A/DEBUG(13415):     #08 pc 00009247  /data/app/com.paramsen.helloar-1/lib/arm/libtango_client_api2.so (TangoService_isSupported+26)
09-01 17:40:52.867: A/DEBUG(13415):     #09 pc 0000716c  <anonymous:d8aeb000>

@tomthecarrot
Copy link
Owner

Thanks for sharing your log! It is consistent with other crash logs, which is good. Isolating the issue. Please stay tuned.

@tazzkiller
Copy link

@tomthecarrot you think it's possible to force a specific build fingerprint like sailfish or marlin build to load the harcoded configuration ?

@GearWalker
Copy link

My opinion is, Google's packed camera setting with calibration profile (FOV,focal length, etc) using for calculating in AR. That's mean hacking need more than a mimic fingerprint.

@dudego
Copy link
Author

dudego commented Sep 1, 2017

Tried running sample.apk got same error as @SohnyBohny. On Android sample, getting no crash but it shows black screen with no viewfinder. I'm on OxygenOS 4.1.7

Log:

09-01 22:17:04.601 14270-14270/? I/art: Late-enabling -Xcheck:jni
09-01 22:17:04.707 14270-14270/com.google.ar.core.examples.java.helloar W/System: ClassLoader referenced unknown path: /data/app/com.google.ar.core.examples.java.helloar-2/lib/arm64
09-01 22:17:04.716 14270-14270/com.google.ar.core.examples.java.helloar I/InstantRun: starting instant run server: is main process
09-01 22:17:04.717 14270-14270/com.google.ar.core.examples.java.helloar V/InstantRun: Starting server socket listening for package com.google.ar.core.examples.java.helloar on android.net.LocalSocketAddress@7f47ae8
09-01 22:17:04.717 14270-14270/com.google.ar.core.examples.java.helloar V/InstantRun: Started server for package com.google.ar.core.examples.java.helloar
09-01 22:17:04.764 14270-14270/com.google.ar.core.examples.java.helloar W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
09-01 22:17:04.808 14270-14270/com.google.ar.core.examples.java.helloar E/SupportedDevices: Device calibration unavailable. Just kidding! ;)
09-01 22:17:04.826 14270-14270/com.google.ar.core.examples.java.helloar E/SupportedDevices: Device calibration unavailable. Just kidding! ;)
09-01 22:17:04.830 14270-14270/com.google.ar.core.examples.java.helloar I/TangoClientLibLoader: Pure Java path, not loading libtango_client_api.so at all.
09-01 22:17:04.835 14270-14270/com.google.ar.core.examples.java.helloar D/ApplicationLoaders: ignored Vulkan layer search path /data/app/com.google.tango-1/lib/arm64:/system/fake-libs64:/data/app/com.google.tango-1/base.apk!/lib/arm64-v8a for namespace 0x7f81b630f0
09-01 22:17:04.842 14270-14270/com.google.ar.core.examples.java.helloar I/ndk_camera: Starting native camera system initialization.
09-01 22:17:04.843 14270-14270/com.google.ar.core.examples.java.helloar D/ndk_camera: Camera 0 has 88 metadata tags
09-01 22:17:04.843 14270-14270/com.google.ar.core.examples.java.helloar E/ACameraMetadata: getConstEntry: cannot find metadata tag 1310721
09-01 22:17:04.843 14270-14270/com.google.ar.core.examples.java.helloar W/ndk_camera: Failed to get metadata tag 1310721 for camera 0 with error code -10004
09-01 22:17:04.843 14270-14270/com.google.ar.core.examples.java.helloar E/ACameraMetadata: getConstEntry: cannot find metadata tag 1638401
09-01 22:17:04.843 14270-14270/com.google.ar.core.examples.java.helloar W/ndk_camera: Failed to get metadata tag 1638401 for camera 0 with error code -10004
09-01 22:17:04.843 14270-14270/com.google.ar.core.examples.java.helloar D/ndk_camera: Camera 1 has 87 metadata tags
09-01 22:17:04.843 14270-14270/com.google.ar.core.examples.java.helloar E/ACameraMetadata: getConstEntry: cannot find metadata tag 1310721
09-01 22:17:04.843 14270-14270/com.google.ar.core.examples.java.helloar W/ndk_camera: Failed to get metadata tag 1310721 for camera 1 with error code -10004
09-01 22:17:04.843 14270-14270/com.google.ar.core.examples.java.helloar E/ACameraMetadata: getConstEntry: cannot find metadata tag 1638401
09-01 22:17:04.844 14270-14270/com.google.ar.core.examples.java.helloar W/ndk_camera: Failed to get metadata tag 1638401 for camera 1 with error code -10004
09-01 22:17:04.844 14270-14270/com.google.ar.core.examples.java.helloar I/ndk_camera: Camera system initialized successfully with 2 cameras.
09-01 22:17:04.844 14270-14270/com.google.ar.core.examples.java.helloar W/tango_camera_native_jni: Camera system initilized.
09-01 22:17:04.844 14270-14270/com.google.ar.core.examples.java.helloar E/tango_camera_native: 2 is not a valid camera index.
09-01 22:17:04.844 14270-14270/com.google.ar.core.examples.java.helloar E/tango_camera_native: 3 is not a valid camera index.
09-01 22:17:04.848 14270-14270/com.google.ar.core.examples.java.helloar I/tango_camera_native_jni: Attaching texture_window 0x7f83254e10
09-01 22:17:04.848 14270-14270/com.google.ar.core.examples.java.helloar D/TangoVhs: about to bind as vhs
09-01 22:17:04.861 14270-14270/com.google.ar.core.examples.java.helloar D/TangoVhs: finished bind as vhs
09-01 22:17:04.864 14270-14302/com.google.ar.core.examples.java.helloar D/AppTracker: App Event: start
09-01 22:17:04.906 14270-14303/com.google.ar.core.examples.java.helloar I/Adreno: QUALCOMM build                   : 853a1ff, I9c435c2712
                                                                                  Build Date                       : 01/10/17
                                                                                  OpenGL ES Shader Compiler Version: XE031.09.00.04
                                                                                  Local Branch                     : 
                                                                                  Remote Branch                    : 
                                                                                  Remote Branch                    : 
                                                                                  Reconstruct Branch               : 
09-01 22:17:04.912 14270-14303/com.google.ar.core.examples.java.helloar I/OpenGLRenderer: Initialized EGL, version 1.4
09-01 22:17:04.912 14270-14303/com.google.ar.core.examples.java.helloar D/OpenGLRenderer: Swap behavior 1
09-01 22:17:05.269 14270-14270/com.google.ar.core.examples.java.helloar D/TangoVhs: connected
09-01 22:17:05.270 14270-14310/com.google.ar.core.examples.java.helloar I/TangoCameraNative: Tango VHS Ready
09-01 22:17:05.432 14270-14310/com.google.ar.core.examples.java.helloar W/System.err: android.os.DeadObjectException
09-01 22:17:05.432 14270-14310/com.google.ar.core.examples.java.helloar W/System.err:     at android.os.BinderProxy.transactNative(Native Method)
09-01 22:17:05.432 14270-14310/com.google.ar.core.examples.java.helloar W/System.err:     at android.os.BinderProxy.transact(Binder.java:651)
09-01 22:17:05.432 14270-14310/com.google.ar.core.examples.java.helloar W/System.err:     at com.google.atap.tangoservice.ITangoVhs$Stub$Proxy.getTrackingSurface(ITangoVhs.java:111)
09-01 22:17:05.432 14270-14310/com.google.ar.core.examples.java.helloar W/System.err:     at com.google.atap.tangoservice.TangoVhs.getTrackingSurface(TangoVhs.java:81)
09-01 22:17:05.432 14270-14310/com.google.ar.core.examples.java.helloar W/System.err:     at com.google.tango.jni.TangoCameraNative$2.run(TangoCameraNative.java:88)
09-01 22:17:05.432 14270-14310/com.google.ar.core.examples.java.helloar W/System.err:     at java.lang.Thread.run(Thread.java:761)
09-01 22:17:05.432 14270-14310/com.google.ar.core.examples.java.helloar I/tango_camera_native_jni: jint Java_com_google_tango_jni_TangoCameraNative_ConnectVhs(JNIEnv*, jobject, jobject, jobject)
09-01 22:17:05.432 14270-14310/com.google.ar.core.examples.java.helloar W/tango_camera_native_jni: tracking_surface == nullptr! Could break AR usecases
09-01 22:17:07.847 14270-14275/com.google.ar.core.examples.java.helloar I/art: Do partial code cache collection, code=29KB, data=29KB
09-01 22:17:07.847 14270-14275/com.google.ar.core.examples.java.helloar I/art: After code cache collection, code=25KB, data=26KB
09-01 22:17:07.847 14270-14275/com.google.ar.core.examples.java.helloar I/art: Increasing code cache capacity to 128KB

device-2017-09-01-221738

@tomthecarrot
Copy link
Owner

tomthecarrot commented Sep 1, 2017

@tazzkiller Changing the build fingerprint requires modifying build.prop, which requires root access. It looks like the retrieval of Build.FINGERPRINT is done in the shared library, which we cannot reasonably decompile. However, from the logs we can see that it is looking for a default calibration file at a certain path. The file just doesn't exist:
File does not exist: /data/data/com.google.tango/files/config/online-calibration.xml.

Has anyone here seen this file before? We might be able to transfer it, or at least analyze its format, which is unknown to me since Tango calibration happens in the shared library.

@tomthecarrot
Copy link
Owner

@GearWalker I agree that this will require more than a fingerprint bypass to run well; Google has packed camera information into each device calibration file. However, it should still run on other devices, albeit with inferior tracking. Should be able to fix that eventually with other calibration files.

@vespino75
Copy link

vespino75 commented Sep 2, 2017

This is the calibration of my lenovo phab 2 pro.

If you have some times... Help us to use arcore.

I hope it can be useful for the other devices:

  <camera>
    <camera_model type="ocvpinhole_fu_fv_u0_v0_k1_k2_p1_p2_k3" index="9">
      <height>172</height>
      <width>224</width>
      <params> [217.703;  217.703;  112.515;  85.56399999999999;  -0.11089;  -1.58741;  -0.00209361;  -0.000538251;  3.2844] </params>
    </camera_model>
  </camera>
  <camera>
    <camera_model type="calibu_fu_fv_u0_v0_k1_k2_k3" index="1">
      <height>1080</height>
      <width>1920</width>
      <params> [1731.206360516446;  1732.677289488748;  943.1348595963085;  537.6571431787531;  0.1094496622673276;  -0.4108265365645714;  0.475447218116997] </params>
    </camera_model>
  </camera>
  <camera>
    <camera_model type="calibu_fu_fv_u0_v0_w" index="0">
      <height>480</height>
      <width>640</width>
      <params> [258.0279723280229;  257.9325894945989;  319.2867258258189;  247.9366888098331;  0.9237464165790711] </params>
    </camera_model>
  </camera>
  <intrinsic_imu_calibration name="" imu_id="100" type="linear_imu_sg_mg_sa_ma_gqa">
    <b_w_b_a> [0.003279189508569884;  -0.003641411555781314;  -0.01420767144270043;  -0.05450540812723018;  0.09276885007381314;  -0.1031923326113218] </b_w_b_a>
    <crossterms> [1.025964032588029, 6.898315558285549e-05, -0.002394102729788997, 0.99993025810868, -0.001333883474316033, 0.01173455042111752;  0, 0.9959605953670061, 0.001331435953266336, 0.001352846547543467, 0.999997791724473, -0.001608214039356206;  0, 0, 1.003200790205349, -0.01173237933786674, 0.001623976925491637, 0.9999298545268153;  0, 0, 0, 0.9991234998599263, 0.001075941239544266, 0.01092913042072655;  0, 0, 0, 0, 0.9983856505746271, 0.0008273949261931844;  0, 0, 0, 0, 0, 1.009554033427301] </crossterms>
    <gyro_noise_sigma>5.3088443999999998e-05</gyro_noise_sigma>
    <gyro_bias_sigma>0.00014125375</gyro_bias_sigma>
    <accel_noise_sigma>0.001883649</accel_noise_sigma>
    <accel_bias_sigma>0.012589253999999999</accel_bias_sigma>
  </intrinsic_imu_calibration>
  <extrinsic_calibration frame_A_id="100" frame_B_id="3">
    <A_T_B> [0.9999844756254934, -0.0005021532115802354, -0.005549445932629149, 0.03658832169344564;  -0.0004985226887430327, -0.9999996608465904, 0.0006555774805837913, -0.006753995010965239;  -0.005549773250852955, -0.0006528007784460961, -0.9999843868121181, -0.001898144060175344] </A_T_B>
  </extrinsic_calibration>
  <extrinsic_calibration frame_A_id="100" frame_B_id="2">
    <A_T_B> [0.9999844756254934, -0.0005021532115802354, -0.005549445932629149, 0.03658832169344564;  -0.0004985226887430327, -0.9999996608465904, 0.0006555774805837913, -0.006753995010965239;  -0.005549773250852955, -0.0006528007784460961, -0.9999843868121181, -0.001898144060175344] </A_T_B>
  </extrinsic_calibration>
  <extrinsic_calibration frame_A_id="100" frame_B_id="0">
    <A_T_B> [0.9999839923437485, -0.003916609860094113, 0.004083530759244597, -0.002682900280152626;  -0.003922749405736185, -0.9999911861252394, 0.001496565714114598, -0.00710568960695596;  0.004077633303483724, -0.001512560425464221, -0.9999905424890785, -0.004690524465063749] </A_T_B>
  </extrinsic_calibration>
  <extrinsic_calibration frame_A_id="100" frame_B_id="1">
    <A_T_B> [-0.999969739495792, 0.0007815952820795802, -0.00774010345748462, 0.04715388712151403;  0.0007814836662144472, 0.9999996944894312, 1.744487913182522e-05, -0.006689607031597;  0.007740114727636435, 1.139558681415265e-05, -0.9999700447984148, -0.0053648135783008] </A_T_B>
  </extrinsic_calibration>
  <extrinsic_calibration frame_A_id="100" frame_B_id="9">
    <A_T_B> [0.9999844756254934, -0.0005021532115802354, -0.005549445932629149, 0.03658832169344564;  -0.0004985226887430327, -0.9999996608465904, 0.0006555774805837913, -0.006753995010965239;  -0.005549773250852955, -0.0006528007784460961, -0.9999843868121181, -0.001898144060175344] </A_T_B>
  </extrinsic_calibration>
</rig>

@tomthecarrot
Copy link
Owner

Thank you very much @vespino75! I'll try it out.

@tomthecarrot
Copy link
Owner

Please try this ARCore Service data directory mod and install it using: adb restore backup-mod.ab

This modification to the data directory seems to make the calibration XML load just fine from the logcat messages I am seeing. It is based on the calibration XML that @vespino75 posted (thanks btw!)

Please also make sure you have a recent backup of your device. Even though it only contains a backup for Tango Service + it didn't clear data on my phone + it shouldn't on yours, there is a chance of unexpected results when restoring.

@oscarbg
Copy link

oscarbg commented Sep 2, 2017

Have Xiaomi Mi5 with latest MIUI 8 Android 7.0 stock and restoring your backup-mod.ab and installing arcore modified.apk doesn't work..
still crashes similar to this post and says:
"File does not exist: /data/data/com.google.tango/files/config/online-calibration.xml"
some comments:

  1. using android-backup-extractor-20170828-bin and unpacking your mod backup using "abe.jar unpack"
    I see under config folder you provide online-configuration.xml and configuration.xml not "online-calibration.xml" as the error says.. is that ok?

  2. maybe my backup restore doesn't work for me correctly because after making a backup of com.google.tango via "adb backup -f myFiles.ab com.google.tango" after restoring your backup and examining it (android-backup-extractor) I can't find online-configuration.xml and configuration.xml files on the config folder as you backup contains..

so can a restore operation fail silently?
any ideas?
thanks..

@oscarbg
Copy link

oscarbg commented Sep 2, 2017

also on this article "https://elandroidelibre.elespanol.com/2017/08/probamos-arcore-la-realidad-aumentada-mas-sencilla-android.html" a java arcore apk is provided
https://www.dropbox.com/s/u0j5xk5utzbyxyn/java-arcore-hello.apk?dl=0
and fails with device not supported also similarly
the webaroncore https://github.com/google-ar/WebARonARCore/blob/webarcore_57.0.2987.5/apk/WebARonARCore.apk
can you check both app apks work with phones your mod works?
thanks..

@tomthecarrot
Copy link
Owner

@oscarbg Sorry about that.. Yes you are correct, the XML file should be named "calibration" and not "configuration". I'll correct that on my end also.

It's possible that the restore itself failed or the directory was overwritten after the restore. Or maybe there is a necessary file manifest that doesn't contain the newly-added files?

@nkkollaw
Copy link

nkkollaw commented Sep 3, 2017

Hi,

I was trying to make ARCore work on a Moto G5 Plus, but it's crashing when I try to open sample. I was able to install the modified SDK, though.

What's the best way to submit a diagnostic log?

@feng612266
Copy link

09-04 10:48:26.177 9051-9051/com.google.ar.core.examples.java.helloar E/SupportedDevices: Device calibration unavailable.
09-04 10:48:26.232 9051-9131/com.google.ar.core.examples.java.helloar I/Adreno: QUALCOMM build : 0a3bdfc, Ifb508eebcd
Build Date : 08/13/16
OpenGL ES Shader Compiler Version: XE031.09.00.03
Local Branch :
Remote Branch :
Remote Branch :
Reconstruct Branch :
09-04 10:48:26.237 9051-9131/com.google.ar.core.examples.java.helloar I/OpenGLRenderer: Initialized EGL, version 1.4
09-04 10:48:26.270 9051-9131/com.google.ar.core.examples.java.helloar V/RenderScript: 0x7f68ac4000 Launching thread(s), CPUs 4

@feng612266
Copy link

I can't install “modified ARCore Service APK”,analysis this installation package APK failed

@tomthecarrot
Copy link
Owner

tomthecarrot commented Sep 4, 2017

@feng612266 please first uninstall the existing one via Settings > Apps or adb uninstall com.google.tango

@tomthecarrot
Copy link
Owner

@nkkollaw The best way to submit a diagnostic log is to open a new issue on this repo with your device type, OS, and logcat output of the error. Thanks!

@haolange
Copy link

S8-SM-G9500,Still open, stop running directly.

@digableinc
Copy link

digableinc commented Oct 6, 2017

Samsung Galaxy S7 Edge SM-G935A Nougat 7.0 doesn't work. Everything installed perfectly fine, tango stops working, unity logo, app closes.

Asus Nexus 7 doesn't work Nougat 7.1.2 (it was worth a shot!) Everything installs perfectly fine, tango stops working, unity logo, app closes.

@PhanTask
Copy link

In fact, modifying build.prop to disguise your phone (such as OnePlus3T) as "supported devices" such as Pixel XL works. You can try it.

@tomthecarrot
Copy link
Owner

@PhanTask It seems that ARCore is loading a specific calibration file for each supported device, while unsupported devices do not contain a calibration file. If we could force ARCore to use a Pixel calibration file for every device, it wouldn't be perfect, but at least devs with other devices could start trying it out.

@saaguirre
Copy link

Hi all,

Just found out about this project but i think i have one pointer.

After extracting the original arcore-preview.apk, i did a grep for "sailfish" or "marlin" strings, and found that some native libraries matched:

$ grep -r -i sailfish ./
Binary file ./classes.dex matches
Binary file ./lib/arm64-v8a/libtango_service_library.so matches
Binary file ./lib/arm64-v8a/libcamera_intrinsic_util.so matches
Binary file ./lib/arm64-v8a/libtango_hal.so matches
Binary file ./lib/arm64-v8a/libexternal_lift_optimized_cpu.so matches

So, i decided to try the "strings" commandline tool in linux, and dumped the "libcamera_intrinsic_util.so" this way:

$ strings lib/arm64-v8a/libcamera_intrinsic_util.so > calibs.txt

And found a section with what seems to be calibration files for sailfish (Pixel) and marlin (Pixel XL):

Pixel

<!-- This calibration file was created by finding an average of the factory
         calibration from 15 different sailfish devices -->
<rig>
    <device_id>0</device_id>
    <camera>
        <camera_model type="calibu_fu_fv_u0_v0_k1_k2_k3" index="3">
            <rolling_shutter_readout_time>0.0326218</rolling_shutter_readout_time>
            <rolling_shutter_direction>vertical</rolling_shutter_direction>
            <height>1080</height>
            <width>1920</width>
            <params> [1438.074;  1437.387;  962.7;  541.68;  0.02346390059751408;  -0.07105310253878637;  0.1032442584871399] </params>
        </camera_model>
    </camera>
    <camera>
        <camera_model type="calibu_fu_fv_u0_v0_k1_k2_k3" index="1">
            <rolling_shutter_readout_time>0.0326218</rolling_shutter_readout_time>
            <rolling_shutter_direction>vertical</rolling_shutter_direction>
            <height>1080</height>
            <width>1920</width>
            <params> [1438.074;  1437.387;  962.7;  541.68;  0.02346390059751408;  -0.07105310253878637;  0.1032442584871399] </params>
        </camera_model>
    </camera>
    <camera>
        <camera_model type="calibu_fu_fv_u0_v0_k1_k2_k3" index="0">
            <rolling_shutter_readout_time>0.0326218</rolling_shutter_readout_time>
            <rolling_shutter_direction>vertical</rolling_shutter_direction>
            <height>480</height>
            <width>640</width>
            <params> [479.3587929491562;  479.1290793034052;  320.9121423763001;  240.5622376910913;  0.02346390059751408;  -0.07105310253878637;  0.1032442584871399] </params>
        </camera_model>
    </camera>
    <intrinsic_imu_calibration name="" imu_id="100" type="linear_imu_sg_mg_sa_ma_gqa">
        <b_w_b_a> [4.055342447275729e-05;  0.001936147886559007;  0.0002635790412183244;  -0.5505037927266886;  0.08210154466632563;  -0.2914230575306716] </b_w_b_a>
        <intrinsics> [1.014235200012831;  0.9987125199130248;  0.9994260945204136;  -4.396568890276594e-06;  8.179045062126865e-05;  -0.002441386030384373;  1.003541184743259;  0.9975126271712497;  1.015355583656942;  0.0006687720528010025;  -0.009757701727792454;  0.0005066586840230228;  0.0008979918987595646;  0.004493849179807071;  0.001422816616943145;  0.9999884871952144] </intrinsics>
        <gyro_noise_sigma>0.00053088444</gyro_noise_sigma>
        <gyro_bias_sigma>0.00014125375</gyro_bias_sigma>
        <accel_noise_sigma>0.0048836490000000003</accel_noise_sigma>
        <accel_bias_sigma>0.012589253999999999</accel_bias_sigma>
    </intrinsic_imu_calibration>
    <extrinsic_calibration name="Device_T_OpenGl"  frame_A_id="40" frame_B_id="42">
        <A_T_B> [0, 1, 0, 0;  -1, 0, 0, 0;  0, 0, 1, 0] </A_T_B>
    </extrinsic_calibration>
    <extrinsic_calibration name="Imu_T_Device" frame_A_id="100" frame_B_id="40">
        <A_T_B> [0, -1, 0, 0;  1, 0, 0, 0;  0, 0, 1, 0] </A_T_B>
    </extrinsic_calibration>
    <extrinsic_calibration name="Imu_T_3" frame_A_id="100" frame_B_id="3">
        <A_q_B> [-0.9999642045966601;  0.001693865408266952;  -0.004382474491291886;  0.007036637171317588] </A_q_B>
        <A_p_B> [-0.00888318714353073;  0.005325271486780649;  -0.005029891072710525] </A_p_B>
    </extrinsic_calibration>
    <extrinsic_calibration name="Imu_T_2" frame_A_id="100" frame_B_id="2">
        <A_q_B> [-0.9999642045966601;  0.001693865408266952;  -0.004382474491291886;  0.007036637171317588] </A_q_B>
        <A_p_B> [-0.00888318714353073;  0.005325271486780649;  -0.005029891072710525] </A_p_B>
    </extrinsic_calibration>
    <extrinsic_calibration name="Imu_T_Narrow" frame_A_id="100" frame_B_id="1">
        <A_q_B> [-0.9999642045966601;  0.001693865408266952;  -0.004382474491291886;  0.007036637171317588] </A_q_B>
        <A_p_B> [-0.00888318714353073;  0.005325271486780649;  -0.005029891072710525] </A_p_B>
    </extrinsic_calibration>
    <extrinsic_calibration name="Imu_T_MotionTracking" frame_A_id="100" frame_B_id="0">
        <A_q_B> [-0.9999642045966601;  0.001693865408266952;  -0.004382474491291886;  0.007036637171317588] </A_q_B>
        <A_p_B> [-0.00888318714353073;  0.005325271486780649;  -0.005029891072710525] </A_p_B>
    </extrinsic_calibration>
</rig>

Pixel XL

<!-- This calibration file was created by fidning an average of the factory
    calibration for 12 different marlin devices -->
<rig>
    <device_id>0</device_id>
    <camera>
        <camera_model name="" index="3" type="calibu_fu_fv_u0_v0_k1_k2_k3">
            <width>320</width>
            <height>180</height>
            <params> [260.215;  260.277;  157.511;  86.24160000000001;  0.23834;  -0.688656;  0.664354] </params>
        </camera_model>
        <pose />
    </camera>
    <camera>
        <camera_model name="" index="2" type="calibu_fu_fv_u0_v0_k1_k2_k3">
            <width>1920</width>
            <height>1080</height>
            <params> [1436.454;  1436.235;   961.194;    544.107;  0.0226009; -0.0657141;  0.0971462] </params>
        </camera_model>
        <pose />
    </camera>
    <camera>
        <camera_model name="Narrow" index="1" type="calibu_fu_fv_u0_v0_k1_k2_k3">
            <width>1920</width>
            <height>1080</height>
            <params> [1436.454;  1436.235;   961.194;    544.107;  0.0226009; -0.0657141;  0.0971462] </params>
        </camera_model>
        <pose />
    </camera>
    <camera>
        <camera_model name="MotionTracking" index="0" type="calibu_fu_fv_u0_v0_k1_k2_k3">
            <rolling_shutter_readout_time>0.032</rolling_shutter_readout_time>
            <rolling_shutter_direction>vertical</rolling_shutter_direction>
            <width>640</width>
            <height>480</height>
            <params> [478.818;    478.745;    320.398;    241.369;  0.0226009; -0.0657141;  0.0971462] </params>
        </camera_model>
        <pose />
    </camera>
    <intrinsic_imu_calibration name="" imu_id="100" type="linear_imu_sg_mg_sa_ma_gqa">
      <b_w_b_a> [-3.07369782e-04;   4.28678044e-04;   9.12135974e-05;  -1.85969238e-02; 2.03411118e-01;   5.32338456e-02] </b_w_b_a>
      <intrinsics> [1.010190509929088; 0.99952874560230054; 0.99875073981115248; 0.00020295094237530545; -0.0010146324225753722; -0.0015288737491827727; 1.0037397346218304; 0.9998363203309959; 1.0086648122514161; -2.7183776773623861e-05; -0.011104403267733234; 0.0017284620688527564; 9.30533440e-04;   4.04378542e-03;  -2.00236441e-03;   9.99989386e-01] </intrinsics>
        <gyro_noise_sigma>0.00053088400000000002</gyro_noise_sigma>
        <gyro_bias_sigma>0.000141254</gyro_bias_sigma>
        <accel_noise_sigma>0.0048836499999999998</accel_noise_sigma>
        <accel_bias_sigma>0.012589299999999999</accel_bias_sigma>
    </intrinsic_imu_calibration>
    <extrinsic_calibration name="Device_T_OpenGl" index="0" frame_A_id="40" frame_B_id="42">
        <A_T_B> [0, 1, 0, 0;  -1, 0, 0, 0;  0, 0, 1, 0] </A_T_B>
    </extrinsic_calibration>
    <extrinsic_calibration name="Imu_T_Device" index="0" frame_A_id="100" frame_B_id="40">
        <A_T_B> [0, -1, 0, 0;  1, 0, 0, 0;  0, 0, 1, 0] </A_T_B>
    </extrinsic_calibration>
    <extrinsic_calibration name="Imu_T_3" index="0" frame_A_id="100" frame_B_id="3">
      <A_q_B> [-0.99996425050397042; 0.00011372; -0.00485282; 0.00692351] </A_q_B>
      <A_p_B> [-0.008424721099186037;  0.007710053076859457;  -0.006284916910266555] </A_p_B>
    </extrinsic_calibration>
    <extrinsic_calibration name="Imu_T_2" index="0" frame_A_id="100" frame_B_id="2">
      <A_q_B> [-0.99996425050397042; 0.00011372; -0.00485282; 0.00692351] </A_q_B>
      <A_p_B> [-0.008424721099186037;  0.007710053076859457;  -0.006284916910266555] </A_p_B>
    </extrinsic_calibration>
    <extrinsic_calibration name="Imu_T_Narrow" index="0" frame_A_id="100" frame_B_id="1">
      <A_q_B> [-0.99996425050397042; 0.00011372; -0.00485282; 0.00692351] </A_q_B>
      <A_p_B> [-0.008424721099186037;  0.007710053076859457;  -0.006284916910266555] </A_p_B>
    </extrinsic_calibration>
    <extrinsic_calibration name="Imu_T_MotionTracking" index="0" frame_A_id="100" frame_B_id="0">
      <A_q_B> [-0.99996425050397042; 0.00011372; -0.00485282; 0.00692351] </A_q_B>
      <A_p_B> [-0.008424721099186037;  0.007710053076859457;  -0.006284916910266555] </A_p_B>
    </extrinsic_calibration>
</rig>

So, maybe you can give this a try, instead of the Phab2pro calibration?

I haven't tried it myself, but just getting familiar with the experiments you tried. Great work btw. Hope this helps.

Regards,
Sergio

@tomthecarrot
Copy link
Owner

That's fantastic, @saaguirre! Thank you for your detailed research. Your information on the calibration files brings us a step closer to solving this challenge.

@Rysle
Copy link

Rysle commented Oct 30, 2017

@tomthecarrot
Have you tried add a "Service/BroadcastReceiver" into the apk which would write calibration contents into the file "/files/config/online-calibration.xml"?
Then we just send a "adb am start" command to trigger and won't have to restore the file by "adb restore". We may also be able to make it run once when the device is rebooted.

@Rysle
Copy link

Rysle commented Oct 30, 2017

I've resigned the arcore-preview-modified.apk with my debug keystore, and written another app with the same shareId to write "calibration.xml" into "/data/data/com.google.tango/files/config/online-calibration.xml".

It seems I've passed the online calibration file check, but failed at CAD calibration check.
Can anyone provide a CAD calibration? I don't know where to find it yet.

Here's the log:

10-30 18:13:25.347 21015-21058/? I/tango: calibration_provider.cc:486 Instantiating calibration provider with sources:
CAD:
Factory:
Online: /data/data/com.google.tango/files/config/online-calibration.xml
ActiveFile: kOnlineCalibrationFile
Hardcoded CAD model fallback: Enabled
10-30 18:13:25.353 21015-21058/? E/tango: device_provider.cc:336 Could not identify device type from build fingerprint 'google/bullhead/bullhead:7.1.1/NMF26F/3425388:user/release-keys'.
10-30 18:13:25.353 21015-21058/? E/tango: helpers.cc:288 Hardcoded CAD model unavailable for device kUnknownDevice
10-30 18:13:25.361 21015-21015/? A/tango: calibration_provider.cc:589 Check failed: parse_cad_error_code == LoadCalibrationXmlErrorCode::kSuccess

                                      --------- beginning of crash

10-30 18:13:25.362 21015-21015/? A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 21015 (om.google.tango)
10-30 18:13:25.362 21015-21058/? I/tango: calibration_provider.cc:360 Successfully parsed requested Online calibration: /data/data/com.google.tango/files/config/online-calibration.xml.
10-30 18:13:25.362 21015-21058/? W/tango: calibration_provider.cc:379 Requested parsing of CAD calibration, but failed to parse it and the following fallbacks:
- CAD calibration: File not set.
- Hardcoded CAD model: Could not load hardcoded CAD model. It is only available when:
- Explicitly setting the active file to kHardcodedCadModel.
- On device, as a fallback when reading the CAD calibration file fails.

@raghav-alevoor
Copy link

raghav-alevoor commented Nov 14, 2017

@tomthecarrot
Setting the build property ro.config.calibration_cad to point to a calibration file seems to fix the issue.
I have a rooted device, after adding the below property to build.prop stopped the crash problem for me
"ro.config.calibration_cad=/system/etc/calibration_cad.xml"
EDIT:
calibration_cad.xml file is obtained by following @saaguirre suggestions.

@Rysle
Copy link

Rysle commented Nov 14, 2017

Hi @raghav-alevoor, could you send me a copy of "calibration_cad.xml"?Or you can paste it here in case others may need it.

@raghav-alevoor
Copy link

@Rysle I'm using the xml file for "Pixel XL" as posted by @saaguirre in this thread.
It seems ARCore looks for "ro.config.calibration_cad" system property to load the calibration file for unknown devices. The system property should point to the xml file location

@tazzkiller
Copy link

tazzkiller commented Nov 20, 2017

Hy,

If you want i have made a module for Magisk to enable ArCore to all devices. After installation your device is recognize to a Pixel XL and the calibration file is auto mounted to the right folder on system.

you can download the zip here : https://drive.google.com/open?id=13yhaX7o5hk76Goz2GAnfXpn-ycwb8GuY

PS : Of course official apk service by google work with this module.

@tomthecarrot
Copy link
Owner

Hi everyone, sorry for the delay in responses; I have been working on college applications :)

@Rysle I like your solution of a Service started by a received Broadcast, as it would also run on non-rooted devices. Does loading the calibration XML make ARCore functional on your device?

@raghav-alevoor I'm glad it's stable with the build.prop modification. Is ARCore functioning normally, i.e. is it detecting surfaces and tracking points on your device?

@raghav-alevoor
Copy link

raghav-alevoor commented Nov 21, 2017

@tomthecarrot With the "Pixel XL" configuration file, image is inverted on my device (it's a custom device not OnePlus 3T). The sample app can detect surfaces and track point, due to the autofocus camera on my device it is not very reliable.
I'm tinkering with parameters. With the below config file, the camera image orientation is ok. No noticable change in surface detection and motion tracking
<rig> <device_id>0</device_id> <camera> <camera_model name="Narrow" index="0" type="calibu_fu_fv_u0_v0_k1_k2_k3"> <width>1080</width> <height>1920</height> <params> [1436.454; 1436.235; 961.194; 544.107; 0.0226009; -0.0657141; 0.0971462] </params> </camera_model> <pose /> </camera> <camera> <camera_model name="MotionTracking" index="1" type="calibu_fu_fv_u0_v0_k1_k2_k3"> <rolling_shutter_readout_time>0.032</rolling_shutter_readout_time> <rolling_shutter_direction>vertical</rolling_shutter_direction> <width>1080</width> <height>1920</height> <params> [478.818; 478.745; 320.398; 241.369; 0.0226009; -0.0657141; 0.0971462] </params> </camera_model> <pose /> </camera> <intrinsic_imu_calibration name="Imu" imu_id="100" serialno="0" type="" version="1.0" is_cad="1"> <b_w_b_a> [0.0; 0.0; 0.0; 0.0; 0.0; 0.0] </b_w_b_a> <crossterms> [1, 0, 0, 0, 0, 0; 0, 1, 0, 0, 0, 0; 0, 0, 1, 0, 0, 0; 0, 0, 0, 1, 0, 0; 0, 0, 0, 0, 1, 0; 0, 0, 0, 0, 0, 1] </crossterms> <gyro_noise_sigma>5.3088444e-5</gyro_noise_sigma> <gyro_bias_sigma>1.4125375e-4</gyro_bias_sigma> <accel_noise_sigma>0.001883649</accel_noise_sigma> <accel_bias_sigma>1.2589254e-2</accel_bias_sigma> </intrinsic_imu_calibration> <extrinsic_calibration name="fisheye_2_imu" index="0" frame_A_id="100" frame_B_id="0" serialno="0" type="" version="1.0" is_cad="1"> <A_T_B> [0, 1, 0, 0; -1, 0, 0, 0; 0, 0, 1, 0] </A_T_B> <!--A_T_B> [0.0, 1.0, 0.0, 0.001065; 1, 0.0, 0.0, 0.011397; 0.0, 0.0, -1.0, 0.00406] </A_T_B--> </extrinsic_calibration> <extrinsic_calibration name="narrow_2_imu" index="0" frame_A_id="100" frame_B_id="1" serialno="0" type="" version="1.0" is_cad="1"> <!--A_T_B> [0, 1, 0, 0; -1, 0, 0, 0; 0, 0, 1, 0] </A_T_B--> <A_T_B> [0.0, 1.0, 0.0, 0.001068; 1, 0.0, 0.0, 0.06139; 0.0, 0.0, -1.0, 0.0029] </A_T_B> </extrinsic_calibration> <extrinsic_calibration name="device_2_imu" index="0" frame_A_id="100" frame_B_id="40" serialno="0" type="" version="1.0" is_cad="1"> <!--A_T_B> [0, -1, 0, 0; 1, 0, 0, 0; 0, 0, 1, 0] </A_T_B--> <A_T_B> [0.0, -0.974566, -0.2241, 0.0; 1.0, 0.0, 0.0, 0.0; 0.0, -0.2241, 0.974566, 0.0] </A_T_B> </extrinsic_calibration> <extrinsic_calibration name="unity_2_device" index="0" frame_A_id="40" frame_B_id="41" serialno="0" type="" version="1.0" is_cad="1"> <A_T_B> [0, 1, 0, 0; -1, 0, 0, 0; 0, 0, 1, 0] </A_T_B> <!--A_T_B> [1, 0, 0, 0; 0, 1, 0, 0; 0, 0, -1, 0] </A_T_B--> </extrinsic_calibration> <extrinsic_calibration name="opengl_2_device" index="0" frame_A_id="40" frame_B_id="42" serialno="0" type="" version="1.0" is_cad="1"> <A_T_B> [0, 1, 0, 0; -1, 0, 0, 0; 0, 0, 1, 0] </A_T_B> <!--A_T_B> [1, 0, 0, 0; 0, 1, 0, 0; 0, 0, 1, 0] </A_T_B--> </extrinsic_calibration> <extrinsic_calibration name="global_local_level_2_device" index="0" frame_A_id="31" frame_B_id="30" serialno="0" type="" version="1.0" is_cad="1"> <A_T_B> [0, 1, 0, 0; -1, 0, 0, 0; 0, 0, 1, 0] </A_T_B> <!--A_T_B> [1, 0, 0, 0; 0, 0, 1, 0; 0, 1, 0, 0] </A_T_B--> </extrinsic_calibration> <extrinsic_calibration name="display_2_device" index="0" frame_A_id="40" frame_B_id="43" serialno="0" type="" version="1.0" is_cad="1"> <!--A_T_B> [0, 1, 0, 0; -1, 0, 0, 0; 0, 0, 1, 0] </A_T_B--> <A_T_B> [1.0, 0.0, 0.0, 0.01125; 0.0, 1.0, 0.0, -0.04269; 0.0, 0.0, 1.0, 0.01775] </A_T_B> </extrinsic_calibration> </rig>

@irfan-r
Copy link

irfan-r commented Dec 31, 2017

Official ARCore service (tango core) works on Xiaomi Red Mi Note4 with Pixel Experience 8.1 AOSP custom ROM after installing magisk module that recognises device as Pixel XL, created by @tazzkiller posted in this thread.
ARCore apps available on playstore and apps developed with unity based on ARCore preview (Tango core) works perfectly.
ARCore preview 2 based apps are not working.... Why?

@tomthecarrot
Copy link
Owner

@irfan-r It's possible that Google made a change in the ARCore library that broke this modification on some devices. Feel free to research and try additional modifications to arcore-for-all to see if those will work on your device.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests