device_redmi_klein/recovery/root/init.recovery.common.rc
2026-08-08 17:36:57 +05:00

227 lines
No EOL
8.8 KiB
Text

# SPDX-FileCopyrightText: 2016-2023 Unisoc (Shanghai) Technologies Co., Ltd
# SPDX-License-Identifier: LicenseRef-Unisoc-General-1.0
#
## Please include it in /init.recovery.${ro.hardware}.rc
#
service healthd /system/bin/healthd -r
critical
seclabel u:r:healthd:s0
service create_splloader_dual_slot_byname_path /system/bin/create_splloader_dual_slot_byname_path.sh
user root
group root system
disabled
oneshot
seclabel u:r:create_spl_link_recovery:s0
on init
# Touch drivers
chmod 0644 /firmware/novatek_ts_truly_fw.bin
chmod 0644 /firmware/novatek_ts_truly_mp.bin
chmod 0644 /firmware/focaltech-FT5x46.bin
# Apply strict SELinux checking of PROT_EXEC on mmap/mprotect calls.
write /sys/fs/selinux/checkreqprot 0
start healthd
start create_splloader_dual_slot_byname_path
export PATH /sbin:/system/bin:/vendor/bin
export SECONDARY_STORAGE /storage/sdcard0
mkdir /storage
mkdir /storage/sdcard1
mkdir /storage/sdcard0
symlink /storage/sdcard0 /mnt/sdcard
symlink /system/etc/bluetooth /etc/bluetooth
mkdir /systeminfo 0777 system system
loglevel 7
chown system root /proc/mdbg/assert
chown system root /proc/mdbg/wdtirq
chown system root /proc/mdbg/at_cmd
chown system root /proc/mdbg/loopcheck
chmod 760 /proc/mdbg/assert
chmod 760 /proc/mdbg/wdtirq
chmod 760 /proc/mdbg/at_cmd
chmod 760 /proc/mdbg/loopcheck
chown system root /proc/cpwcn/wdtirq
chmod 766 /proc/cpwcn/wdtirq
# Create mount-point for ConfigFS USB gadgets
# Add standard gadget entries
mount configfs none /config
mkdir /config/usb_gadget/g1 0770 shell shell
write /config/usb_gadget/g1/idVendor 0x1782
write /config/usb_gadget/g1/idProduct 0x4d00
mkdir /config/usb_gadget/g1/strings/0x409 0770 shell shell
write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
write /config/usb_gadget/g1/strings/0x409/manufacturer Unisoc
write /config/usb_gadget/g1/strings/0x409/product "Unisoc Phone"
mkdir /config/usb_gadget/g1/configs/b.1 0770 shell shell
mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "Conf 1"
write /config/usb_gadget/g1/configs/b.1/MaxPower 120
# Create adb+ffs gadget function
mkdir /config/usb_gadget/g1/functions/ffs.adb 0770 shell shell
mkdir /config/usb_gadget/g1/functions/ffs.fastboot 0770 shell shell
mkdir /dev/usb-ffs 0770 shell shell
mkdir /dev/usb-ffs/adb 0770 shell shell
mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
mkdir /dev/usb-ffs/fastboot 0770 system system
mount functionfs fastboot /dev/usb-ffs/fastboot rmode=0770,fmode=0660,uid=1000,gid=1000
# Create MTP and PTP functions
mkdir /config/usb_gadget/g1/functions/mtp.gs0 0770 shell shell
mkdir /config/usb_gadget/g1/functions/ptp.gs1 0770 shell shell
mkdir /config/usb_gadget/g1/functions/rndis.gs4 0770 shell shell
mkdir /config/usb_gadget/g1/functions/vser.gs7 0770 shell shell
mkdir /config/usb_gadget/g1/functions/accessory.gs2 0770 shell shell
mkdir /config/usb_gadget/g1/functions/audio_source.gs3 0770 shell shell
mkdir /config/usb_gadget/g1/functions/midi.gs5 0770 shell shell
mkdir /config/usb_gadget/g1/functions/sprdgser.gs0 0770 shell shell
mkdir /config/usb_gadget/g1/functions/sprdgser.gs1 0770 shell shell
mkdir /config/usb_gadget/g1/functions/sprdgser.gs2 0770 shell shell
mkdir /config/usb_gadget/g1/functions/sprdgser.gs3 0770 shell shell
mkdir /config/usb_gadget/g1/functions/sprdgser.gs4 0770 shell shell
mkdir /config/usb_gadget/g1/functions/sprdgser.gs5 0770 shell shell
mkdir /config/usb_gadget/g1/functions/sprdgser.gs6 0770 shell shell
mkdir /config/usb_gadget/g1/functions/sprdgser.gs7 0770 shell shell
on boot
chown root root /lib/firmware
chmod 0755 /lib/firmware
chmod 0644 /lib/firmware/focaltech-FT5x46.bin
chmod 0644 /lib/firmware/novatek_ts_truly_mp.bin
chmod 0644 /lib/firmware/novatek_ts_truly_fw.bin
setprop sys.usb.configfs 1
write /sys/block/mmcblk0boot0/force_ro 0
write /sys/block/mmcblk0boot1/force_ro 0
chmod 660 /sys/class/power_supply/battery/charger.0/stop_charge
chmod 660 /sys/class/power_supply/battery/charger.0/jeita_control
chmod 660 /sys/class/power_supply/battery/input_current_limit
chmod 660 /sys/class/power_supply/battery/constant_charge_current
chmod 660 /sys/class/power_supply/battery/charger.0/keep_awake
on fs
#mkdir /data/misc/bluedroid 0770 bluetooth net_bt_stack
mkdir /data/misc/bluetooth 0770 system system
on post-fs-data
# We chown/chmod /data again so because mount is run as root + defaults
chown system system /data
chmod 0771 /data
# We restorecon /data in case the userdata partition has been reset.
restorecon /data
mkdir /data/misc 01771 system misc
#mkdir /data/misc/bluedroid 0770 bluetooth net_bt_stack
mkdir /data/misc/bluetooth 0770 system system
copy /system/etc/bluetooth/bt_stack.conf /data/misc/bluedroid/bt_stack.conf
chown bluetooth system /data/misc/bluedroid/bt_stack.conf
chmod 0640 /data/misc/bluedroid/bt_stack.conf
#add wifi
mkdir /data/vendor/wifi 0770 wifi wifi
mkdir /data/vendor/wifi/wpa 0770 wifi wifi
mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi
mkdir /data/system 0770 system system
mkdir /etc/wifi 0770 wifi wifi
write /data/vendor/wifi/fwpath sta_mode
chmod 660 /data/vendor/wifi/fwpath
chown wifi wifi /data/vendor/wifi/fwpath
rmdir /data/system/wpa_supplicant
mkdir /data/misc/dhcp 0770 dhcp dhcp
#to observe dnsmasq.leases file for dhcp information
chown dhcp system /data/misc/dhcp
setprop wifi.interface wlan0
mkdir /data/misc/dhcp6c 0770 dhcp dhcp
chown dhcp system /data/misc/dhcp6c
# Ylog dir on /data partition
mkdir /data/vendor 0751 root root
mkdir /data/vendor/local 0751 root root
# slogmodem config dir
mkdir /data/vendor/ylog 0770 shell system
mkdir /data/vendor/local/slogmodem 0770 shell system
mkdir /data/vendor/local/mlogservice 0770 shell system
mkdir /mnt/vendor/productinfo 0771 system root
mkdir /data/vendor/local/otpdata 0777 system root
on property:ro.debuggable=1
write /sys/module/smsg/parameters/debug_enable 1
on property:ro.bootmode=recovery
class_start recovery
on property:sys.usb.configfs=1 && property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb,vser,gser
write /config/usb_gadget/g1/idVendor 0x1782
write /config/usb_gadget/g1/idProduct 0x5d06
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb_vser_gser"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
rm /config/usb_gadget/g1/configs/b.1/f9
rm /config/usb_gadget/g1/configs/b.1/f10
rm /config/usb_gadget/g1/configs/b.1/f11
symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
symlink /config/usb_gadget/g1/functions/vser.gs7 /config/usb_gadget/g1/configs/b.1/f2
symlink /config/usb_gadget/g1/functions/sprdgser.gs0 /config/usb_gadget/g1/configs/b.1/f3
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:sys.usb.configfs=1 && property:sys.usb.config=vser
write /config/usb_gadget/g1/idVendor 0x1782
write /config/usb_gadget/g1/idProduct 0x4d00
write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "vser"
rm /config/usb_gadget/g1/configs/b.1/f1
rm /config/usb_gadget/g1/configs/b.1/f2
rm /config/usb_gadget/g1/configs/b.1/f3
rm /config/usb_gadget/g1/configs/b.1/f4
rm /config/usb_gadget/g1/configs/b.1/f5
rm /config/usb_gadget/g1/configs/b.1/f6
rm /config/usb_gadget/g1/configs/b.1/f7
rm /config/usb_gadget/g1/configs/b.1/f8
rm /config/usb_gadget/g1/configs/b.1/f9
rm /config/usb_gadget/g1/configs/b.1/f10
rm /config/usb_gadget/g1/configs/b.1/f11
symlink /config/usb_gadget/g1/functions/vser.gs7 /config/usb_gadget/g1/configs/b.1/f1
write /config/usb_gadget/g1/UDC ${sys.usb.controller}
setprop sys.usb.state ${sys.usb.config}
on property:ro.bootmode=factorytest && property:ro.debuggable=0
setprop sys.usb.config vser
# for grf
on property:ro.odm.build.fingerprint=*
setprop ro.vendor.build.fingerprint ${ro.odm.build.fingerprint}
on property:ro.product.device=*
setprop ro.product.vendor.device ${ro.product.device}
on property:ro.product.model=*
setprop ro.product.vendor.model ${ro.product.model}
on property:ro.product.name=*
setprop ro.product.vendor.name ${ro.product.name}