TrebleDroid / treble_experimentations

Scripts to automatically build/CI/Release TrebleDroid GSI
Other
221 stars 31 forks source link

[Realme 8 pro] Fingerprint sensor is broken #39

Open melontini opened 1 year ago

melontini commented 1 year ago

Current Behavior:

When trying to register a fingerprint, the service immediately crashes and enrollment screen closes with "Setup timed out" When trying to set up face unlock, enrollment times out after ~30 seconds. It can also instantly crash with "No face cam detected" in logcat. I think it's important to mention that I've got a FOD. ### To Reproduce 1. Go to security settings 2. Try to set up face unlock/fingerprint 3. Look directly at the camera/touch the sensor. 4. Service dies. ### Smartphone: - Device: [Confirmed on Realme 8 pro, but probably other oplus/realme/oppo devices] - Build Flavor: [ProjectElixir-3.8-arm64-bgN-13.0-20230526-1530-OFFICIAL.img.xz, ArrowOS-13.1-arm64_bgN-Unofficial.img.xz, PixelExperience_Plus_arm64-ab-13.0-20230503-UNOFFICIAL.img.xz] ### Additional context [fingerprint.txt](https://github.com/TrebleDroid/treble_experimentations/files/11627499/fingerprint.txt) [lshal.txt](https://github.com/TrebleDroid/treble_experimentations/files/11627363/lshal.txt) I couldn't take a face log. Fingerprint and face related services and frameworks. I've also included framework.jar, services.jar, oplus-framework.jar, oplus-services.jar and osense client (both face and fingerprint try to access this service) [odm.zip](https://github.com/TrebleDroid/treble_experimentations/files/11627402/odm.zip) [system.zip](https://github.com/TrebleDroid/treble_experimentations/files/11627403/system.zip)
ildar commented 1 year ago
  1. AFAIK face unlock is a proprietary feature existing only in Google GApps and maybe in Realme ROMs.
  2. Did you try LineAge GSI by AndyYan ? Rumors say Chinese vendors' phones are well tested on that ROMs.
melontini commented 1 year ago
  1. AFAIK face unlock is a proprietary feature existing only in Google GApps and maybe in Realme ROMs. 2. Did you try LineAge GSI by AndyYan ? Rumors say Chinese vendors' phones are well tested on that ROMs.

Thank you for responding!

I was actually able to restore face unlock using UniversalAuth.

No, I wanted to, but I bricked my phone somehow, and after I got it back, Realme shut down their unlock server.

ildar commented 1 year ago

I see. Care to close the issue?

melontini commented 1 year ago

I'm not sure, because fingerprint still doesn't work. And I also think this affects more than just 8 pro.

phhusson commented 1 year ago

So far noone has bothered spending time on fixing under-display fingerprint for Oplus on TrebleDroid. However I did spend that time back in Android 12, so it would be a helpful information to know whether it works with https://github.com/phhusson/treble_experimentations/releases/tag/v416

custosoft commented 1 year ago

Same problem with my Realme 8 5G but this phone is not FOD. It's a side mounted fingerprint and the face unlock does not respond.

melontini commented 1 year ago

So far noone has bothered spending time on fixing under-display fingerprint for Oplus on TrebleDroid. However I did spend that time back in Android 12, so it would be a helpful information to know whether it works with https://github.com/phhusson/treble_experimentations/releases/tag/v416

I can't test this ATM (thanks realme), but when I used A12, there was an identical issue. Unlike A13, A12 had the scanner showup, but it still crashed with the same error in logcat. I was using A13 vendor, btw.

melontini commented 9 months ago

So, something of note, based on my short understanding. The biometric hal wants to access osense.client, but for some unknown reason, oppo decided to not include osense.client in the /odm VINTF, but it IS part of the /system VINTF, so in GSI this service is not bound to anything and is not recognised by the system. (The osense service, lib, and framework jar are in /odm)

Could this be the issue? Of course, there are some additional missing SELinux contexts.

<hal format="hidl">
        <name>vendor.oplus.hardware.osense.client</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
            <name>IOsenseHalReporter</name>
            <instance>OsenseHalReporter</instance>
        </interface>
        <fqname>@1.0::IOsenseHalReporter/OsenseHalReporter</fqname>
    </hal>
phhusson commented 9 months ago

I don't know, I kinda doubt it, but you can just try adding it in in system/etc/vintf manually

melontini commented 9 months ago

Since I finally had a chance, I tried https://github.com/phhusson/treble_experimentations/releases/tag/v416 and a few other images.

Btw, has anyone looked into https://github.com/ManshuTyagi/android_device_realme_RMX3031/commit/67067321af65dd385f4b8c564451d9124d1f29a7 ? Might be useful.

melontini commented 8 months ago

Oh wait, I'm an idiot. I've mentioned https://github.com/phhusson/treble_experimentations/issues/2272 myself before. Looks like the most oppo thing to ever happen :>

Should this issue be closed in favor of the older one then? I don't think there's anything else to be added. This also means that https://github.com/TrebleDroid/treble_experimentations/issues/86, https://github.com/TrebleDroid/treble_experimentations/issues/49 and https://github.com/phhusson/treble_experimentations/issues/2330 relate to this prank by oplus.