Compare commits

..

432 Commits

Author SHA1 Message Date
1d8311df96 disable sms and voice because i'm building this for my wifi-only device 2022-06-23 16:00:25 +00:00
Pierre-Hugues HUSSON
e96c8929e0
Merge pull request #309 from AndyCGYan/logkit-11
Kill QCOM LogKit app
2022-05-17 12:37:56 +02:00
Andy CrossGate Yan
4865734e0d Kill QCOM LogKit app
Known to bootloop UMX U696CL, and is useless anyway

Change-Id: Ibc8ed1228e0c0b71825d889498f2b1b4ebd59fa6
2022-05-17 10:11:40 +00:00
Andy CrossGate Yan
e549a28273 Disable FP gestures for LG Stylo 7 5G
Change-Id: Ib1013963d41997e6ba5b6a645355beb8637d6f01
2021-12-03 13:31:50 +01:00
Pierre-Hugues Husson
7071ee8fbf Launch oplus-alert-slider only once, there is no need to restart it, and it would end up restarting forever on non-oplus device 2021-11-26 16:40:54 +01:00
Pierre-Hugues HUSSON
26d58a8562
Merge pull request #279 from Vgdn1942/patch-2
Use name instead device
2021-10-07 20:21:22 +02:00
Василий Ковалёв
f514e1c231
Use name instead device
On some devices, device and name use different values, which prevents the safetynet test from passing
2021-10-07 20:56:42 +03:00
Pierre-Hugues HUSSON
d0355b6dd5
Merge pull request #278 from notmyst33d/android-11.0
Fix screen recoder on Redmi Note 9
2021-09-04 22:25:59 +02:00
Myst33d
043a42433b Fix screen recoder on Redmi Note 9 2021-09-04 21:58:39 +06:00
Pierre-Hugues HUSSON
e02d5eeb46
Merge pull request #277 from DarkJoker360/11-willow-hax
Audio fixes for Redmi Note 8/8T + cleanup
2021-09-03 12:53:02 +02:00
DarkJoker360
29b13b352a Cleanup audio hacks for Redmi Note 8/8T
* Already done by previous audio hacks.

Signed-off-by: DarkJoker360 <simoespo159@gmail.com>
2021-09-03 12:49:32 +02:00
DarkJoker360
8f61607113 Enable audio fixes for Redmi Note 8T
Signed-off-by: DarkJoker360 <simoespo159@gmail.com>
2021-09-03 12:49:00 +02:00
Pierre-Hugues HUSSON
5c1dae99cf
Merge pull request #272 from DarkJoker360/cheryl-bt-11
Fix bluetooth on cheryl
2021-08-26 14:21:36 +02:00
DarkJoker360
d8d6d29f36 Fix bluetooth on cheryl
Signed-off-by: DarkJoker360 <simoespo159@gmail.com>
2021-08-26 13:48:14 +02:00
Pierre-Hugues HUSSON
dfd02ff557
Merge pull request #271 from notmyst33d/android-11.0
Fix UI lags on Redmi Note 9
2021-08-20 19:41:16 +02:00
Myst33d
81af8dbf47
Fix UI lags on Redmi Note 9
Tested on MIUI 12.5.1.0 vendor
2021-08-20 17:36:52 +06:00
Pierre-Hugues Husson
a76bab59db Forgot to request oplus alert slider code to be compiled 2021-08-11 11:09:13 +02:00
Pierre-Hugues Husson
642749e3a2 Add oppo-touchpanel for OnePlus Nord2 2021-08-10 19:09:11 -04:00
Pierre-Hugues Husson
c117a13dad Oplus fingerprint HAL needs to set some persist.vendor properties
On stock rom, those properties' SELinux context is set in /system
To prevent SELinux conflicts, just allow all vendor props
2021-08-10 17:23:50 -04:00
Pierre-Hugues Husson
2fc868bc4a New Oplus way to get project number 2021-08-10 17:23:42 -04:00
Pierre-Hugues Husson
2b6440d5ac Need to set selinux context for oplus hal too 2021-08-10 16:11:03 -04:00
Pierre-Hugues HUSSON
5beb9d0966
Merge pull request #270 from hwti/patch-2
Make phh-securize.sh work with current Magisk
2021-08-09 20:14:12 +02:00
Pierre-Hugues Husson
2d96bc5545 Add ugly support for OnePlus alert slider (tested on OP Nord2) 2021-08-09 19:50:29 +02:00
Loïc Yhuel
b0ddecfc39
Make phh-securize.sh work with current Magisk
Magisk 21.0 changed the mount path, we have to get it with "magisk --path" now.
This is used to get where the system partition is mounted.

The phh-su bind-mount is on /system/xbin/su, even with Magisk.
But we still have to unmount it, in order to remove the empty "su" file on the system partition.
2021-08-09 05:01:46 +02:00
Pierre-Hugues Husson
f0cac6df49 Add MTK IMS services 2021-08-08 21:37:14 +02:00
Pierre-Hugues Husson
17976104b2 Typo, fixup of 90fe6e4b, Thanks Sarthak 2021-08-08 20:22:34 +02:00
Pierre-Hugues Husson
90fe6e4b62 Include new OPPO Hal s/vendor.oppo/vendor.oplus/g 2021-08-08 20:15:33 +02:00
Pierre-Hugues HUSSON
1d31a4c127
Merge pull request #269 from FlokoROM-GSI/android-11.0-renoir
Fix sound for Xiaomi Mi 11 Lite 5G
2021-07-31 17:55:33 +02:00
AndroPlus
663cbedfee Fix sound for Xiaomi Mi 11 Lite 5G 2021-07-31 18:29:47 +09:00
Pierre-Hugues HUSSON
c9d731c0f1
Merge pull request #267 from bibarub/android-11.0
use 'a2dp' audio module instead of 'bluetooth_qti' when needed
2021-07-05 20:44:41 +02:00
bibarub
417839ab4a
use 'a2dp' audio module instead of 'bluetooth_qti' when needed 2021-07-05 21:39:10 +03:00
Pierre-Hugues Husson
e9d96cc60e Alternate audio policy for Samsung devicese 2021-06-07 13:43:33 -04:00
Pierre-Hugues Husson
0669df7523 When selecting alternate audio policy, check if we can grab the policy made for QSSI 2021-06-07 13:41:21 -04:00
Pierre-Hugues Husson
5e6061d5fd On ZF8, take stock rom audio policy, rather than the worse ones intended for GSI or QSSI 2021-06-07 12:47:49 -04:00
Pierre-Hugues Husson
2f79cf8662 Don't empty /vendor/etc/audio when very full, when prop is changed too 2021-06-07 12:33:35 -04:00
Pierre-Hugues Husson
475de0067d Some devices have a lot of stuff in /vendor/etc/audio, not just a CAF audio policy, like ZF8 has their whole vendor audio configuration there. Dont empty this dir in that case 2021-06-03 16:44:44 -04:00
Pierre-Hugues Husson
7a9ce0e848 Add support for treble app to control HCT touchscreen gestures HAL 2021-06-03 16:09:38 -04:00
Pierre-Hugues HUSSON
4f6b0d28a7
Merge pull request #264 from eremitein/treble-app-call
add treble app to the allow-in-power-save list
2021-05-30 23:00:52 +02:00
Victor Bo
2eb8896467 add treble app to the allow-in-power-save list 2021-05-30 16:57:31 -04:00
Pierre-Hugues HUSSON
438255bb25
Merge pull request #250 from sarthakroy2002/patch-1
Fix Brightness, FP and Headphone jack issue of Realme Narzo 20 and Re…
2021-05-13 10:07:09 +02:00
Sarthak Roy
d06e747b50
Fix Brightness, FP and Headphone jack issue of Realme Narzo 20 and Realme X7 Pro 5G 2021-05-13 12:16:42 +05:30
Pierre-Hugues HUSSON
e5c0da0939
Merge pull request #249 from R0rt1z2/patch-1
BQ Aquaris M10 HD fixes
2021-05-11 19:19:09 +02:00
Roger Ortiz
57d109cbf2 freezerhd: fix screen orientation 2021-05-11 20:01:31 +02:00
Roger Ortiz
3fbee899b6
freezerhd: ignore audio effects as well 2021-05-11 17:58:54 +01:00
Pierre-Hugues Husson
07e17110ca On some Oppo devices, we can NOT load firmware. Oppo engineers realized that and kept the line in rc script, but simply commented it out. so check this 2021-05-11 06:20:40 -04:00
Pierre-Hugues HUSSON
80281b21ab
Merge pull request #248 from TTTT555/patch-2
begonia: Drop deprecated props
2021-05-02 18:46:09 +02:00
TTTT555
815a378701
begonia: Drop deprecated props
* these fixes are not needed since A10/A11 vendor (and only cause errors)
2021-05-02 18:15:07 +02:00
Pierre-Hugues Husson
659278a853 Stop whitelisting Xiaomi devices manually. The kl name is pretty explicit about fingerprint sensor, we should be safe 2021-05-01 14:17:43 +02:00
Pierre-Hugues HUSSON
aef3ba2919
Merge pull request #246 from gsuzeda/patch-2
Update rw-system.sh
2021-04-30 10:11:56 +02:00
Uzeda
cebf48f92f
Update rw-system.sh 2021-04-30 03:50:36 -03:00
Pierre-Hugues Husson
8d45b8ea38 [teracube2e] Add support for dt2w 2021-04-16 13:27:41 +02:00
Pierre-Hugues HUSSON
24c3a48b98
Merge pull request #243 from 00p513-dev/android-11.0
Add amyROM makefile
2021-04-15 16:24:58 +02:00
Pierre-Hugues HUSSON
d02b16585a
Merge pull request #242 from KaMyKaSii/patch-1
Poco M3 fix fingerprint gesture
2021-04-09 20:20:15 +02:00
Pierre-Hugues HUSSON
9a7fdc991b
Merge pull request #244 from PeterCxy/patch-unihertz-keylayout
add keylayout for Unihertz devices
2021-04-08 21:47:19 +02:00
Peter Cai
aa0d782b8c add keylayout for Unihertz devices
* Unihertz devices have a dedicated PTT button, which I mapped to
  CAMERA, making it useful (kind of) by default and remappable via
  third-party apps.
* Additionally, declare capacitive buttons as VIRTUAL so that vibration
  is applied when they are pressed.
2021-04-08 20:21:57 +08:00
Amy Grace
e8d7cb9255 Add amyROM makefile 2021-04-07 09:17:24 +01:00
Pierre-Hugues Husson
91783c3bde Clean up ota.sh for better lifecycle (supports exclusively dynamic partitions) 2021-03-28 18:57:44 +02:00
Pierre-Hugues Husson
d9140dbd8d [lptools] partition was freed, thus name was zero-ed, leading to a partition with an empty name rather than expected dst name 2021-03-28 18:57:09 +02:00
Pierre-Hugues Husson
00d5b05ee9 Samsung has another path for alternate audio policy 2021-03-28 18:56:14 +02:00
Pierre-Hugues Husson
6d5747d010 Add a fake audio policy 2021-03-28 18:55:25 +02:00
Pierre-Hugues Husson
29480cdbb8 Declare all color modes available, they dont seem to depend much on hardware capabilities 2021-03-21 22:56:46 +01:00
Pierre-Hugues Husson
926613d464 [simg2img_simple] Abandon splice if it's too slow. 2021-03-20 21:55:07 +01:00
Pierre-Hugues Husson
abec25d226 Pump up lptools
- Add `free` command to know how big a partition can be created
- `create` command now properly return errors
- Add lptools_static, suitable for use from recovery
- Add clear-cow and unlimited-group to help expand current group's
  beyond original expectations
2021-03-20 19:59:15 +01:00
Pierre-Hugues Husson
29154150b0 Change brand name. This works around Samsung limitations on sensor hal 2021-03-20 19:59:15 +01:00
KaMyKaSii
dcbc76966a
Poco M3 fix fingerprint gesture 2021-03-19 15:49:08 -03:00
Pierre-Hugues HUSSON
03b1c9d3d8
Merge pull request #241 from notsyncing/android-11.0
NX669J: Use audio config from QSSI
2021-03-16 17:29:59 +01:00
notsyncing
d190d02990 NX669J: Use audio config from QSSI
AOSP doesn't care about QSSI, and it will always try to load from
/vendor/etc/audio/sku_{ro.boot.product.vendor.sku}, while the stock ROM
loads from /vendor/etc/audio/sku_{ro.boot.product.vendor.sku}_qssi.

This fixes speaker and headphone audio for Nubia Red Magic 6.
2021-03-16 19:40:45 +08:00
Pierre-Hugues Husson
2057f5d25a Disable fdsan for real. Setting it to 0 won't disable it, because setting it to 0 will set it to DEFAULT value, which is fatal in userdebug. So best we can do to disable it is to set it to warn_once. See bionic's android_fdsan_set_error_level_from_property 2021-03-11 16:26:52 +01:00
Pierre-Hugues Husson
04ee9f055e Remove wrongly included debugging stuff 2021-03-08 18:39:54 +01:00
Pierre-Hugues HUSSON
23baa924dc
Merge pull request #239 from VDavid003/android-11.0
Fix vendor hostapd detection for manifest fragments
2021-03-08 13:48:13 +01:00
VDavid003
a3f96351d7
Fix vendor hostapd detection for manifest fragments
This fixes tethering on phones that have hostapd defined in a manifest fragment
2021-03-08 13:32:33 +01:00
Pierre-Hugues HUSSON
f7e7a1607c
Merge pull request #238 from DarkJoker360/11-2btnnav
Build NavigationBarMode2ButtonOverlay
2021-03-06 11:13:57 +01:00
DarkJoker360
f8ff2ea2ad Build NavigationBarMode2ButtonOverlay
This got removed from PRODUCT_PACKAGES in frameworks/base, but it seems
like it still exists.

Change-Id: I8fe80c9c5a386ae1877f7c117ddc76ff366304a3
2021-03-06 09:33:22 +01:00
Pierre-Hugues HUSSON
d341ec23ff
Merge pull request #236 from sarthakroy2002/android-11.0
Fixed Bugs of Realme 7, Realme 6i(EU) and Realme Narzo 10
2021-03-05 15:51:16 +01:00
Sarthak Roy
6b93fc5f03
Fixed Bugs of Realme 7, Realme 6i(EU) and Realme Narzo 10 2021-03-05 19:19:56 +05:30
Pierre-Hugues Husson
a52cbb93d5 Revert "Fix not booting on A6+"
This reverts commit 33d1b1c196.
2021-03-05 14:34:49 +01:00
Pierre-Hugues Husson
b0b0b7cfe2 Revert "typo"
This reverts commit c1ef009983.
2021-03-05 14:34:35 +01:00
Pierre-Hugues Husson
c1ef009983 typo 2021-03-05 14:19:55 +01:00
Pierre-Hugues HUSSON
45a730c9c3
Merge pull request #235 from roynatech2544/android-11.0
Fix not booting on A6+
2021-03-04 08:59:28 +01:00
roynatech2544
33d1b1c196
Fix not booting on A6+ 2021-03-04 16:57:50 +09:00
Pierre-Hugues HUSSON
27d759a485
Merge pull request #233 from DarkJoker360/11-emui9-fp2
Address more Huawei fp denials
2021-03-01 10:22:02 +01:00
DarkJoker360
9e81647de7 Address more Huawei fp denials 2021-03-01 09:58:41 +01:00
Pierre-Hugues Husson
61d163657a Disable secondary watchdogs.
AOSP's watchdogd doesn't support multiple watchdogs.
This shouldn't be an issue, since AOSP GSI obviously doesn't support it
and AOSP GSI is part of certification.
HOWEVER, some people use modified kernel/vendors that may break such
assumptions. Anyway we can just disable it.

See https://github.com/phhusson/treble_experimentations/issues/1730#issuecomment-784222396
2021-02-23 15:00:54 +01:00
Pierre-Hugues Husson
b74ad8ea7e Rename all calls to resetprop to resetprop_phh to prevent conflict with Magisk, see d8056f8032 2021-02-22 10:04:28 +01:00
Pierre-Hugues HUSSON
f87c653336
Merge pull request #232 from eremitein/fixgms
fix gapps build
2021-02-16 08:33:44 +01:00
Victor Bo
1057669e03 fix gapps build
remove commit trash after
  b2eea56e6c

  FAILED:
  build/make/core/aapt2.mk:33: error: overriding commands for target
  `out/target/common/obj/APPS/SettingsProvider__auto_generated_rro_product_intermediates/flat-res/vendor/partner_gms/overlay/gms_overlay/frameworks/base/packages/SettingsProvider/res/values_defaults.arsc.flat',
  previously defined at build/make/core/aapt2.mk:27
  23:03:05 ckati failed with: exit status 1
2021-02-16 00:37:28 -05:00
Pierre-Hugues HUSSON
57bec6f2ca
Merge pull request #231 from eremitein/adb_selinux
Adb selinux
2021-02-15 19:00:33 +01:00
Victor Bo
d6aed01c48 sepolicy/init: fix adb in some cases
logs:
  02-06 17:28:44.560     1     1 I auditd  : type=1400
  audit(0.0:11): avc: denied { read } for comm="init"
  name="adbd" dev="mmcblk0p31" ino=11 scontext=u:r:init:s0
  tcontext=u:object_r:adbd_exec:s0 tclass=lnk_file permissive=0

  thanks HamiDo for hotfix
2021-02-15 12:54:48 -05:00
Victor Bo
19d8a296fa sepolicy/treble_app: add rule fix cam2api option
logs:
      17 00:47:48.796     1     1 W /system/bin/init: type=1107
      audit(0.0:357): uid=0 auid=4294967295 ses=4294967295
      subj=u:r:init:s0 msg='avc: denied { set } for
      property=persist.vendor.camera.eis.enable pid=4411 uid=1000
      gid=1000 scontext=u:r:system_app:s0
      tcontext=u:object_r:vendor_default_prop:s0 tclass=property_service
      permissive=0'

      01-17 00:47:48.796     1     1 W /system/bin/init: type=1107
      audit(0.0:356): uid=0 auid=4294967295 ses=4294967295
      subj=u:r:init:s0 msg='avc: denied { set } for
      property=persist.vendor.camera.HAL3.enabled pid=4411 uid=1000
      gid=1000 scontext=u:r:system_app:s0
      tcontext=u:object_r:vendor_default_prop:s0 tclass=property_service
      permissive=0'
2021-02-15 12:53:43 -05:00
Pierre-Hugues HUSSON
9868877f23
Merge pull request #229 from nitanmarcel/patch-1
Add Redmi/joyeuse to changeKeyLayout
2021-02-11 11:15:46 +01:00
Pierre-Hugues Husson
b2eea56e6c Include usb.host package feature. This shouldnt arm devices without actual hardware support 2021-02-09 16:01:58 +01:00
Nitan Alexandru Marcel
e936f0b83a
Add Redmi/joyeuse to changeKeyLayout
Fixes random touches on Redmi Note 9 Pro `joyeuse` when fingerprint is pressed
2021-02-09 12:36:12 +02:00
Pierre-Hugues Husson
7afda0d79f Fix build for s/google/partner_gms/ 2021-02-05 11:39:34 -05:00
Pierre-Hugues Husson
3d054e214d Add olive and angelica for Xiaomi fingerprint uinput blocklist 2021-02-02 22:04:42 +01:00
Pierre-Hugues Husson
9e6e2b6556 Mute console for everyone, not just secure usecase 2021-02-02 22:03:11 +01:00
Pierre-Hugues Husson
72c62260b9 Fix backlight on some Samsung devices
Some Samsung Q vendor devices have HWC rather than lights hal control.
In those cases, backlight is controlled through another SELinux context.
We used to correct this SELinux context for all devices, however this is
no longer needed, and actually breaks those devices.

So, change SELinux context, only if uid/gid is wrong
2021-01-30 22:59:23 +01:00
Pierre-Hugues HUSSON
c7438a5be6
Merge pull request #227 from kzubec/patch-2
Update rw-system.sh
2021-01-22 15:40:38 +01:00
kzubec
36881fc8a6
Update rw-system.sh 2021-01-22 16:45:55 +03:00
Pierre-Hugues HUSSON
09baacad99
Merge pull request #225 from DarkJoker360/11-emui9-fp
Address Huawei fingerprint denials
2021-01-22 10:53:15 +01:00
DarkJoker360
49a4d5ce06 Address Huawei fingerprint denials
* Fixes fingerprint enrollment issues on P vendor devices.
2021-01-22 10:46:46 +01:00
Pierre-Hugues Husson
43f324824a Fix video crashing on apps targetting Android 11, on some Mediatek devices (like Redmi 9) 2021-01-21 10:00:15 -05:00
Pierre-Hugues Husson
aae160672f Add a totally manual ADB, triggerable using /cache/phh-adb. This should help debugging early startup issues 2021-01-19 23:46:40 +01:00
Pierre-Hugues Husson
e444a5f575 Disable fdsan by default. This is already disabled by default on user build. Some HALs do not work properly with fdsan 2021-01-10 22:26:15 +01:00
Pierre-Hugues HUSSON
43f0b25585
Merge pull request #220 from JensBee/patch-1
Scan in /odm/etc/vintf for fingerprint sensor data
2021-01-08 13:12:49 +01:00
Pierre-Hugues Husson
0a0d3a10b2 Add persist.sys.phh.restart_ril to automatically restart MTK RIL. Also toggling it on will restart QC RIL 2020-12-29 20:27:25 +01:00
Jens Bertram
a853420626
Scan in /odm/etc/vintf for fingerprint sensor data
The manifest.xml for specifying the fingerprint sensor for the Fairphone 3 (SW-version 8901.3.A.0066.20201119) is located at /odm/etc/vintf/. This path is currently not scanned for manifest files. This proposed change includes this missing path an enables to use the fingerprint sensor on the FP3.
2020-12-17 21:55:49 +01:00
Pierre-Hugues HUSSON
e63e4d7cd9
Merge pull request #218 from PeterCxy/patch-qin-2-pro-sensors
rw-system: disable sensor direct report for Qin 2 Pro
2020-12-16 14:03:07 +01:00
Peter Cai
d93e046538 rw-system: disable sensor direct report on SPRD Pie vendor 2020-12-16 21:01:15 +08:00
Pierre-Hugues HUSSON
8e6f252902
Merge pull request #219 from PeterCxy/patch-sprd-ims
sepolicy: add spreadtrum IMS services
2020-12-16 13:47:48 +01:00
Peter Cai
70950fd8ee sepolicy: add spreadtrum IMS services 2020-12-16 19:42:09 +08:00
Pierre-Hugues HUSSON
93019de565
Merge pull request #216 from siddhrsh/patch-2
Added Realme C3 brightness& audio jack
2020-12-12 11:02:37 +01:00
Pierre-Hugues HUSSON
a19ac6062f
Merge pull request #215 from siddhrsh/patch-1
Realme C2 Headphones jack fix
2020-12-12 11:01:30 +01:00
Siddhesh Koyande
d07aa9e60c
Added Realme C3 brightness& audio jack 2020-12-12 10:49:49 +05:30
Siddhesh Koyande
c756d26c2b
Realme C2 Headphones jack fix 2020-12-12 08:27:23 +05:30
Pierre-Hugues Husson
8ff15241fd Disable root console on uart, and kernel logs on uart when secure 2020-12-11 14:51:01 +01:00
Pierre-Hugues Husson
843c0ec80a Add persist.sys.phh.backlight.scale to control brightness scale from treble app 2020-12-06 00:58:01 +01:00
Pierre-Hugues Husson
30071d0420 Use ext4 share duplicate blocks, it is sadly needed to attain acceptable partition size, because of duplication made by apexes 2020-12-05 22:21:06 +01:00
Pierre-Hugues Husson
5607a9be21 Use dev/input for jack detection on Realme C11 2020-11-30 11:00:38 +01:00
Pierre-Hugues Husson
f121aba763 Allow more blockdev --setrw 2020-11-30 11:00:38 +01:00
Pierre-Hugues Husson
30b84072fc Allow treble_app to set persist.vendor.vilte_support (to 0) 2020-11-29 09:36:05 -05:00
Pierre-Hugues Husson
147dca859c Realme C11 has same quirks for dt2w and brightness as previous Realme MTK devices 2020-11-29 08:08:50 -05:00
Pierre-Hugues Husson
3489a71cf2 Allow init to create system_file symlinks for A-only, see https://github.com/phhusson/treble_experimentations/issues/1553 2020-11-08 13:13:10 +01:00
Pierre-Hugues Husson
6ce1b9108d Galaxy S9 is stupid and still dont understand that android version/spl isnt relevant, so cheat android version/spl for them 2020-11-08 00:36:09 +01:00
Pierre-Hugues Husson
28b4d559a6 Set a property to find focaltech gesture node 2020-10-26 22:46:16 +01:00
Pierre-Hugues Husson
d1a638f4f8 Allow treble_app to access mediatek radio hal to detect it 2020-10-26 22:45:37 +01:00
Pierre-Hugues Husson
0ed42b1d02 Allow treble app to set more props 2020-10-25 21:11:27 +01:00
Pierre-Hugues Husson
018f36087d uevent cmd: allow filtering events 2020-10-25 21:11:27 +01:00
Pierre-Hugues Husson
1450230c31 Make rw-system debug easier, but just having to create /cache/phh-log (obviously works only if device has a cache partition), and having perms make it accessible from system app (treble app) 2020-10-25 21:11:27 +01:00
Pierre-Hugues HUSSON
1edc6980c7
Merge pull request #212 from tboy1991/android-11.0
Add redmi9 lancelot/galahad brightness and fingerprint fix
2020-10-18 21:41:07 +02:00
tboy1991
0b075d62bf Update rw-system.sh 2020-10-17 16:34:18 +02:00
Pierre-Hugues Husson
c67aa14ca5 Add android.software.controls to get controls in power long-press 2020-10-14 17:51:01 +02:00
tboy1991
dd952c5f1b Update rw-system.sh
Adds redmi9 lancelot/galahad brightness and fingerprint as enter fix
2020-10-13 18:48:21 +02:00
Pierre-Hugues Husson
2515e7d58a Fix CAF audio policy on non-boot 2020-10-13 17:19:48 +02:00
Pierre-Hugues Husson
ab62dcf481 On Allview V3 Viper, mnld (who handles GPS) crashes with double-mutex unlock. Fix this by forcing it to older SDK 2020-10-06 19:55:11 +02:00
Pierre-Hugues Husson
95bcf66d67 Some devices require their vendor mounted to /persist even if fstab says otherwise
See https://github.com/phhusson/treble_experimentations/issues/668
2020-10-05 22:13:44 +02:00
Pierre-Hugues HUSSON
bfa3c9b7dc
Merge pull request #207 from dev-harsh1998/android-11.0
treble: vndk: restart the surfaceflinger
2020-10-04 10:19:16 +02:00
Harshit Jain
dcf70913db
treble: vndk: restart the surfaceflinger
* not surfacecflinger
2020-10-04 12:30:36 +05:30
Pierre-Hugues Husson
78f5247606 Fix A2DP on some Qualcomm Q vendors by disable A2DP offload harder
Also there is a mismatch between framework which expects property to be
false/true and treble app setting it to 0/1
2020-10-02 20:04:12 +02:00
Pierre-Hugues Husson
7435a2a66e Mark fingerprint sensor as a secure biometric auth, so that fingerprint sensor can be used in apps 2020-10-02 11:56:34 +02:00
Pierre-Hugues Husson
7662a1675c Disable HWC presentOrValidate on vndk 26/27 2020-09-30 22:38:44 +02:00
Pierre-Hugues HUSSON
7f176889ee
Merge pull request #206 from SamarV-121/k
rw-system: Update extra vndk dir path
2020-09-30 11:57:22 +02:00
ѕαмαя νιѕρυтє
b79124f41b rw-system: Update extra vndk dir path
Signed-off-by: SamarV-121 <samarvispute121@gmail.com>
2020-09-30 09:55:09 +00:00
Pierre-Hugues Husson
41f0817f3f Up vendor minijail override, using vndk v28 minijail 2020-09-29 10:45:45 +02:00
Pierre-Hugues Husson
bbee56d39f ROG Phone III has an additional C2 in vendor. It requires updated seccomp policy 2020-09-27 20:12:39 +02:00
Pierre-Hugues Husson
c18b157a8d libsoftkeymasterdevice.so is a new path for vndk v26 2020-09-27 20:12:09 +02:00
Pierre-Hugues Husson
0ced2d3486 Fix dynamic ro.sf.lcd_density being ignored
On Qualcomm devices, ro.sf.lcd_density is set by a shell script in
/vendor, which will be called after surfaceflinger is started.
Thus surfaceflinger won't read any value, and will consider the default
value which is 213.

To fix this, restart surfaceflinger when ro.sf.lcd_density is changed.
2020-09-27 20:00:44 +02:00
Pierre-Hugues Husson
e08b947cc2 [twrp.sh] List usb controlers instead of fixing address 2020-09-27 19:58:40 +02:00
Pierre-Hugues Husson
6acd9f4763 Fix oppo-fp build 2020-09-27 19:57:46 +02:00
Pierre-Hugues Husson
510e08cefd Fix lptools build for Android 11 2020-09-27 19:57:32 +02:00
Pierre-Hugues Husson
5bcb2e09a8 Now an android.hardware.healthd is required. Include healthd which provides a backup implementation 2020-09-27 19:57:19 +02:00
Pierre-Hugues Husson
8bbe19ca57 Now overlays are done as RRO. DEVICE overlay will be in /vendor/overlay which we dont control. Change this to PRODUCT overlay so our overlay is taken into account 2020-09-27 19:56:20 +02:00
Pierre-Hugues Husson
1c3f1d6e4e in-tree VNDK integration is dead, it will be out-of-tree 2020-09-27 19:55:23 +02:00
Pierre-Hugues Husson
7c0c6c918c Disable EXT4 Share "feature" (this was already disabled in Android 10, but not on Android 11) 2020-09-11 10:33:49 +02:00
Pierre-Hugues Husson
0ce5feb194 This flag was added by mistake it's not needed (since it works on other targets) and prevents building Android 11 2020-09-11 10:33:20 +02:00
Pierre-Hugues Husson
6e496dafb0 Force privapp permissions thingy to "log". It s not like we care about this feature 2020-08-18 16:56:53 +02:00
Pierre-Hugues Husson
81c17b3aa3 Add Realme 6 for lcd brightness & fingerprint tricks 2020-08-13 15:51:42 +02:00
Pierre-Hugues Husson
6428935728 Fake Oppo engineer app instead of camera app, and force non-gsi Camera mode 2020-08-05 20:38:43 +02:00
Pierre-Hugues Husson
d26d561dba Add fingerprint gestures on zf6 2020-08-05 20:38:43 +02:00
Pierre-Hugues HUSSON
4d3d3b1c08
Merge pull request #200 from darkestDark/android-10.0
libminijail.so error, check only vndk to mount
2020-08-05 20:09:12 +02:00
darkestDark
9221314a7e
libminijail.so error
check for vndk only to mount
2020-08-05 20:04:01 +02:00
darkestDark
b88e2c8900
libminijail.so error
check for vndk only to mount
2020-08-05 20:02:24 +02:00
Pierre-Hugues HUSSON
016e9918fc
Merge pull request #197 from kjssad/add-d2tw-rmx1941
Add RMX1941 DT2W fix
2020-07-02 18:41:20 +02:00
kjssad
4134ef2653
Add RMX1941 DT2W fix 2020-07-02 16:28:48 +00:00
Pierre-Hugues HUSSON
edd1355309
Merge pull request #193 from DarkJoker360/android-10.0
Address charger denials on Huawei devices
2020-06-24 22:06:01 +02:00
Pierre-Hugues Husson
9800e43980 Some devices have mask_brightness with proper selinux, wrong perms... 2020-06-24 11:11:02 +02:00
Pierre-Hugues Husson
c0ff9f49f0 Yet another c2 broken device 2020-06-23 21:40:55 +02:00
DarkJoker360
4388860aed Address charger denials on Huawei devices
Thanks to phh and Hamido for the help
2020-06-23 16:45:08 +02:00
Pierre-Hugues Husson
d4ecf50aa0 Add libstagefright_foundation from vendor to vndk hack for Q vendors as well 2020-06-22 18:12:17 +02:00
Pierre-Hugues Husson
01390142b9 Autodetect best group, not everyone uses main 2020-06-21 00:21:52 +02:00
Pierre-Hugues Husson
97b340689d Add Redmagic 5G DT2Z KL 2020-06-20 20:11:04 +02:00
Pierre-Hugues Husson
46c5eb1273 Don't enable CPU feature runtime detection for everyone
Sadly CPUs impacted with needs_a53_835769_fix/needs_a53_843419_fix can't use runtime codepath
Enable CPU feature runtime detection on known-problematic CPUs
2020-06-20 00:31:29 +02:00
Pierre-Hugues Husson
9bff86b3a9 Enable ART automatic CPU feature detection. Also fix some devices using a wrong kryo name 2020-06-20 00:19:13 +02:00
Pierre-Hugues Husson
2e19ed17dc Try to fix a race condition where init.svc could /not/ be restarting at the time of checking 2020-06-18 20:24:21 +02:00
Pierre-Hugues Husson
0f3b53a395 Include "Google" app to fix "Hey, Google" 2020-06-18 19:59:12 +02:00
Pierre-Hugues Husson
0c42bbf8c4 Switch to SW keymaster on Moto One Macro, and enable devinputjack 2020-06-18 15:00:14 +02:00
Pierre-Hugues Husson
4943b6a93e Fix minijail issue on pie vendors 2020-06-17 16:34:17 +02:00
Pierre-Hugues Husson
51dc96a900 Another ccodec=0... 2020-06-17 13:36:50 +02:00
Pierre-Hugues Husson
282728cf70 Fix denial preventing Moto One Macro to boot, because init cant mount /mnt/product/persist 2020-06-17 13:36:15 +02:00
Pierre-Hugues Husson
33afc851c4 Yet another sick C2 MTK... 2020-06-11 18:02:21 +02:00
Pierre-Hugues HUSSON
e530d6a7e5
Merge pull request #191 from AndyCGYan/sepolicy-phhsu
Quick fixup
2020-06-11 16:19:47 +02:00
Andy CrossGate Yan
d357dec2d4 Quick fixup
Building is different from on-the-fly testing
2020-06-11 13:59:47 +00:00
Pierre-Hugues HUSSON
2c023e8446
Merge pull request #190 from AndyCGYan/sepolicy-phhsu
More rights
2020-06-11 15:39:09 +02:00
Andy CrossGate Yan
44fe1f36aa More rights
"Here's Sammy!"
2020-06-11 21:34:36 +08:00
Pierre-Hugues HUSSON
434e42303e
Merge pull request #189 from R-L-T-Y/android-10.0-picasso
xiaomi at it again! changes for redmi picasso
2020-06-09 09:02:22 +02:00
R-L-T-Y
bffd528e03
xiaomi at it again! changes for redmi picasso 2020-06-09 13:12:45 +08:00
Pierre-Hugues Husson
0666c17ef1 moto fp gestures for fpc 2020-06-08 18:51:33 +02:00
Pierre-Hugues Husson
179f0cf042 Give more headroom on arm_a 2020-06-07 13:21:02 +02:00
Pierre-Hugues Husson
32ca6fcb5f Some Pie vendor are also affected by minijail issue 2020-06-06 19:33:00 +02:00
Pierre-Hugues Husson
936ed40b56 Some Samsung dt2w use other key value 2020-06-06 19:33:00 +02:00
Pierre-Hugues Husson
2874f15cf2 Add capacitive back and recent keys for Samsung 2020-06-06 18:41:52 +02:00
Pierre-Hugues Husson
4bd26f7fc7 Some Samsung devices also have HOME as gpio key 2020-06-06 18:24:24 +02:00
Pierre-Hugues Husson
506be53b02 Add ota.sh to (try to) OTA 2020-06-06 18:12:37 +02:00
Pierre-Hugues Husson
545be46423 Allow phh-su to blockdev --setrw dm partitions to mount / read-write on logical partition devices 2020-06-06 13:13:25 +02:00
Pierre-Hugues Husson
2295229a28 Expose CAF resolution switching (tested on RazerPhone) 2020-06-05 20:34:22 +02:00
Pierre-Hugues Husson
66108419f9 Tell realme fingerprint dirver we are running unlocked bootloader 2020-06-05 17:43:52 +02:00
Pierre-Hugues Husson
65af98b518 Detect looping mediacodec earlier 2020-06-03 20:21:50 +02:00
Pierre-Hugues Husson
7576b8f0fe Fix mediacodec on vndk-27
Since android-10.0.0_r37, mediacodec seccomp policy now has two
includes. In AOSP 8.1, minijail is vendor-side.
AOSP 8.1's minijail has a bug, which can't read multiple includes.
All of this together means mediacodec is broken.

This fixes it by overriding vendor's minijail to a working one, in the
hope that vendors didn't change anything in their own minijail

https://issuetracker.google.com/issues/158068181
2020-06-03 16:52:59 +02:00
Pierre-Hugues Husson
5c712afafa Add FOD for Vsmart Live 2020-06-03 14:13:33 +02:00
Pierre-Hugues Husson
00b3c4399a Disable integration for gapps go too, to remove white screen in setup wizard 2020-06-03 12:31:07 +02:00
Pierre-Hugues Husson
ff835cbd53 Add motorola fingerprint navigation keymap for moto one action 2020-06-02 23:04:09 +02:00
Pierre-Hugues Husson
0359b91442 Add persist.sys.phh.vsmart.dt2w for vsmart double-tap-to-wake 2020-06-01 19:29:55 +02:00
Pierre-Hugues Husson
afb17027d2 Add a tablet SoC in ccodec 0 band 2020-05-30 16:38:56 +02:00
Pierre-Hugues Husson
34170ee087 vendor policy requires a _29_0 type to apply 2020-05-29 12:52:56 +02:00
Pierre-Hugues Husson
089d3c34ca Add netflix ID for Redmi Note 9S 2020-05-29 10:13:16 +02:00
Pierre-Hugues Husson
d917563900 Add smcinvoke dev type. Should fix widevine on Redmi Note 9S 2020-05-29 10:12:28 +02:00
Pierre-Hugues Husson
05b863b07a Add netflix id on Mi9, this gives 720p/1080p when securized 2020-05-28 11:44:25 +02:00
Pierre-Hugues Husson
de8d6e38d3 Add talkback (space has been freed by removing FilesGoogle) 2020-05-26 14:14:16 +02:00
Pierre-Hugues Husson
35f64c5260 Also remove FilesGoogle 2020-05-26 13:49:44 +02:00
Pierre-Hugues Husson
4aad458648 Remove gmsexpress-set overlay
gmsexpress enables com.android.theme.icon.squircle
we want circle by default
2020-05-25 14:10:37 +02:00
Pierre-Hugues Husson
9a6dacedfc Curtana is redmi, no longer xiaomi 2020-05-25 13:45:22 +02:00
Pierre-Hugues Husson
05b0386382 <2GB arm64_ab gapps system 2020-05-24 22:07:19 +02:00
Pierre-Hugues Husson
1d86604109 Curtana is just as broken as other Xiaomi devices 2020-05-24 20:18:20 +02:00
Pierre-Hugues Husson
874d0d8b47 Disable GMS demo SetupWizard integration because it is broken
It references com.android.setupwizard.FLOW_CHOICE, which is no longer
supported by the SetupWizard
2020-05-24 20:12:23 +02:00
Pierre-Hugues Husson
5a29d9607e Alternate audio profile was broken?!? 2020-05-24 20:03:14 +02:00
Pierre-Hugues Husson
9f53b904c5 Force bluetooth library to be AOSP's
Some vendors set ro.bluetooth.library_name.
This shouldn't matter because GSIs targetting Pie ignore those
properties from vendor.
Sadly we're targetting Oreo, so vendor can set it.

https://github.com/AndroidDumps/redmi_curtana_dump/blob/qssi-user-10-QKQ1.191215.002-V11.0.4.0.QJWINXM-release-keys/system/system/build.prop#L167
https://github.com/AndroidDumps/redmi_curtana_dump/blob/qssi-user-10-QKQ1.191215.002-V11.0.4.0.QJWINXM-release-keys/vendor/build.prop#L103
2020-05-24 19:26:19 +02:00
Pierre-Hugues Husson
7a830b3d3e gmsexpress-based gapps-go. arm64_ab fits in 2GB. arm_a doesn't fit on Redmi Go though 2020-05-24 19:26:19 +02:00
Pierre-Hugues Husson
bcb48d0ba8 arm a is even tighter, so give only 8MB headroom 2020-05-24 19:26:19 +02:00
Pierre-Hugues HUSSON
46b853461c
Merge pull request #182 from fourofspades/Issue_#1141_TabletMode
Added shell script to remove telephony.
2020-05-23 11:47:41 +02:00
Pierre-Hugues Husson
258e730ad7 Reduce reversed size from 64MB to 32MB 2020-05-21 17:12:38 +02:00
Pierre-Hugues Husson
3d84e3da97 Also set chmod/chown for fod samsung files 2020-05-21 17:12:38 +02:00
Pierre-Hugues HUSSON
41af81fe4f
Merge pull request #188 from siddhrsh/patch-4
Update rw-system.sh
2020-05-20 21:44:12 +02:00
siddhrsh
ff01f63493
Update rw-system.sh
Added realme c2 brightness and navigation command
2020-05-21 01:10:03 +05:30
Pierre-Hugues Husson
1f6fcb7322 Fix various FOD-related props and files SELinux permission 2020-05-20 19:59:45 +02:00
Pierre-Hugues HUSSON
edc584e3c3
Merge pull request #187 from timbortnik/disable-storageproxyd
disable-storageproxyd
2020-05-19 09:57:12 +02:00
Tim Bortnik
4f7be9c2b5 disable-storageproxyd 2020-05-19 00:02:05 +03:00
Pierre-Hugues Husson
deb3e53411 Add a CLI tool to dump list of cameras on Samsung Q vendor 2020-05-14 19:35:29 +02:00
Pierre-Hugues Husson
cfe638aa94 Some devices have multiple panels, including some with 0 brightness. Take the one with the highest brightness 2020-05-14 18:31:37 +02:00
Pierre-Hugues Husson
b3a5ea6275 Update Samsung HBM to use max brightnmess 2020-05-14 15:47:15 +02:00
Pierre-Hugues HUSSON
e9afb88256
Merge pull request #186 from EugW/android-10.0
Fix havoc mk
2020-05-14 15:29:42 +02:00
EugW
89dfb3226b Fix havoc mk 2020-05-14 16:52:26 +05:00
Pierre-Hugues HUSSON
61899854d4
Merge pull request #184 from ponces/android-10.0
Fix exynos grep command to apply setprop correctly
2020-05-14 12:44:46 +02:00
Alberto Ponces
ef30da0aae Simplify the exynos grep command even further and remove some whitespace 2020-05-14 11:41:08 +01:00
Pierre-Hugues Husson
4f718dfef2 Add Samsung HBM FOD default value 2020-05-14 11:00:04 +02:00
Alberto Ponces
d6da9f1fec Fix exynos grep command to apply setprop correctly 2020-05-13 18:00:23 +01:00
Pierre-Hugues Husson
167c3bb4c1 Add /efs, needed on Galaxy A51 for fingerprint sensor calibration 2020-05-13 13:10:53 +02:00
Pierre-Hugues Husson
67bbd94780 [securize] Take the most recent between ro.vendor and ro.keymaster SPL, because vendor could be correct like -05 2020-05-13 10:13:51 +02:00
Pierre-Hugues Husson
fd46dfb49a [su] Give more right to control dynamic partitions 2020-05-13 10:03:26 +02:00
Pierre-Hugues Husson
06badf2f7b Unforce root adb
On Samsung Galaxy A51, adb is forced as root by system in init.recovery...rc
However adb doesn't work as root on Samsung devices, so unset this to have working adb
2020-05-13 10:03:26 +02:00
Pierre-Hugues HUSSON
88003acb57
Merge pull request #183 from hwti/patch-1
Fix phh-securize.sh with Magisk modules
2020-05-10 12:53:02 +02:00
Loïc Yhuel
7698971538
Fix phh-securize.sh with Magisk modules
With Magisk, depending on enabled modules, directories like /system/xbin, /system/app and others could be tmpfs,
with /system/xbin/su and /system/app/me.phh.superuser being bind-mounts.

So we should try to operate on the real system partition.
2020-05-10 01:20:02 +02:00
Pierre-Hugues Husson
e3af52cfdf Include lptools in build 2020-05-09 20:02:48 +02:00
Pierre-Hugues Husson
186496633e Add lptools to modify dynamic partitions 2020-05-09 14:24:38 +02:00
Pierre-Hugues Husson
c85213c6f1 [simg2img_simple] Don't break when splice doesn't work (over adb for instance) 2020-05-09 14:03:36 +02:00
Mark Gillespie
81f673e8e3 Remove Telephony
https://github.com/phhusson/treble_experimentations/issues/1141
2020-05-08 19:38:03 +01:00
Pierre-Hugues HUSSON
22c1395462
Merge pull request #180 from eremitein/keylayout
rw-system: add 'daisy' stock keylayout files
2020-05-06 11:50:52 +02:00
Victor Bo
13a9b1e26d rw-system: add 'daisy' stock keylayout files
1-2. because gestures not works (exist in some gsi, same as stock -
swipe for notifications)
3. daisy-buttonJack.kl need for headphones volume control by headphones' buttons

	modified:   base.mk
	new file:   files/daisy-buttonJack.kl
	new file:   files/daisy-uinput-fpc.kl
	new file:   files/daisy-uinput-goodix.kl
	modified:   rw-system.sh
2020-05-04 23:44:20 +03:00
Pierre-Hugues Husson
0ae6b5b05c Add properties to use vendor audio policy, and to disable audio effects 2020-05-03 18:05:30 +02:00
Pierre-Hugues Husson
bad4131180 Add property to use CAF vendor media_profiles
This is controlled through persist.sys.phh.caf.media_profile
system_server loads this file, so it requires a reboot to apply
2020-05-03 18:01:40 +02:00
Pierre-Hugues Husson
80b949241d We also want telephony.ims 2020-04-28 17:34:06 +02:00
Pierre-Hugues Husson
3371719f20 [Xiaomi DT2W] Call sendevent on any touchscreen
On Redmi Go, there is no gesture_mask or wake_gesture,
no /proc/touchpanel/wakeup_gesture, no /proc/tp_wakeup_gesture, no /proc/tp_gesture
However sendevent works.
FWIW it does have /proc/gesture/onoff, and /proc/gesture/data
2020-04-28 16:55:40 +02:00
Pierre-Hugues Husson
62dcebdd7f Don't use exec_background, it doesnt exist in a-only oreo devices. Not being background is okay here 2020-04-28 16:55:40 +02:00
Pierre-Hugues Husson
cd327cc850 More props and files to override to fake real firmware for camera 2020-04-28 16:55:40 +02:00
Pierre-Hugues Husson
091c225863 Fix flashlight on S10 lite
Thanks @mainey
2020-04-25 20:10:25 +02:00
Pierre-Hugues Husson
53df615cca More phhsu perms 2020-04-14 09:50:38 +02:00
Pierre-Hugues Husson
705afa376d McTeeKeymaster is actually in vendor/lib/hw/ not vendor/lib 2020-04-14 09:50:38 +02:00
Pierre-Hugues Husson
6f2d3e5d29 Never forget access to ourselves 2020-04-14 09:50:38 +02:00
Pierre-Hugues Husson
72992a82fd Try another way to remount /system r/w 2020-04-14 09:50:38 +02:00
Pierre-Hugues Husson
9fe8e103e9 Use media_profiles_vendor on Razer Phone to enable 4k video recording 2020-04-13 20:25:57 +02:00
Pierre-Hugues Husson
c4a41337e2 Allow 10 users/work profiles 2020-04-13 20:13:16 +02:00
Pierre-Hugues HUSSON
001f229374
Merge pull request #177 from theimpulson/android-10.0
rw-system: Enforce vendor media_profiles on PL2
2020-04-13 20:12:53 +02:00
theimpulson
7db3ec75c4 rw-system: Enforce vendor media_profiles on PL2
*This fixes https://github.com/phhusson/treble_experimentations/issues/379

Signed-off-by: theimpulson <aayushgupta219@gmail.com>
2020-04-13 18:10:55 +00:00
Pierre-Hugues HUSSON
2f8d5331a2
Merge pull request #176 from myst33d/android-10.0
Fix long boot on Oreo vendor for Redmi 6A and Redmi 6
2020-04-10 22:18:08 +02:00
Myst33d #RoccoIsCute
0a96913225
Fix long boot on Oreo vendor for Redmi 6A and Redmi 6 2020-04-10 23:17:52 +06:00
Pierre-Hugues Husson
cfaa261e2c Include vr_hwc. This will make for better VR experience, and fixes compatibility warning on huawei devices 2020-04-05 14:00:25 +02:00
Pierre-Hugues Husson
52c2673998 Include oneplus motor command 2020-04-05 13:42:46 +02:00
Pierre-Hugues HUSSON
e950266b69
Merge pull request #174 from irfanfadilah/andromeda/fingerprint-fix
[Mi Mix 3 5G/andromeda] Fix Fingerprint Issue
2020-04-05 11:32:38 +02:00
Pierre-Hugues HUSSON
1dfec7b9a9
Merge pull request #175 from irfanfadilah/andromeda/audio-fix
[Mi Mix 3 5G/andromeda] Fix Audio Issue
2020-04-05 11:32:01 +02:00
Irfan Fadilah
c6f89d9340
Fix Andromeda Audio Issue
Set `ro.audio.ignore_effects` to `true` for `xiaomi/andromeda`.

Tested on my device by adding it to the `build.prop`.

Ref: https://forum.xda-developers.com/showpost.php?p=82126487&postcount=697
2020-04-05 11:38:51 +07:00
Irfan Fadilah
eb50f7592d
Fix Andromeda Fingerprint Issue
Add `uinput-goodix.kl` and `uinput-fpc.kl` to `xiaomi/andromeda`.

Tested on my device by putting both files under `/system/usr/keylayout`.

Ref: https://forum.xda-developers.com/showpost.php?p=82179105&postcount=731
2020-04-05 11:30:36 +07:00
Pierre-Hugues Husson
09a49059a9 Enable navbar by default 2020-04-05 01:40:25 +02:00
Pierre-Hugues Husson
a8c3c6124b Add persist.sys.phh.no_vendor_overlay property to ignore vendor overlay 2020-04-05 00:55:24 +02:00
Pierre-Hugues Husson
11a2fd96cc Some devices have broken tsp permissions, even without ear_detect_enable 2020-04-05 00:05:12 +02:00
Pierre-Hugues Husson
01c61a68bb Disable Samsung malwares preinstalled in /odm partition 2020-04-04 23:57:10 +02:00
Pierre-Hugues HUSSON
64cb608f45
Merge pull request #172 from jumper047/patch-4
Sound fix #2 for Redmi Note 8 Pro
2020-04-03 09:13:05 +02:00
jumper047
aea333e6b8
Sound fix #2 for Redmi Note 8 Pro
Miss in previous pull request
2020-04-03 02:50:41 +03:00
Pierre-Hugues HUSSON
4ab8565096
Merge pull request #171 from jumper047/patch-3
Fix "no sound" issue for Redmi Note 8 Pro
2020-04-02 21:19:23 +02:00
jumper047
ff0e381d51
Fix "no sound" issue for Redmi Note 8 Pro 2020-04-02 22:04:43 +03:00
Pierre-Hugues Husson
4bc2f864df Fix pm install through a file provided by su
See https://github.com/phhusson/treble_experimentations/issues/1214
2020-03-30 23:50:57 +02:00
Pierre-Hugues HUSSON
3199a5e850
Merge pull request #168 from AndyCGYan/huaweiare-ilight
Changes to lightsctl-huawei tool
2020-03-30 13:06:12 +02:00
Andy CrossGate Yan
4e2fcbe38d Changes to lightsctl-huawei tool
For https://github.com/phhusson/treble_experimentations/issues/1204

Change-Id: I70655264003190de6c8624e9f63bfea75a09cf61
2020-03-30 18:45:53 +08:00
Pierre-Hugues HUSSON
9e60c42682
Merge pull request #167 from cheah/fix-comparison
Fix value comparison in phh-prop-handler.sh
2020-03-26 16:50:44 +01:00
Michael Cheah
740000e786
Fix value comparison in phh-prop-handler.sh 2020-03-26 23:30:57 +08:00
Pierre-Hugues HUSSON
1f1c9b1d0d
Merge pull request #166 from cheah/refactor-oppo-props
Move Oppo props into phh-prop-handler.sh
2020-03-26 15:49:48 +01:00
Michael Cheah
1db7e1e1fe
Move Oppo props into phh-prop-handler.sh 2020-03-26 22:41:24 +08:00
Pierre-Hugues Husson
f7981ef123 Yet another broken sw codec2 2020-03-26 11:45:56 +01:00
Pierre-Hugues HUSSON
eeaa31fdd5
Merge pull request #146 from cheah/fix-xiaomi-dt2w-ten
[Android 10] [xiaomi] Use persist.sys.phh.xiaomi.dt2w prop to control DT2W
2020-03-26 09:46:26 +01:00
Michael Cheah
510e1c01d9
[xiaomi] Use persist.sys.phh.xiaomi.dt2w prop to control DT2W 2020-03-26 09:44:58 +08:00
Pierre-Hugues HUSSON
00eefaa01e
Merge pull request #165 from Tuan9304/android-10.0
Fix Brightness Realme C1
2020-03-22 12:10:00 +01:00
Tuan9304
c268d86c30 Move to right line 2020-03-22 17:43:28 +07:00
Tuan9304
79462b1c64 Fix Brightness Realme C1 2020-03-22 13:13:54 +07:00
Pierre-Hugues HUSSON
93335b6e59
Merge pull request #164 from Dunedan/reenable-multi-user
Re-enable multi user for all devices
2020-03-19 21:21:08 +01:00
Daniel Roschka
29ce153a16
Re-enable multi user for all devices
This commit re-enables multiple users for all devices. That's possible
as the system image is too large for Android Go nowadays anyway,
therefore no Android Go builds are available anymore.

This commit also increases the maximum number of users from 4 to 5 as
that's what several hardware already overlays set.
2020-03-19 21:02:42 +01:00
Pierre-Hugues Husson
f620ffc0a8 Some CPH devices have two matches. Take first one 2020-03-19 15:21:01 +01:00
Pierre-Hugues Husson
b07cbb9e07 Disable annoying strict mode by default 2020-03-19 15:21:01 +01:00
Pierre-Hugues HUSSON
f6c5cd7e9a
Merge pull request #163 from Dunedan/show-cell-broadcast-app-links
Enable links to cell broadcast app
2020-03-15 22:44:07 +01:00
Daniel Roschka
66a9c57853
Enable links to cell broadcast app
This enables links from the settings to the cell broadcast app for
configuring the behavior for received cell broadcasts.

While most hardware overlays already enabled this setting, it's nothing
hardware related, so it makes sense to set here globally for any device.

I'll also open a PR in `vendor_hardware_overlay` to remove the setting
from all overlays there.
2020-03-15 21:19:52 +01:00
Pierre-Hugues Husson
e83a8c3726 Ignore audio efects on all moto 2020-03-15 13:28:59 +01:00
Pierre-Hugues HUSSON
d467acb307
Merge pull request #159 from Dunedan/disable-audio-effects-for-moto-g7play
Disable audio effects for Motorola Moto G7 Play
2020-03-15 13:26:26 +01:00
Pierre-Hugues Husson
47ad176aa5 Fix build on arm32 target 2020-03-14 13:58:02 +01:00
Pierre-Hugues HUSSON
00016d4320
Merge pull request #162 from mrgreywater/android-10.0
fix brightness flickering for Lenovo Z5s
2020-03-13 17:56:51 +01:00
mrgreywater
c591f08a11 fix brightness flickering for Lenovo Z5s 2020-03-13 17:15:34 +01:00
Pierre-Hugues HUSSON
b060013c57
Merge pull request #161 from mrgreywater/android-10.0
Fix dt2w for Lenovo Z5s
2020-03-13 16:36:09 +01:00
mrgreywater
9e58131492 fix dt2w for Lenovo Z5s 2020-03-13 16:23:57 +01:00
Pierre-Hugues Husson
00e24bf520 Another broken Codec 2
See https://github.com/phhusson/treble_experimentations/issues/1104
2020-03-12 16:54:44 +01:00
Pierre-Hugues Husson
827a578eec Some old mediatek devices require to disable Codec2 sw decoding 2020-03-11 17:28:09 +01:00
Pierre-Hugues Husson
cca9f3c06b Add int parameter to xiaomi-display-feature 2020-03-11 13:57:17 +01:00
Pierre-Hugues Husson
bfa94e3fd7 Use a FLOSS gallery instead of google photos 2020-03-11 13:57:17 +01:00
Pierre-Hugues HUSSON
4f527e92f6
Merge pull request #160 from tinloaf/fix-fingerprint
Fix fingerprint
2020-03-11 11:44:33 +01:00
Pierre-Hugues Husson
a3280e50f1 [Realme U1] Fix keymaster, touchpanel and fingerprint 2020-03-10 23:26:20 +01:00
Pierre-Hugues Husson
0031326e7d Add Oppo fingerprint support, tested on Realme X2 Pro 2020-03-10 23:26:03 +01:00
Lukas Barth
93ce496efc Simplify mount check 2020-03-10 15:28:32 +01:00
Lukas Barth
494da1a8dc Fix missing /data/sec_storage_data 2020-03-10 13:09:09 +01:00
Daniel Roschka
962529890f
Disable audio effects for Motorola Moto G7 Play
This disables audio effects for the Motorola Moto G7 Play (channel) as
enabled audio effects break audio via Bluetooth.

It requires a separate if-statement in `rw-system.sh`, because
`ro.vendor.build.fingerprint` isn't set for the device.

Relates to: https://github.com/phhusson/treble_experimentations/issues/857
2020-03-07 21:16:05 +01:00
Pierre-Hugues Husson
8f96ae3423 Set ro.separate.phone on realme devices. That is another model number, that is used like by fingerprint HAL to define the position of the Facola. Also trigger the audio speaker init for Realme U1 2020-03-06 18:41:32 +01:00
Lukas Barth
51be51649b Fix mounts and permissions for sec_storage on Kirin devices 2020-03-04 16:10:28 +01:00
Pierre-Hugues Husson
04583fa95a Stop whitelisting all oppo devices in the world, and regexp it 2020-03-03 00:58:55 +01:00
Pierre-Hugues Husson
552f710be1 Add persist.sys.phh.oppo.usbotg to toggle usb otg on Oppo/Realme devices 2020-03-01 18:17:18 +01:00
Pierre-Hugues HUSSON
96a1827f2c
Merge pull request #158 from buddi56/android-10.0
Added CPH1859 and CPH1861 for DT2W and Brightness fixes
2020-03-01 17:31:25 +01:00
buddi56
1fb4bcbad6
Fixed mistake 2020-02-29 21:38:16 +05:30
Naveen Kumar
3d3450c5da Adding Brightness and DT2W fix to CPH1859 and CPH1961 2020-02-29 21:33:28 +05:30
Pierre-Hugues Husson
1e340140bf On Realme devices, trick HAL into exposing all cameras 2020-02-29 16:56:52 +01:00
Naveen Kumar
dda3824e84 Added CPH1859 and CPH1861 for DT2W and Brightness fixes 2020-02-29 18:05:24 +05:30
Pierre-Hugues Husson
3cf77c937c Add google fingerprint gestures kl 2020-02-27 14:46:38 +01:00
Pierre-Hugues Husson
b914331829 Include phh-remotectl system for remote takeover 2020-02-26 23:59:11 +01:00
Pierre-Hugues Husson
2c385ffbe9 Detect other oppo device, realme 1 2020-02-26 15:29:23 +01:00
Pierre-Hugues HUSSON
6f3bf7ffd1
Merge pull request #157 from timbortnik/securize-basicintegrity
Securize basicintegrity
2020-02-23 23:55:50 +01:00
Tim Bortnik
f3d3cb40d4 help-pass-basicintegrity-after-securize 2020-02-23 21:12:17 +02:00
Tim Bortnik
d72a25793e
Merge pull request #1 from phhusson/android-10.0
Android 10.0 pull from phh
2020-02-23 21:10:21 +02:00
Pierre-Hugues HUSSON
dd21e100b2
Merge pull request #152 from jumper047/android-10.0
[Android 10][Begonia] Fix brightness and fingerprint sensor on Redmi Note 8 Pro
2020-02-22 14:54:48 +01:00
Pierre-Hugues Husson
17a2cc66f3 Add props to control Oppo touchpanel
This is needed because /proc/touchpanel is u:object_r:proc:s0
We can't have our own genfscon on it, because we might hit conflicts
2020-02-21 18:02:41 +01:00
Pierre-Hugues Husson
62f63e975d Include realme rmx1931 detection, set specific kl for dt2w in that case 2020-02-21 16:35:07 +01:00
Pierre-Hugues HUSSON
22df6a9302
Merge pull request #156 from DanijelXDA/patch-1
Fix distorted audio bug on GSI images for ginkgo and willow
2020-02-20 22:06:27 +01:00
Danijel Jovanović
e0d0c7ae32
Fix distorted audio bug on GSI images for ginkgo and willow 2020-02-20 21:57:00 +01:00
jumper047
98b219ba1b Fix fingerprint behavior 2020-02-20 21:22:39 +03:00
jumper047
f1757adf2e Simplify begonia regexp 2020-02-20 21:21:45 +03:00
Pierre-Hugues HUSSON
0ba57d9364
Disable libpdx_default_transport unconditionally
Because of new VNDK restrictions of Android 10, there is no way that a /vendor/lib/libpdx_default_transport.so work in any way
2020-02-20 18:15:38 +01:00
Myst33d
caa9ad2e3b
Disable libpdx_default_transport uncoditionally 2020-02-20 22:28:35 +06:00
Myst33d
c198bdb1b6
Fix camera for cactus and cereus 2020-02-20 22:19:11 +06:00
Pierre-Hugues HUSSON
7f566c1c24
Merge pull request #154 from myst33d/android-10.0
Fix distorted sound for cactus and cereus
2020-02-20 14:43:39 +01:00
Myst33d
a35833ed12
Fix distorted sound for cactus and cereus 2020-02-20 19:39:40 +06:00
jumper047
e64d63c5e9
Fix begonia regexp 2020-02-20 07:50:02 +03:00
jumper047
da2e7c8937
Fix brightness on Redmi Note 8 Pro 2020-02-19 22:54:17 +03:00
Pierre-Hugues HUSSON
1966aaaa9e
Merge pull request #149 from SamarV-121/patch-1
Enable latch_unsignaled on exynos devices
2020-02-19 14:28:43 +01:00
Sᴀᴍᴀʀ Vɪꜱᴘᴜᴛᴇ
7b8beb01ed
Enable latch_unsignaled on exynos devices
ro.hardware=exynos* on some samsung devices
eg. Samsung Galaxy M20
2020-02-19 18:20:20 +05:30
Mehran Kholdi
da0775f9ee Add Redmi 7 - onc(lite) to fingerprint input events blacklist 2020-01-21 22:59:36 +01:00
Peter Cai
3bc733f431 rw-system: disable hardware acceleration in system_server for SPRD devices
* For some reason, the OpenGL implementation on SPRD devices causes
  crashes in system_server on glFinish() due to double-free of mutexes.
  It is not the same case with the MTK skia compatibility bug, because
  this one produces no GL errors, only the final mutex-related crash.
* This crash is only observed in system_server by far. In other
  hardware-accelerated applications, after a lot of tinkering, I could
  not reproduce the same problem. (Even if they somehow do crash, it
  won't bring the entire system down like `system_server`.)
* Since all SPRD devices do not have "high-end gfx", it is reasonable
  to set this `ro.config.avoid_gfx_accel` flag. This will disable the
  use of hardware gfx in system_server, avoiding the crash. Most SPRD
  devices comes with Android Go by default, which has this flag set
  (implied by `ro.config.low_ram`) anyway.
* All devices having the `sprd-adf` module is an SPRD device launched
  with Android 9 or earlier. ADF is deprecated in Android 10 or higher.
2020-01-20 09:25:41 +01:00
Pierre-Hugues HUSSON
7edfd64f30
Merge pull request #145 from cheah/add-flag-for-old-mnc-format
Set persist.sys.phh.radio.use_old_mnc_format for polaris and whyred
2020-01-16 23:34:05 +01:00
washinson
21cbb9b4c4 Fix dualsim for some Huawei phones (#143)
* Fix dualsim for some Huawei phones

Huawei P20 Lite doesn't have /odm/phone.prop, we must use /vendor/phone.prop
2020-01-14 10:40:43 +01:00
Michael Cheah
a406582117
Set persist.sys.phh.radio.use_old_mnc_format for polaris and whyred 2020-01-11 19:36:06 +08:00
Pierre-Hugues HUSSON
2a42bd0ed2
Merge pull request #141 from eremitein/android-10.0
[daisy] revert camera in DnD fix
2020-01-07 20:57:50 +01:00
Pierre-Hugues Husson
54e5742154 Fix typo, see MR 137 2020-01-07 19:26:09 +01:00
Victor Bo
89c0602a99 rw-system: set latch_unsignaled for 'daisy' too
modified:   rw-system.sh
2020-01-07 06:20:38 +05:00
Victor Bo
26416f43df [daisy] revert camera in DnD fix
* camera works fine in DnD mode without this fix in v204 and in v121 too
    not need this fix for daisy anymore

	modified:   rw-system.sh
2020-01-07 06:12:30 +05:00
Pierre-Hugues HUSSON
bf3df8faaa
Merge pull request #140 from PeterCxy/patch-sprd-adf
fix adf display devices on Spreadtrum devices for Android 10
2020-01-02 16:24:21 +01:00
Peter Cai
7e0e808d09
fix adf display devices on Spreadtrum devices for Android 10
* Somehow, when running GSI 10, Spreadtrum's adf driver do not show up
  with the correct name in /dev. I am not sure how this happens, but it
  seemed that a few `mknod`s fixed the problem. This was tested on
  Xiaomi Qin 2 Pro.
2020-01-02 09:44:18 +08:00
Pierre-Hugues HUSSON
ae1bda5715
Merge pull request #137 from J0SH1X/patch-1
Fix Redmi 8 brightness scale
2019-12-24 21:57:20 +01:00
J0SH1X
666cc1ce4b
Fix Redmi 8 brightness scale 2019-12-24 20:52:47 +01:00
Pierre-Hugues HUSSON
18b20430fb
Merge pull request #135 from lead4good/android-10.0
fix: mia3 brightness scale
2019-12-22 15:32:51 +01:00
lead4good
4a58bf9c70 fix: mia3 brightness scale 2019-12-22 11:55:41 +01:00
Pierre-Hugues Husson
1cba9701de Add lightsctl-seh for new light control hal of samsung 2019-12-16 21:01:24 +01:00
Pierre-Hugues HUSSON
33e906838c
Merge pull request #133 from XavierWrz/patch-2
Fix for broken OpenGL ES on old Snapdragon devices
2019-12-13 18:16:45 +01:00
Pierre-Hugues Husson
1cb1975ec1 Test cmd for vendor.goodix.extend.service 2019-12-13 10:08:16 +01:00
Whatz
0d78085110
Possible fix for OpenGL bug
Working in moto e5, please feedback
2019-12-10 13:17:16 -03:00
Pierre-Hugues HUSSON
67154089dd
Merge pull request #132 from lead4good/android-10.0
fix: add sound support for xiaomi a3
2019-12-09 08:50:16 +01:00
Frieder Paape
18d605c436
fix: add sound support for xiaomi a3 2019-12-09 08:43:16 +01:00
Pierre-Hugues Husson
ae85f36fcb Add support for Huawei's phone.prop
Reference is https://github.com/LineageOS/android_device_huawei_kirin970-common/blob/lineage-16.0/init/init_kirin970.cpp
2019-12-09 00:54:05 +01:00
Pierre-Hugues Husson
ad57918dbc Use system-provided remount command, and remove properly superuser app 2019-12-08 21:36:47 +01:00
Pierre-Hugues Husson
9f9ede3158 Reset system props as well. Also fix SPL keymaster priority 2019-12-08 21:07:32 +01:00
Pierre-Hugues HUSSON
b3b7aea404
Merge pull request #130 from XavierWrz/patch-1
Fixing animations issues in Moto E5/Moto E5 Plus
2019-12-08 18:42:29 +01:00
Whatz
fdc9e8cfb1
Fixing animations issues in Moto E5/Moto E5 Plus 2019-12-08 14:30:35 -03:00
Pierre-Hugues Husson
060b3f9954 Workaround broken OpenGL ES on old Snapdragon devices
Thanks @XavierWrz
2019-12-08 17:09:40 +01:00
Pierre-Hugues Husson
aca36f1b1c Detect whether vendor has an hostapd by checking manifest 2019-12-06 21:34:44 +01:00
Pierre-Hugues Husson
e0c0285eb2 Fix huawei touchscreen hal for treble app (used for glove mode) 2019-12-04 23:42:44 +01:00
Pierre-Hugues Husson
2069acbbc1 Add android.hidl.manager@1.0 lib. This is used by treble app to detect hostapd presence 2019-12-04 23:42:15 +01:00
Pierre-Hugues Husson
21d7520d20 Fix fingerprint gestures on huawei pie vendor 2019-12-04 23:24:51 +01:00
Pierre-Hugues Husson
60c6c8f9ed Reset LD_PRELOAD. Mediatek puts annoying non-working libcoredump in there, ignore it 2019-12-04 20:38:40 +01:00
Pierre-Hugues HUSSON
23f8d4bdc2
Merge pull request #129 from YaAlex3/android-10.0
Fix backlight on Redmi 7A (pine) [Ten]
2019-12-02 23:05:34 +01:00
Alexander
48b76745c4
Fix backlight on Redmi 7A (pine) 2019-12-03 00:46:39 +03:00
Pierre-Hugues Husson
946ead6db3 Detect touchscreen with dt2w node 2019-12-01 17:07:01 +01:00
Pierre-Hugues Husson
b701c84f58 Allow treble_app to control /dev/input/eventX (useful to enable dt2w) 2019-12-01 17:06:37 +01:00
Pierre-Hugues Husson
07632a8291 Fix fingerprint on Honor View 10 2019-11-30 20:39:23 +01:00
Pierre-Hugues HUSSON
d7b17ebf53
Merge pull request #126 from redmi8a/android-10.0
Fix backlight on Redmi 8A (olivelite)
2019-11-21 07:35:50 +01:00
Milan Kragujević
bcd754334a
Fix backlight on Redmi 8A (olivelite) 2019-11-20 23:53:12 +01:00
lead4good
5201b0f2cb fix sound for redmi note 8 (ginko) 2019-11-18 22:25:57 +01:00
Pierre-Hugues Husson
562ee1f897 Tell pe gapps we are a phone 2019-11-11 23:29:51 +01:00
Pierre-Hugues Husson
2f33d5286e ugly: vndk somehow replaces vendor files if both exist. this is especially problematic on libstagefright_foundation (found on CAF and Exynos devices) 2019-11-07 22:46:16 +01:00
Pierre-Hugues Husson
1ba43f4ce5 Simplify matching for lenovo dt2w 2019-11-04 22:56:29 +01:00
Pierre-Hugues Husson
dcb6f64f42 Add support for Lenovo Z5 dt2w 2019-11-01 18:30:18 +01:00
Pierre-Hugues Husson
09f46d0192 Support Nokia 4.2 assistant button 2019-10-26 21:07:58 +02:00
Andy CrossGate Yan
3a32e685d1 Add privapp-permissions whitelist for PhhTrebleApp 2019-10-26 21:07:46 +02:00
Pierre-Hugues Husson
e4f8a3340f Ignore swizzle to fix crash on Oreo PowerVR devices 2019-10-22 15:26:22 +02:00
Pierre-Hugues Husson
cf6e53c1fe Revert "Add qemu.hw.mainkeys as vendor legal API"
This reverts commit 9549703b4a.

Some vendors already declare this property as u:object_r:qemu_hw_mainkeys_prop:s0, so this commit prevents booting those
2019-10-22 14:37:09 +02:00
Pierre-Hugues Husson
186e81291d trustkernel keymaster also requires whitelisted ro.product.brrand. This property has disappeared in Android 10, so set it for teed 2019-10-22 14:19:47 +02:00
Pierre-Hugues Husson
99926b69a9 Add support for pe gapps 2019-10-21 21:44:52 +02:00
Pierre-Hugues Husson
6d6083b754 Set TARGET_GAPPS_ARCH 2019-10-21 17:42:05 +02:00
Pierre-Hugues Husson
9549703b4a Add qemu.hw.mainkeys as vendor legal API 2019-10-20 22:49:45 +02:00
Pierre-Hugues Husson
99cdd37534 Fix media.swcodec on a-only devices
On a-only, if init reads system/etc/init/mediaswcodec-treble.rc before
apex is available, init will see the /apex/...mediaswcodec file isn't
there and will ignore the process.
Kick-start media.swcodec service on boot when apex is ready
2019-10-20 21:51:32 +02:00
Pierre-Hugues Husson
2f8c5dca48 Give lmkd ptrace capability, to bypass hidepid (AOSP uses readproc group, but I cant because of A-only) 2019-10-16 15:52:59 +02:00
Pierre-Hugues Husson
82d65bd4c3 Add asus-motor, to be called from cameraserver to control ZF6 cam 2019-10-01 13:32:49 +02:00
Pierre-Hugues Husson
a1527b0b28 Don't include sas stuff on non-sas target 2019-09-26 22:24:54 +02:00
Pierre-Hugues Husson
fdf58ff7ed No longer needs hardcoded device, it is generated 2019-09-23 08:31:13 +02:00
Pierre-Hugues Husson
ab568ff772 Revert "Fix mediacodec selinux context AOSP regression"
This reverts commit 46d65aac9b.

This segfaults secilc/init on pretty much all devices
2019-09-18 10:18:17 +02:00
Pierre-Hugues Husson
84b33286ba No need to run apexd bootstrap in su policy, it is already expected to be started by init 2019-09-18 10:15:24 +02:00
Pierre-Hugues Husson
46d65aac9b Fix mediacodec selinux context AOSP regression 2019-09-16 23:15:03 +02:00
Pierre-Hugues Husson
312698d889 Copy O/O-MR1 behaviour of copying wpa/p2p supp config file 2019-09-16 17:41:30 +02:00
Pierre-Hugues Husson
3f66bf29ae Ignore device's /product partition on SaS 2019-09-15 13:26:27 +02:00
Pierre-Hugues Husson
db487d1446 [vndk 26] Read liblog.so from vndk (has additional symbols required on huawei) 2019-09-15 00:57:05 +02:00
Pierre-Hugues Husson
1e15460c80 Force ro.vndk.version 26 when we detect vndk 26 2019-09-15 00:56:40 +02:00
Pierre-Hugues Husson
120df2523a Fixed build for a-only (now called System-as-System) 2019-09-14 21:17:03 +02:00
Pierre-Hugues Husson
dae86834b2 Don't override LD_CONFIG_FILE (needed for apex with different config) 2019-09-13 22:32:12 +02:00
Pierre-Hugues Husson
85b94fec63 Load zygote file (we remove the one from ramdisk in secilc) 2019-09-13 22:30:46 +02:00
Pierre-Hugues Husson
5aa82fd371 New shiny thing broke adb again 2019-09-12 21:21:48 +02:00
Pierre-Hugues Husson
926096b97f (re)Add /bt_firmware. this is still required by 8.1 CAF devices like Razer Phone 2019-09-12 21:21:31 +02:00
Pierre-Hugues Husson
d3f427ccd3 Various a-only fixes:
Create apex folder
Create mnt/storage/full
Create /product symlink
Start apex
Override zygote
2019-09-12 20:58:32 +02:00
Pierre-Hugues Husson
2e4d8bcb0a Allow tee to access rpmb (denials seen on Moto E5 preventing keymaster from working) 2019-09-12 20:58:18 +02:00
Pierre-Hugues Husson
f7c23ba986 Set first_api_level, this helps disable bpf requirements 2019-09-12 20:57:42 +02:00
Pierre-Hugues Husson
cbc8d1e1af On samsung vndk >= 28 we want to force disable fingerprint weird behaviour 2019-09-12 20:57:30 +02:00
Pierre-Hugues Husson
0fff673bd3 also override 64b keymaster3device 2019-09-12 20:57:07 +02:00
Pierre-Hugues Husson
27df9cf112 Remove vndk 27 config file 2019-09-12 20:55:36 +02:00
Pierre-Hugues Husson
94cc413043 Use regenerated ld.config.26.txt (compared to automatically generated, authorize all vendor => vndk libs, and authorize vndk => runtime apex) 2019-09-12 20:49:27 +02:00
Pierre-Hugues Husson
d93868102c Stop setting LD_CONFIG_FILE, with apex, multiple config files might be used. Instead use bionic overload from ro.vndk.version 2019-09-12 20:47:53 +02:00
Pierre-Hugues Husson
a6aa52f7b1 [temp] hardcode init.treble-environ.rc (how does that new build system work?) 2019-09-12 20:46:25 +02:00
Pierre-Hugues Husson
ea6d0badb5 New products to derive from 2019-09-12 20:45:28 +02:00
Pierre-Hugues Husson
c0eab65abc Force binder32 2019-09-12 20:44:16 +02:00
Pierre-Hugues Husson
ef3212b963 [temp] Include treble_arm64_bvN adapted for Q 2019-09-09 01:16:15 +02:00
Pierre-Hugues Husson
1c31b0512a [temp] Set ueventd to permissive, needed to boot huawei, because it hits "unlabeled" file when trying to access some files in /firmware 2019-09-09 01:15:54 +02:00
Pierre-Hugues Husson
51ee6f155e fsck.exfat file context is now handled by aosp 2019-09-09 01:15:17 +02:00
Pierre-Hugues Husson
ebf0acec02 Allow building vndk tests 2019-09-09 01:14:29 +02:00
Pierre-Hugues Husson
a5d9f5a7f6 Android 10 by default thinks the device cant have a lockscreen... 2019-09-09 01:14:12 +02:00
Pierre-Hugues Husson
91ff330807 tmpfs domain is no longer created by the macro 2019-09-09 01:13:44 +02:00
Pierre-Hugues Husson
7b69b370d1 Additional lib to be edited to boot keymaster 2019-09-09 01:13:30 +02:00
Pierre-Hugues Husson
9f6a970491 Add mediatek proc_ged (else it boots but no graphics) 2019-09-09 01:12:51 +02:00
92 changed files with 3616 additions and 293 deletions

1
amyROM.mk Normal file
View File

@ -0,0 +1 @@
$(call inherit-product, vendor/amy/config/common.mk)

17
apex-setup.rc Normal file
View File

@ -0,0 +1,17 @@
import /system/etc/init/zygote/init.${ro.zygote}.rc
on early-fs
mkdir /mnt/runtime/full 0755 root root
mkdir /mnt/runtime/full/self 0755 root root
mkdir /apex 0777 root root
mount tmpfs tmpfs /apex mode=0755,uid=0,gid=0
restorecon /apex
exec -- /system/bin/apexd --bootstrap
export ANDROID_RUNTIME_ROOT /apex/com.android.runtime
export ANDROID_TZDATA_ROOT /apex/com.android.tzdata
symlink /system/product /product
on fs
exec u:r:su:s0 -- /system/bin/umount -l /product
exec u:r:su:s0 -- /system/bin/rmdir /product
symlink /system/product /product

13
base-sas.mk Normal file
View File

@ -0,0 +1,13 @@
PRODUCT_COPY_FILES += \
device/phh/treble/apex-setup.rc:system/etc/init/apex-setup.rc \
PRODUCT_COPY_FILES += \
system/core/rootdir/init.zygote32.rc:system/etc/init/zygote/init.zygote32.rc \
system/core/rootdir/init.zygote32_64.rc:system/etc/init/zygote/init.zygote32_64.rc \
system/core/rootdir/init.zygote64_32.rc:system/etc/init/zygote/init.zygote64_32.rc \
system/core/rootdir/init.zygote64.rc:system/etc/init/zygote/init.zygote64.rc \
PRODUCT_COPY_FILES += \
frameworks/av/apex/mediaswcodec.rc:system/etc/init/mediaswcodec-treble.rc \
device/phh/treble/environ/init.treble-environ.rc:system/etc/init/init.treble-environ.rc \

82
base.mk
View File

@ -3,15 +3,17 @@
PRODUCT_COPY_FILES := \
frameworks/native/data/etc/android.hardware.fingerprint.xml:system/etc/permissions/android.hardware.fingerprint.xml \
frameworks/native/data/etc/android.hardware.telephony.gsm.xml:system/etc/permissions/android.hardware.telephony.gsm.xml \
frameworks/native/data/etc/android.hardware.telephony.ims.xml:system/etc/permissions/android.hardware.telephony.ims.xml \
frameworks/native/data/etc/android.hardware.bluetooth.xml:system/etc/permissions/android.hardware.bluetooth.xml \
frameworks/native/data/etc/android.hardware.bluetooth_le.xml:system/etc/permissions/android.hardware.bluetooth_le.xml \
frameworks/native/data/etc/android.hardware.usb.host.xml:system/etc/permissions/android.hardware.usb.host.xml \
#Use a more decent APN config
PRODUCT_COPY_FILES += \
device/sample/etc/apns-full-conf.xml:system/etc/apns-conf.xml
BOARD_PLAT_PRIVATE_SEPOLICY_DIR += device/phh/treble/sepolicy
DEVICE_PACKAGE_OVERLAYS += device/phh/treble/overlay
PRODUCT_PACKAGE_OVERLAYS += device/phh/treble/overlay
$(call inherit-product, vendor/hardware_overlay/overlay.mk)
$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
@ -38,11 +40,11 @@ PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
PRODUCT_COPY_FILES += \
device/phh/treble/vndk-detect:system/bin/vndk-detect \
device/phh/treble/vndk.rc:system/etc/init/vndk.rc \
device/phh/treble/ld.config.26.txt:system/etc/ld.config.26.txt \
#USB Audio
PRODUCT_COPY_FILES += \
frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:system/etc/usb_audio_policy_configuration.xml
frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:system/etc/usb_audio_policy_configuration.xml \
device/phh/treble/files/fake_audio_policy_volume.xml:system/etc/fake_audio_policy_volume.xml \
# NFC:
# Provide default libnfc-nci.conf file for devices that does not have one in
@ -53,10 +55,11 @@ PRODUCT_COPY_FILES += \
# LineageOS build may need this to make NFC work
PRODUCT_PACKAGES += \
NfcNci
NfcNci \
PRODUCT_COPY_FILES += \
device/phh/treble/rw-system.sh:system/bin/rw-system.sh \
device/phh/treble/phh-on-data.sh:system/bin/phh-on-data.sh \
device/phh/treble/phh-prop-handler.sh:system/bin/phh-prop-handler.sh \
device/phh/treble/fixSPL/getSPL.arm:system/bin/getSPL
@ -65,11 +68,11 @@ PRODUCT_COPY_FILES += \
device/phh/treble/phh-on-boot.sh:system/bin/phh-on-boot.sh
PRODUCT_PACKAGES += \
treble-environ-rc
treble-environ-rc \
PRODUCT_PACKAGES += \
bootctl \
vintf
vintf \
# Fix Offline Charging on Huawmeme
PRODUCT_PACKAGES += \
@ -83,7 +86,8 @@ PRODUCT_COPY_FILES += \
device/phh/treble/twrp/busybox-armv7l:system/bin/busybox_phh
PRODUCT_PACKAGES += \
simg2img_simple
simg2img_simple \
lptools
ifneq (,$(wildcard external/exfat))
PRODUCT_PACKAGES += \
@ -92,6 +96,7 @@ PRODUCT_PACKAGES += \
endif
PRODUCT_PACKAGES += \
android.hidl.manager-V1.0-java \
android.hardware.wifi.hostapd-V1.0-java \
vendor.huawei.hardware.biometrics.fingerprint-V2.1-java \
vendor.huawei.hardware.tp-V1.0-java \
@ -104,12 +109,28 @@ PRODUCT_COPY_FILES += \
PRODUCT_COPY_FILES += \
device/phh/treble/files/samsung-gpio_keys.kl:system/phh/samsung-gpio_keys.kl \
device/phh/treble/files/samsung-sec_touchscreen.kl:system/phh/samsung-sec_touchscreen.kl \
device/phh/treble/files/samsung-sec_touchkey.kl:system/phh/samsung-sec_touchkey.kl \
device/phh/treble/files/oneplus6-synaptics_s3320.kl:system/phh/oneplus6-synaptics_s3320.kl \
device/phh/treble/files/huawei-fingerprint.kl:system/phh/huawei/fingerprint.kl \
device/phh/treble/files/samsung-sec_e-pen.idc:system/usr/idc/sec_e-pen.idc \
device/phh/treble/files/samsung-9810-floating_feature.xml:system/ph/sam-9810-flo_feat.xml \
device/phh/treble/files/mimix3-gpio-keys.kl:system/phh/mimix3-gpio-keys.kl \
device/phh/treble/files/nokia-soc_gpio_keys.kl:system/phh/nokia-soc_gpio_keys.kl
device/phh/treble/files/nokia-soc_gpio_keys.kl:system/phh/nokia-soc_gpio_keys.kl \
device/phh/treble/files/lenovo-synaptics_dsx.kl:system/phh/lenovo-synaptics_dsx.kl \
device/phh/treble/files/oppo-touchpanel.kl:system/phh/oppo-touchpanel.kl \
device/phh/treble/files/google-uinput-fpc.kl:system/phh/google-uinput-fpc.kl \
device/phh/treble/files/moto-uinput-egis.kl:system/phh/moto-uinput-egis.kl \
device/phh/treble/files/daisy-buttonJack.kl:system/phh/daisy-buttonJack.kl \
device/phh/treble/files/daisy-uinput-fpc.kl:system/phh/daisy-uinput-fpc.kl \
device/phh/treble/files/daisy-uinput-goodix.kl:system/phh/daisy-uinput-goodix.kl \
device/phh/treble/files/nubia-nubia_synaptics_dsx.kl:system/phh/nubia-nubia_synaptics_dsx.kl \
device/phh/treble/files/unihertz-mtk-kpd.kl:system/phh/unihertz-mtk-kpd.kl \
device/phh/treble/files/unihertz-mtk-tpd.kl:system/phh/unihertz-mtk-tpd.kl \
device/phh/treble/files/unihertz-mtk-tpd-kpd.kl:system/phh/unihertz-mtk-tpd-kpd.kl \
device/phh/treble/files/unihertz-fingerprint_key.kl:system/phh/unihertz-fingerprint_key.kl \
device/phh/treble/files/zf6-goodixfp.kl:system/phh/zf6-goodixfp.kl \
device/phh/treble/files/zf6-googlekey_input.kl:system/phh/zf6-googlekey_input.kl \
device/phh/treble/files/teracube2e-mtk-kpd.kl:system/phh/teracube2e-mtk-kpd.kl \
SELINUX_IGNORE_NEVERALLOWS := true
@ -130,16 +151,57 @@ PRODUCT_PACKAGES += \
# Helper to debug Xiaomi motorized camera
PRODUCT_PACKAGES += \
xiaomi-motor
xiaomi-motor \
oneplus-motor
PRODUCT_PACKAGES += \
Stk
PRODUCT_PACKAGES += \
resetprop
resetprop_phh
PRODUCT_COPY_FILES += \
device/phh/treble/phh-securize.sh:system/bin/phh-securize.sh \
device/phh/treble/files/ota.sh:system/bin/ota.sh \
PRODUCT_COPY_FILES += \
device/phh/treble/remove-telephony.sh:system/bin/remove-telephony.sh \
PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.software.secure_lock_screen.xml:system/etc/permissions/android.software.secure_lock_screen.xml \
device/phh/treble/files/android.software.controls.xml:system/etc/permissions/android.software.controls.xml \
PRODUCT_COPY_FILES += \
device/phh/treble/ld.config.26.txt:system/etc/ld.config.26.txt \
PRODUCT_PACKAGES += \
asus-motor
# Privapp-permissions whitelist for PhhTrebleApp
PRODUCT_COPY_FILES += \
device/phh/treble/privapp-permissions-me.phh.treble.app.xml:system/etc/permissions/privapp-permissions-me.phh.treble.app.xml
# Remote debugging
PRODUCT_COPY_FILES += \
device/phh/treble/remote/dbclient:system/bin/dbclient \
device/phh/treble/remote/phh-remotectl.rc:system/etc/init/phh-remotectl.rc \
device/phh/treble/remote/phh-remotectl.sh:system/bin/phh-remotectl.sh \
PRODUCT_PACKAGES += \
android.hardware.biometrics.fingerprint@2.1-service.oppo.compat \
android.hardware.biometrics.fingerprint@2.1-service.oplus.compat \
PRODUCT_PACKAGES += \
vr_hwc \
curl \
healthd \
PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
debug.fdsan=warn_once \
# AOSP overlays
PRODUCT_PACKAGES += \
NavigationBarMode2ButtonOverlay
PRODUCT_PACKAGES += \
oplus-alert-slider

View File

@ -3,4 +3,4 @@ BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := device/phh/treble/bluetooth
TARGET_EXFAT_DRIVER := exfat
DEVICE_FRAMEWORK_MANIFEST_FILE := device/phh/treble/framework_manifest.xml
BOARD_ROOT_EXTRA_FOLDERS += sec_storage
BOARD_ROOT_EXTRA_FOLDERS += bt_firmware sec_storage efs

View File

@ -100,6 +100,18 @@ cc_binary {
],
}
cc_binary {
name: "lightsctl-seh",
srcs: [
"lightsctl-seh.cpp",
],
shared_libs: [
"vendor.samsung.hardware.light@3.0",
"libutils",
"libhidlbase",
],
}
cc_binary {
name: "xiaomi-motor",
srcs: [
@ -151,3 +163,103 @@ cc_binary {
"libhidlbase",
],
}
cc_binary {
name: "asus-motor",
srcs: [
"asus-motor.cpp",
],
}
cc_binary {
name: "goodix-fp",
srcs: [
"goodix-fp.cpp",
],
shared_libs: [
"vendor.goodix.extend.service@2.0",
"libutils",
"libhidlbase",
],
}
cc_binary {
name: "lptools",
cflags: [
"-Werror",
"-Wextra",
],
device_supported: true,
shared_libs: [
"libbase",
"liblog",
"liblp",
"libsparse",
"libfs_mgr",
"libutils",
"libcutils",
"android.hardware.boot@1.1",
"libhidlbase",
],
static_libs: [
"libdm",
],
srcs: [
"lptools.cc",
],
cppflags: [
"-D_FILE_OFFSET_BITS=64",
],
}
cc_binary {
name: "lptools_static",
cflags: [
"-Werror",
"-Wextra",
"-DLPTOOLS_STATIC",
],
device_supported: true,
shared_libs: [
"libcrypto",
],
static_libs: [
"libbase",
"liblog",
"liblp",
"libsparse",
"libfs_mgr",
"libutils",
"libcutils",
"libdm",
"libext4_utils",
],
srcs: [
"lptools.cc",
],
cppflags: [
"-D_FILE_OFFSET_BITS=64",
],
}
cc_binary {
name: "sec-camera-list",
srcs: [
"sec-camera-list.cpp",
],
shared_libs: [
"vendor.samsung.hardware.camera.provider@3.0",
"libutils",
"libhidlbase",
],
}
cc_binary {
name: "oplus-alert-slider",
srcs: [
"oplus-alert-slider.cpp",
],
init_rc: [
"oplus-alert-slider.rc",
],
}

30
cmds/asus-motor.cpp Normal file
View File

@ -0,0 +1,30 @@
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
typedef struct {
int dir;
int angle;
int speed;
} motorDrvManualConfig_t;
#define ASUS_MOTOR_NAME_SIZE 32
#define ASUS_MOTOR_DATA_SIZE 4
#define ASUS_MOTOR_DRV_DEV_PATH ("/dev/asusMotoDrv")
#define ASUS_MOTOR_DRV_IOC_MAGIC ('M')
#define ASUS_MOTOR_DRV_AUTO_MODE _IOW(ASUS_MOTOR_DRV_IOC_MAGIC, 1, int)
#define ASUS_MOTOR_DRV_MANUAL_MODE _IOW(ASUS_MOTOR_DRV_IOC_MAGIC, 2, motorDrvManualConfig_t)
int main(int argc, char **argv) {
if(argc != 2) return 1;
int fd = open("/dev/asusMotoDrv", O_RDWR);
motorDrvManualConfig_t cfg;
cfg.dir = atoi(argv[1]);
cfg.angle = 180;
cfg.speed = 4;
ioctl(fd, ASUS_MOTOR_DRV_MANUAL_MODE, &cfg);
}

17
cmds/goodix-fp.cpp Normal file
View File

@ -0,0 +1,17 @@
#include <iostream>
#include <vendor/goodix/extend/service/2.0/IGoodixFPExtendService.h>
using ::vendor::goodix::extend::service::V2_0::IGoodixFPExtendService;
using ::android::sp;
int main(int argc, char **argv) {
auto svc = IGoodixFPExtendService::getService();
if(argc!=3) return 1;
int a = atoi(argv[1]);
int b = atoi(argv[2]);
auto ret = svc->goodixExtendCommand(a, b);
if(!ret.isOk()) {
std::cerr << "HWBinder call failed" << std::endl;
}
std::cout << "updateStatus returned " << toString(ret) << std::endl;
}

View File

@ -1,21 +1,38 @@
#include <iostream>
#include <vendor/huawei/hardware/light/2.0/IHwLight.h>
#include <vendor/huawei/hardware/light/2.0/ILight.h>
#include <android/hardware/light/2.0/types.h>
using ::vendor::huawei::hardware::light::V2_0::IHwLight;
using ::vendor::huawei::hardware::light::V2_0::ILight;
using ::android::sp;
int main(int argc, char **argv) {
auto svc = IHwLight::getService();
auto svc = ILight::getService();
svc->HWgetSupportedTypes([](auto types) {
for(const auto& type: types) {
std::cout << "Got type " << type << std::endl;
}
});
uint32_t a = (uint32_t)strtoll(argv[1], NULL, 10);
uint32_t b = (uint32_t)strtoll(argv[2], NULL, 10);
auto ret = svc->HWsetLightBrightness(a, b);
std::cout << "Set light brightness returned " << toString(ret) << std::endl;
android::hardware::light::V2_0::LightState state;
state.color = (uint32_t)strtoll(argv[2], NULL, 16);
state.flashMode = android::hardware::light::V2_0::Flash::NONE;
state.brightnessMode = android::hardware::light::V2_0::Brightness::USER;
if(argc == 6) {
std::string flashArg(argv[3]);
if(flashArg == "NONE")
state.flashMode = android::hardware::light::V2_0::Flash::NONE;
if(flashArg == "TIMED")
state.flashMode = android::hardware::light::V2_0::Flash::TIMED;
if(flashArg == "HARDWARE")
state.flashMode = android::hardware::light::V2_0::Flash::HARDWARE;
state.flashOnMs = atoi(argv[4]);
state.flashOffMs = atoi(argv[5]);
}
std::cout << "Set flash type to " << toString(state.flashMode) << std::endl;
svc->HWsetLight(a, state);
}

62
cmds/lightsctl-seh.cpp Normal file
View File

@ -0,0 +1,62 @@
#include <iostream>
#include <vendor/samsung/hardware/light/3.0/ISehLight.h>
#include <vendor/samsung/hardware/light/3.0/types.h>
using ::vendor::samsung::hardware::light::V3_0::ISehLight;
using ::android::sp;
int main(int argc, char **argv) {
auto svc = ISehLight::getService();
svc->getSupportedTypes([](auto types) {
for(const auto& type: types) {
std::cout << "Got type " << toString(type) << std::endl;
}
});
if(argc <= 1) return 0;
if(argc != 4 && argc != 7) return 1;
std::string typeArg(argv[1]);
vendor::samsung::hardware::light::V3_0::SehType type;
if(typeArg == "BACKLIGHT")
type = vendor::samsung::hardware::light::V3_0::SehType::BACKLIGHT;
if(typeArg == "KEYBOARD")
type = vendor::samsung::hardware::light::V3_0::SehType::KEYBOARD;
if(typeArg == "BUTTONS")
type = vendor::samsung::hardware::light::V3_0::SehType::BUTTONS;
if(typeArg == "BATTERY")
type = vendor::samsung::hardware::light::V3_0::SehType::BATTERY;
if(typeArg == "NOTIFICATIONS")
type = vendor::samsung::hardware::light::V3_0::SehType::NOTIFICATIONS;
if(typeArg == "ATTENTION")
type = vendor::samsung::hardware::light::V3_0::SehType::ATTENTION;
if(typeArg == "BLUETOOTH")
type = vendor::samsung::hardware::light::V3_0::SehType::BLUETOOTH;
if(typeArg == "WIFI")
type = vendor::samsung::hardware::light::V3_0::SehType::WIFI;
if(typeArg == "SUB_BACKLIGHT")
type = vendor::samsung::hardware::light::V3_0::SehType::SUB_BACKLIGHT;
std::cout << "Set request type " << toString(type) << std::endl;
vendor::samsung::hardware::light::V3_0::SehLightState state;
state.color = (uint32_t)strtoll(argv[2], NULL, 16);
state.flashMode = android::hardware::light::V2_0::Flash::NONE;
state.brightnessMode = android::hardware::light::V2_0::Brightness::USER;
state.extendedBrightness = (uint32_t)strtoll(argv[3], NULL, 0);
if(argc == 7) {
std::string flashArg(argv[4]);
if(flashArg == "NONE")
state.flashMode = android::hardware::light::V2_0::Flash::NONE;
if(flashArg == "TIMED")
state.flashMode = android::hardware::light::V2_0::Flash::TIMED;
if(flashArg == "HARDWARE")
state.flashMode = android::hardware::light::V2_0::Flash::HARDWARE;
state.flashOnMs = atoi(argv[5]);
state.flashOffMs = atoi(argv[6]);
}
std::cout << "Set flash type to " << toString(state.flashMode) << std::endl;
auto ret = svc->sehSetLight(type, state);
std::cout << "Set light returned " << toString(ret) << std::endl;
}

309
cmds/lptools.cc Normal file
View File

@ -0,0 +1,309 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <getopt.h>
#include <inttypes.h>
#include <sys/mount.h>
#include <sys/stat.h>
#include <sys/statvfs.h>
#include <sys/types.h>
#include <sysexits.h>
#include <unistd.h>
#include <iostream>
#include <optional>
#include <regex>
#include <string>
#include <vector>
#include <chrono>
#include <android-base/parseint.h>
#include <android-base/properties.h>
#include <android-base/strings.h>
#include <cutils/android_get_control_file.h>
#include <fs_mgr.h>
#include <liblp/builder.h>
#include <liblp/liblp.h>
#include <fs_mgr_dm_linear.h>
#include <libdm/dm.h>
#ifndef LPTOOLS_STATIC
#include <android/hardware/boot/1.1/IBootControl.h>
#include <android/hardware/boot/1.1/types.h>
#endif
using namespace android;
using namespace android::fs_mgr;
class FileOrBlockDeviceOpener final : public PartitionOpener {
public:
android::base::unique_fd Open(const std::string& path, int flags) const override {
// Try a local file first.
android::base::unique_fd fd;
#ifdef __ANDROID__
fd.reset(android_get_control_file(path.c_str()));
if (fd >= 0) return fd;
#endif
fd.reset(open(path.c_str(), flags));
if (fd >= 0) return fd;
return PartitionOpener::Open(path, flags);
}
};
static FileOrBlockDeviceOpener opener;
std::unique_ptr<MetadataBuilder> makeBuilder() {
auto builder = MetadataBuilder::New(opener, "super", 0);
if(builder == nullptr) {
std::cout << "Failed creating super builder" << std::endl;
}
return builder;
}
void saveToDisk(std::unique_ptr<MetadataBuilder> builder) {
auto newMetadata = builder->Export();
int nSlots = 2;//pt->geometry.metadata_slot_count;
for(int slot=0; slot < nSlots; slot++) {
std::cout << "Saving the updated partition table " << UpdatePartitionTable(opener, "super", *newMetadata, slot) << " for slot " << slot << std::endl;
}
}
inline bool ends_with(std::string const & value, std::string const & ending)
{
if (ending.size() > value.size()) return false;
return std::equal(ending.rbegin(), ending.rend(), value.rbegin());
}
std::string findGroup(std::unique_ptr<MetadataBuilder>& builder) {
auto groups = builder->ListGroups();
auto partitionName = "system" + ::android::base::GetProperty("ro.boot.slot_suffix", "");
for(auto groupName: groups) {
auto partitions = builder->ListPartitionsInGroup(groupName);
for (const auto& partition : partitions) {
if(partition->name() == partitionName) {
return groupName;
}
}
}
std::string maxGroup = "";
uint64_t maxGroupSize = 0;
for(auto groupName: groups) {
auto group = builder->FindGroup(groupName);
if(group->maximum_size() > maxGroupSize) {
maxGroup = groupName;
maxGroupSize = group->maximum_size();
}
}
return maxGroup;
}
int main(int argc, char **argv) {
if(argc<=1) {
std::cerr << "Usage: " << argv[0] << " <create|remove|resize|rename>" << std::endl;
exit(1);
}
auto builder = makeBuilder();
auto group = findGroup(builder);
std::cout << "Best group seems to be " << group << std::endl;
if(strcmp(argv[1], "create") == 0) {
if(argc != 4) {
std::cerr << "Usage: " << argv[0] << " create <partition name> <partition size>" << std::endl;
exit(1);
}
auto partName = argv[2];
auto size = strtoll(argv[3], NULL, 0);
auto partition = builder->FindPartition(partName);
if(partition != nullptr) {
std::cerr << "Partition " << partName << " already exists." << std::endl;
exit(1);
}
partition = builder->AddPartition(partName, group, 0);
auto result = builder->ResizePartition(partition, size);
std::cout << "Growing partition " << result << std::endl;
if(!result) return 1;
saveToDisk(std::move(builder));
std::string dmPath;
CreateLogicalPartitionParams params {
.block_device = "/dev/block/by-name/super",
.metadata_slot = 0,
.partition_name = partName,
.timeout_ms = std::chrono::milliseconds(10000),
.force_writable = true,
};
auto dmCreateRes = android::fs_mgr::CreateLogicalPartition(params, &dmPath);
std::cout << "Creating dm partition for " << partName << " answered " << dmCreateRes << " at " << dmPath << std::endl;
exit(0);
} else if(strcmp(argv[1], "remove") == 0) {
if(argc != 3) {
std::cerr << "Usage: " << argv[0] << " remove <partition name>" << std::endl;
exit(1);
}
auto partName = argv[2];
auto dmState = android::dm::DeviceMapper::Instance().GetState(partName);
if(dmState == android::dm::DmDeviceState::ACTIVE) {
android::fs_mgr::DestroyLogicalPartition(partName);
}
builder->RemovePartition(partName);
saveToDisk(std::move(builder));
exit(0);
} else if(strcmp(argv[1], "resize") == 0) {
if(argc != 4) {
std::cerr << "Usage: " << argv[0] << " resize <partition name> <newsize>" << std::endl;
exit(1);
}
auto partName = argv[2];
auto size = strtoll(argv[3], NULL, 0);
auto partition = builder->FindPartition(partName);
std::cout << "Resizing partition " << builder->ResizePartition(partition, size) << std::endl;
saveToDisk(std::move(builder));
exit(0);
} else if(strcmp(argv[1], "replace") == 0) {
if(argc != 4) {
std::cerr << "Usage: " << argv[0] << " replace <original partition name> <new partition name>" << std::endl;
std::cerr << "This will delete <new partition name> and rename <original partition name> to <new partition name>" << std::endl;
exit(1);
}
auto src = argv[2];
auto dst = argv[3];
auto srcPartition = builder->FindPartition(src);
if(srcPartition == nullptr) {
srcPartition = builder->FindPartition(src + ::android::base::GetProperty("ro.boot.slot_suffix", ""));
}
auto dstPartition = builder->FindPartition(dst);
if(dstPartition == nullptr) {
dstPartition = builder->FindPartition(dst + ::android::base::GetProperty("ro.boot.slot_suffix", ""));
}
std::string dstPartitionName = dst;
if(dstPartition != nullptr) {
dstPartitionName = dstPartition->name();
}
std::vector<std::unique_ptr<Extent>> originalExtents;
const auto& extents = srcPartition->extents();
for(unsigned i=0; i<extents.size(); i++) {
const auto& extend = extents[i];
auto linear = extend->AsLinearExtent();
if(linear != nullptr) {
auto copyLinear = std::make_unique<LinearExtent>(linear->num_sectors(), linear->device_index(), linear->physical_sector());
originalExtents.push_back(std::move(copyLinear));
} else {
auto copyZero = std::make_unique<ZeroExtent>(extend->num_sectors());
originalExtents.push_back(std::move(copyZero));
}
}
builder->RemovePartition(srcPartition->name());
builder->RemovePartition(dstPartitionName);
auto newDstPartition = builder->AddPartition(dstPartitionName, group, 0);
for(auto&& extent: originalExtents) {
newDstPartition->AddExtent(std::move(extent));
}
saveToDisk(std::move(builder));
exit(0);
} else if(strcmp(argv[1], "map") == 0) {
if(argc != 3) {
std::cerr << "Usage: " << argv[0] << " map <partition name>" << std::endl;
exit(1);
}
auto partName = argv[2];
std::string dmPath;
CreateLogicalPartitionParams params {
.block_device = "/dev/block/by-name/super",
.metadata_slot = 0,
.partition_name = partName,
.timeout_ms = std::chrono::milliseconds(10000),
.force_writable = true,
};
auto dmCreateRes = android::fs_mgr::CreateLogicalPartition(params, &dmPath);
std::cout << "Creating dm partition for " << partName << " answered " << dmCreateRes << " at " << dmPath << std::endl;
exit(0);
} else if(strcmp(argv[1], "unmap") == 0) {
if(argc != 3) {
std::cerr << "Usage: " << argv[0] << " unmap <partition name>" << std::endl;
exit(1);
}
auto partName = argv[2];
auto dmState = android::dm::DeviceMapper::Instance().GetState(partName);
if(dmState == android::dm::DmDeviceState::ACTIVE) {
android::fs_mgr::DestroyLogicalPartition(partName);
}
exit(0);
} else if(strcmp(argv[1], "free") == 0) {
if(argc != 2) {
std::cerr << "Usage: " << argv[0] << " free" << std::endl;
exit(1);
}
auto groupO = builder->FindGroup(group);
uint64_t maxSize = groupO->maximum_size();
uint64_t total = 0;
auto partitions = builder->ListPartitionsInGroup(group);
for (const auto& partition : partitions) {
total += partition->BytesOnDisk();
}
uint64_t groupAllocatable = maxSize - total;
uint64_t superFreeSpace = builder->AllocatableSpace() - builder->UsedSpace();
if(groupAllocatable > superFreeSpace || maxSize == 0)
groupAllocatable = superFreeSpace;
printf("Free space: %" PRIu64 "\n", groupAllocatable);
exit(0);
} else if(strcmp(argv[1], "unlimited-group") == 0) {
builder->ChangeGroupSize(group, 0);
saveToDisk(std::move(builder));
return 0;
} else if(strcmp(argv[1], "clear-cow") == 0) {
#ifndef LPTOOLS_STATIC
// Ensure this is a V AB device, and that no merging is taking place (merging? in gsi? uh)
auto svc1_1 = ::android::hardware::boot::V1_1::IBootControl::tryGetService();
if(svc1_1 == nullptr) {
std::cerr << "Couldn't get a bootcontrol HAL. You can clear cow only on V AB devices" << std::endl;
return 1;
}
auto mergeStatus = svc1_1->getSnapshotMergeStatus();
if(mergeStatus != ::android::hardware::boot::V1_1::MergeStatus::NONE) {
std::cerr << "Merge status is NOT none, meaning a merge is pending. Clearing COW isn't safe" << std::endl;
return 1;
}
#endif
uint64_t superFreeSpace = builder->AllocatableSpace() - builder->UsedSpace();
std::cerr << "Super allocatable " << superFreeSpace << std::endl;
uint64_t total = 0;
auto partitions = builder->ListPartitionsInGroup("cow");
for (const auto& partition : partitions) {
std::cout << "Deleting partition? " << partition->name() << std::endl;
if(ends_with(partition->name(), "-cow")) {
std::cout << "Deleting partition " << partition->name() << std::endl;
builder->RemovePartition(partition->name());
}
}
saveToDisk(std::move(builder));
return 0;
}
return 0;
}

View File

@ -0,0 +1,54 @@
#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <linux/input.h>
int read_tristate() {
int fd = open("/proc/tristatekey/tri_state", O_RDONLY);
char p[16];
int ret = read(fd, p, sizeof(p) - 1);
p[ret] = 0;
return atoi(p);
}
int main() {
int fd = -1;
for(int i=0; i<255; i++) {
char path[256];
snprintf(path, 256, "/dev/input/event%d", i);
fd = open(path, O_RDWR);
if(fd == -1) continue;
char name[256];
ioctl(fd, EVIOCGNAME(256), name);
printf("Got input name %s\n", name);
if(strcmp(name, "oplus,hall_tri_state_key") == 0) {
break;
}
close(fd);
fd = -1;
}
if(fd == -1) return 0;
ioctl(fd, EVIOCGRAB, 1);
struct input_event ev;
while(read(fd, &ev, sizeof(ev)) != 0) {
if(!(ev.code == 61 && ev.value == 0)) continue;
int state = read_tristate();
if(state == 1) {
}
printf("State %d\n", read_tristate());
if(state == 1) {
system("service call audio 31 i32 2 s16 android");
} else if(state == 2) {
system("service call audio 31 i32 1 s16 android");
} else if(state == 3) {
system("service call audio 31 i32 0 s16 android");
}
}
}

View File

@ -0,0 +1,4 @@
service phhoplus-alert-slider /system/bin/oplus-alert-slider
seclabel u:r:phhsu_daemon:s0
oneshot
class main

15
cmds/sec-camera-list.cpp Normal file
View File

@ -0,0 +1,15 @@
#include <iostream>
#include <vendor/samsung/hardware/camera/provider/3.0/ISehCameraProvider.h>
using ::vendor::samsung::hardware::camera::provider::V3_0::ISehCameraProvider;
using ::android::sp;
int main(int argc, char **argv) {
auto svc = ISehCameraProvider::getService("legacy/0");
auto cb = [](::android::hardware::camera::common::V1_0::Status status, ::android::hardware::hidl_vec<::android::hardware::hidl_string> ids) {
for(auto id: ids) {
std::cerr << "id = " << id << std::endl;
}
};
svc->sehGetCameraIdList(cb);
}

View File

@ -41,9 +41,23 @@ typedef struct chunk_header {
* For a CRC32 chunk, it's 4 bytes of CRC32
*/
static int disable_splice = 0;
void nsendfile(int out_fd, int in_fd, size_t count) {
char buf[1024*1024];
while(count) {
ssize_t res = splice(in_fd, NULL, out_fd, NULL, count, 0);
ssize_t res = -1;
if(!disable_splice) {
res = splice(in_fd, NULL, out_fd, NULL, count, 0);
}
if(count > 16*1024 && res < 1024)
disable_splice = 1;
if(res==-1) {
ssize_t sizeToRead = sizeof(buf);
if(count < sizeToRead) sizeToRead = count;
res = read(in_fd, buf, sizeToRead);
if(write(out_fd, buf, res) != res) exit(114);
}
if(res == 0 || res == -1) exit(112);
count -= res;
}

View File

@ -44,6 +44,11 @@ int main(int argc, char **argv, char **envp) {
if (buflen<0) {
exit(1);
}
if(argc>=2) {
if(!strstr(buffer, argv[1])) continue;
}
printf("%s\n", buffer);
char *pos = buffer + strlen(buffer);
char *end = buffer + buflen;

View File

@ -33,6 +33,8 @@ int main(int argc, char **argv) {
mode = 9;
if(modeArg == "HIGHLIGHT")
mode = 11;
else
mode = atoi(argv[1]);
svc->setFeature(0, mode, atoi(argv[2]), 255);
}

View File

@ -1,4 +1,4 @@
# set up the global environment
on init
export BOOTCLASSPATH %BOOTCLASSPATH%
export SYSTEMSERVERCLASSPATH %SYSTEMSERVERCLASSPATH%
export BOOTCLASSPATH /apex/com.android.runtime/javalib/core-oj.jar:/apex/com.android.runtime/javalib/core-libart.jar:/apex/com.android.runtime/javalib/okhttp.jar:/apex/com.android.runtime/javalib/bouncycastle.jar:/apex/com.android.runtime/javalib/apache-xml.jar:/system/framework/framework.jar:/system/framework/ext.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/android.test.base.jar:/apex/com.android.conscrypt/javalib/conscrypt.jar:/apex/com.android.media/javalib/updatable-media.jar
export SYSTEMSERVERCLASSPATH /system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/wifi-service.jar:/system/framework/com.android.location.provider.jar

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<permissions>
<feature name="android.software.controls" />
</permissions>

30
files/daisy-buttonJack.kl Normal file
View File

@ -0,0 +1,30 @@
# Copyright (c) 2019, The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
# * Neither the name of The Linux Foundation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
key 226 HEADSETHOOK
key 257 VOLUME_UP
key 258 VOLUME_DOWN

11
files/daisy-uinput-fpc.kl Normal file
View File

@ -0,0 +1,11 @@
##################################
#
#add for fpc fingerprints
#
##################################
key 195 SYSTEM_NAVIGATION_UP
key 196 SYSTEM_NAVIGATION_DOWN
key 197 SYSTEM_NAVIGATION_LEFT
key 198 SYSTEM_NAVIGATION_RIGHT
key 353 DPAD_CENTER

View File

@ -0,0 +1,11 @@
##################################
#
#add for goodix fingerprints
#
##################################
key 195 SYSTEM_NAVIGATION_UP
key 196 SYSTEM_NAVIGATION_DOWN
key 197 SYSTEM_NAVIGATION_LEFT
key 198 SYSTEM_NAVIGATION_RIGHT
key 353 DPAD_CENTER

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<audioPolicyConfiguration version="1.0" xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="/vendor/etc/audio_policy_volumes.xml"/>
<xi:include href="/vendor/etc/default_volume_tables.xml"/>
</audioPolicyConfiguration>

View File

@ -0,0 +1,4 @@
key 106 SYSTEM_NAVIGATION_LEFT
key 108 SYSTEM_NAVIGATION_DOWN
key 103 SYSTEM_NAVIGATION_UP
key 105 SYSTEM_NAVIGATION_RIGHT

View File

@ -0,0 +1 @@
key 542 WAKEUP

14
files/moto-uinput-egis.kl Normal file
View File

@ -0,0 +1,14 @@
#
# ETS320 Touch sensor driver
#
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License Version 2
# as published by the Free Software Foundation.
#
# ets320 "finger present"
key 618 SYSTEM_NAVIGATION_DOWN
key 619 SYSTEM_NAVIGATION_UP
key 620 SYSTEM_NAVIGATION_LEFT
key 621 SYSTEM_NAVIGATION_RIGHT

View File

@ -0,0 +1 @@
key 0x44 POWER

2
files/oppo-touchpanel.kl Normal file
View File

@ -0,0 +1,2 @@
key 62 WAKEUP

72
files/ota.sh Normal file
View File

@ -0,0 +1,72 @@
#!/system/bin/sh
set -e
if ! [ "$(getprop ro.boot.dynamic_partitions)" = true ];then
echo "OTA is supported only for devices with dynamic partitions!"
exit 1
fi
flavor=$(getprop ro.product.product.name)
nextVersion=$(curl --silent -L https://raw.githubusercontent.com/phhusson/treble_experimentations/master/ota/roar/$flavor/date)
if [ -z "$nextVersion" ];then
echo "Couldn't find any OTA for $flavor"
exit 1
fi
url=$(curl --silent -L https://raw.githubusercontent.com/phhusson/treble_experimentations/master/ota/roar/$flavor/url)
size=$(curl --silent -L https://raw.githubusercontent.com/phhusson/treble_experimentations/master/ota/roar/$flavor/size)
if [ "$(getprop ro.product.build.date.utc)" = "$nextVersion" ];then
echo "Installing $nextVersion onto itself, aborting"
exit 1
fi
if ! curl --silent -L https://raw.githubusercontent.com/phhusson/treble_experimentations/master/ota/roar/$flavor/known_releases |grep -q $(getprop ro.product.build.date.utc);then
echo "Warning! The build you are currently running is unknown. Type YES to confirm you want to apply OTA from $url"
read answer
if ! [ "$answer" = YES ];then
exit 1
fi
fi
if [ -b /dev/tmp-phh ] && ! tune2fs -l /dev/tmp-phh |grep 'Last mount time' |grep -q n/a;then
echo "Warning! It looks like you modified your system image! Flashing this OTA will revert this!"
echo "Type YES to acknowledge"
read answer
if ! [ "$answer" = YES ];then
exit 1
fi
fi
lptools remove system_phh
free=$(lptools free |grep -oE '[0-9]+$')
if [ "$free" -le "$size" ];then
echo "Warning! There doesn't seem to be enough space on super partition."
echo "Do you want me to try to make more space? Type YES"
read answer
if ! [ "$answer" = YES ];then
exit 1
fi
lptools clear-cow || true
lptools unlimited-group || true
lptools remove product || true
lptools remove product$(getprop ro.boot.slot_suffix) || true
free=$(lptools free |grep -oE '[0-9]+$')
if [ "$free" -le "$size" ];then
echo "Sorry, there is still not enough space available. OTA requires $size, you have $free available"
exit 1
fi
fi
lptools create system_phh "$size"
lptools unmap system_phh
dmDevice=$(lptools map system_phh|grep -oE '/dev/block/[^ ]*')
echo "Flashing from ${url}..."
curl -L "$url" | busybox_phh xz -d -c | simg2img_simple > $dmDevice
lptools replace system_phh system
reboot
exit 0

View File

@ -9,3 +9,4 @@ key 103 SYSTEM_NAVIGATION_UP
key 105 SYSTEM_NAVIGATION_LEFT
key 106 SYSTEM_NAVIGATION_RIGHT
key 108 SYSTEM_NAVIGATION_DOWN
key 172 HOME

View File

@ -0,0 +1,3 @@
key 158 BACK
key 254 APP_SWITCH

View File

@ -25,5 +25,6 @@
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
key 143 WAKEUP
key 172 WAKEUP

View File

@ -0,0 +1,4 @@
key 114 VOLUME_DOWN
key 115 VOLUME_UP
key 116 POWER
key 456 WAKEUP

View File

@ -0,0 +1,3 @@
# Key layout for Unihertz devices with fingerprint sensor
# For Atom {,L,XL}: fingerprint sensor as home
key 172 HOME VIRTUAL

13
files/unihertz-mtk-kpd.kl Normal file
View File

@ -0,0 +1,13 @@
# Keylayout for Unihertz devices with a dedicated PTT button
# Volume buttons
key 115 VOLUME_UP
key 114 VOLUME_DOWN
# Power button
key 116 POWER
# PTT - Remap to camera by default
# CAMERA is delivered to apps, so remapping via
# third-party apps is possible
key 249 CAMERA
key 250 CAMERA

View File

@ -0,0 +1,6 @@
# Keylayout for Unihertz devices with capacitive keys
# Capacitive navigation
key 172 HOME VIRTUAL
key 580 APP_SWITCH VIRTUAL
key 158 BACK VIRTUAL

View File

@ -0,0 +1,6 @@
# Keylayout for Unihertz devices with capacitive keys
# Capacitive navigation
key 172 HOME VIRTUAL
key 580 APP_SWITCH VIRTUAL
key 158 BACK VIRTUAL

6
files/zf6-goodixfp.kl Normal file
View File

@ -0,0 +1,6 @@
key 0x6c SYSTEM_NAVIGATION_DOWN
key 0x67 SYSTEM_NAVIGATION_UP
key 0x69 SYSTEM_NAVIGATION_LEFT
key 0x6a SYSTEM_NAVIGATION_RIGHT

View File

@ -0,0 +1 @@
key 0x248 ASSIST

View File

@ -8,5 +8,16 @@
<instance>default</instance>
</interface>
</hal>
<!-- For our Oppo/Realme friends -->
<hal>
<name>android.hardware.biometrics.fingerprint</name>
<transport>hwbinder</transport>
<version>2.1</version>
<interface>
<name>IBiometricsFingerprint</name>
<instance>default</instance>
</interface>
</hal>
</manifest>

View File

@ -1,3 +1,21 @@
DONT_DEXPREOPT_PREBUILTS := true
$(call inherit-product, build/make/target/product/go_defaults.mk)
$(call inherit-product, vendor/gapps-go/gapps-go.mk)
BUILD_GMS := yes
#include not inherit, because we must edit some values
-include vendor/google/products/gms_go.mk
-include vendor/partner_gms/products/gms_go.mk
FILTER_OUT = $(foreach v,$(2),$(if $(findstring $(1),$(v)),,$(v)))
#gms_go.mk has a broken copy of google_go.xml => google.xml
#But there already is a google.xml => google.xml
#Only difference between those is maps go and youtube go applinks, so good enough
PRODUCT_COPY_FILES := $(call FILTER_OUT,google_go.xml:, $(PRODUCT_COPY_FILES))
#We need to use this way because it overrides sync adapters
PRODUCT_PACKAGES := $(filter-out CalendarGoogle, $(PRODUCT_PACKAGES))
PRODUCT_PACKAGES := $(filter-out GoogleContacts, $(PRODUCT_PACKAGES))
PRODUCT_SHIPPING_API_LEVEL :=
PRODUCT_PACKAGES += \
phh-gapps-go-overrides \
GoogleContactsSyncAdapter \

View File

@ -1,10 +1,29 @@
BUILD_GMS := yes
ifneq ($(wildcard vendor/google)$(wildcard vendor/partner_gms),)
-include vendor/google/products/gms.mk
-include vendor/partner_gms/products/gms.mk
PRODUCT_SHIPPING_API_LEVEL :=
PRODUCT_PACKAGES := $(filter-out CalendarGoogle, $(PRODUCT_PACKAGES))
PRODUCT_PACKAGES := $(filter-out GoogleContacts, $(PRODUCT_PACKAGES))
PRODUCT_PACKAGES += \
phh-gapps-overrides \
Chrome \
GoogleContactsSyncAdapter \
talkback \
PRODUCT_SYSTEM_DEFAULT_PROPERTIES := $(filter-out ro.boot.vendor.overlay.theme=%,$(PRODUCT_SYSTEM_DEFAULT_PROPERTIES))
endif
ifneq ($(wildcard vendor/opengapps),)
PRODUCT_COPY_FILES += \
device/phh/treble/empty-permission.xml:system/etc/permissions/com.google.android.camera2.xml \
device/phh/treble/empty-permission.xml:system/etc/permissions/com.google.android.camera.experimental2015.xml \
device/phh/treble/empty-permission.xml:system/etc/permissions/com.google.android.camera.experimental2016.xml \
device/phh/treble/empty-permission.xml:system/etc/permissions/com.google.android.camera.experimental2017.xml
DEVICE_PACKAGE_OVERLAYS += device/phh/treble/overlay-gapps
PRODUCT_PACKAGE_OVERLAYS += device/phh/treble/overlay-gapps
GAPPS_VARIANT := pico
DONT_DEXPREOPT_PREBUILTS := true
WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY := true
@ -20,3 +39,14 @@ PRODUCT_PACKAGES += \
phh-overrides
$(call inherit-product, vendor/opengapps/build/opengapps-packages.mk)
endif
#Pixel Experience gapps
ifneq ($(wildcard vendor/gapps),)
IS_PHONE := true
$(call inherit-product,vendor/gapps/config.mk)
PRODUCT_PACKAGES += \
phh-overrides \
com.simplemobiletools.gallery.pro \
endif

View File

@ -23,6 +23,7 @@ for part in a ab;do
apps_name=""
extra_packages=""
vndk="vndk.mk"
optional_base=""
if [ "$apps" == "gapps" ];then
apps_suffix="g"
apps_script='$(call inherit-product, device/phh/treble/gapps.mk)'
@ -59,24 +60,39 @@ for part in a ab;do
part_suffix='a'
if [ "$part" == 'ab' ];then
part_suffix='b'
else
optional_base='$(call inherit-product, device/phh/treble/base-sas.mk)'
fi
target="treble_${arch}_${part_suffix}${apps_suffix}${su_suffix}"
baseArch="$arch"
if [ "$arch" = "a64" ];then
baseArch="arm"
fi
zygote=32
if [ "$arch" = "arm64" ];then
zygote=64_32
fi
cat > ${target}.mk << EOF
TARGET_GAPPS_ARCH := ${baseArch}
\$(call inherit-product, device/phh/treble/base-pre.mk)
include build/make/target/product/treble_common.mk
\$(call inherit-product, vendor/vndk/${vndk})
include build/make/target/product/aosp_${baseArch}_ab.mk
\$(call inherit-product, device/phh/treble/base.mk)
$optional_base
$apps_script
$rom_script
PRODUCT_NAME := $target
PRODUCT_DEVICE := phhgsi_${arch}_$part
PRODUCT_BRAND := Android
PRODUCT_BRAND := Phh
PRODUCT_SYSTEM_BRAND := Phh
PRODUCT_MODEL := Phh-Treble $apps_name
PRODUCT_PACKAGES += $extra_packages
EOF
echo -e '\t$(LOCAL_DIR)/'$target.mk '\' >> AndroidProducts.mk
done

23
hal/oplus-fp/Android.bp Normal file
View File

@ -0,0 +1,23 @@
cc_binary {
name: "android.hardware.biometrics.fingerprint@2.1-service.oplus.compat",
defaults: ["hidl_defaults"],
init_rc: ["android.hardware.biometrics.fingerprint@2.1-service.oplus.rc"],
relative_install_path: "hw",
srcs: [
"BiometricsFingerprint.cpp",
"service.cpp",
],
cflags: [
"-Wno-unused-parameter",
],
shared_libs: [
"libcutils",
"liblog",
"libhidlbase",
"libhardware",
"libutils",
"libbase",
"android.hardware.biometrics.fingerprint@2.1",
"vendor.oplus.hardware.biometrics.fingerprint@2.1",
],
}

View File

@ -0,0 +1,267 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define LOG_TAG "android.hardware.biometrics.fingerprint@2.1-service.oplus.compat"
#define LOG_VERBOSE "android.hardware.biometrics.fingerprint@2.1-service.oplus.compat"
#include <hardware/hardware.h>
#include <hardware/fingerprint.h>
#include "BiometricsFingerprint.h"
#include <inttypes.h>
#include <unistd.h>
#include <utils/Log.h>
#include <thread>
namespace android {
namespace hardware {
namespace biometrics {
namespace fingerprint {
namespace V2_1 {
namespace implementation {
BiometricsFingerprint::BiometricsFingerprint() {
for(int i=0; i<10; i++) {
mOplusBiometricsFingerprint = vendor::oplus::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprint::tryGetService();
if(mOplusBiometricsFingerprint != nullptr) break;
sleep(10);
}
if(mOplusBiometricsFingerprint == nullptr) exit(0);
}
static bool receivedCancel;
static bool receivedEnumerate;
static uint64_t myDeviceId;
static std::vector<uint32_t> knownFingers;
class OplusClientCallback : public vendor::oplus::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback {
public:
sp<android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback> mClientCallback;
OplusClientCallback(sp<android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback> clientCallback) : mClientCallback(clientCallback) {}
Return<void> onEnrollResult(uint64_t deviceId, uint32_t fingerId,
uint32_t groupId, uint32_t remaining) {
ALOGE("onEnrollResult %" PRIu64 " %u %u %u", deviceId, fingerId, groupId, remaining);
if(mClientCallback != nullptr)
mClientCallback->onEnrollResult(deviceId, fingerId, groupId, remaining);
return Void();
}
Return<void> onAcquired(uint64_t deviceId, vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo acquiredInfo,
int32_t vendorCode) {
ALOGE("onAcquired %" PRIu64 " %d", deviceId, vendorCode);
if(mClientCallback != nullptr)
mClientCallback->onAcquired(deviceId, OplusToAOSPFingerprintAcquiredInfo(acquiredInfo), vendorCode);
return Void();
}
Return<void> onAuthenticated(uint64_t deviceId, uint32_t fingerId, uint32_t groupId,
const hidl_vec<uint8_t>& token) {
ALOGE("onAuthenticated %" PRIu64 " %u %u", deviceId, fingerId, groupId);
if(mClientCallback != nullptr)
mClientCallback->onAuthenticated(deviceId, fingerId, groupId, token);
return Void();
}
Return<void> onError(uint64_t deviceId, vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintError error, int32_t vendorCode) {
ALOGE("onError %" PRIu64 " %d", deviceId, vendorCode);
if(error == vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_CANCELED) {
receivedCancel = true;
}
if(mClientCallback != nullptr)
mClientCallback->onError(deviceId, OplusToAOSPFingerprintError(error), vendorCode);
return Void();
}
Return<void> onRemoved(uint64_t deviceId, uint32_t fingerId, uint32_t groupId,
uint32_t remaining) {
ALOGE("onRemoved %" PRIu64 " %" PRIu32, deviceId, fingerId);
if(mClientCallback != nullptr)
mClientCallback->onRemoved(deviceId, fingerId, groupId, remaining);
return Void();
}
Return<void> onEnumerate(uint64_t deviceId, uint32_t fingerId, uint32_t groupId,
uint32_t remaining) {
receivedEnumerate = true;
ALOGE("onEnumerate %" PRIu64 " %u %u %u", deviceId, fingerId, groupId, remaining);
if(mClientCallback != nullptr)
mClientCallback->onEnumerate(deviceId, fingerId, groupId, remaining);
return Void();
}
Return<void> onTouchUp(uint64_t deviceId) { return Void(); }
Return<void> onTouchDown(uint64_t deviceId) { return Void(); }
Return<void> onSyncTemplates(uint64_t deviceId, const hidl_vec<uint32_t>& fingerId, uint32_t remaining) {
ALOGE("onSyncTemplates %" PRIu64 " %zu %" PRIu32, deviceId, fingerId.size(), remaining);
myDeviceId = deviceId;
for(auto fid : fingerId) {
ALOGE("\t- %u", fid);
}
knownFingers = fingerId;
return Void();
}
Return<void> onFingerprintCmd(int32_t deviceId, const hidl_vec<uint32_t>& groupId, uint32_t remaining) { return Void(); }
Return<void> onImageInfoAcquired(uint32_t type, uint32_t quality, uint32_t match_score) { return Void(); }
Return<void> onMonitorEventTriggered(uint32_t type, const hidl_string& data) { return Void(); }
Return<void> onEngineeringInfoUpdated(uint32_t length, const hidl_vec<uint32_t>& keys, const hidl_vec<hidl_string>& values) { return Void(); }
Return<void> onUIReady(int64_t deviceId) { return Void(); }
private:
Return<android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo> OplusToAOSPFingerprintAcquiredInfo(vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo info) {
switch(info) {
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_GOOD: return android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_GOOD;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_PARTIAL: return android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_PARTIAL;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_INSUFFICIENT: return android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_INSUFFICIENT;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_IMAGER_DIRTY: return android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_IMAGER_DIRTY;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_TOO_SLOW: return android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_TOO_SLOW;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_TOO_FAST: return android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_TOO_FAST;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_VENDOR: return android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_VENDOR;
default:
return android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_GOOD;
}
}
Return<android::hardware::biometrics::fingerprint::V2_1::FingerprintError> OplusToAOSPFingerprintError(vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintError error) {
switch(error) {
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_NO_ERROR: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_NO_ERROR;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_HW_UNAVAILABLE: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_HW_UNAVAILABLE;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_UNABLE_TO_PROCESS: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_UNABLE_TO_PROCESS;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_TIMEOUT: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_TIMEOUT;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_NO_SPACE: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_NO_SPACE;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_CANCELED: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_CANCELED;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_UNABLE_TO_REMOVE: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_UNABLE_TO_REMOVE;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_LOCKOUT: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_LOCKOUT;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_VENDOR: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_VENDOR;
default:
return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_NO_ERROR;
}
}
};
Return<uint64_t> BiometricsFingerprint::setNotify(
const sp<IBiometricsFingerprintClientCallback>& clientCallback) {
ALOGE("setNotify");
mOplusClientCallback = new OplusClientCallback(clientCallback);
return mOplusBiometricsFingerprint->setNotify(mOplusClientCallback);
}
Return<RequestStatus> BiometricsFingerprint::OplusToAOSPRequestStatus(vendor::oplus::hardware::biometrics::fingerprint::V2_1::RequestStatus req) {
switch(req) {
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_UNKNOWN: return RequestStatus::SYS_UNKNOWN;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_OK: return RequestStatus::SYS_OK;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_ENOENT: return RequestStatus::SYS_ENOENT;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_EINTR: return RequestStatus::SYS_EINTR;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_EIO: return RequestStatus::SYS_EIO;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_EAGAIN: return RequestStatus::SYS_EAGAIN;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_ENOMEM: return RequestStatus::SYS_ENOMEM;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_EACCES: return RequestStatus::SYS_EACCES;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_EFAULT: return RequestStatus::SYS_EFAULT;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_EBUSY: return RequestStatus::SYS_EBUSY;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_EINVAL: return RequestStatus::SYS_EINVAL;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_ENOSPC: return RequestStatus::SYS_ENOSPC;
case vendor::oplus::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_ETIMEDOUT: return RequestStatus::SYS_ETIMEDOUT;
default:
return RequestStatus::SYS_UNKNOWN;
}
}
Return<uint64_t> BiometricsFingerprint::preEnroll() {
ALOGE("preEnroll");
return mOplusBiometricsFingerprint->preEnroll();
}
Return<RequestStatus> BiometricsFingerprint::enroll(const hidl_array<uint8_t, 69>& hat,
uint32_t gid, uint32_t timeoutSec) {
ALOGE("enroll");
return OplusToAOSPRequestStatus(mOplusBiometricsFingerprint->enroll(hat, gid, timeoutSec));
}
Return<RequestStatus> BiometricsFingerprint::postEnroll() {
ALOGE("postEnroll");
return OplusToAOSPRequestStatus(mOplusBiometricsFingerprint->postEnroll());
}
Return<uint64_t> BiometricsFingerprint::getAuthenticatorId() {
ALOGE("getAuthId");
return mOplusBiometricsFingerprint->getAuthenticatorId();
}
Return<RequestStatus> BiometricsFingerprint::cancel() {
receivedCancel = false;
RequestStatus ret = OplusToAOSPRequestStatus(mOplusBiometricsFingerprint->cancel());
ALOGE("CANCELING");
if(!receivedCancel) {
ALOGE("Sending cancel error");
mOplusClientCallback->mClientCallback->onError(
myDeviceId,
android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_CANCELED,
0);
}
return ret;
}
Return<RequestStatus> BiometricsFingerprint::enumerate() {
receivedEnumerate = false;
RequestStatus ret = OplusToAOSPRequestStatus(mOplusBiometricsFingerprint->enumerate());
ALOGE("ENUMERATING");
if(ret == RequestStatus::SYS_OK && !receivedEnumerate) {
size_t nFingers = knownFingers.size();
ALOGE("received fingers, sending our own %zu", nFingers);
if(nFingers > 0) {
for(auto finger: knownFingers) {
mOplusClientCallback->mClientCallback->onEnumerate(
myDeviceId,
finger,
0,
--nFingers);
}
} else {
mOplusClientCallback->mClientCallback->onEnumerate(
myDeviceId,
0,
0,
0);
}
}
return ret;
}
Return<RequestStatus> BiometricsFingerprint::remove(uint32_t gid, uint32_t fid) {
ALOGE("remove");
return OplusToAOSPRequestStatus(mOplusBiometricsFingerprint->remove(gid, fid));
}
Return<RequestStatus> BiometricsFingerprint::setActiveGroup(uint32_t gid,
const hidl_string& storePath) {
ALOGE("setActiveGroup");
return OplusToAOSPRequestStatus(mOplusBiometricsFingerprint->setActiveGroup(gid, storePath));
}
Return<RequestStatus> BiometricsFingerprint::authenticate(uint64_t operationId, uint32_t gid) {
ALOGE("auth");
return OplusToAOSPRequestStatus(mOplusBiometricsFingerprint->authenticate(operationId, gid));
}
} // namespace implementation
} // namespace V2_1
} // namespace fingerprint
} // namespace biometrics
} // namespace hardware
} // namespace android

View File

@ -0,0 +1,78 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef ANDROID_HARDWARE_BIOMETRICS_FINGERPRINT_V2_1_BIOMETRICSFINGERPRINT_H
#define ANDROID_HARDWARE_BIOMETRICS_FINGERPRINT_V2_1_BIOMETRICSFINGERPRINT_H
#include <log/log.h>
#include <android/log.h>
#include <hardware/hardware.h>
#include <hardware/fingerprint.h>
#include <hidl/MQDescriptor.h>
#include <hidl/Status.h>
#include <android/hardware/biometrics/fingerprint/2.1/IBiometricsFingerprint.h>
#include <android/hardware/biometrics/fingerprint/2.1/types.h>
#include <vendor/oplus/hardware/biometrics/fingerprint/2.1/IBiometricsFingerprint.h>
namespace android {
namespace hardware {
namespace biometrics {
namespace fingerprint {
namespace V2_1 {
namespace implementation {
using ::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprint;
using ::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback;
using ::android::hardware::biometrics::fingerprint::V2_1::RequestStatus;
using ::android::hardware::Return;
using ::android::hardware::Void;
using ::android::hardware::hidl_vec;
using ::android::hardware::hidl_string;
using ::android::OK;
using ::android::sp;
using ::android::status_t;
class OplusClientCallback;
struct BiometricsFingerprint : public IBiometricsFingerprint {
public:
BiometricsFingerprint();
// Methods from ::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprint follow.
Return<uint64_t> setNotify(const sp<IBiometricsFingerprintClientCallback>& clientCallback) override;
Return<uint64_t> preEnroll() override;
Return<RequestStatus> enroll(const hidl_array<uint8_t, 69>& hat, uint32_t gid, uint32_t timeoutSec) override;
Return<RequestStatus> postEnroll() override;
Return<uint64_t> getAuthenticatorId() override;
Return<RequestStatus> cancel() override;
Return<RequestStatus> enumerate() override;
Return<RequestStatus> remove(uint32_t gid, uint32_t fid) override;
Return<RequestStatus> setActiveGroup(uint32_t gid, const hidl_string& storePath) override;
Return<RequestStatus> authenticate(uint64_t operationId, uint32_t gid) override;
private:
sp<vendor::oplus::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprint> mOplusBiometricsFingerprint;
sp<OplusClientCallback> mOplusClientCallback;
static Return<RequestStatus> OplusToAOSPRequestStatus(vendor::oplus::hardware::biometrics::fingerprint::V2_1::RequestStatus req);
};
} // namespace implementation
} // namespace V2_1
} // namespace fingerprint
} // namespace biometrics
} // namespace hardware
} // namespace android
#endif // ANDROID_HARDWARE_BIOMETRICS_FINGERPRINT_V2_1_BIOMETRICSFINGERPRINT_H

View File

@ -0,0 +1,9 @@
service fps_hal.oplus.compat /system/bin/hw/android.hardware.biometrics.fingerprint@2.1-service.oplus.compat
# "class hal" causes a race condition on some devices due to files created
# in /data. As a workaround, postpone startup until later in boot once
# /data is mounted.
class late_start
user system
group system input uhid
writepid /dev/cpuset/system-background/tasks
oneshot

61
hal/oplus-fp/service.cpp Normal file
View File

@ -0,0 +1,61 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define LOG_TAG "android.hardware.biometrics.fingerprint@2.1-service.realme_sdm710"
#include <android-base/logging.h>
#include <hidl/HidlTransportSupport.h>
#include "BiometricsFingerprint.h"
using android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprint;
using android::hardware::biometrics::fingerprint::V2_1::implementation::BiometricsFingerprint;
using android::hardware::configureRpcThreadpool;
using android::hardware::joinRpcThreadpool;
using android::OK;
using android::sp;
using android::status_t;
int main() {
sp<BiometricsFingerprint> biometricsFingerprint;
status_t status;
LOG(INFO) << "Fingerprint HAL Adapter service is starting.";
biometricsFingerprint = new BiometricsFingerprint();
if (biometricsFingerprint == nullptr) {
LOG(ERROR) << "Can not create an instance of Fingerprint HAL Adapter BiometricsFingerprint Iface, exiting.";
goto shutdown;
}
configureRpcThreadpool(1, true /*callerWillJoin*/);
status = biometricsFingerprint->registerAsService();
if (status != OK) {
LOG(ERROR) << "Could not register service for Fingerprint HAL Adapter BiometricsFingerprint Iface ("
<< status << ")";
goto shutdown;
}
LOG(INFO) << "Fingerprint HAL Adapter service is ready.";
joinRpcThreadpool();
// Should not pass this line
shutdown:
// In normal operation, we don't expect the thread pool to shutdown
LOG(ERROR) << "Fingerprint HAL Adapter service is shutting down.";
return 1;
}

23
hal/oppo-fp/Android.bp Normal file
View File

@ -0,0 +1,23 @@
cc_binary {
name: "android.hardware.biometrics.fingerprint@2.1-service.oppo.compat",
defaults: ["hidl_defaults"],
init_rc: ["android.hardware.biometrics.fingerprint@2.1-service.oppo.rc"],
relative_install_path: "hw",
srcs: [
"BiometricsFingerprint.cpp",
"service.cpp",
],
cflags: [
"-Wno-unused-parameter",
],
shared_libs: [
"libcutils",
"liblog",
"libhidlbase",
"libhardware",
"libutils",
"libbase",
"android.hardware.biometrics.fingerprint@2.1",
"vendor.oppo.hardware.biometrics.fingerprint@2.1",
],
}

View File

@ -0,0 +1,267 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define LOG_TAG "android.hardware.biometrics.fingerprint@2.1-service.oppo.compat"
#define LOG_VERBOSE "android.hardware.biometrics.fingerprint@2.1-service.oppo.compat"
#include <hardware/hardware.h>
#include <hardware/fingerprint.h>
#include "BiometricsFingerprint.h"
#include <inttypes.h>
#include <unistd.h>
#include <utils/Log.h>
#include <thread>
namespace android {
namespace hardware {
namespace biometrics {
namespace fingerprint {
namespace V2_1 {
namespace implementation {
BiometricsFingerprint::BiometricsFingerprint() {
for(int i=0; i<10; i++) {
mOppoBiometricsFingerprint = vendor::oppo::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprint::tryGetService();
if(mOppoBiometricsFingerprint != nullptr) break;
sleep(10);
}
if(mOppoBiometricsFingerprint == nullptr) exit(0);
}
static bool receivedCancel;
static bool receivedEnumerate;
static uint64_t myDeviceId;
static std::vector<uint32_t> knownFingers;
class OppoClientCallback : public vendor::oppo::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback {
public:
sp<android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback> mClientCallback;
OppoClientCallback(sp<android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback> clientCallback) : mClientCallback(clientCallback) {}
Return<void> onEnrollResult(uint64_t deviceId, uint32_t fingerId,
uint32_t groupId, uint32_t remaining) {
ALOGE("onEnrollResult %" PRIu64 " %u %u %u", deviceId, fingerId, groupId, remaining);
if(mClientCallback != nullptr)
mClientCallback->onEnrollResult(deviceId, fingerId, groupId, remaining);
return Void();
}
Return<void> onAcquired(uint64_t deviceId, vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo acquiredInfo,
int32_t vendorCode) {
ALOGE("onAcquired %" PRIu64 " %d", deviceId, vendorCode);
if(mClientCallback != nullptr)
mClientCallback->onAcquired(deviceId, OppoToAOSPFingerprintAcquiredInfo(acquiredInfo), vendorCode);
return Void();
}
Return<void> onAuthenticated(uint64_t deviceId, uint32_t fingerId, uint32_t groupId,
const hidl_vec<uint8_t>& token) {
ALOGE("onAuthenticated %" PRIu64 " %u %u", deviceId, fingerId, groupId);
if(mClientCallback != nullptr)
mClientCallback->onAuthenticated(deviceId, fingerId, groupId, token);
return Void();
}
Return<void> onError(uint64_t deviceId, vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintError error, int32_t vendorCode) {
ALOGE("onError %" PRIu64 " %d", deviceId, vendorCode);
if(error == vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_CANCELED) {
receivedCancel = true;
}
if(mClientCallback != nullptr)
mClientCallback->onError(deviceId, OppoToAOSPFingerprintError(error), vendorCode);
return Void();
}
Return<void> onRemoved(uint64_t deviceId, uint32_t fingerId, uint32_t groupId,
uint32_t remaining) {
ALOGE("onRemoved %" PRIu64 " %" PRIu32, deviceId, fingerId);
if(mClientCallback != nullptr)
mClientCallback->onRemoved(deviceId, fingerId, groupId, remaining);
return Void();
}
Return<void> onEnumerate(uint64_t deviceId, uint32_t fingerId, uint32_t groupId,
uint32_t remaining) {
receivedEnumerate = true;
ALOGE("onEnumerate %" PRIu64 " %u %u %u", deviceId, fingerId, groupId, remaining);
if(mClientCallback != nullptr)
mClientCallback->onEnumerate(deviceId, fingerId, groupId, remaining);
return Void();
}
Return<void> onTouchUp(uint64_t deviceId) { return Void(); }
Return<void> onTouchDown(uint64_t deviceId) { return Void(); }
Return<void> onSyncTemplates(uint64_t deviceId, const hidl_vec<uint32_t>& fingerId, uint32_t remaining) {
ALOGE("onSyncTemplates %" PRIu64 " %zu %" PRIu32, deviceId, fingerId.size(), remaining);
myDeviceId = deviceId;
for(auto fid : fingerId) {
ALOGE("\t- %u", fid);
}
knownFingers = fingerId;
return Void();
}
Return<void> onFingerprintCmd(int32_t deviceId, const hidl_vec<uint32_t>& groupId, uint32_t remaining) { return Void(); }
Return<void> onImageInfoAcquired(uint32_t type, uint32_t quality, uint32_t match_score) { return Void(); }
Return<void> onMonitorEventTriggered(uint32_t type, const hidl_string& data) { return Void(); }
Return<void> onEngineeringInfoUpdated(uint32_t length, const hidl_vec<uint32_t>& keys, const hidl_vec<hidl_string>& values) { return Void(); }
Return<void> onUIReady(int64_t deviceId) { return Void(); }
private:
Return<android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo> OppoToAOSPFingerprintAcquiredInfo(vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo info) {
switch(info) {
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_GOOD: return android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_GOOD;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_PARTIAL: return android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_PARTIAL;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_INSUFFICIENT: return android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_INSUFFICIENT;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_IMAGER_DIRTY: return android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_IMAGER_DIRTY;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_TOO_SLOW: return android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_TOO_SLOW;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_TOO_FAST: return android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_TOO_FAST;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_VENDOR: return android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_VENDOR;
default:
return android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo::ACQUIRED_GOOD;
}
}
Return<android::hardware::biometrics::fingerprint::V2_1::FingerprintError> OppoToAOSPFingerprintError(vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintError error) {
switch(error) {
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_NO_ERROR: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_NO_ERROR;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_HW_UNAVAILABLE: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_HW_UNAVAILABLE;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_UNABLE_TO_PROCESS: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_UNABLE_TO_PROCESS;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_TIMEOUT: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_TIMEOUT;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_NO_SPACE: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_NO_SPACE;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_CANCELED: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_CANCELED;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_UNABLE_TO_REMOVE: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_UNABLE_TO_REMOVE;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_LOCKOUT: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_LOCKOUT;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_VENDOR: return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_VENDOR;
default:
return android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_NO_ERROR;
}
}
};
Return<uint64_t> BiometricsFingerprint::setNotify(
const sp<IBiometricsFingerprintClientCallback>& clientCallback) {
ALOGE("setNotify");
mOppoClientCallback = new OppoClientCallback(clientCallback);
return mOppoBiometricsFingerprint->setNotify(mOppoClientCallback);
}
Return<RequestStatus> BiometricsFingerprint::OppoToAOSPRequestStatus(vendor::oppo::hardware::biometrics::fingerprint::V2_1::RequestStatus req) {
switch(req) {
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_UNKNOWN: return RequestStatus::SYS_UNKNOWN;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_OK: return RequestStatus::SYS_OK;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_ENOENT: return RequestStatus::SYS_ENOENT;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_EINTR: return RequestStatus::SYS_EINTR;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_EIO: return RequestStatus::SYS_EIO;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_EAGAIN: return RequestStatus::SYS_EAGAIN;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_ENOMEM: return RequestStatus::SYS_ENOMEM;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_EACCES: return RequestStatus::SYS_EACCES;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_EFAULT: return RequestStatus::SYS_EFAULT;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_EBUSY: return RequestStatus::SYS_EBUSY;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_EINVAL: return RequestStatus::SYS_EINVAL;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_ENOSPC: return RequestStatus::SYS_ENOSPC;
case vendor::oppo::hardware::biometrics::fingerprint::V2_1::RequestStatus::SYS_ETIMEDOUT: return RequestStatus::SYS_ETIMEDOUT;
default:
return RequestStatus::SYS_UNKNOWN;
}
}
Return<uint64_t> BiometricsFingerprint::preEnroll() {
ALOGE("preEnroll");
return mOppoBiometricsFingerprint->preEnroll();
}
Return<RequestStatus> BiometricsFingerprint::enroll(const hidl_array<uint8_t, 69>& hat,
uint32_t gid, uint32_t timeoutSec) {
ALOGE("enroll");
return OppoToAOSPRequestStatus(mOppoBiometricsFingerprint->enroll(hat, gid, timeoutSec));
}
Return<RequestStatus> BiometricsFingerprint::postEnroll() {
ALOGE("postEnroll");
return OppoToAOSPRequestStatus(mOppoBiometricsFingerprint->postEnroll());
}
Return<uint64_t> BiometricsFingerprint::getAuthenticatorId() {
ALOGE("getAuthId");
return mOppoBiometricsFingerprint->getAuthenticatorId();
}
Return<RequestStatus> BiometricsFingerprint::cancel() {
receivedCancel = false;
RequestStatus ret = OppoToAOSPRequestStatus(mOppoBiometricsFingerprint->cancel());
ALOGE("CANCELING");
if(!receivedCancel) {
ALOGE("Sending cancel error");
mOppoClientCallback->mClientCallback->onError(
myDeviceId,
android::hardware::biometrics::fingerprint::V2_1::FingerprintError::ERROR_CANCELED,
0);
}
return ret;
}
Return<RequestStatus> BiometricsFingerprint::enumerate() {
receivedEnumerate = false;
RequestStatus ret = OppoToAOSPRequestStatus(mOppoBiometricsFingerprint->enumerate());
ALOGE("ENUMERATING");
if(ret == RequestStatus::SYS_OK && !receivedEnumerate) {
size_t nFingers = knownFingers.size();
ALOGE("received fingers, sending our own %zu", nFingers);
if(nFingers > 0) {
for(auto finger: knownFingers) {
mOppoClientCallback->mClientCallback->onEnumerate(
myDeviceId,
finger,
0,
--nFingers);
}
} else {
mOppoClientCallback->mClientCallback->onEnumerate(
myDeviceId,
0,
0,
0);
}
}
return ret;
}
Return<RequestStatus> BiometricsFingerprint::remove(uint32_t gid, uint32_t fid) {
ALOGE("remove");
return OppoToAOSPRequestStatus(mOppoBiometricsFingerprint->remove(gid, fid));
}
Return<RequestStatus> BiometricsFingerprint::setActiveGroup(uint32_t gid,
const hidl_string& storePath) {
ALOGE("setActiveGroup");
return OppoToAOSPRequestStatus(mOppoBiometricsFingerprint->setActiveGroup(gid, storePath));
}
Return<RequestStatus> BiometricsFingerprint::authenticate(uint64_t operationId, uint32_t gid) {
ALOGE("auth");
return OppoToAOSPRequestStatus(mOppoBiometricsFingerprint->authenticate(operationId, gid));
}
} // namespace implementation
} // namespace V2_1
} // namespace fingerprint
} // namespace biometrics
} // namespace hardware
} // namespace android

View File

@ -0,0 +1,78 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef ANDROID_HARDWARE_BIOMETRICS_FINGERPRINT_V2_1_BIOMETRICSFINGERPRINT_H
#define ANDROID_HARDWARE_BIOMETRICS_FINGERPRINT_V2_1_BIOMETRICSFINGERPRINT_H
#include <log/log.h>
#include <android/log.h>
#include <hardware/hardware.h>
#include <hardware/fingerprint.h>
#include <hidl/MQDescriptor.h>
#include <hidl/Status.h>
#include <android/hardware/biometrics/fingerprint/2.1/IBiometricsFingerprint.h>
#include <android/hardware/biometrics/fingerprint/2.1/types.h>
#include <vendor/oppo/hardware/biometrics/fingerprint/2.1/IBiometricsFingerprint.h>
namespace android {
namespace hardware {
namespace biometrics {
namespace fingerprint {
namespace V2_1 {
namespace implementation {
using ::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprint;
using ::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback;
using ::android::hardware::biometrics::fingerprint::V2_1::RequestStatus;
using ::android::hardware::Return;
using ::android::hardware::Void;
using ::android::hardware::hidl_vec;
using ::android::hardware::hidl_string;
using ::android::OK;
using ::android::sp;
using ::android::status_t;
class OppoClientCallback;
struct BiometricsFingerprint : public IBiometricsFingerprint {
public:
BiometricsFingerprint();
// Methods from ::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprint follow.
Return<uint64_t> setNotify(const sp<IBiometricsFingerprintClientCallback>& clientCallback) override;
Return<uint64_t> preEnroll() override;
Return<RequestStatus> enroll(const hidl_array<uint8_t, 69>& hat, uint32_t gid, uint32_t timeoutSec) override;
Return<RequestStatus> postEnroll() override;
Return<uint64_t> getAuthenticatorId() override;
Return<RequestStatus> cancel() override;
Return<RequestStatus> enumerate() override;
Return<RequestStatus> remove(uint32_t gid, uint32_t fid) override;
Return<RequestStatus> setActiveGroup(uint32_t gid, const hidl_string& storePath) override;
Return<RequestStatus> authenticate(uint64_t operationId, uint32_t gid) override;
private:
sp<vendor::oppo::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprint> mOppoBiometricsFingerprint;
sp<OppoClientCallback> mOppoClientCallback;
static Return<RequestStatus> OppoToAOSPRequestStatus(vendor::oppo::hardware::biometrics::fingerprint::V2_1::RequestStatus req);
};
} // namespace implementation
} // namespace V2_1
} // namespace fingerprint
} // namespace biometrics
} // namespace hardware
} // namespace android
#endif // ANDROID_HARDWARE_BIOMETRICS_FINGERPRINT_V2_1_BIOMETRICSFINGERPRINT_H

View File

@ -0,0 +1,9 @@
service fps_hal.oppo.compat /system/bin/hw/android.hardware.biometrics.fingerprint@2.1-service.oppo.compat
# "class hal" causes a race condition on some devices due to files created
# in /data. As a workaround, postpone startup until later in boot once
# /data is mounted.
class late_start
user system
group system input uhid
writepid /dev/cpuset/system-background/tasks
oneshot

61
hal/oppo-fp/service.cpp Normal file
View File

@ -0,0 +1,61 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define LOG_TAG "android.hardware.biometrics.fingerprint@2.1-service.realme_sdm710"
#include <android-base/logging.h>
#include <hidl/HidlTransportSupport.h>
#include "BiometricsFingerprint.h"
using android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprint;
using android::hardware::biometrics::fingerprint::V2_1::implementation::BiometricsFingerprint;
using android::hardware::configureRpcThreadpool;
using android::hardware::joinRpcThreadpool;
using android::OK;
using android::sp;
using android::status_t;
int main() {
sp<BiometricsFingerprint> biometricsFingerprint;
status_t status;
LOG(INFO) << "Fingerprint HAL Adapter service is starting.";
biometricsFingerprint = new BiometricsFingerprint();
if (biometricsFingerprint == nullptr) {
LOG(ERROR) << "Can not create an instance of Fingerprint HAL Adapter BiometricsFingerprint Iface, exiting.";
goto shutdown;
}
configureRpcThreadpool(1, true /*callerWillJoin*/);
status = biometricsFingerprint->registerAsService();
if (status != OK) {
LOG(ERROR) << "Could not register service for Fingerprint HAL Adapter BiometricsFingerprint Iface ("
<< status << ")";
goto shutdown;
}
LOG(INFO) << "Fingerprint HAL Adapter service is ready.";
joinRpcThreadpool();
// Should not pass this line
shutdown:
// In normal operation, we don't expect the thread pool to shutdown
LOG(ERROR) << "Fingerprint HAL Adapter service is shutting down.";
return 1;
}

View File

@ -1,3 +1,3 @@
$(call inherit-product, vendor/havoc/config/common.mk)
$(call inherit-product, vendor/havoc/config/common_full_phone.mk)
$(call inherit-product, device/havoc/sepolicy/common/sepolicy.mk)
-include vendor/havoc/build/core/config.mk

View File

@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<permissions>
<library name="android.hidl.manager.V1_0"
file="/system/framework/android.hidl.manager-V1.0-java.jar" />
<library name="vendor.qti.qcril.am.V1_0"
file="/system/framework/vendor.qti.qcril.am-V1.0-java.jar" />
<library name="vendor.qti.hardware.radio.am.V1_0"

View File

@ -3,44 +3,214 @@
# Bionic loader config file.
#
# Don't change the order here.
# Don't change the order here. The first pattern that matches with the
# absolute path of an executable is selected.
dir.system = /system/bin/
dir.system = /system/xbin/
dir.system = /system/product/bin/
dir.vendor = /odm/bin/
dir.vendor = /vendor/bin/
dir.vendor = /data/nativetest/odm
dir.vendor = /data/nativetest64/odm
dir.vendor = /data/benchmarktest/odm
dir.vendor = /data/benchmarktest64/odm
dir.vendor = /data/nativetest/vendor
dir.vendor = /data/nativetest64/vendor
dir.vendor = /data/benchmarktest/vendor
dir.vendor = /data/benchmarktest64/vendor
dir.system = /data/nativetest
dir.system = /data/nativetest64
dir.system = /data/benchmarktest
dir.system = /data/benchmarktest64
dir.unrestricted = /data/nativetest/unrestricted
dir.unrestricted = /data/nativetest64/unrestricted
# TODO(b/123864775): Ensure tests are run from /data/nativetest{,64} or (if
# necessary) the unrestricted subdirs above. Then clean this up.
dir.unrestricted = /data/local/tmp
dir.postinstall = /postinstall
# Fallback entry to provide APEX namespace lookups for binaries anywhere else.
# This must be last.
dir.system = /data
[system]
additional.namespaces = sphal,vndk,rs
additional.namespaces = runtime,conscrypt,media,resolv,sphal,vndk,rs
###############################################################################
# "default" namespace
#
# Framework-side code runs in this namespace. Anything from /vendor partition
# Framework-side code runs in this namespace. Libs from /vendor partition
# can't be loaded in this namespace.
###############################################################################
namespace.default.isolated = false
namespace.default.search.paths = /system/${LIB}:/vendor/${LIB}
namespace.default.permitted.paths = /system/${LIB}:/vendor/${LIB}
namespace.default.isolated = true
namespace.default.asan.search.paths = /data/asan/system/${LIB}:/system/${LIB}:/data/asan/vendor/${LIB}:/vendor/${LIB}
namespace.default.asan.permitted.paths = /data/asan/system/${LIB}:/system/${LIB}:/data/asan/vendor/${LIB}:/vendor/${LIB}
namespace.default.search.paths = /system/${LIB}
namespace.default.search.paths += /system/product/${LIB}
# TODO(b/37013858): remove all dependencies to /vendor/lib from system processes
# When this is done, comment out following three lines and remove the three
# lines above
#namespace.default.isolated = true
#namespace.default.search.paths = /system/${LIB}
#namespace.default.permitted.paths = /system/${LIB}
# We can't have entire /system/${LIB} as permitted paths because doing so
# makes it possible to load libs in /system/${LIB}/vndk* directories by
# their absolute paths (e.g. dlopen("/system/lib/vndk/libbase.so");).
# VNDK libs are built with previous versions of Android and thus must not be
# loaded into this namespace where libs built with the current version of
# Android are loaded. Mixing the two types of libs in the same namespace can
# cause unexpected problem.
namespace.default.permitted.paths = /system/${LIB}/drm
namespace.default.permitted.paths += /system/${LIB}/extractors
namespace.default.permitted.paths += /system/${LIB}/hw
namespace.default.permitted.paths += /system/product/${LIB}
# These are where odex files are located. libart has to be able to dlopen the files
namespace.default.permitted.paths += /system/framework
namespace.default.permitted.paths += /system/app
namespace.default.permitted.paths += /system/priv-app
namespace.default.permitted.paths += /vendor/framework
namespace.default.permitted.paths += /vendor/app
namespace.default.permitted.paths += /vendor/priv-app
namespace.default.permitted.paths += /system/vendor/framework
namespace.default.permitted.paths += /system/vendor/app
namespace.default.permitted.paths += /system/vendor/priv-app
namespace.default.permitted.paths += /odm/framework
namespace.default.permitted.paths += /odm/app
namespace.default.permitted.paths += /odm/priv-app
namespace.default.permitted.paths += /oem/app
namespace.default.permitted.paths += /system/product/framework
namespace.default.permitted.paths += /system/product/app
namespace.default.permitted.paths += /system/product/priv-app
namespace.default.permitted.paths += /data
namespace.default.permitted.paths += /mnt/expand
namespace.default.permitted.paths += /apex/com.android.runtime/${LIB}/bionic
namespace.default.permitted.paths += /system/${LIB}/bootstrap
namespace.default.asan.search.paths = /data/asan/system/${LIB}
namespace.default.asan.search.paths += /system/${LIB}
namespace.default.asan.search.paths += /data/asan/system/product/${LIB}
namespace.default.asan.search.paths += /system/product/${LIB}
namespace.default.asan.permitted.paths = /data
namespace.default.asan.permitted.paths += /system/${LIB}/drm
namespace.default.asan.permitted.paths += /system/${LIB}/extractors
namespace.default.asan.permitted.paths += /system/${LIB}/hw
namespace.default.asan.permitted.paths += /system/framework
namespace.default.asan.permitted.paths += /system/app
namespace.default.asan.permitted.paths += /system/priv-app
namespace.default.asan.permitted.paths += /vendor/framework
namespace.default.asan.permitted.paths += /vendor/app
namespace.default.asan.permitted.paths += /vendor/priv-app
namespace.default.asan.permitted.paths += /system/vendor/framework
namespace.default.asan.permitted.paths += /system/vendor/app
namespace.default.asan.permitted.paths += /system/vendor/priv-app
namespace.default.asan.permitted.paths += /odm/framework
namespace.default.asan.permitted.paths += /odm/app
namespace.default.asan.permitted.paths += /odm/priv-app
namespace.default.asan.permitted.paths += /oem/app
namespace.default.asan.permitted.paths += /system/product/${LIB}
namespace.default.asan.permitted.paths += /system/product/framework
namespace.default.asan.permitted.paths += /system/product/app
namespace.default.asan.permitted.paths += /system/product/priv-app
namespace.default.asan.permitted.paths += /mnt/expand
namespace.default.asan.permitted.paths += /apex/com.android.runtime/${LIB}/bionic
namespace.default.asan.permitted.paths += /system/${LIB}/bootstrap
# Keep in sync with ld.config.txt in the com.android.runtime APEX.
# If a shared library or an executable requests a shared library that
# cannot be loaded into the default namespace, the dynamic linker tries
# to load the shared library from the runtime namespace. And then, if the
# shared library cannot be loaded from the runtime namespace either, the
# dynamic linker tries to load the shared library from the resolv namespace.
# Finally, if all attempts fail, the dynamic linker returns an error.
namespace.default.links = runtime,resolv
# Visible because some libraries are dlopen'ed, e.g. libopenjdk is dlopen'ed by
# libart.
namespace.default.visible = true
namespace.default.link.runtime.shared_libs = libdexfile_external.so
# libicuuc.so and libicui18n.so are kept for app compat reason. http://b/130788466
namespace.default.link.runtime.shared_libs += libicui18n.so
namespace.default.link.runtime.shared_libs += libicuuc.so
namespace.default.link.runtime.shared_libs += libnativebridge.so
namespace.default.link.runtime.shared_libs += libnativehelper.so
namespace.default.link.runtime.shared_libs += libnativeloader.so
namespace.default.link.runtime.shared_libs += libandroidicu.so
# TODO(b/122876336): Remove libpac.so once it's migrated to Webview
namespace.default.link.runtime.shared_libs += libpac.so
# When libnetd_resolv.so can't be found in the default namespace, search for it
# in the resolv namespace. Don't allow any other libraries from the resolv namespace
# to be loaded in the default namespace.
namespace.default.link.resolv.shared_libs = libnetd_resolv.so
###############################################################################
# "runtime" APEX namespace
#
#namespace.default.asan.search.paths = /data/asan/system/${LIB}:/system/${LIB}
#namespace.default.asan.permitted.paths = /data/asan/system/${LIB}:/system/${LIB}
# This namespace exposes externally accessible libraries from the Runtime APEX.
###############################################################################
namespace.runtime.isolated = true
namespace.runtime.visible = true
# Keep in sync with ld.config.txt in the com.android.runtime APEX.
namespace.runtime.search.paths = /apex/com.android.runtime/${LIB}
namespace.runtime.asan.search.paths = /apex/com.android.runtime/${LIB}
namespace.runtime.links = default
# TODO(b/119867084): Restrict to Bionic dlopen dependencies and PALette library
# when it exists.
namespace.runtime.link.default.allow_all_shared_libs = true
###############################################################################
# "media" APEX namespace
#
# This namespace is for libraries within the media APEX.
###############################################################################
namespace.media.isolated = true
namespace.media.visible = true
namespace.media.search.paths = /apex/com.android.media/${LIB}
namespace.media.asan.search.paths = /apex/com.android.media/${LIB}
namespace.media.permitted.paths = /apex/com.android.media/${LIB}/extractors
namespace.media.asan.permitted.paths = /apex/com.android.media/${LIB}/extractors
namespace.media.links = default
namespace.media.link.default.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libc.so:libdl.so:libft2.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libsync.so:libvndksupport.so
namespace.media.link.default.shared_libs += libbinder_ndk.so
namespace.media.link.default.shared_libs += libcgrouprc.so
namespace.media.link.default.shared_libs += libmediametrics.so
namespace.media.link.default.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.tsan-arm-android.so
###############################################################################
# "conscrypt" APEX namespace
#
# This namespace is for libraries within the conscrypt APEX.
###############################################################################
namespace.conscrypt.isolated = true
namespace.conscrypt.visible = true
# Keep in sync with ld.config.txt in the com.android.runtime APEX.
namespace.conscrypt.search.paths = /apex/com.android.conscrypt/${LIB}
namespace.conscrypt.asan.search.paths = /apex/com.android.conscrypt/${LIB}
namespace.conscrypt.links = runtime,default
namespace.conscrypt.link.runtime.shared_libs = libandroidio.so
namespace.conscrypt.link.default.shared_libs = libc.so
namespace.conscrypt.link.default.shared_libs += libm.so
namespace.conscrypt.link.default.shared_libs += libdl.so
namespace.conscrypt.link.default.shared_libs += liblog.so
###############################################################################
# "resolv" APEX namespace
#
# This namespace is for libraries within the resolv APEX.
###############################################################################
namespace.resolv.isolated = true
namespace.resolv.visible = true
namespace.resolv.search.paths = /apex/com.android.resolv/${LIB}
namespace.resolv.asan.search.paths = /apex/com.android.resolv/${LIB}
namespace.resolv.links = default
namespace.resolv.link.default.shared_libs = libc.so
namespace.resolv.link.default.shared_libs += libcgrouprc.so
namespace.resolv.link.default.shared_libs += libm.so
namespace.resolv.link.default.shared_libs += libdl.so
namespace.resolv.link.default.shared_libs += libbinder_ndk.so
namespace.resolv.link.default.shared_libs += liblog.so
namespace.resolv.link.default.shared_libs += libvndksupport.so
###############################################################################
# "sphal" namespace
@ -57,25 +227,39 @@ namespace.default.asan.permitted.paths = /data/asan/system/${LIB}:/system/${LIB}
###############################################################################
namespace.sphal.isolated = true
namespace.sphal.visible = true
namespace.sphal.search.paths = /vendor/${LIB}/egl:/vendor/${LIB}/hw:/vendor/${LIB}
namespace.sphal.permitted.paths = /vendor/${LIB}:/system/${LIB}/vndk-sp-26/hw:/system/${LIB}/vndk-sp-27/hw
namespace.sphal.asan.search.paths = /data/asan/vendor/${LIB}/egl:/vendor/${LIB}/egl:/data/asan/vendor/${LIB}/hw:/vendor/${LIB}/hw:/data/asan/vendor/${LIB}:/vendor/${LIB}
namespace.sphal.asan.permitted.paths = /data/asan/vendor/${LIB}:/vendor/${LIB}
namespace.sphal.search.paths = /odm/${LIB}
namespace.sphal.search.paths += /vendor/${LIB}
namespace.sphal.search.paths += /vendor/${LIB}/hw
namespace.sphal.permitted.paths = /odm/${LIB}
namespace.sphal.permitted.paths += /vendor/${LIB}
namespace.sphal.permitted.paths += /system/vendor/${LIB}
namespace.sphal.asan.search.paths = /data/asan/odm/${LIB}
namespace.sphal.asan.search.paths += /odm/${LIB}
namespace.sphal.asan.search.paths += /data/asan/vendor/${LIB}
namespace.sphal.asan.search.paths += /vendor/${LIB}
namespace.sphal.asan.permitted.paths = /data/asan/odm/${LIB}
namespace.sphal.asan.permitted.paths += /odm/${LIB}
namespace.sphal.asan.permitted.paths += /data/asan/vendor/${LIB}
namespace.sphal.asan.permitted.paths += /vendor/${LIB}
# Once in this namespace, access to libraries in /system/lib is restricted. Only
# libs listed here can be used.
namespace.sphal.links = default,vndk,rs
# WARNING: only NDK libs can be listed here.
namespace.sphal.link.default.shared_libs = libc.so:libm.so:libdl.so:libstdc++.so:liblog.so:libnativewindow.so:libEGL.so:libsync.so:libGLESv1_CM.so:libGLESv2.so:libvndksupport.so:libz.so
# WARNING: only VNDK-SP libs can be listed here. DO NOT EDIT this line.
namespace.sphal.link.vndk.shared_libs = android.hardware.renderscript@1.0.so:android.hardware.graphics.allocator@2.0.so:android.hardware.graphics.mapper@2.0.so:android.hardware.graphics.common@1.0.so:android.hidl.memory@1.0.so:libhwbinder.so:libbase.so:libcutils.so:libhardware.so:libhidlbase.so:libhidlmemory.so:libhidltransport.so:libion.so:libutils.so:libc++.so:android.hidl.base@1.0.so:libion.so
# libs listed here can be used. Order is important here as the namespaces are
# tried in this order. rs should be before vndk because both are capable
# of loading libRS_internal.so
namespace.sphal.links = rs,default,vndk
# Renderscript gets separate namespace
namespace.sphal.link.rs.shared_libs = libRS_internal.so
namespace.sphal.link.default.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libc.so:libdl.so:libft2.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libsync.so:libvndksupport.so
namespace.sphal.link.default.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.tsan-arm-android.so
namespace.sphal.link.vndk.shared_libs = android.hardware.graphics.allocator@2.0.so:android.hardware.graphics.common@1.0.so:android.hardware.graphics.mapper@2.0.so:android.hardware.renderscript@1.0.so:android.hidl.base@1.0.so:android.hidl.memory@1.0.so:android.hidl.memory@1.0-impl.so:libRSCpuRef.so:libRSDriver.so:libRS_internal.so:libbacktrace.so:libbase.so:libbcinfo.so:libblas.so:libc++.so:libcompiler_rt.so:libcutils.so:libhardware.so:libhidlbase.so:libhidlmemory.so:libhidltransport.so:libhwbinder.so:libion.so:liblzma.so:libunwind.so:libutils.so:libz.so
###############################################################################
# "rs" namespace
#
@ -86,15 +270,44 @@ namespace.sphal.link.rs.shared_libs = libRS_internal.so
###############################################################################
namespace.rs.isolated = true
namespace.rs.visible = true
namespace.rs.search.paths = /vendor/${LIB}/vndk-sp:/system/${LIB}/vndk-sp-26:/vendor/${LIB}
namespace.rs.permitted.paths = /vendor/${LIB}:/data
namespace.rs.asan.search.paths = /data/asan/vendor/${LIB}/vndk-sp:/vendor/${LIB}/vndk-sp:/data/asan/system/${LIB}/vndk-sp:/system/${LIB}/vndk-sp-26:/data/asan/vendor/${LIB}:/vendor/${LIB}
namespace.rs.asan.permitted.paths = /data/asan/vendor/${LIB}:/vendor/${LIB}:/data
namespace.rs.search.paths = /odm/${LIB}/vndk-sp
namespace.rs.search.paths += /vendor/${LIB}/vndk-sp
namespace.rs.search.paths += /system/${LIB}/vndk-sp-26
namespace.rs.search.paths += /odm/${LIB}
namespace.rs.search.paths += /vendor/${LIB}
namespace.rs.permitted.paths = /odm/${LIB}
namespace.rs.permitted.paths += /vendor/${LIB}
namespace.rs.permitted.paths += /system/vendor/${LIB}
namespace.rs.permitted.paths += /data
namespace.rs.asan.search.paths = /data/asan/odm/${LIB}/vndk-sp
namespace.rs.asan.search.paths += /odm/${LIB}/vndk-sp
namespace.rs.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
namespace.rs.asan.search.paths += /vendor/${LIB}/vndk-sp
namespace.rs.asan.search.paths += /data/asan/system/${LIB}/vndk-sp-26
namespace.rs.asan.search.paths += /system/${LIB}/vndk-sp-26
namespace.rs.asan.search.paths += /data/asan/odm/${LIB}
namespace.rs.asan.search.paths += /odm/${LIB}
namespace.rs.asan.search.paths += /data/asan/vendor/${LIB}
namespace.rs.asan.search.paths += /vendor/${LIB}
namespace.rs.asan.permitted.paths = /data/asan/odm/${LIB}
namespace.rs.asan.permitted.paths += /odm/${LIB}
namespace.rs.asan.permitted.paths += /data/asan/vendor/${LIB}
namespace.rs.asan.permitted.paths += /vendor/${LIB}
namespace.rs.asan.permitted.paths += /data
namespace.rs.links = default,vndk
namespace.rs.link.default.shared_libs = libc.so:libm.so:libdl.so:libstdc++.so:liblog.so:libnativewindow.so:libEGL.so:libsync.so:libGLESv1_CM.so:libGLESv2.so:libmediandk.so:libvndksupport.so:libz.so:libft2.so
namespace.rs.link.vndk.shared_libs = android.hardware.renderscript@1.0.so:android.hardware.graphics.allocator@2.0.so:android.hardware.graphics.mapper@2.0.so:android.hardware.graphics.common@1.0.so:android.hidl.memory@1.0.so:libhwbinder.so:libbase.so:libcutils.so:libhardware.so:libhidlbase.so:libhidlmemory.so:libhidltransport.so:libion.so:libutils.so:libc++.so
namespace.rs.link.default.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libc.so:libdl.so:libft2.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libsync.so:libvndksupport.so
namespace.rs.link.default.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.tsan-arm-android.so
# Private LLNDK libs (e.g. libft2.so) are exceptionally allowed to this
# namespace because RS framework libs are using them.
namespace.rs.link.default.shared_libs +=
namespace.rs.link.vndk.shared_libs = android.hardware.graphics.allocator@2.0.so:android.hardware.graphics.common@1.0.so:android.hardware.graphics.mapper@2.0.so:android.hardware.renderscript@1.0.so:android.hidl.base@1.0.so:android.hidl.memory@1.0.so:android.hidl.memory@1.0-impl.so:libRSCpuRef.so:libRSDriver.so:libRS_internal.so:libbacktrace.so:libbase.so:libbcinfo.so:libblas.so:libc++.so:libcompiler_rt.so:libcutils.so:libhardware.so:libhidlbase.so:libhidlmemory.so:libhidltransport.so:libhwbinder.so:libion.so:liblzma.so:libunwind.so:libutils.so:libz.so
###############################################################################
# "vndk" namespace
@ -103,17 +316,53 @@ namespace.rs.link.vndk.shared_libs = android.hardware.renderscript@1.0.so:androi
###############################################################################
namespace.vndk.isolated = true
namespace.vndk.visible = true
namespace.vndk.search.paths = /vendor/${LIB}/vndk-sp:/system/${LIB}/vndk-sp-26
namespace.vndk.permitted.paths = /vendor/${LIB}/hw:/vendor/${LIB}/egl
namespace.vndk.asan.search.paths = /data/asan/vendor/${LIB}/vndk-sp:/vendor/${LIB}/vndk-sp:/data/asan/system/${LIB}/vndk-sp:/system/${LIB}/vndk-sp-26
namespace.vndk.asan.permitted.paths = /data/asan/vendor/${LIB}/hw:/vendor/${LIB}/hw:/data/asan/vendor/${LIB}/egl:/vendor/${LIB}/egl
namespace.vndk.search.paths = /odm/${LIB}/vndk-sp
namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.search.paths += /system/${LIB}/vndk-sp-26
namespace.vndk.permitted.paths = /odm/${LIB}/hw
namespace.vndk.permitted.paths += /odm/${LIB}/egl
namespace.vndk.permitted.paths += /vendor/${LIB}/hw
namespace.vndk.permitted.paths += /vendor/${LIB}/egl
namespace.vndk.permitted.paths += /system/vendor/${LIB}/hw
namespace.vndk.permitted.paths += /system/vendor/${LIB}/egl
# This is exceptionally required since android.hidl.memory@1.0-impl.so is here
namespace.vndk.permitted.paths += /system/${LIB}/vndk-sp-26/hw
namespace.vndk.asan.search.paths = /data/asan/odm/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /odm/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /data/asan/system/${LIB}/vndk-sp-26
namespace.vndk.asan.search.paths += /system/${LIB}/vndk-sp-26
namespace.vndk.asan.permitted.paths = /data/asan/odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /odm/${LIB}/hw
namespace.vndk.asan.permitted.paths += /data/asan/odm/${LIB}/egl
namespace.vndk.asan.permitted.paths += /odm/${LIB}/egl
namespace.vndk.asan.permitted.paths += /data/asan/vendor/${LIB}/hw
namespace.vndk.asan.permitted.paths += /vendor/${LIB}/hw
namespace.vndk.asan.permitted.paths += /data/asan/vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /vendor/${LIB}/egl
namespace.vndk.asan.permitted.paths += /data/asan/system/${LIB}/vndk-sp-26/hw
namespace.vndk.asan.permitted.paths += /system/${LIB}/vndk-sp-26/hw
# The "vndk" namespace links to "default" namespace for LLNDK libs and links to
# "sphal" namespace for vendor libs. The ordering matters. The "default"
# namespace has higher priority than the "sphal" namespace.
namespace.vndk.links = default,sphal
# When these NDK libs are required inside this namespace, then it is redirected
# to the default namespace. This is possible since their ABI is stable across
# Android releases.
namespace.vndk.links = default
namespace.vndk.link.default.shared_libs = android.hidl.memory@1.0-impl.so:libc.so:libm.so:libdl.so:libstdc++.so:liblog.so:libnativewindow.so:libEGL.so:libsync.so:libvndksupport.so:libz.so
namespace.vndk.link.default.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libc.so:libdl.so:libft2.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libsync.so:libvndksupport.so
namespace.vndk.link.default.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.tsan-arm-android.so
# Allow VNDK-SP extensions to use vendor libraries
namespace.vndk.link.sphal.allow_all_shared_libs = true
###############################################################################
# Namespace config for vendor processes. In O, no restriction is enforced for
@ -122,7 +371,296 @@ namespace.vndk.link.default.shared_libs = android.hidl.memory@1.0-impl.so:libc.s
# (LL-NDK only) access.
###############################################################################
[vendor]
namespace.default.isolated = false
namespace.default.search.paths = /vendor/${LIB}/hw:/vendor/${LIB}/egl:/vendor/${LIB}:/system/${LIB}/vndk-26:/vendor/${LIB}/vndk-sp:/system/${LIB}/vndk-sp-26:/system/${LIB}
additional.namespaces = runtime,system,vndk
namespace.default.asan.search.paths = /data/asan/vendor/${LIB}/hw:/vendor/${LIB}/hw:/data/asan/vendor/${LIB}/egl:/vendor/${LIB}/egl:/data/asan/vendor/${LIB}:/vendor/${LIB}:/data/asan/system/${LIB}/vndk:/system/${LIB}/vndk-26:/data/asan/vendor/${LIB}/vndk-sp:/vendor/${LIB}/vndk-sp:/data/asan/system/${LIB}/vndk-sp:/system/${LIB}/vndk-sp-26:/data/asan/system/${LIB}:/system/${LIB}
###############################################################################
# "default" namespace
#
# This is the default linker namespace for a vendor process (a process started
# from /vendor/bin/*). The main executable and the libs under /vendor/lib[64]
# are loaded directly into this namespace. However, other libs under the system
# partition (VNDK and LLNDK libraries) are not loaded here but from the
# separate namespace 'system'. The delegation to the system namespace is done
# via the 'namespace.default.link.system.shared_libs' property below.
#
# '#VNDK27#' TAG is only for building ld.config.27.txt for backward
# compatibility. (TODO:b/123390078) Move them to a separate file.
###############################################################################
namespace.default.isolated = true
namespace.default.visible = true
namespace.default.search.paths = /odm/${LIB}
namespace.default.search.paths += /vendor/${LIB}
namespace.default.permitted.paths = /odm
namespace.default.permitted.paths += /vendor
namespace.default.permitted.paths += /system/vendor
namespace.default.asan.search.paths = /data/asan/odm/${LIB}
namespace.default.asan.search.paths += /odm/${LIB}
namespace.default.asan.search.paths += /data/asan/vendor/${LIB}
namespace.default.asan.search.paths += /vendor/${LIB}
namespace.default.asan.permitted.paths = /data/asan/odm
namespace.default.asan.permitted.paths += /odm
namespace.default.asan.permitted.paths += /data/asan/vendor
namespace.default.asan.permitted.paths += /vendor
namespace.default.links = system,vndk,runtime
namespace.default.link.system.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libc.so:libdl.so:libft2.so:libm.so:libmediandk.so:libnativewindow.so:libsync.so:libvndksupport.so
namespace.default.link.vndk.allow_all_shared_libs = true
namespace.default.link.runtime.shared_libs = libnativeloader.so
###############################################################################
# "runtime" APEX namespace
#
# This namespace exposes externally accessible libraries from the Runtime APEX.
###############################################################################
namespace.runtime.isolated = true
# Keep in sync with ld.config.txt in the com.android.runtime APEX.
namespace.runtime.search.paths = /apex/com.android.runtime/${LIB}
namespace.runtime.asan.search.paths = /apex/com.android.runtime/${LIB}
namespace.runtime.links = system
# TODO(b/119867084): Restrict to Bionic dlopen dependencies and PALette library
# when it exists.
namespace.runtime.link.system.allow_all_shared_libs = true
###############################################################################
# "vndk" namespace
#
# This namespace is where VNDK and VNDK-SP libraries are loaded for
# a vendor process.
###############################################################################
namespace.vndk.isolated = false
namespace.vndk.search.paths = /odm/${LIB}/vndk
namespace.vndk.search.paths += /odm/${LIB}/vndk-sp
namespace.vndk.search.paths += /vendor/${LIB}/vndk
namespace.vndk.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.search.paths += /system/${LIB}/vndk-sp-26
namespace.vndk.search.paths += /system/${LIB}/vndk-26
namespace.vndk.asan.search.paths = /data/asan/odm/${LIB}/vndk
namespace.vndk.asan.search.paths += /odm/${LIB}/vndk
namespace.vndk.asan.search.paths += /data/asan/odm/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /odm/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk
namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk
namespace.vndk.asan.search.paths += /data/asan/vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /vendor/${LIB}/vndk-sp
namespace.vndk.asan.search.paths += /data/asan/system/${LIB}/vndk-sp-26
namespace.vndk.asan.search.paths += /system/${LIB}/vndk-sp-26
namespace.vndk.asan.search.paths += /data/asan/system/${LIB}/vndk-26
namespace.vndk.asan.search.paths += /system/${LIB}/vndk-26
# When these NDK libs are required inside this namespace, then it is redirected
# to the system namespace. This is possible since their ABI is stable across
# Android releases. The links here should be identical to that of the
# 'vndk_in_system' namespace, except for the link between 'vndk' and
# 'vndk_in_system'.
namespace.vndk.links = system,default,runtime
namespace.vndk.link.system.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libc.so:libdl.so:libft2.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libsync.so:libvndksupport.so
namespace.vndk.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.tsan-arm-android.so
namespace.vndk.link.default.allow_all_shared_libs = true
namespace.vndk.link.runtime.shared_libs = libnativeloader.so
###############################################################################
# "system" namespace
#
# This namespace is where system libs (VNDK and LLNDK libs) are loaded for
# a vendor process.
###############################################################################
namespace.system.isolated = false
namespace.system.search.paths = /system/${LIB}
namespace.system.search.paths += /system/product/${LIB}
namespace.system.asan.search.paths = /data/asan/system/${LIB}
namespace.system.asan.search.paths += /system/${LIB}
namespace.system.asan.search.paths += /data/asan/product/${LIB}
namespace.system.asan.search.paths += /system/product/${LIB}
namespace.system.asan.search.paths += /data/asan/product_services/${LIB}
namespace.system.links = runtime
namespace.system.link.runtime.shared_libs = libdexfile_external.so
# libicuuc.so and libicui18n.so are kept for app compat reason. http://b/130788466
namespace.system.link.runtime.shared_libs += libicui18n.so
namespace.system.link.runtime.shared_libs += libicuuc.so
namespace.system.link.runtime.shared_libs += libnativebridge.so
namespace.system.link.runtime.shared_libs += libnativehelper.so
namespace.system.link.runtime.shared_libs += libnativeloader.so
# Workaround for b/124772622
namespace.system.link.runtime.shared_libs += libandroidicu.so
###############################################################################
# "vndk_in_system" namespace
#
# This namespace is where no-vendor-variant VNDK libraries are loaded for a
# vendor process. Note that we do not simply export these libraries from
# "system" namespace, because in some case both the core variant and the
# vendor variant of a VNDK library may be loaded. In such case, we do not
# want to eliminate double-loading because doing so means the global states
# of the library would be shared.
#
# Only the no-vendor-variant VNDK libraries are whitelisted in this namespace.
# This is to ensure that we do not load libraries needed by no-vendor-variant
# VNDK libraries into vndk_in_system namespace.
###############################################################################
namespace.vndk_in_system.isolated = true
namespace.vndk_in_system.visible = true
# The search paths here should be kept the same as that of the 'system'
# namespace.
namespace.vndk_in_system.search.paths = /system/${LIB}
namespace.vndk_in_system.search.paths += /system/product/${LIB}
namespace.vndk_in_system.asan.search.paths = /data/asan/system/${LIB}
namespace.vndk_in_system.asan.search.paths += /system/${LIB}
namespace.vndk_in_system.asan.search.paths += /data/asan/product/${LIB}
namespace.vndk_in_system.asan.search.paths += /system/product/${LIB}
namespace.vndk_in_system.asan.search.paths += /data/asan/product_services/${LIB}
# The links here should be identical to that of the 'vndk' namespace, with the
# following exception:
# 1. 'vndk_in_system' needs to be freely linked back to 'vndk'.
# 2. 'vndk_in_system' does not need to link to 'default', as any library that
# requires anything vendor would not be a vndk_in_system library.
namespace.vndk_in_system.links = vndk,system
namespace.vndk_in_system.link.system.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libc.so:libdl.so:libft2.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libsync.so:libvndksupport.so
namespace.vndk_in_system.link.system.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.tsan-arm-android.so
namespace.vndk_in_system.link.vndk.allow_all_shared_libs = true
###############################################################################
# Namespace config for native tests that need access to both system and vendor
# libraries. This replicates the default linker config (done by
# init_default_namespace_no_config in bionic/linker/linker.cpp), except that it
# includes the requisite namespace setup for APEXes.
###############################################################################
[unrestricted]
additional.namespaces = runtime,media,conscrypt,resolv
namespace.default.search.paths = /system/${LIB}
namespace.default.search.paths += /odm/${LIB}
namespace.default.search.paths += /vendor/${LIB}
namespace.default.asan.search.paths = /data/asan/system/${LIB}
namespace.default.asan.search.paths += /system/${LIB}
namespace.default.asan.search.paths += /data/asan/odm/${LIB}
namespace.default.asan.search.paths += /odm/${LIB}
namespace.default.asan.search.paths += /data/asan/vendor/${LIB}
namespace.default.asan.search.paths += /vendor/${LIB}
# Keep in sync with ld.config.txt in the com.android.runtime APEX.
namespace.default.links = runtime,resolv
namespace.default.visible = true
namespace.default.link.runtime.shared_libs = libdexfile_external.so
# libicuuc.so and libicui18n.so are kept for app compat reason. http://b/130788466
namespace.default.link.runtime.shared_libs += libicui18n.so
namespace.default.link.runtime.shared_libs += libicuuc.so
namespace.default.link.runtime.shared_libs += libnativebridge.so
namespace.default.link.runtime.shared_libs += libnativehelper.so
namespace.default.link.runtime.shared_libs += libnativeloader.so
namespace.default.link.runtime.shared_libs += libandroidicu.so
# TODO(b/122876336): Remove libpac.so once it's migrated to Webview
namespace.default.link.runtime.shared_libs += libpac.so
namespace.default.link.resolv.shared_libs = libnetd_resolv.so
###############################################################################
# "runtime" APEX namespace
#
# This namespace exposes externally accessible libraries from the Runtime APEX.
###############################################################################
namespace.runtime.isolated = true
namespace.runtime.visible = true
# Keep in sync with ld.config.txt in the com.android.runtime APEX.
namespace.runtime.search.paths = /apex/com.android.runtime/${LIB}
namespace.runtime.asan.search.paths = /apex/com.android.runtime/${LIB}
namespace.runtime.links = default
# TODO(b/119867084): Restrict to Bionic dlopen dependencies and PALette library
# when it exists.
namespace.runtime.link.default.allow_all_shared_libs = true
###############################################################################
# "media" APEX namespace
#
# This namespace is for libraries within the media APEX.
###############################################################################
namespace.media.isolated = true
namespace.media.visible = true
namespace.media.search.paths = /apex/com.android.media/${LIB}
namespace.media.asan.search.paths = /apex/com.android.media/${LIB}
namespace.media.permitted.paths = /apex/com.android.media/${LIB}/extractors
namespace.media.asan.permitted.paths = /apex/com.android.media/${LIB}/extractors
namespace.media.links = default
namespace.media.link.default.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libc.so:libdl.so:libft2.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libsync.so:libvndksupport.so
namespace.media.link.default.shared_libs += libbinder_ndk.so
namespace.media.link.default.shared_libs += libmediametrics.so
namespace.media.link.default.shared_libs += libclang_rt.asan-arm-android.so:libclang_rt.hwasan-arm-android.so:libclang_rt.ubsan_standalone-arm-android.so:libclang_rt.tsan-arm-android.so
###############################################################################
# "conscrypt" APEX namespace
#
# This namespace is for libraries within the conscrypt APEX.
###############################################################################
namespace.conscrypt.isolated = true
namespace.conscrypt.visible = true
# Keep in sync with ld.config.txt in the com.android.runtime APEX.
namespace.conscrypt.search.paths = /apex/com.android.conscrypt/${LIB}
namespace.conscrypt.asan.search.paths = /apex/com.android.conscrypt/${LIB}
namespace.conscrypt.links = runtime,default
namespace.conscrypt.link.runtime.shared_libs = libandroidio.so
namespace.conscrypt.link.default.shared_libs = libc.so
namespace.conscrypt.link.default.shared_libs += libm.so
namespace.conscrypt.link.default.shared_libs += libdl.so
namespace.conscrypt.link.default.shared_libs += liblog.so
###############################################################################
# "resolv" APEX namespace
#
# This namespace is for libraries within the resolv APEX.
###############################################################################
namespace.resolv.isolated = true
namespace.resolv.visible = true
namespace.resolv.search.paths = /apex/com.android.resolv/${LIB}
namespace.resolv.asan.search.paths = /apex/com.android.resolv/${LIB}
namespace.resolv.links = default
namespace.resolv.link.default.shared_libs = libc.so
namespace.resolv.link.default.shared_libs += libm.so
namespace.resolv.link.default.shared_libs += libdl.so
namespace.resolv.link.default.shared_libs += libbinder_ndk.so
namespace.resolv.link.default.shared_libs += liblog.so
###############################################################################
# Namespace config for binaries under /postinstall.
# Only default namespace is defined and default has no directories
# other than /system/lib in the search paths. This is because linker calls
# realpath on the search paths and this causes selinux denial if the paths
# (/vendor, /odm) are not allowed to the postinstall binaries. There is no
# reason to allow the binaries to access the paths.
###############################################################################
[postinstall]
namespace.default.isolated = false
namespace.default.search.paths = /system/${LIB}
namespace.default.search.paths += /system/product/${LIB}

View File

@ -1,128 +0,0 @@
# Copyright (C) 2017 The Android Open Source Project
#
# Bionic loader config file.
#
# Don't change the order here.
dir.system = /system/bin/
dir.system = /system/xbin/
dir.vendor = /vendor/bin/
dir.vendor = /data/nativetest/vendor
dir.vendor = /data/nativetest64/vendor
dir.vendor = /data/benchmarktest/vendor
dir.vendor = /data/benchmarktest64/vendor
dir.system = /data/nativetest
dir.system = /data/nativetest64
dir.system = /data/benchmarktest
dir.system = /data/benchmarktest64
[system]
additional.namespaces = sphal,vndk,rs
###############################################################################
# "default" namespace
#
# Framework-side code runs in this namespace. Anything from /vendor partition
# can't be loaded in this namespace.
###############################################################################
namespace.default.isolated = false
namespace.default.search.paths = /system/${LIB}:/vendor/${LIB}
namespace.default.permitted.paths = /system/${LIB}:/vendor/${LIB}
namespace.default.asan.search.paths = /data/asan/system/${LIB}:/system/${LIB}:/data/asan/vendor/${LIB}:/vendor/${LIB}
namespace.default.asan.permitted.paths = /data/asan/system/${LIB}:/system/${LIB}:/data/asan/vendor/${LIB}:/vendor/${LIB}
# TODO(b/37013858): remove all dependencies to /vendor/lib from system processes
# When this is done, comment out following three lines and remove the three
# lines above
#namespace.default.isolated = true
#namespace.default.search.paths = /system/${LIB}
#namespace.default.permitted.paths = /system/${LIB}
#
#namespace.default.asan.search.paths = /data/asan/system/${LIB}:/system/${LIB}
#namespace.default.asan.permitted.paths = /data/asan/system/${LIB}:/system/${LIB}
###############################################################################
# "sphal" namespace
#
# SP-HAL(Sameprocess-HAL)s are the only vendor libraries that are allowed to be
# loaded inside system processes. libEGL_<chipset>.so, libGLESv2_<chipset>.so,
# android.hardware.graphics.mapper@2.0-impl.so, etc are SP-HALs.
#
# This namespace is exclusivly for SP-HALs. When the framework tries to dynami-
# cally load SP-HALs, android_dlopen_ext() is used to explicitly specifying
# that they should be searched and loaded from this namespace.
#
# Note that there is no link from the default namespace to this namespace.
###############################################################################
namespace.sphal.isolated = true
namespace.sphal.visible = true
namespace.sphal.search.paths = /vendor/${LIB}/egl:/vendor/${LIB}/hw:/vendor/${LIB}
namespace.sphal.permitted.paths = /vendor/${LIB}:/system/${LIB}/vndk-sp-27/hw
namespace.sphal.asan.search.paths = /data/asan/vendor/${LIB}/egl:/vendor/${LIB}/egl:/data/asan/vendor/${LIB}/hw:/vendor/${LIB}/hw:/data/asan/vendor/${LIB}:/vendor/${LIB}
namespace.sphal.asan.permitted.paths = /data/asan/vendor/${LIB}:/vendor/${LIB}
# Once in this namespace, access to libraries in /system/lib is restricted. Only
# libs listed here can be used.
namespace.sphal.links = default,vndk,rs
# WARNING: only NDK libs can be listed here.
namespace.sphal.link.default.shared_libs = libc.so:libm.so:libdl.so:libstdc++.so:liblog.so:libnativewindow.so:libEGL.so:libsync.so:libGLESv1_CM.so:libGLESv2.so:libvndksupport.so:libz.so
# WARNING: only VNDK-SP libs can be listed here. DO NOT EDIT this line.
namespace.sphal.link.vndk.shared_libs = android.hardware.renderscript@1.0.so:android.hardware.graphics.allocator@2.0.so:android.hardware.graphics.mapper@2.0.so:android.hardware.graphics.common@1.0.so:android.hidl.memory@1.0.so:libhwbinder.so:libbase.so:libcutils.so:libhardware.so:libhidlbase.so:libhidlmemory.so:libhidltransport.so:libion.so:libutils.so:libc++.so
# Renderscript gets separate namespace
namespace.sphal.link.rs.shared_libs = libRS_internal.so
###############################################################################
# "rs" namespace
#
# This namespace is exclusively for Renderscript internal libraries.
# This namespace has slightly looser restriction than the vndk namespace because
# of the genuine characteristics of Renderscript; /data is in the permitted path
# to load the compiled *.so file and libmediandk.so can be used here.
###############################################################################
namespace.rs.isolated = true
namespace.rs.visible = true
namespace.rs.search.paths = /vendor/${LIB}/vndk-sp:/system/${LIB}/vndk-sp-27:/vendor/${LIB}
namespace.rs.permitted.paths = /vendor/${LIB}:/data
namespace.rs.asan.search.paths = /data/asan/vendor/${LIB}/vndk-sp:/vendor/${LIB}/vndk-sp:/data/asan/system/${LIB}/vndk-sp-27:/system/${LIB}/vndk-sp-27:/data/asan/vendor/${LIB}:/vendor/${LIB}
namespace.rs.asan.permitted.paths = /data/asan/vendor/${LIB}:/vendor/${LIB}:/data
namespace.rs.links = default,vndk
namespace.rs.link.default.shared_libs = libc.so:libm.so:libdl.so:libstdc++.so:liblog.so:libnativewindow.so:libEGL.so:libsync.so:libGLESv1_CM.so:libGLESv2.so:libmediandk.so:libvndksupport.so:libz.so:libft2.so
namespace.rs.link.vndk.shared_libs = android.hardware.renderscript@1.0.so:android.hardware.graphics.allocator@2.0.so:android.hardware.graphics.mapper@2.0.so:android.hardware.graphics.common@1.0.so:android.hidl.memory@1.0.so:libhwbinder.so:libbase.so:libcutils.so:libhardware.so:libhidlbase.so:libhidlmemory.so:libhidltransport.so:libion.so:libutils.so:libc++.so
###############################################################################
# "vndk" namespace
#
# This namespace is exclusively for vndk-sp libs.
###############################################################################
namespace.vndk.isolated = true
namespace.vndk.visible = true
namespace.vndk.search.paths = /vendor/${LIB}/vndk-sp:/system/${LIB}/vndk-sp-27
namespace.vndk.permitted.paths = /vendor/${LIB}/hw:/vendor/${LIB}/egl
namespace.vndk.asan.search.paths = /data/asan/vendor/${LIB}/vndk-sp:/vendor/${LIB}/vndk-sp:/data/asan/system/${LIB}/vndk-sp:/system/${LIB}/vndk-sp
namespace.vndk.asan.permitted.paths = /data/asan/vendor/${LIB}/hw:/vendor/${LIB}/hw:/data/asan/vendor/${LIB}/egl:/vendor/${LIB}/egl
# When these NDK libs are required inside this namespace, then it is redirected
# to the default namespace. This is possible since their ABI is stable across
# Android releases.
namespace.vndk.links = default
namespace.vndk.link.default.shared_libs = android.hidl.memory@1.0-impl.so:libc.so:libm.so:libdl.so:libstdc++.so:liblog.so:libnativewindow.so:libEGL.so:libsync.so:libvndksupport.so:libz.so
###############################################################################
# Namespace config for vendor processes. In O, no restriction is enforced for
# them. However, in O-MR1, access to /system/${LIB} will not be allowed to
# the default namespace. 'system' namespace will be added to give limited
# (LL-NDK only) access.
###############################################################################
[vendor]
namespace.default.isolated = false
namespace.default.search.paths = /vendor/${LIB}/hw:/vendor/${LIB}/egl:/vendor/${LIB}:/system/${LIB}/vndk-27:/vendor/${LIB}/vndk-sp:/system/${LIB}/vndk-sp-27:/system/${LIB}
namespace.default.asan.search.paths = /data/asan/vendor/${LIB}/hw:/vendor/${LIB}/hw:/data/asan/vendor/${LIB}/egl:/vendor/${LIB}/egl:/data/asan/vendor/${LIB}:/vendor/${LIB}:/data/asan/system/${LIB}/vndk:/system/${LIB}/vndk:/data/asan/vendor/${LIB}/vndk-sp:/vendor/${LIB}/vndk-sp:/data/asan/system/${LIB}/vndk-sp:/system/${LIB}/vndk-sp:/data/asan/system/${LIB}:/system/${LIB}

View File

@ -24,14 +24,35 @@
<string name="config_wallpaperCropperPackage">com.android.wallpaperpicker</string>
<bool name="config_unplugTurnsOnScreen">true</bool>
<!-- Currently disabled for Android Go
<integer name="config_multiuserMaximumUsers">4</integer>
<integer name="config_multiuserMaximumUsers">5</integer>
<bool name="config_enableMultiUserUI">true</bool>
-->
<!-- This device is data-only. -->
<bool name="config_voice_capable">false</bool>
<!-- This device does not allow sms service. -->
<bool name="config_sms_capable">false</bool>
<string name="config_dozeComponent">com.android.systemui/com.android.systemui.doze.DozeService</string>
<bool name="config_swipe_up_gesture_setting_available">true</bool>
<bool name="config_smart_battery_available">true</bool>
<dimen name="config_dialogCornerRadius">8.0dip</dimen>
<dimen name="config_buttonCornerRadius">4.0dip</dimen>
<bool name="config_cellBroadcastAppLinks">true</bool>
<string-array name="config_biometric_sensors" translatable="false" >
<!-- ID0:Fingerprint:Strong -->
<item>0:2:15</item>
</string-array>
<array name="config_availableColorModes">
<!-- ColorDisplayManager.COLOR_MODE_NATURAL -->
<item>0</item>
<!-- ColorDisplayManager.COLOR_MODE_BOOSTED -->
<item>1</item>
<!-- ColorDisplayManager.COLOR_MODE_SATURATED -->
<item>2</item>
<!-- ColorDisplayManager.COLOR_MODE_AUTOMATIC -->
<item>3</item>
</array>
</resources>

75
overrides/Android.mk Normal file
View File

@ -0,0 +1,75 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := phh-gapps-go-overrides
PACKAGES.$(LOCAL_MODULE).OVERRIDES := \
Wellbeing \
GMailGo \
YouTubeGo \
DuoGo \
Traceur \
GmsSampleIntegration \
GmsSampleIntegrationGo \
GmsSampleIntegrationGo2GB \
GmsSampleIntegrationGo512M \
GmsEEAType1Integration \
GmsEEAType1IntegrationGo \
GmsEEAType2Integration \
GmsEEAType2IntegrationGo \
GmsEEAType3aIntegration \
GmsEEAType3aIntegrationGo \
GmsEEAType3bIntegration \
GmsEEAType3bIntegrationGo \
GmsEEAType4aIntegration \
GmsEEAType4aIntegrationGo \
GmsEEAType4bIntegration \
GmsEEAType4bIntegrationGo \
GmsEEAType4cIntegration \
GmsEEAType4cIntegrationGo
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)
LOCAL_SRC_FILES := nothing.txt
LOCAL_UNINSTALLABLE_MODULE := true
include $(BUILD_PREBUILT)
include $(CLEAR_VARS)
LOCAL_MODULE := phh-gapps-overrides
PACKAGES.$(LOCAL_MODULE).OVERRIDES := \
Drive \
YTMusic \
Videos \
Duo \
Traceur \
Wellbeing \
YouTube \
Photos \
Maps \
Gmail2 \
FilesGoogle \
GmsSampleIntegration \
GmsSampleIntegrationGo \
GmsSampleIntegrationGo2GB \
GmsSampleIntegrationGo512M \
GmsEEAType1Integration \
GmsEEAType1IntegrationGo \
GmsEEAType2Integration \
GmsEEAType2IntegrationGo \
GmsEEAType3aIntegration \
GmsEEAType3aIntegrationGo \
GmsEEAType3bIntegration \
GmsEEAType3bIntegrationGo \
GmsEEAType4aIntegration \
GmsEEAType4aIntegrationGo \
GmsEEAType4bIntegration \
GmsEEAType4bIntegrationGo \
GmsEEAType4cIntegration \
GmsEEAType4cIntegrationGo
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)
LOCAL_SRC_FILES := nothing.txt
LOCAL_UNINSTALLABLE_MODULE := true
include $(BUILD_PREBUILT)

0
overrides/nothing.txt Normal file
View File

View File

@ -1,6 +1,20 @@
#!/system/bin/sh
vndk="$(getprop persist.sys.vndk)"
[ -z "$vndk" ] && vndk="$(getprop ro.vndk.version |grep -oE '^[0-9]+')"
[ "$(getprop vold.decrypt)" = "trigger_restart_min_framework" ] && exit 0
setprop ctl.start media.swcodec
for i in wpa p2p;do
if [ ! -f /data/misc/wifi/${i}_supplicant.conf ];then
cp /vendor/etc/wifi/wpa_supplicant.conf /data/misc/wifi/${i}_supplicant.conf
fi
chmod 0660 /data/misc/wifi/${i}_supplicant.conf
chown wifi:system /data/misc/wifi/${i}_supplicant.conf
done
if [ -f /vendor/bin/mtkmal ];then
if [ "$(getprop persist.mtk_ims_support)" = 1 ] || [ "$(getprop persist.mtk_epdg_support)" = 1 ];then
setprop persist.mtk_ims_support 0
@ -18,6 +32,26 @@ if find /sys/firmware -name support_fod |grep -qE .;then
setprop ctl.restart vendor.fps_hal
fi
setprop ctl.stop storageproxyd
sleep 10
minijailSrc=/system/system_ext/apex/com.android.vndk.v28/lib/libminijail.so
minijailSrc64=/system/system_ext/apex/com.android.vndk.v28/lib64/libminijail.so
if [ "$vndk" = 27 ];then
mount $minijailSrc64 /vendor/lib64/libminijail_vendor.so
mount $minijailSrc /vendor/lib/libminijail_vendor.so
fi
if [ "$vndk" = 28 ];then
mount $minijailSrc64 /vendor/lib64/libminijail_vendor.so
mount $minijailSrc /vendor/lib/libminijail_vendor.so
mount $minijailSrc64 /system/lib64/vndk-28/libminijail.so
mount $minijailSrc /system/lib/vndk-28/libminijail.so
mount $minijailSrc64 /vendor/lib64/libminijail.so
mount $minijailSrc /vendor/lib/libminijail.so
fi
#Clear looping services
sleep 30
getprop | \

31
phh-on-data.sh Normal file
View File

@ -0,0 +1,31 @@
#!/system/bin/sh
vndk="$(getprop persist.sys.vndk)"
[ -z "$vndk" ] && vndk="$(getprop ro.vndk.version |grep -oE '^[0-9]+')"
if getprop persist.sys.phh.no_vendor_overlay |grep -q true;then
for part in odm vendor;do
mount /mnt/phh/empty_dir/ /$part/overlay
done
fi
if getprop persist.sys.phh.caf.media_profile |grep -q true;then
setprop media.settings.xml "/vendor/etc/media_profiles_vendor.xml"
fi
minijailSrc=/system/system_ext/apex/com.android.vndk.v28/lib/libminijail.so
minijailSrc64=/system/system_ext/apex/com.android.vndk.v28/lib64/libminijail.so
if [ "$vndk" = 27 ];then
mount $minijailSrc64 /vendor/lib64/libminijail_vendor.so
mount $minijailSrc /vendor/lib/libminijail_vendor.so
fi
if [ "$vndk" = 28 ];then
mount $minijailSrc64 /vendor/lib64/libminijail_vendor.so
mount $minijailSrc /vendor/lib/libminijail_vendor.so
mount $minijailSrc64 /system/lib64/vndk-28/libminijail.so
mount $minijailSrc /system/lib/vndk-28/libminijail.so
mount $minijailSrc64 /vendor/lib64/libminijail.so
mount $minijailSrc /vendor/lib/libminijail.so
fi

View File

@ -31,8 +31,13 @@ xiaomi_toggle_dt2w_event_node() {
cd /sys/class/input || return
echo event*
); do
isTouchscreen=false
if getevent -p /dev/input/$ev |grep -e 0035 -e 0036|wc -l |grep -q 2;then
isTouchscreen=true
fi
[ ! -f "/sys/class/input/${ev}/device/device/gesture_mask" ] &&
[ ! -f "/sys/class/input/${ev}/device/wake_gesture" ] && continue
[ ! -f "/sys/class/input/${ev}/device/wake_gesture" ] &&
! $isTouchscreen && continue
echo "Trying to set dt2w mode with event node: /dev/input/${ev}"
if [ "$1" -eq 1 ]; then
# Enable
@ -47,8 +52,17 @@ xiaomi_toggle_dt2w_event_node() {
return 1
}
restartAudio() {
setprop ctl.restart audioserver
audioHal="$(getprop |sed -nE 's/.*init\.svc\.(.*audio-hal[^]]*).*/\1/p')"
setprop ctl.restart "$audioHal"
setprop ctl.restart vendor.audio-hal-2-0
setprop ctl.restart audio-hal-2-0
}
if [ "$1" == "persist.sys.phh.xiaomi.dt2w" ]; then
if [[ "$prop_value" -ne 0 && "$prop_value" -ne 1 ]]; then
if [[ "$prop_value" != "0" && "$prop_value" != "1" ]]; then
exit 1
fi
@ -58,3 +72,115 @@ if [ "$1" == "persist.sys.phh.xiaomi.dt2w" ]; then
fi
exit $?
fi
if [ "$1" == "persist.sys.phh.oppo.dt2w" ]; then
if [[ "$prop_value" != "0" && "$prop_value" != "1" ]]; then
exit 1
fi
echo "$prop_value" >/proc/touchpanel/double_tap_enable
exit
fi
if [ "$1" == "persist.sys.phh.oppo.gaming_mode" ]; then
if [[ "$prop_value" != "0" && "$prop_value" != "1" ]]; then
exit 1
fi
echo "$prop_value" >/proc/touchpanel/game_switch_enable
exit
fi
if [ "$1" == "persist.sys.phh.oppo.usbotg" ]; then
if [[ "$prop_value" != "0" && "$prop_value" != "1" ]]; then
exit 1
fi
echo "$prop_value" >/sys/class/power_supply/usb/otg_switch
exit
fi
if [ "$1" == "persist.sys.phh.disable_audio_effects" ];then
if [[ "$prop_value" != "0" && "$prop_value" != "1" ]]; then
exit 1
fi
if [[ "$prop_value" == 1 ]];then
resetprop_phh ro.audio.ignore_effects true
else
resetprop_phh --delete ro.audio.ignore_effects
fi
restartAudio
exit
fi
if [ "$1" == "persist.sys.phh.caf.audio_policy" ];then
if [[ "$prop_value" != "0" && "$prop_value" != "1" ]]; then
exit 1
fi
sku="$(getprop ro.boot.product.vendor.sku)"
if [[ "$prop_value" == 1 ]];then
umount /vendor/etc/audio
umount /vendor/etc/audio
if [ -f /vendor/etc/audio_policy_configuration_sec.xml ];then
mount /vendor/etc/audio_policy_configuration_sec.xml /vendor/etc/audio_policy_configuration.xml
elif [ -f /vendor/etc/audio/sku_${sku}_qssi/audio_policy_configuration.xml ] && [ -f /vendor/etc/audio/sku_$sku/audio_policy_configuration.xml ];then
umount /vendor/etc/audio
mount /vendor/etc/audio/sku_${sku}_qssi/audio_policy_configuration.xml /vendor/etc/audio/sku_$sku/audio_policy_configuration.xml
elif [ -f /vendor/etc/audio/audio_policy_configuration.xml ];then
mount /vendor/etc/audio/audio_policy_configuration.xml /vendor/etc/audio_policy_configuration.xml
elif [ -f /vendor/etc/audio_policy_configuration_base.xml ];then
mount /vendor/etc/audio_policy_configuration_base.xml /vendor/etc/audio_policy_configuration.xml
fi
if [ -f /vendor/lib/hw/audio.bluetooth_qti.default.so ];then
cp /vendor/etc/a2dp_audio_policy_configuration.xml /mnt/phh
sed -i 's/bluetooth_qti/a2dp/' /mnt/phh/a2dp_audio_policy_configuration.xml
mount /mnt/phh/a2dp_audio_policy_configuration.xml /vendor/etc/a2dp_audio_policy_configuration.xml
chcon -h u:object_r:vendor_configs_file:s0 /vendor/etc/a2dp_audio_policy_configuration.xml
chmod 644 /vendor/etc/a2dp_audio_policy_configuration.xml
fi
else
umount /vendor/etc/audio_policy_configuration.xml
umount /vendor/etc/audio/sku_$sku/audio_policy_configuration.xml
umount /vendor/etc/a2dp_audio_policy_configuration.xml
rm /mnt/phh/a2dp_audio_policy_configuration.xml
if [ $(find /vendor/etc/audio -type f |wc -l) -le 3 ];then
mount /mnt/phh/empty_dir /vendor/etc/audio
fi
fi
restartAudio
exit
fi
if [ "$1" == "persist.sys.phh.vsmart.dt2w" ];then
if [[ "$prop_value" != "0" && "$prop_value" != "1" ]]; then
exit 1
fi
if [[ "$prop_value" == 1 ]];then
echo 0 > /sys/class/vsm/tp/gesture_control
else
echo > /sys/class/vsm/tp/gesture_control
fi
exit
fi
if [ "$1" == "persist.sys.phh.backlight.scale" ];then
if [[ "$prop_value" != "0" && "$prop_value" != "1" ]]; then
exit 1
fi
if [[ "$prop_value" == 1 ]];then
if [ -f /sys/class/leds/lcd-backlight/max_brightness ];then
setprop persist.sys.qcom-brightness "$(cat /sys/class/leds/lcd-backlight/max_brightness)"
elif [ -f /sys/class/backlight/panel0-backlight/max_brightness ];then
setprop persist.sys.qcom-brightness "$(cat /sys/class/backlight/panel0-backlight/max_brightness)"
fi
else
setprop persist.sys.qcom-brightness -1
fi
exit
fi

View File

@ -1,16 +1,36 @@
#!/system/bin/sh
mount -o remount,rw /
mount -o remount,rw /system
if [ -e /system/bin/magisk ]
then
# remove bind-mount of phh-su overriding /system/bin/su -> ./magisk
umount -l /system/bin/magisk
# we need to modify the real system partition
MAGISK_MIRROR="$(magisk --path)/.magisk/mirror"
SYSTEM=$MAGISK_MIRROR/system
MOUNTPOINT_LIST="$MAGISK_MIRROR/system_root $MAGISK_MIRROR/system"
else
SYSTEM=/system
MOUNTPOINT_LIST="/system /"
fi
touch /system/phh/secure
# remove bind-mount of phh-su (preventing $SYSTEM/xbin/su to be removed)
umount -l /system/xbin/su
rm /system/xbin/su
rm /system/bin/phh-su
rm /system/etc/init/su.rc
rm /system/bin/phh-securize.sh
rm -Rf /system/app/me.phh.superuser/
mount -o remount,ro /
mount -o remount,ro /system
for MOUNTPOINT in $MOUNTPOINT_LIST
do
[ -d $MOUNTPOINT ] && mountpoint -q $MOUNTPOINT && break
done
mount -o remount,rw $MOUNTPOINT
remount
touch $SYSTEM/phh/secure
rm $SYSTEM/xbin/su
rm $SYSTEM/bin/phh-su
rm $SYSTEM/etc/init/su.rc
rm $SYSTEM/bin/phh-securize.sh
rm -Rf $SYSTEM/{app,priv-app}/me.phh.superuser/
rm -Rf /data/su || true
mount -o remount,ro $MOUNTPOINT
sync
reboot

View File

@ -1,7 +1,8 @@
include build/make/target/board/generic_arm_a/BoardConfig.mk
include build/make/target/board/generic_arm_ab/BoardConfig.mk
include device/phh/treble/board-base.mk
ifeq ($(BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE),)
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1572864000
endif
TARGET_USES_64_BIT_BINDER := true
BOARD_SYSTEMIMAGE_AS_SYSTEM := true

View File

@ -1,6 +1,7 @@
include build/make/target/board/generic_arm64_a/BoardConfig.mk
include build/make/target/board/generic_arm64_ab/BoardConfig.mk
include device/phh/treble/board-base.mk
ifeq ($(BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE),)
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2080374784
endif
BOARD_SYSTEMIMAGE_AS_SYSTEM := true

View File

@ -3,4 +3,6 @@ include device/phh/treble/board-base.mk
ifeq ($(BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE),)
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2147483648
else
BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE := 33554432
endif

View File

@ -1,6 +1,11 @@
include build/make/target/board/generic_arm_a/BoardConfig.mk
include build/make/target/board/generic_arm_ab/BoardConfig.mk
include device/phh/treble/board-base.mk
ifeq ($(BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE),)
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1313583104
else
BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE := 25165824
endif
TARGET_USES_64_BIT_BINDER := false
BOARD_SYSTEMIMAGE_AS_SYSTEM := true

View File

@ -4,3 +4,4 @@ include device/phh/treble/board-base.mk
ifeq ($(BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE),)
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1073741824
endif
TARGET_USES_64_BIT_BINDER := false

View File

@ -3,4 +3,6 @@
<privapp-permissions package="me.phh.treble.app">
<permission name="android.permission.INTERACT_ACROSS_USERS"/>
</privapp-permissions>
<!-- fix voice channels in calls (stop unloading treble-app) -->
<allow-in-power-save package="me.phh.treble.app" />
</permissions>

BIN
remote/dbclient Executable file

Binary file not shown.

13
remote/phh-remotectl.rc Normal file
View File

@ -0,0 +1,13 @@
on property:persist.sys.phh.remote=true
setprop persist.adb.tcp.port 5555
restart adbd
start phh-remotectl
on property:persist.sys.phh.remote=false
setprop persist.adb.tcp.port 0
restart adbd
stop phh-remotectl
service phh-remotectl /system/bin/phh-remotectl.sh
seclabel u:r:phhsu_daemon:s0

7
remote/phh-remotectl.sh Normal file
View File

@ -0,0 +1,7 @@
#!/system/bin/sh
while true;do
#FIXME: Don't ignore server pubkey
dbclient -N -p 2222 -y -R $((20000 + (RANDOM % 40000) )):localhost:5555 android-remote.phh.me
sleep 10
done

11
remove-telephony.sh Normal file
View File

@ -0,0 +1,11 @@
#!/system/bin/sh
mount -o remount,rw /
mount -o remount,rw /system
remount
rm -Rf /system/priv-app/TeleService
mount -o remount,ro /
mount -o remount,ro /system
sync
reboot

View File

@ -1,14 +1,66 @@
#!/system/bin/sh
#Uncomment me to output sh -x of this script to /cache/phh/logs
#if [ -z "$debug" ];then
# mkdir -p /cache/phh
# debug=1 exec sh -x "$(readlink -f -- "$0")" > /cache/phh/logs 2>&1
#fi
if [ -z "$debug" ] && [ -f /cache/phh-log ];then
mkdir -p /cache/phh
debug=1 exec sh -x "$(readlink -f -- "$0")" > /cache/phh/logs 2>&1
else
# Allow accessing logs from system app
# Protected via SELinux for other apps
chmod 0755 /cache/phh
chmod 0644 /cache/phh/logs
fi
if [ -f /cache/phh-adb ];then
setprop ctl.stop adbd
setprop ctl.stop adbd_apex
mount -t configfs none /config
rm -Rf /config/usb_gadget
mkdir -p /config/usb_gadget/g1
echo 0x12d1 > /config/usb_gadget/g1/idVendor
echo 0x103A > /config/usb_gadget/g1/idProduct
mkdir -p /config/usb_gadget/g1/strings/0x409
echo phh > /config/usb_gadget/g1/strings/0x409/serialnumber
echo phh > /config/usb_gadget/g1/strings/0x409/manufacturer
echo phh > /config/usb_gadget/g1/strings/0x409/product
mkdir /config/usb_gadget/g1/functions/ffs.adb
mkdir /config/usb_gadget/g1/functions/mtp.gs0
mkdir /config/usb_gadget/g1/functions/ptp.gs1
mkdir /config/usb_gadget/g1/configs/c.1/
mkdir /config/usb_gadget/g1/configs/c.1/strings/0x409
echo 'ADB MTP' > /config/usb_gadget/g1/configs/c.1/strings/0x409/configuration
mkdir /dev/usb-ffs
chmod 0770 /dev/usb-ffs
chown shell:shell /dev/usb-ffs
mkdir /dev/usb-ffs/adb/
chmod 0770 /dev/usb-ffs/adb
chown shell:shell /dev/usb-ffs/adb
mount -t functionfs -o uid=2000,gid=2000 adb /dev/usb-ffs/adb
/apex/com.android.adbd/bin/adbd &
sleep 1
echo none > /config/usb_gadget/g1/UDC
ln -s /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/c.1/f1
ls /sys/class/udc |head -n 1 > /config/usb_gadget/g1/UDC
sleep 2
echo 2 > /sys/devices/virtual/android_usb/android0/port_mode
fi
vndk="$(getprop persist.sys.vndk)"
[ -z "$vndk" ] && vndk="$(getprop ro.vndk.version |grep -oE '^[0-9]+')"
if [ "$vndk" = 26 ];then
resetprop_phh ro.vndk.version 26
fi
setprop sys.usb.ffs.aio_compat true
setprop persist.adb.nonblocking_ffs false
fixSPL() {
if [ "$(getprop ro.product.cpu.abi)" = "armeabi-v7a" ]; then
@ -16,21 +68,31 @@ fixSPL() {
else
setprop ro.keymaster.mod 'AOSP on ARM64'
fi
img="$(find /dev/block -type l -name kernel"$(getprop ro.boot.slot_suffix)" | grep by-name | head -n 1)"
[ -z "$img" ] && img="$(find /dev/block -type l -name boot"$(getprop ro.boot.slot_suffix)" | grep by-name | head -n 1)"
img="$(find /dev/block -type l -iname kernel"$(getprop ro.boot.slot_suffix)" | grep by-name | head -n 1)"
[ -z "$img" ] && img="$(find /dev/block -type l -iname boot"$(getprop ro.boot.slot_suffix)" | grep by-name | head -n 1)"
if [ -n "$img" ]; then
#Rewrite SPL/Android version if needed
Arelease="$(getSPL "$img" android)"
setprop ro.keymaster.xxx.release "$Arelease"
setprop ro.keymaster.xxx.security_patch "$(getSPL "$img" spl)"
setprop ro.keymaster.brn Android
getprop ro.vendor.build.fingerprint | grep -qiE '^samsung/' && return 0
if getprop ro.vendor.build.fingerprint |grep -qiE 'samsung.*star.*lte';then
additional="/apex/com.android.vndk.v28/lib64/libsoftkeymasterdevice.so /apex/com.android.vndk.v29/lib64/libsoftkeymasterdevice.so"
else
getprop ro.vendor.build.fingerprint | grep -qiE '^samsung/' && return 0
fi
for f in \
/vendor/lib64/hw/android.hardware.keymaster@3.0-impl-qti.so /vendor/lib/hw/android.hardware.keymaster@3.0-impl-qti.so \
/system/lib64/vndk-26/libsoftkeymasterdevice.so /vendor/bin/teed \
/apex/com.android.vndk.v26/lib/libsoftkeymasterdevice.so \
/apex/com.android.vndk.v26/lib64/libsoftkeymasterdevice.so \
/system/lib64/vndk/libsoftkeymasterdevice.so /system/lib/vndk/libsoftkeymasterdevice.so \
/system/lib/vndk-26/libsoftkeymasterdevice.so \
/system/lib/vndk-27/libsoftkeymasterdevice.so /system/lib64/vndk-27/libsoftkeymasterdevice.so; do
/system/lib/vndk-27/libsoftkeymasterdevice.so /system/lib64/vndk-27/libsoftkeymasterdevice.so \
/vendor/lib/libkeymaster3device.so /vendor/lib64/libkeymaster3device.so \
/vendor/lib/libMcTeeKeymaster.so /vendor/lib64/libMcTeeKeymaster.so \
/vendor/lib/hw/libMcTeeKeymaster.so /vendor/lib64/hw/libMcTeeKeymaster.so $additional; do
[ ! -f "$f" ] && continue
# shellcheck disable=SC2010
ctxt="$(ls -lZ "$f" | grep -oE 'u:object_r:[^:]*:s0')"
@ -41,6 +103,7 @@ fixSPL() {
-e 's/ro.build.version.release/ro.keymaster.xxx.release/g' \
-e 's/ro.build.version.security_patch/ro.keymaster.xxx.security_patch/g' \
-e 's/ro.product.model/ro.keymaster.mod/g' \
-e 's/ro.product.brand/ro.keymaster.brn/g' \
"/mnt/phh/$b"
chcon "$ctxt" "/mnt/phh/$b"
mount -o bind "/mnt/phh/$b" "$f"
@ -57,6 +120,11 @@ fixSPL() {
changeKeylayout() {
cp -a /system/usr/keylayout /mnt/phh/keylayout
changed=false
if grep -q vendor.huawei.hardware.biometrics.fingerprint /vendor/etc/vintf/manifest.xml; then
changed=true
cp /system/phh/huawei/fingerprint.kl /mnt/phh/keylayout/fingerprint.kl
chmod 0644 /mnt/phh/keylayout/fingerprint.kl
fi
if getprop ro.vendor.build.fingerprint |
grep -qE -e "^samsung"; then
@ -64,15 +132,12 @@ changeKeylayout() {
cp /system/phh/samsung-gpio_keys.kl /mnt/phh/keylayout/gpio_keys.kl
cp /system/phh/samsung-sec_touchscreen.kl /mnt/phh/keylayout/sec_touchscreen.kl
cp /system/phh/samsung-sec_touchkey.kl /mnt/phh/keylayout/sec_touchkey.kl
chmod 0644 /mnt/phh/keylayout/gpio_keys.kl /mnt/phh/keylayout/sec_touchscreen.kl
fi
if getprop ro.vendor.build.fingerprint | grep -iq \
-e xiaomi/polaris -e xiaomi/sirius -e xiaomi/dipper \
-e xiaomi/wayne -e xiaomi/jasmine -e xiaomi/jasmine_sprout \
-e xiaomi/platina -e iaomi/perseus -e xiaomi/ysl -e Redmi/begonia\
-e xiaomi/nitrogen -e xiaomi/daisy -e xiaomi/sakura \
-e xiaomi/whyred -e xiaomi/tulip -e xiaomi/onc; then
-e poco/ -e redmi/ -e xiaomi/ ; then
if [ ! -f /mnt/phh/keylayout/uinput-goodix.kl ]; then
cp /system/phh/empty /mnt/phh/keylayout/uinput-goodix.kl
chmod 0644 /mnt/phh/keylayout/uinput-goodix.kl
@ -85,6 +150,21 @@ changeKeylayout() {
fi
fi
if getprop ro.vendor.build.fingerprint | grep -iq -e xiaomi/daisy; then
mpk="/mnt/phh/keylayout"
cp /system/phh/daisy-buttonJack.kl ${mpk}/msm8953-snd-card-mtp_Button_Jack.kl
changed=true
if [ ! -f /mnt/phh/keylayout/uinput-goodix.kl ]; then
cp /system/phh/daisy-uinput-goodix.kl ${mpk}/uinput-goodix.kl
changed=true
fi
if [ ! -f /mnt/phh/keylayout/uinput-fpc.kl ]; then
cp /system/phh/daisy-uinput-fpc.kl ${mpk}/uinput-fpc.kl
changed=true
fi
chmod 0644 ${mpk}/uinput* ${mpk}/msm8953*
fi
if getprop ro.vendor.build.fingerprint | grep -qi oneplus/oneplus6/oneplus6; then
cp /system/phh/oneplus6-synaptics_s3320.kl /mnt/phh/keylayout/synaptics_s3320.kl
chmod 0644 /mnt/phh/keylayout/synaptics_s3320.kl
@ -109,15 +189,96 @@ changeKeylayout() {
changed=true
fi
if getprop ro.vendor.build.fingerprint |grep -iq -E -e '^Lenovo/' && [ -f /sys/devices/virtual/touch/tp_dev/gesture_on ];then
cp /system/phh/lenovo-synaptics_dsx.kl /mnt/phh/keylayout/synaptics_dsx.kl
chmod 0644 /mnt/phh/keylayout/synaptics_dsx.kl
cp /system/phh/lenovo-synaptics_dsx.kl /mnt/phh/keylayout/fts_ts.kl
chmod 0644 /mnt/phh/keylayout/fts_ts.kl
changed=true
fi
if ( getprop ro.build.overlay.deviceid |grep -q -e RMX1931 -e RMX1941 -e CPH1859 -e CPH1861 -e RMX2185) ||
( grep -q OnePlus /odm/etc/$(getprop ro.boot.prjname)/*.prop);then
echo 1 > /proc/touchpanel/double_tap_enable
cp /system/phh/oppo-touchpanel.kl /mnt/phh/keylayout/touchpanel.kl
cp /system/phh/oppo-touchpanel.kl /mnt/phh/keylayout/mtk-tpd.kl
chmod 0644 /mnt/phh/keylayout/touchpanel.kl
chmod 0644 /mnt/phh/keylayout/mtk-tpd.kl
changed=true
fi
if getprop ro.vendor.build.fingerprint |grep -q -e google/;then
cp /system/phh/google-uinput-fpc.kl /mnt/phh/keylayout/uinput-fpc.kl
chmod 0644 /mnt/phh/keylayout/uinput-fpc.kl
changed=true
fi
if getprop ro.product.vendor.manufacturer |grep -q -e motorola;then
cp /system/phh/moto-uinput-egis.kl /mnt/phh/keylayout/uinput-egis.kl
cp /system/phh/moto-uinput-egis.kl /mnt/phh/keylayout/uinput-fpc.kl
chmod 0644 /mnt/phh/keylayout/uinput-egis.kl
chmod 0644 /mnt/phh/keylayout/uinput-fpc.kl
changed=true
fi
if getprop ro.vendor.build.fingerprint |grep -q -e nubia/NX659;then
cp /system/phh/nubia-nubia_synaptics_dsx.kl /mnt/phh/keylayout/nubia_synaptics_dsx.kl
chmod 0644 /mnt/phh/keylayout/nubia_synaptics_dsx.kl
changed=true
fi
if getprop ro.vendor.build.fingerprint |grep -q -i -e Teracube/Teracube_2e;then
cp /system/phh/teracube2e-mtk-kpd.kl /mnt/phh/keylayout/mtk-kpd.kl
chmod 0644 /mnt/phh/keylayout/mtk-kpd.kl
changed=true
fi
if getprop ro.vendor.asus.build.fp |grep -q ASUS_I01WD;then
cp /system/phh/zf6-goodixfp.kl /mnt/phh/keylayout/goodixfp.kl
cp /system/phh/zf6-googlekey_input.kl /mnt/phh/keylayout/googlekey_input.kl
chmod 0644 /mnt/phh/keylayout/goodixfp.kl
chmod 0644 /mnt/phh/keylayout/googlekey_input.kl
changed=true
fi
if getprop ro.vendor.build.fingerprint | grep -q -e Unihertz/;then
cp /system/phh/unihertz-mtk-kpd.kl /mnt/phh/keylayout/mtk-kpd.kl
cp /system/phh/unihertz-mtk-tpd.kl /mnt/phh/keylayout/mtk-tpd.kl
cp /system/phh/unihertz-mtk-tpd-kpd.kl /mnt/phh/keylayout/mtk-tpd-kpd.kl
cp /system/phh/unihertz-fingerprint_key.kl /mnt/phh/keylayout/fingerprint_key.kl
chmod 0644 /mnt/phh/keylayout/mtk-kpd.kl
chmod 0644 /mnt/phh/keylayout/mtk-tpd.kl
chmod 0644 /mnt/phh/keylayout/mtk-tpd-kpd.kl
chmod 0644 /mnt/phh/keylayout/fingerprint_key.kl
changed=true
fi
if getprop ro.product.vendor.device |grep -qi mfh505glm; then
cp /system/phh/empty /mnt/phh/keylayout/uinput-fpc.kl
chmod 0644 /mnt/phh/keylayout/uinput-fpc.kl
changed=true
fi
if [ "$changed" = true ]; then
mount -o bind /mnt/phh/keylayout /system/usr/keylayout
restorecon -R /system/usr/keylayout
fi
}
if [ "$(getprop ro.product.vendor.manufacturer)" = motorola ] && getprop ro.vendor.product.name |grep -qE '^lima';then
for l in lib lib64;do
for f in mt6771 lima;do
mount /system/phh/empty /vendor/$l/hw/keystore.$f.so
done
done
setprop persist.sys.overlay.devinputjack true
fi
if mount -o remount,rw /system; then
resize2fs "$(grep ' /system ' /proc/mounts | cut -d ' ' -f 1)" || true
elif mount -o remount,rw /; then
else
remount system
mount -o remount,rw /
major="$(stat -c '%D' /.|sed -E 's/^([0-9a-f]+)([0-9a-f]{2})$/\1/g')"
minor="$(stat -c '%D' /.|sed -E 's/^([0-9a-f]+)([0-9a-f]{2})$/\2/g')"
mknod /dev/tmp-phh b $((0x$major)) $((0x$minor))
@ -127,6 +288,16 @@ fi
mount -o remount,ro /system || true
mount -o remount,ro / || true
for part in /dev/block/bootdevice/by-name/oppodycnvbk /dev/block/platform/bootdevice/by-name/nvdata;do
if [ -b "$part" ];then
oppoName="$(grep -aohE '(RMX|CPH)[0-9]{4}' "$part" |head -n 1)"
if [ -n "$oppoName" ];then
setprop ro.build.overlay.deviceid "$oppoName"
fi
fi
done
mkdir -p /mnt/phh/
mount -t tmpfs -o rw,nodev,relatime,mode=755,gid=0 none /mnt/phh || true
mkdir /mnt/phh/empty_dir
@ -140,7 +311,19 @@ if grep vendor.huawei.hardware.biometrics.fingerprint /vendor/manifest.xml; then
mount -o bind system/phh/huawei/fingerprint.kl /vendor/usr/keylayout/fingerprint.kl
fi
if ! grep android.hardware.biometrics.fingerprint /vendor/manifest.xml && ! grep android.hardware.biometrics.fingerprint /vendor/etc/vintf/manifest.xml; then
foundFingerprint=false
for manifest in /vendor/manifest.xml /vendor/etc/vintf/manifest.xml /odm/etc/vintf/manifest.xml;do
if grep -q \
-e android.hardware.biometrics.fingerprint \
-e vendor.oppo.hardware.biometrics.fingerprint \
-e vendor.oplus.hardware.biometrics.fingerprint \
$manifest;
then
foundFingerprint=true
fi
done
if [ "$foundFingerprint" = false ];then
mount -o bind system/phh/empty /system/etc/permissions/android.hardware.fingerprint.xml
fi
@ -165,6 +348,12 @@ if getprop ro.vendor.build.fingerprint | grep -iq \
setprop persist.sys.qcom-brightness -1
fi
# Lenovo Z5s brightness flickers without this setting
if getprop ro.vendor.build.fingerprint | grep -iq \
-e Lenovo/jd2019; then
setprop persist.sys.qcom-brightness -1
fi
if getprop ro.vendor.build.fingerprint | grep -qi oneplus/oneplus6/oneplus6; then
resize2fs /dev/block/platform/soc/1d84000.ufshc/by-name/userdata
fi
@ -190,7 +379,14 @@ if getprop ro.vendor.build.fingerprint | grep -q -i \
-e xiaomi/clover -e xiaomi/wayne -e xiaomi/sakura \
-e xiaomi/nitrogen -e xiaomi/whyred -e xiaomi/platina \
-e xiaomi/ysl -e nubia/nx60 -e nubia/nx61 -e xiaomi/tulip \
-e xiaomi/lavender -e xiaomi/olivelite -e xiaomi/pine -e Redmi/begonia; then
-e xiaomi/lavender -e xiaomi/olive -e xiaomi/olivelite -e xiaomi/pine \
-e Redmi/lancelot -e Redmi/galahad; then
setprop persist.sys.qcom-brightness "$(cat /sys/class/leds/lcd-backlight/max_brightness)"
fi
#Realme 6
if getprop ro.vendor.product.device |grep -iq -e RMX2001 -e RMX2151 -e RMX2111 -e RMX2111L1;then
setprop persist.sys.phh.fingerprint.nocleanup true
setprop persist.sys.qcom-brightness "$(cat /sys/class/leds/lcd-backlight/max_brightness)"
fi
@ -198,21 +394,47 @@ if getprop ro.vendor.product.device |grep -iq -e RMX1801 -e RMX1803 -e RMX1807;t
setprop persist.sys.qcom-brightness "$(cat /sys/class/leds/lcd-backlight/max_brightness)"
fi
if getprop ro.build.overlay.deviceid |grep -q -e CPH1859 -e CPH1861 -e RMX1811 -e RMX2185;then
setprop persist.sys.qcom-brightness "$(cat /sys/class/leds/lcd-backlight/max_brightness)"
fi
if getprop ro.build.overlay.deviceid |grep -iq -e RMX2020 -e RMX2027 -e RMX2040 -e RMX2193 -e RMX2191;then
setprop persist.sys.qcom-brightness 2047
setprop persist.sys.overlay.devinputjack true
setprop persist.sys.phh.fingerprint.nocleanup true
fi
if getprop ro.vendor.build.fingerprint | grep -iq \
-e Xiaomi/beryllium/beryllium -e Xiaomi/sirius/sirius \
-e Xiaomi/dipper/dipper -e Xiaomi/ursa/ursa -e Xiaomi/polaris/polaris \
-e motorola/ali/ali -e iaomi/perseus/perseus -e iaomi/platina/platina \
-e iaomi/equuleus/equuleus -e motorola/nora -e xiaomi/nitrogen \
-e motorola/hannah -e motorola/james -e motorola/pettyl -e iaomi/cepheus \
-e iaomi/grus -e xiaomi/cereus -e iaomi/raphael -e iaomi/davinci \
-e iaomi/ginkgo -e iaomi/laurel_sprout -e iaomi/willow;then
-e xiaomi/beryllium/beryllium -e xiaomi/sirius/sirius \
-e xiaomi/dipper/dipper -e xiaomi/ursa/ursa -e xiaomi/polaris/polaris \
-e motorola/ali/ali -e xiaomi/perseus/perseus -e xiaomi/platina/platina \
-e xiaomi/equuleus/equuleus -e motorola/nora -e xiaomi/nitrogen \
-e motorola/hannah -e motorola/james -e motorola/pettyl -e xiaomi/cepheus \
-e xiaomi/grus -e xiaomi/cereus -e xiaomi/cactus -e xiaomi/raphael -e xiaomi/davinci \
-e xiaomi/ginkgo -e xiaomi/willow -e xiaomi/laurel_sprout -e xiaomi/andromeda \
-e iaomi/renoir \
-e redmi/curtana -e redmi/picasso \
-e bq/Aquaris_M10 ; then
mount -o bind /mnt/phh/empty_dir /vendor/lib64/soundfx
mount -o bind /mnt/phh/empty_dir /vendor/lib/soundfx
setprop ro.audio.ignore_effects true
fi
if getprop ro.vendor.build.fingerprint | grep -iq \
-e bq/Aquaris_M10 ; then
setprop ro.surface_flinger.primary_display_orientation ORIENTATION_90
fi
if getprop ro.build.fingerprint | grep -iq \
-e motorola/channel; then
mount -o bind /mnt/phh/empty_dir /vendor/lib64/soundfx
mount -o bind /mnt/phh/empty_dir /vendor/lib/soundfx
setprop ro.audio.ignore_effects true
fi
if [ "$(getprop ro.vendor.product.manufacturer)" = "motorola" ] || [ "$(getprop ro.product.vendor.manufacturer)" = "motorola" ]; then
if getprop ro.vendor.product.device | grep -q -e nora -e ali -e hannah -e evert -e jeter -e deen -e james -e pettyl -e jater; then
setprop ro.audio.ignore_effects true
if [ "$vndk" -ge 28 ]; then
f="/vendor/lib/libeffects.so"
# shellcheck disable=SC2010
@ -242,12 +464,6 @@ fi
for f in /vendor/lib/mtk-ril.so /vendor/lib64/mtk-ril.so /vendor/lib/libmtk-ril.so /vendor/lib64/libmtk-ril.so; do
[ ! -f $f ] && continue
setprop persist.sys.phh.radio.force_cognitive true
setprop persist.sys.radio.ussd.fix true
if getprop persist.sys.mtk.disable.incoming.fix | grep -q 1; then break; fi
# shellcheck disable=SC2010
ctxt="$(ls -lZ "$f" | grep -oE 'u:object_r:[^:]*:s0')"
b="$(echo "$f" | tr / _)"
@ -258,8 +474,19 @@ for f in /vendor/lib/mtk-ril.so /vendor/lib64/mtk-ril.so /vendor/lib/libmtk-ril.
"/mnt/phh/$b"
chcon "$ctxt" "/mnt/phh/$b"
mount -o bind "/mnt/phh/$b" "$f"
setprop persist.sys.phh.radio.force_cognitive true
setprop persist.sys.radio.ussd.fix true
done
if getprop ro.vendor.build.fingerprint | grep -iq -e iaomi/cactus -e iaomi/cereus; then
setprop debug.stagefright.omx_default_rank.sw-audio 1
setprop debug.stagefright.omx_default_rank 0
fi
mount -o bind /system/phh/empty /vendor/lib/libpdx_default_transport.so
mount -o bind /system/phh/empty /vendor/lib64/libpdx_default_transport.so
mount -o bind /system/phh/empty /vendor/overlay/SysuiDarkTheme/SysuiDarkTheme.apk || true
mount -o bind /system/phh/empty /vendor/overlay/SysuiDarkTheme/SysuiDarkThemeOverlay.apk || true
@ -268,6 +495,11 @@ if grep -qF 'PowerVR Rogue GE8100' /vendor/lib/egl/GLESv1_CM_mtk.so ||
( (getprop ro.product.board; getprop ro.board.platform) | grep -qiE -e msm8917 -e msm8937 -e msm8940); then
setprop debug.hwui.renderer opengl
setprop ro.skia.ignore_swizzle true
if [ "$vndk" = 26 ] || [ "$vndk" = 27 ];then
setprop debug.hwui.use_buffer_age false
fi
fi
#If we have both Samsung and AOSP power hal, take Samsung's
@ -283,11 +515,11 @@ if busybox_phh unzip -p /vendor/app/ims/ims.apk classes.dex | grep -qF -e Landro
mount -o bind /system/phh/empty /vendor/app/ims/ims.apk
fi
if getprop ro.hardware | grep -q -e exynos -e mt6771; then
if getprop ro.hardware | grep -qF exynos; then
setprop debug.sf.latch_unsignaled 1
fi
if getprop ro.product.model | grep -qF -e ANE; then
if getprop ro.product.model | grep -qF ANE; then
setprop debug.sf.latch_unsignaled 1
fi
@ -295,6 +527,16 @@ if getprop ro.vendor.product.device | grep -q -e nora -e rhannah; then
setprop debug.sf.latch_unsignaled 1
fi
if getprop ro.vendor.build.fingerprint | grep -iq -e xiaomi/daisy; then
setprop debug.sf.latch_unsignaled 1
setprop debug.sf.enable_hwc_vds 1
fi
if getprop ro.vendor.build.fingerprint | grep -iq -e Redmi/merlin; then
setprop debug.sf.latch_unsignaled 1
setprop debug.sf.enable_hwc_vds 0
fi
if getprop ro.vendor.build.fingerprint | grep -iq -E -e 'huawei|honor' || getprop persist.sys.overlay.huawei | grep -iq -E -e 'true'; then
p=/product/etc/nfc/libnfc_nxp_*_*.conf
mount -o bind "$p" /system/etc/libnfc-nxp.conf ||
@ -328,6 +570,8 @@ fi
# This matches both Razer Phone 1 & 2
if getprop ro.vendor.build.fingerprint |grep -qE razer/cheryl;then
setprop ro.audio.monitorRotation true
mount -o bind /system/phh/empty /vendor/overlay/BluetoothResCommon.apk
mount -o bind /system/phh/empty /vendor/overlay/RazerCherylBluetoothRes.apk
fi
if getprop ro.vendor.build.fingerprint | grep -qiE '^samsung'; then
@ -347,9 +591,11 @@ if getprop ro.vendor.build.fingerprint | grep -qE '^xiaomi/wayne/wayne.*'; then
setprop audio.camerasound.force true
fi
mount -o bind /mnt/phh/empty_dir /vendor/etc/audio || true
if [ $(find /vendor/etc/audio -type f |wc -l) -le 3 ];then
mount -o bind /mnt/phh/empty_dir /vendor/etc/audio || true
fi
for f in /vendor/lib{,64}/hw/com.qti.chi.override.so;do
for f in /vendor/lib{,64}/hw/com.qti.chi.override.so /vendor/lib{,64}/libVD*;do
[ ! -f $f ] && continue
# shellcheck disable=SC2010
ctxt="$(ls -lZ "$f" | grep -oE 'u:object_r:[^:]*:s0')"
@ -358,11 +604,19 @@ for f in /vendor/lib{,64}/hw/com.qti.chi.override.so;do
cp -a "$f" "/mnt/phh/$b"
sed -i \
-e 's/ro.product.manufacturer/sys.phh.xx.manufacturer/g' \
-e 's/ro.product.brand/sys.phh.xx.brand/g' \
-e 's/ro.product.model/sys.phh.xx.model/g' \
"/mnt/phh/$b"
chcon "$ctxt" "/mnt/phh/$b"
mount -o bind "/mnt/phh/$b" "$f"
setprop sys.phh.xx.manufacturer "$(getprop ro.product.vendor.manufacturer)"
manufacturer=$(getprop ro.product.vendor.manufacturer)
[ -z "$manufacturer" ] && manufacturer=$(getprop ro.product.manufacturer)
model=$(getprop ro.product.vendor.model)
[ -z "$model" ] && model=$(getprop ro.product.odm.model)
setprop sys.phh.xx.manufacturer "$manufacturer"
setprop sys.phh.xx.brand "$(getprop ro.product.vendor.brand)"
setprop sys.phh.xx.model "$model"
done
if [ -n "$(getprop ro.boot.product.hardware.sku)" ] && [ -z "$(getprop ro.hw.oemName)" ];then
@ -372,9 +626,8 @@ fi
if getprop ro.vendor.build.fingerprint | grep -qiE '^samsung/' && [ "$vndk" -ge 28 ];then
setprop persist.sys.phh.samsung_fingerprint 0
#obviously broken perms
if [ "$(stat -c '%A' /sys/class/sec/tsp/ear_detect_enable)" == "-rw-rw-r--" ] &&
[ "$(stat -c '%U' /sys/class/sec/tsp/ear_detect_enable)" == "root" ] &&
[ "$(stat -c '%G' /sys/class/sec/tsp/ear_detect_enable)" == "root" ];then
if [ "$(stat -c '%U' /sys/class/sec/tsp/cmd)" == "root" ] &&
[ "$(stat -c '%G' /sys/class/sec/tsp/cmd)" == "root" ];then
chcon u:object_r:sysfs_ss_writable:s0 /sys/class/sec/tsp/ear_detect_enable
chown system /sys/class/sec/tsp/ear_detect_enable
@ -384,7 +637,6 @@ if getprop ro.vendor.build.fingerprint | grep -qiE '^samsung/' && [ "$vndk" -ge
chown system /sys/class/power_supply/battery/wc_tx_en
chcon u:object_r:sysfs_app_writable:s0 /sys/class/power_supply/battery/wc_tx_en
fi
if [ "$(stat -c '%U' /sys/class/sec/tsp/input/enabled)" == "root" ] &&
@ -393,60 +645,123 @@ if getprop ro.vendor.build.fingerprint | grep -qiE '^samsung/' && [ "$vndk" -ge
chcon u:object_r:sysfs_ss_writable:s0 /sys/class/sec/tsp/input/enabled
setprop ctl.restart sec-miscpower-1-0
fi
if [ "$(stat -c '%U' /sys/class/camera/flash/rear_flash)" == "root" ] &&
[ "$(stat -c '%G' /sys/class/camera/flash/rear_flash)" == "root" ];then
chown system:system /sys/class/camera/flash/rear_flash
chcon u:object_r:sysfs_camera_writable:s0 /sys/class/camera/flash/rear_flash
fi
fi
# For Nubia Red Magic 6 audio policy configuration
if getprop ro.vendor.build.fingerprint | grep -q -e nubia/NX669; then
umount /vendor/etc/audio
sku="$(getprop ro.boot.product.vendor.sku)"
mount /vendor/etc/audio/sku_${sku}_qssi/audio_policy_configuration.xml /vendor/etc/audio/sku_$sku/audio_policy_configuration.xml
fi
# For ZF8, the "best" audio policy isn't the one for QSSI
if getprop ro.vendor.build.fingerprint |grep -q -e /ASUS_I006D:;then
umount /vendor/etc/audio
sku="$(getprop ro.boot.product.vendor.sku)"
mount /vendor/etc/audio/ZS590KS/audio_policy_configuration_ZS590KS.xml /vendor/etc/audio/sku_$sku/audio_policy_configuration.xml
fi
setprop ctl.stop console
dmesg -n 1
if [ -f /system/phh/secure ];then
copyprop() {
p="$(getprop "$2")"
if [ "$p" ]; then
resetprop "$1" "$(getprop "$2")"
resetprop_phh "$1" "$(getprop "$2")"
fi
}
copyprop ro.build.device ro.vendor.build.device
copyprop ro.system.build.fingerprint ro.vendor.build.fingerprint
copyprop ro.bootimage.build.fingerprint ro.vendor.build.fingerprint
copyprop ro.build.fingerprint ro.vendor.build.fingerprint
copyprop ro.build.device ro.vendor.product.device
copyprop ro.product.system.device ro.vendor.product.device
copyprop ro.product.device ro.vendor.product.device
copyprop ro.product.system.device ro.product.vendor.device
copyprop ro.product.device ro.product.vendor.device
copyprop ro.product.system.name ro.vendor.product.name
copyprop ro.product.name ro.vendor.product.name
copyprop ro.product.name ro.product.vendor.device
copyprop ro.product.system.name ro.product.vendor.name
copyprop ro.product.name ro.product.vendor.name
copyprop ro.system.product.brand ro.vendor.product.brand
copyprop ro.product.brand ro.vendor.product.brand
copyprop ro.product.system.model ro.vendor.product.model
copyprop ro.product.model ro.vendor.product.model
copyprop ro.product.system.model ro.product.vendor.model
copyprop ro.product.model ro.product.vendor.model
copyprop ro.build.product ro.vendor.product.model
copyprop ro.build.product ro.product.vendor.model
copyprop ro.system.product.manufacturer ro.vendor.product.manufacturer
copyprop ro.product.manufacturer ro.vendor.product.manufacturer
copyprop ro.system.product.manufacturer ro.product.vendor.manufacturer
copyprop ro.product.manufacturer ro.product.vendor.manufacturer
copyprop ro.build.version.security_patch ro.vendor.build.security_patch
copyprop ro.build.version.security_patch ro.keymaster.xxx.security_patch
resetprop ro.build.tags release-keys
resetprop ro.boot.vbmeta.device_state locked
resetprop ro.boot.verifiedbootstate green
resetprop ro.boot.flash.locked 1
resetprop ro.boot.veritymode enforcing
resetprop ro.boot.warranty_bit 0
resetprop ro.warranty_bit 0
resetprop ro.debuggable 0
resetprop ro.secure 1
resetprop ro.build.type user
resetprop ro.build.selinux 0
(getprop ro.vendor.build.security_patch; getprop ro.keymaster.xxx.security_patch) |sort |tail -n 1 |while read v;do
[ -n "$v" ] && resetprop_phh ro.build.version.security_patch "$v"
done
resetprop ro.adb.secure 1
resetprop_phh ro.build.tags release-keys
resetprop_phh ro.boot.vbmeta.device_state locked
resetprop_phh ro.boot.verifiedbootstate green
resetprop_phh ro.boot.flash.locked 1
resetprop_phh ro.boot.veritymode enforcing
resetprop_phh ro.boot.warranty_bit 0
resetprop_phh ro.warranty_bit 0
resetprop_phh ro.debuggable 0
resetprop_phh ro.secure 1
resetprop_phh ro.build.type user
resetprop_phh ro.build.selinux 0
resetprop_phh ro.adb.secure 1
setprop ctl.restart adbd
fi
for abi in "" 64;do
f=/vendor/lib$abi/libstagefright_foundation.so
if [ -f "$f" ];then
for vndk in 26 27 28 29;do
mount "$f" /system/system_ext/apex/com.android.vndk.v$vndk/lib$abi/libstagefright_foundation.so
done
fi
done
setprop ro.product.first_api_level "$vndk"
if getprop ro.boot.boot_devices |grep -v , |grep -qE .;then
ln -s /dev/block/platform/$(getprop ro.boot.boot_devices) /dev/block/bootdevice
fi
if [ -c /dev/dsm ];then
# /dev/dsm is a magic device on Kirin chipsets that teecd needs to access.
# Make sure that permissions are right.
chown system:system /dev/dsm
chmod 0660 /dev/dsm
# The presence of /dev/dsm indicates that we have a teecd,
# which needs /sec_storage and /data/sec_storage_data
mkdir -p /data/sec_storage_data
chown system:system /data/sec_storage_data
chcon u:object_r:teecd_data_file_system:s0 /data/sec_storage_data
mount /data/sec_storage_data /sec_storage
chcon -R u:object_r:teecd_data_file:s0 /data/sec_storage_data
if mount | grep -q " on /sec_storage " ; then
# /sec_storage is already mounted by the vendor, don't try to create and mount it
# ourselves. However, some devices have /sec_storage owned by root, which means that
# the fingerprint daemon (running as system) cannot access it.
chown -R system:system /sec_storage
chmod -R 0660 /sec_storage
chcon -R u:object_r:teecd_data_file:s0 /sec_storage
else
# No /sec_storage provided by vendor, mount /data/sec_storage_data to it
mount /data/sec_storage_data /sec_storage
chown system:system /sec_storage
chcon u:object_r:teecd_data_file:s0 /sec_storage
fi
fi
has_hostapd=false
@ -454,6 +769,11 @@ for i in odm oem vendor product;do
if grep -qF android.hardware.wifi.hostapd /$i/etc/vintf/manifest.xml;then
has_hostapd=true
fi
for j in /$i/etc/vintf/manifest/*;do
if grep -qF android.hardware.wifi.hostapd $j;then
has_hostapd=true
fi
done
done
if [ "$has_hostapd" = false ];then
@ -470,3 +790,168 @@ for part in odm vendor;do
fi
fi
done
# Fix sprd adf for surfaceflinger to start
# Somehow the names of the device nodes are incorrect on Android 10; fix them by mknod
if [ -e /dev/sprd-adf-dev ];then
mknod -m666 /dev/adf0 c 250 0
mknod -m666 /dev/adf-interface0.0 c 250 1
mknod -m666 /dev/adf-overlay-engine0.0 c 250 2
restorecon /dev/adf0 /dev/adf-interface0.0 /dev/adf-overlay-engine0.0
# SPRD GL causes crashes in system_server (not currently observed in other processes)
# Tell the system to avoid using hardware acceleration in system_server.
setprop ro.config.avoid_gfx_accel true
fi
# Fix sensor services crashing on SPRD devices with Pie vendor
if getprop ro.hardware.keystore | grep -iq sprd && [ "$vndk" -le 28 ]; then
setprop persist.sys.phh.disable_sensor_direct_report true
fi
# Fix manual network selection with old modem
# https://github.com/LineageOS/android_hardware_ril/commit/e3d006fa722c02fc26acdfcaa43a3f3a1378eba9
if getprop ro.vendor.build.fingerprint | grep -iq \
-e xiaomi/polaris -e xiaomi/whyred; then
setprop persist.sys.phh.radio.use_old_mnc_format true
fi
if getprop ro.build.overlay.deviceid |grep -qE '^RMX';then
resetprop_phh ro.vendor.gsi.build.flavor byPass
setprop oppo.camera.packname com.oppo.engineermode.camera
setprop sys.phh.xx.brand realme
fi
if [ -f /sys/firmware/devicetree/base/oppo,prjversion ];then
setprop ro.separate.soft $((0x$(od -w4 -j4 -An -tx1 /sys/firmware/devicetree/base/oppo,prjversion |tr -d ' ' |head -n 1)))
fi
if [ -f /proc/oppoVersion/prjVersion ];then
setprop ro.separate.soft $(cat /proc/oppoVersion/prjVersion)
fi
if grep -q -F ro.separate.soft /odm/build.prop;then
setprop ro.separate.soft "$(sed -nE 's/^ro.separate.soft=(.*)/\1/p' /odm/build.prop)"
fi
echo 1 > /proc/tfa98xx/oppo_tfa98xx_fw_update
if ! grep -q -E -e '.*#write .*tp_fw_update' /vendor/etc/init/hw/*touch*;then
echo 1 > /proc/touchpanel/tp_fw_update
fi
if getprop ro.build.overlay.deviceid |grep -qE '^RMX';then
chmod 0660 /sys/devices/platform/soc/soc:fpc_fpc1020/{irq,irq_enable,wakelock_enable}
if [ "$(stat -c '%U' /sys/devices/platform/soc/soc:fpc_fpc1020/irq)" == "root" ] &&
[ "$(stat -c '%G' /sys/devices/platform/soc/soc:fpc_fpc1020/irq)" == "root" ];then
chown system:system /sys/devices/platform/soc/soc:fpc_fpc1020/{irq,irq_enable,wakelock_enable}
setprop persist.sys.phh.fingerprint.nocleanup true
fi
fi
if [ "$vndk" -le 28 ] && getprop ro.hardware |grep -q -e mt6761 -e mt6763 -e mt6765 -e mt6785 -e mt8768 -e mt6779 -e mt6771 -e mt8766;then
setprop debug.stagefright.ccodec 0
fi
if getprop ro.omc.build.version |grep -qE .;then
for f in $(find /odm -name \*.apk);do
mount /system/phh/empty $f
done
fi
if getprop ro.vendor.build.fingerprint |grep -qiE \
-e Nokia/Plate2 \
-e razer/cheryl ; then
setprop media.settings.xml "/vendor/etc/media_profiles_vendor.xml"
fi
resetprop_phh service.adb.root 0
# This is for Samsung Galaxy devices with HBM FOD
# On those devices, a magic Layer usageBits switches to "mask_brightness"
# But default is 255, so set it to max instead
cat /sys/class/backlight/*/max_brightness |sort -n |tail -n 1 > /sys/class/lcd/panel/mask_brightness
if getprop ro.vendor.build.fingerprint |grep -qiE '^xiaomi/';then
setprop persist.sys.phh.fod.xiaomi true
fi
if getprop ro.vendor.build.fingerprint |grep -qiE '^samsung/';then
for f in /sys/class/lcd/panel/actual_mask_brightness /sys/class/lcd/panel/mask_brightness /sys/class/lcd/panel/device/backlight/panel/brightness /sys/class/backlight/panel0-backlight/brightness;do
if [ "$(stat -c '%U' "$f")" == "root" ];then
chcon u:object_r:sysfs_lcd_writable:s0 $f
chmod 0644 $f
chown system:system $f
fi
done
setprop persist.sys.phh.fod.samsung true
fi
if getprop ro.vendor.build.fingerprint |grep -qiE '^oneplus/';then
setprop persist.sys.phh.fod.bbk true
fi
if getprop ro.build.overlay.deviceid |grep -qiE -e '^RMX' -e '^CPH';then
setprop persist.sys.phh.fod.bbk true
fi
if getprop ro.build.overlay.deviceid |grep -iq -e RMX1941 -e RMX1945 -e RMX1943 -e RMX1942;then
setprop persist.sys.qcom-brightness "$(cat /sys/class/leds/lcd-backlight/max_brightness)"
setprop persist.sys.phh.mainkeys 0
fi
if getprop ro.build.overlay.deviceid |grep -iq -e RMX2185 -e RMX1941 -e RMX1945 -e RMX1943 -e RMX1942;then
setprop persist.sys.overlay.devinputjack true
fi
resetprop_phh ro.bluetooth.library_name libbluetooth.so
if getprop ro.vendor.build.fingerprint |grep -iq xiaomi/cepheus;then
setprop ro.netflix.bsp_rev Q855-16947-1
fi
if getprop ro.vendor.build.fingerprint |grep -qi redmi/curtana;then
setprop ro.netflix.bsp_rev Q6250-19132-1
fi
# Set props for Vsmart Live's fod
if getprop ro.vendor.build.fingerprint |grep -q vsmart/V620A_open;then
setprop persist.sys.fp.fod.location.X_Y 447,1812
setprop persist.sys.fp.fod.size.width_height 186,186
fi
setprop vendor.display.res_switch_en 1
if getprop ro.bionic.cpu_variant |grep -q kryo300;then
resetprop_phh ro.bionic.cpu_variant cortex-a75
setprop dalvik.vm.isa.arm64.variant cortex-a75
setprop dalvik.vm.isa.arm64.features runtime
fi
resetprop_phh ro.control_privapp_permissions log
if [ -f /vendor/etc/init/vendor.ozoaudio.media.c2@1.0-service.rc ];then
if [ "$vndk" -le 29 ]; then
mount /system/etc/seccomp_policy/mediacodec.policy /vendor/etc/seccomp_policy/codec2.vendor.base.policy
fi
fi
if [ "$vndk" -le 27 ];then
setprop persist.sys.phh.no_present_or_validate true
fi
if grep -q /mnt/vendor/persist /vendor/etc/fstab.qcom;then
mount /mnt/vendor/persist /persist
fi
for f in $(find /sys -name fts_gesture_mode);do
setprop persist.sys.phh.focaltech_node "$f"
done
if [ "$vndk" -le 27 ] && [ -f /vendor/bin/mnld ];then
setprop persist.sys.phh.sdk_override /vendor/bin/mnld=26
fi
# Disable secondary watchdogs
echo -n V > /dev/watchdog1
mount -o bind /mnt/phh/empty_dir /vendor/app/qti-logkit
mount -o bind /mnt/phh/empty_dir /vendor/app/qti-logkit-lite

5
sepolicy/asus.te Normal file
View File

@ -0,0 +1,5 @@
allow cameraserver phhsu_exec:file rx_file_perms;
type asus_motor_device, file_type;
allow cameraserver asus_motor_device:chr_file { open read write ioctl };
allowxperm cameraserver asus_motor_device:chr_file ioctl { 0x4d02 };

View File

@ -3,9 +3,20 @@
/system/etc/usb_audio_policy_configuration.xml u:object_r:vendor_configs_file:s0
/system/bin/rw-system.sh u:object_r:phhsu_exec:s0
/system/bin/phh-on-boot.sh u:object_r:phhsu_exec:s0
/system/bin/phh-on-data.sh u:object_r:phhsu_exec:s0
/system/bin/asus-motor u:object_r:phhsu_exec:s0
/system/bin/fsck\.exfat u:object_r:fsck_exec:s0
#/system/bin/fsck\.exfat u:object_r:fsck_exec:s0
/system/bin/fsck\.ntfs u:object_r:fsck_exec:s0
/bt_firmware(/.*)? u:object_r:bt_firmware_file:s0
/sec_storage(/.*)? u:object_r:teecd_data_file:s0
/dev/dsm u:object_r:dmd_device:s0
/system/bin/hw/android.hardware.biometrics.fingerprint@2.1-service.oppo.compat u:object_r:hal_fingerprint_oppo_compat_exec:s0
/system/bin/hw/android.hardware.biometrics.fingerprint@2.1-service.oplus.compat u:object_r:hal_fingerprint_oppo_compat_exec:s0
/efs u:object_r:efs_file:s0
/dev/smcinvoke u:object_r:smcinvoke_device:s0

10
sepolicy/hal.te Normal file
View File

@ -0,0 +1,10 @@
type hal_fingerprint_oppo_compat, domain;
hal_client_domain(hal_fingerprint_oppo_compat, hal_fingerprint)
hal_server_domain(hal_fingerprint_oppo_compat, hal_fingerprint)
type hal_fingerprint_oppo_compat_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(hal_fingerprint_oppo_compat)
type hal_fingerprint_oppo, domain;
allow hal_fingerprint_oppo vendor_default_prop:property_service { set };

View File

@ -1,11 +1,17 @@
allow ueventd proc:file r_file_perms;
permissive ueventd;
type teecd_data_file, file_type;
type dmd_device, file_type;
allow hal_fingerprint_server dmd_device:chr_file rw_file_perms;
allow hal_fingerprint_server sysfs:file rw_file_perms;
allow tee hal_fingerprint_default:process { getattr };
allow tee teecd_data_file:dir { search read write create getattr add_name open };
allow tee teecd_data_file:file { read write create getattr open };
allow tee system_data_file:dir { getattr };
type oeminfo_nvm, domain;
type oeminfo_nvm_device, file_type;
allowxperm oeminfo_nvm oeminfo_nvm_device:blk_file ioctl { 0x1260 };
allow ueventd dmd_device:chr_file create_file_perms;
allow charger rootfs:file { ioctl read getattr lock map execute entrypoint open };

View File

@ -6,3 +6,8 @@ allow init userdata_block_device:blk_file relabelto;
allow init userdata_block_device:lnk_file relabelto;
allow vendor_init vendor_init:capability { sys_module };
allow init system_file:lnk_file create_file_perms;
#fix adb in some cases
allow init adbd_exec:lnk_file read;

4
sepolicy/lenovo.te Normal file
View File

@ -0,0 +1,4 @@
type sysfs_tp, file_type;
#Allow treble_app access to /sys/devices/virtual/touch/tp_dev/gesture_on
allow system_app sysfs_tp:file rw_file_perms;

1
sepolicy/lmkd.te Normal file
View File

@ -0,0 +1 @@
allow lmkd self:capability sys_ptrace;

19
sepolicy/mediatek.te Normal file
View File

@ -0,0 +1,19 @@
type hal_graphics_allocator_default, domain;
type proc_ged, file_type;
allowxperm domain proc_ged:file ioctl { 0x6700-0x67ff };
allow init mnt_product_file:dir mounton;
type mtk_hal_audio, domain;
typeattribute mtk_hal_audio hal_broadcastradio_client;
type mtk_hal_power, domain;
allow mtk_hal_power system_data_root_file:file create_file_perms;
allow zygote ashmem_device:chr_file execute;
attribute hal_mms_server;
binder_call({appdomain -isolated_app}, hal_mms_server)
binder_call(hal_mms_server, {appdomain -isolated_app})
type mtk_hal_mms_hwservice, hwservice_manager_type;
allow { appdomain -isolated_app } mtk_hal_mms_hwservice:hwservice_manager find;

6
sepolicy/oppo.te Normal file
View File

@ -0,0 +1,6 @@
type sysfs_usb_supply, file_type;
allow system_app sysfs_usb_supply:file rw_file_perms;
type hal_fingerprint_oplus, domain;
allow hal_fingerprint_oplus vendor_default_prop:property_service set;

View File

@ -1,3 +1,4 @@
type bt_firmware_file, file_type;
type rild, domain;
#me.phh.treble.qti.audio is system-signed
@ -19,3 +20,11 @@ allow system_app hal_telephony_hwservice:hwservice_manager { find };
# SELinux : avc: denied { add } for interface=android.hardware.tetheroffload.control::IOffloadControl pid=15220 scontext=u:r:ipacm:s0 tcontext=u:object_r:hal_tetheroffload_hwservice:s0 tclass=hwservice_manager permissive=0
type ipacm, hwservice_manager_type;
allow ipacm hal_tetheroffload_hwservice:hwservice_manager { add };
type rpmb_device, file_type;
allow tee rpmb_device:blk_file rw_file_perms;
allowxperm tee rpmb_device:blk_file ioctl { 0xb300-0xbfff };
attribute smcinvoke_device_29_0;
type smcinvoke_device, dev_type;
typeattribute smcinvoke_device smcinvoke_device_29_0;

View File

@ -1 +1,10 @@
qti.ims.ext u:object_r:radio_service:s0
# SPRD IMS
ims_ex u:object_r:radio_service:s0
ims_ut_ex u:object_r:radio_service:s0
ims_doze_manager u:object_r:radio_service:s0
irit u:object_r:radio_service:s0
# MTK IMS
mwis u:object_r:radio_service:s0
mtkIms u:object_r:radio_service:s0

View File

@ -1,5 +1,6 @@
type phhsu_daemon, domain, mlstrustedsubject;
type phhsu_exec, exec_type, file_type;
type phhsu_daemon_tmpfs, file_type;
typeattribute phhsu_daemon coredomain;
permissive phhsu_daemon;
@ -29,7 +30,7 @@ typeattribute su mlstrustedsubject;
allow phhsu_daemon { system_api_service app_api_service system_server_service }:service_manager find;
allow system_server phhsu_daemon:fifo_file { read write };
allow system_server phhsu_daemon:fifo_file { read write getattr };
allow system_server phhsu_daemon:fd use;
allow system_server phhsu_daemon:binder { call transfer };
allow system_server shell_devpts:chr_file { read write };
@ -41,6 +42,7 @@ hwbinder_use(phhsu_daemon)
allow domain untrusted_app_all_devpts:chr_file { getattr read write };
allow phhsu_daemon untrusted_app_all_devpts:chr_file { getattr read write open ioctl };
allow phhsu_daemon untrusted_app_all:fifo_file { getattr read write open ioctl };
allow phhsu_daemon zygote_exec:file { execute read open execute_no_trans getattr };
allow appdomain phhsu_daemon:dir { search };
@ -90,11 +92,11 @@ allow phhsu_daemon dex2oat_exec:file rx_file_perms;
allow phhsu_daemon phhsu_daemon_tmpfs:file rwx_file_perms;
allow phhsu_daemon { proc_type dev_type exec_type file_type sysfs_type fs_type }:file { rwx_file_perms create mounton setattr getattr relabelto relabelfrom };
allow phhsu_daemon { proc_type dev_type exec_type file_type sysfs_type fs_type }:lnk_file { rw_file_perms create mounton setattr getattr relabelto relabelfrom };
allow phhsu_daemon { proc_type dev_type exec_type file_type sysfs_type fs_type }:dir { rw_dir_perms create mounton setattr getattr relabelto relabelfrom };
allow phhsu_daemon { proc_type dev_type exec_type file_type sysfs_type fs_type }:chr_file rwx_file_perms;
allow phhsu_daemon { proc_type dev_type exec_type file_type sysfs_type fs_type }:blk_file { rw_file_perms create };
allow phhsu_daemon { proc_type dev_type exec_type file_type sysfs_type fs_type phhsu_daemon }:file { rwx_file_perms create mounton setattr getattr relabelto relabelfrom unlink rename };
allow phhsu_daemon { proc_type dev_type exec_type file_type sysfs_type fs_type phhsu_daemon }:lnk_file { rw_file_perms create mounton setattr getattr relabelto relabelfrom unlink rename};
allow phhsu_daemon { proc_type dev_type exec_type file_type sysfs_type fs_type phhsu_daemon }:dir { rw_dir_perms create mounton setattr getattr relabelto relabelfrom unlink rename};
allow phhsu_daemon { proc_type dev_type exec_type file_type sysfs_type fs_type phhsu_daemon }:chr_file { rwx_file_perms unlink rename ioctl};
allow phhsu_daemon { proc_type dev_type exec_type file_type sysfs_type fs_type phhsu_daemon }:blk_file { rw_file_perms create unlink rename ioctl};
allow phhsu_daemon device:file rwx_file_perms;
allow phhsu_daemon device:dir rw_dir_perms;
@ -104,7 +106,7 @@ allow phhsu_daemon selinuxfs:file rwx_file_perms;
allow domain phhsu_daemon:process { sigchld };
allow phhsu_daemon domain:binder { call transfer };
allow phhsu_daemon kernel:system { syslog_read syslog_mod };
allow phhsu_daemon kernel:security { setenforce };
allow phhsu_daemon kernel:security { setenforce compute_av };
allow phhsu_daemon domain:unix_stream_socket { getattr };
allow phhsu_daemon logdr_socket:sock_file write;
@ -122,7 +124,7 @@ allow phhsu_daemon tombstoned:unix_stream_socket { connectto };
allow phhsu_daemon { property_data_file data_file_type tmpfs }:file create_file_perms;
allow phhsu_daemon { property_data_file data_file_type tmpfs }:dir create_dir_perms;
allow phhsu_daemon fs_type:filesystem { mount remount unmount associate };
allow phhsu_daemon { tmpfs fs_type }:filesystem { mount remount unmount associate };
allow phhsu_daemon phhsu_daemon:file relabelfrom;
@ -134,6 +136,16 @@ allow phhsu_daemon domain:fd { use };
allow phhsu_daemon domain:unix_stream_socket { connectto ioctl getattr getopt read write shutdown };
allow phhsu_daemon self:netlink_kobject_uevent_socket create_socket_perms;
allow phhsu_daemon self:{ netlink_tcpdiag_socket } { create_socket_perms nlmsg_write nlmsg_read };
allow phhsu_daemon self:{ netlink_selinux_socket } { create_socket_perms };
allow phhsu_daemon file_type:file create_file_perms;
allow phhsu_daemon file_type:dir create_dir_perms;
allow phhsu_daemon domain:process { transition };
# 05-09 00:05:30.149 18450 18450 W lprename: type=1400 audit(0.0:40923): avc: denied { ioctl } for path="/dev/block/sda25" dev="tmpfs" ino=19441 ioctlcmd=0x1278 scontext=u:r:phhsu_daemon:s0 tcontext=u:object_r:super_block_device:s0 tclass=blk_file permissive=0
# 06-06 12:59:53.775 30150 30150 I auditd : type=1400 audit(0.0:35585): avc: denied { ioctl } for comm="blockdev" path="/dev/block/dm-3" dev="tmpfs" ino=12687 ioctlcmd=0x125d scontext=u:r:phhsu_daemon:s0 tcontext=u:object_r:dm_device:s0 tclass=blk_file permissive=0
allowxperm phhsu_daemon { file_type block_device }:blk_file ioctl { 0-0xffff };
allowxperm phhsu_daemon { system_block_device super_block_device dm_device }:blk_file ioctl { 0x1278-0x127a 0x125d };

View File

@ -7,3 +7,38 @@ allow system_app sysfs_batteryinfo:file rw_file_perms;
type vendor_camera_prop, property_type;
set_prop(system_app, vendor_camera_prop);
type camera_prop, property_type;
set_prop(system_app, camera_prop);
type hal_ext_fingerprint_hwservice, hwservice_manager_type;
allow system_app hal_ext_fingerprint_hwservice:hwservice_manager { find };
type hal_fingerprint_default, domain;
allow system_app hal_fingerprint_default:binder { call };
allow system_app sysfs_power:dir r_dir_perms;
allow system_app sysfs_power:file rw_file_perms;
allow system_app sysfs_power:lnk_file read;
type default_hisi_hwservice, hwservice_manager_type;
allow system_app default_hisi_hwservice:hwservice_manager { find };
type hal_tp_default, domain;
allow system_app hal_tp_default:binder { call };
#cam2api
allow system_app vendor_default_prop:property_service { set };
set_prop(system_app, default_prop);
set_prop(system_app, exported3_default_prop);
type mtk_hal_rild_hwservice, hwservice_manager_type;
allow system_app mtk_hal_rild_hwservice:hwservice_manager { find};
type mtk_vilte_support_prop, property_type;
allow system_app mtk_vilte_support_prop:property_service set;
type hal_gesturewake_hwservice, hwservice_manager_type;
type hal_gesturewake_default, domain;
allow system_app hal_gesturewake_hwservice:hwservice_manager { find };
allow system_app hal_gesturewake_default:binder { call transfer };
allow hal_gesturewake_default system_app:binder { call transfer };

View File

@ -3,3 +3,11 @@ ro.adb.secure=0
#Disable for everyone for the moment
ro.sys.sdcardfs=0
persist.sys.overlay.nightmode=true
#Disable debugging strict mode toasts
persist.sys.strictmode.disable=true
persist.sys.phh.mainkeys=0
fw.max_users=10
persist.sys.max_profiles=10
ro.boot.realme.lockstate=0

View File

@ -1,4 +1,3 @@
on post-fs
exec - root -- /system/bin/vndk-detect
export LD_CONFIG_FILE /system/etc/ld.config.${persist.sys.vndk}.txt
exec u:r:phhsu_daemon:s0 root -- /system/bin/twrp.sh

View File

@ -79,7 +79,7 @@ if [ "$configfs" == 1 ];then
sleep 1
echo none > /config/usb_gadget/g1/UDC
ln -s /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/c.1/f1
echo ff100000.dwc3 > /config/usb_gadget/g1/UDC
ls /sys/class/udc |head -n 1 > /config/usb_gadget/g1/UDC
sleep 2
echo 2 > /sys/devices/virtual/android_usb/android0/port_mode

56
vndk.rc
View File

@ -2,7 +2,14 @@ on post-fs
exec - root -- /system/bin/vndk-detect
exec - root -- /system/bin/rw-system.sh
mount none /system/etc/usb_audio_policy_configuration.xml /vendor/etc/usb_audio_policy_configuration.xml bind
export LD_CONFIG_FILE /system/etc/ld.config.${persist.sys.vndk}.txt
setprop ro.vndk.version ${persist.sys.vndk}
export LD_PRELOAD :
on property:vold.decrypt=trigger_restart_framework
exec - root -- /system/bin/phh-on-data.sh
on early-boot
exec - root -- /system/bin/phh-on-data.sh
service phh_on_boot /system/bin/phh-on-boot.sh
oneshot
@ -16,5 +23,50 @@ on property:sys.boot_completed=1
on property:persist.sys.phh.mainkeys=*
setprop qemu.hw.mainkeys ${persist.sys.phh.mainkeys}
on property:persist.sys.phh.oppo.dt2w=*
exec u:r:phhsu_daemon:s0 root -- /system/bin/phh-prop-handler.sh "persist.sys.phh.oppo.dt2w"
on property:persist.sys.phh.oppo.gaming_mode=*
exec u:r:phhsu_daemon:s0 root -- /system/bin/phh-prop-handler.sh "persist.sys.phh.oppo.gaming_mode"
on property:persist.sys.phh.oppo.usbotg=*
exec u:r:phhsu_daemon:s0 root -- /system/bin/phh-prop-handler.sh "persist.sys.phh.oppo.usbotg"
on property:persist.sys.phh.xiaomi.dt2w=*
exec_background u:r:phhsu_daemon:s0 root -- /system/bin/phh-prop-handler.sh "persist.sys.phh.xiaomi.dt2w"
exec u:r:phhsu_daemon:s0 root -- /system/bin/phh-prop-handler.sh "persist.sys.phh.xiaomi.dt2w"
on property:persist.sys.phh.disable_audio_effects=*
exec u:r:phhsu_daemon:s0 root -- /system/bin/phh-prop-handler.sh "persist.sys.phh.disable_audio_effects"
on property:persist.sys.phh.caf.audio_policy=*
exec u:r:phhsu_daemon:s0 root -- /system/bin/phh-prop-handler.sh "persist.sys.phh.caf.audio_policy"
on property:persist.sys.phh.vsmart.dt2w=*
exec u:r:phhsu_daemon:s0 root -- /system/bin/phh-prop-handler.sh "persist.sys.phh.vsmart.dt2w"
on property:persist.sys.phh.backlight.scale=*
exec u:r:phhsu_daemon:s0 root -- /system/bin/phh-prop-handler.sh "persist.sys.phh.backlight.scale"
on property:ro.sf.lcd_density=*
restart surfaceflinger
on property:persist.sys.phh.disable_a2dp_offload=0
setprop persist.sys.phh.disable_a2dp_offload false
on property:persist.sys.phh.disable_a2dp_offload=1
setprop persist.sys.phh.disable_a2dp_offload true
on property:persist.sys.phh.disable_a2dp_offload=*
setprop persist.bluetooth.bluetooth_audio_hal.disabled ${persist.sys.phh.disable_a2dp_offload}
on property:init.svc.ril-proxy=stopped && property:persist.sys.phh.restart_ril=true
start ril-proxy
on property:init.svc.vendor.ril-daemon-mtk=stopped && property:persist.sys.phh.restart_ril=true
start vendor.ril-daemon-mtk
on property:persist.sys.phh.restart_ril=true
restart ril-proxy
restart vendor.qcrild
restart vendor.qcrild2
restart vendor.ril-daemon-mtk