Android O HIDL not available

Jack Fan picture Jack Fan · Aug 22, 2017 · Viewed 11.2k times · Source

I have problem with Android O HIDL. The failure log shows it can't find out the service.

However I can see it by adb shell ps -A | grep fingerprint

system       18758     1   17408   3276 pipe_wait  7c79e93e08 R [email protected]`

Could anyone give me a hint how to solve the problem? I checked https://source.android.com/devices/architecture/hidl/ but could not get the solution.

Error log:

08-21 06:00:35.864  1890  2264 V FingerprintService: mDeamon was null, reconnect to fingerprint
08-21 06:00:35.864  1890  2264 I system_server: Looking for service [email protected]::IBiometricsFingerprint/default
08-21 06:00:35.864  2240  2240 D wpa_supplicant: nl80211: Set mode ifindex 24 iftype 2 (STATION)
08-21 06:00:35.866   566   566 W /system/bin/hwservicemanager: getTransportFromManifest: Cannot find entry [email protected]::IBiometricsFingerprint in either framework or device manifest, using default transport.
08-21 06:00:35.866  1890  2264 E system_server: service [email protected]::IBiometricsFingerprint declares transport method EMPTY but framework expects hwbinder.
08-21 06:00:35.867  1890  2264 E FingerprintService: Failed to get biometric interface
08-21 06:00:35.867  1890  2264 E FingerprintService: android.os.RemoteException: HwBinder Error: (-2147483648)
08-21 06:00:35.867  1890  2264 E FingerprintService:    at android.os.HwBinder.getService(Native Method)
08-21 06:00:35.867  1890  2264 E FingerprintService:    at android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint.getService(IBiometricsFingerprint.java:44)
08-21 06:00:35.867  1890  2264 E FingerprintService:    at com.android.server.fingerprint.FingerprintService.getFingerprintDaemon(FingerprintService.java:239)
08-21 06:00:35.867  1890  2264 E FingerprintService:    at com.android.server.fingerprint.FingerprintService$FingerprintServiceWrapper.isHardwareDetected(FingerprintService.java:1198)
08-21 06:00:35.867  1890  2264 E FingerprintService:    at android.hardware.fingerprint.IFingerprintService$Stub.onTransact(IFingerprintService.java:156)
08-21 06:00:35.867  1890  2264 E FingerprintService:    at android.os.Binder.execTransact(Binder.java:674)
08-21 06:00:35.867  1890  2264 W FingerprintService: fingerprint HIDL not available

Answer

牟家宏 picture 牟家宏 · Jan 11, 2018

I've succeeded in running my fingerprint HAL on Android 8.1 executing on HiKey 96 board after modified files as below.

Firstly, it's necessary that adding HIDL configures to declare a device as a vendor or you would get VTS failed.

About HIDL configures
device/linaro/hikey/manifest.xml
+<hal format="hidl">
    <name>android.hardware.biometrics.fingerprint</name>
    <transport>hwbinder</transport>
    <version>2.1</version>
    <interface>
        <name>IBiometricsFingerprint</name>
        <instance>default</instance>
    </interface>
</hal>

Secondly, finger service will be started after you define it in the file below.

device/linaro/hikey/device-common.mk
+#init finger service and copy
 [email protected] to 
 system/vendor/etc/init
+PRODUCT_PACKAGES += \
    [email protected]
    +# copy permission file of finger service
+PRODUCT_COPY_FILES += \
    +frameworks/native/data/etc/android.hardware.fingerprint.xml:system/etc
    /permissions/android.hardware.fingerprint.xml

Finally, check finger service has been started and running in Android system by using terminal commands such as "adb shell" and "ps | grep finger".

Any suggestion is welcome.