====== Welcome to the Vendor Properties Documentation! ====== In this section of the wiki, we delve into the intricate world of vendor properties found in MediaTek (MTK) devices. Vendor properties are specific configurations, settings, or values that are set by the device manufacturer to control various aspects of the device's behavior, performance, and functionality. Understanding vendor properties is crucial for developers, enthusiasts, and power users who wish to customize, modify, or optimize their MediaTek devices. By shedding light on these properties, we aim to provide you with a deeper understanding of how your device operates and empower you to make informed decisions regarding customization and development. Within this section, you will find detailed information about vendor properties across different categories shown below. Our goal is to create an extensive repository of vendor properties within each category, complete with detailed explanations, usage guidelines, and real-world examples. We encourage you to contribute to this section by sharing your knowledge, insights, and experiences with different vendor properties you have encountered. Remember, tinkering with vendor properties requires caution and understanding. It's crucial to back up your data and proceed with care, as improper modifications can lead to unexpected behavior or even device instability. Always exercise caution and take responsibility for your actions. Let's unlock the potential of MediaTek devices together by exploring the world of vendor properties! ===== Camera ===== ==== ro.vendor.camera3.zsl.default|project ==== These properties are used to set the default timestamp difference to calculate the estimated shutter delay in the Zero Lag-Shooting camera mode. A value is set as default for the chipset and should not be changed, if the difference needs to be adjusted the project prop can be set on a per project basis. ==== ro.vendor.jpeg_decode_sw_opt ==== The purpose of this property is unknown but it can be inferred that it enables some sort of decoding software optimization within this library. Default value observed on mt6769 is "1". ==== ro.vendor.smvr.p2batch.* ==== These properties are used to set the ISP batch number for a given quality profile for the Slow Motion Video camera mode. It is unknown what batch means in this context but it can be assumed that it is the number of ISP Pipelines that are used. ==== vendor.camera.mdp.cz.enable ==== This property is used to enable ClearZoom in the MTK Camera Pipeline. ==== vendor.debug.camera3.zsl.timestamp ==== See the subsection for ro.vendor.camera3.zsl.default|project. This property allows you to adjust the Zero Lag-Shooting mode estimated shutter delay on the fly using setprop. ===== Display ===== ==== ro.vendor.mtk_pq_color_mode ==== This property is used to set the default MDP[(cite:mdp>Media Data Path)] color mode. On most devices it is set to 1. It is queried by libdpframework. ==== ro.vendor.mtk_pq_support ==== This property controls the enablement of the PQ[(cite:pq>Picture Quality)] service. On most devices it is set to a value of 2 however investigating various sources show that as long as the value isn't 0 it is enabled regardless of the actual value. ==== ro.vendor.pq.mtk_pq_video_whitelist_support|ro.vendor.pq.mtk_video_transition ==== These properties are used in conjunction with ro.vendor.mtk_pq_support in order to set the MDP[(cite:mdp>Media Data Path)] Output Format to HAL_PIXEL_FORMAT_YUYV. ===== DRM ===== ==== ro.vendor.mtk_prefer_64bit_proc ==== This property is used on ALPS to enable the 64bit version of drmserver. You can safely ignore the existence of this property. See below for how it is used. on property:drm.service.enabled=true && property:ro.vendor.mtk_prefer_64bit_proc=1 start drm64 on property:drm.service.enabled=1 && property:ro.vendor.mtk_prefer_64bit_proc=1 start drm64 on property:drm.service.enabled=true && property:ro.vendor.mtk_prefer_64bit_proc=0 start drm on property:drm.service.enabled=1 && property:ro.vendor.mtk_prefer_64bit_proc=0 start drm ===== Init ===== ==== ro.vendor.init.sensor.rc ==== This property is used to define the path of the sensors init script typically imported by the main hardware init script, init.${ro.hardware}.rc. Below is a snippet of how it is used. Do note that not all OEMs use the prop even if they define it. # MTK platform .rc configure import ${ro.vendor.rc}init.connectivity.rc import ${ro.vendor.rc}init.mt6873.usb.rc import /vendor/etc/init/hw/init.project.rc import /system_ext/etc/init/hw/init.aee.rc import /FWUpgradeInit.rc import /vendor/etc/init/hw/init.aee.rc import ${ro.vendor.rc}init.volte.rc import ${ro.vendor.rc}init.mal.rc import ${ro.vendor.rc}${ro.vendor.init.sensor.rc} import /vendor/etc/init/hw/init.stnfc.rc import /system/etc/init/hw/init.stnfc.rc import ${ro.vendor.rc}init.cgroup.rc ==== ro.vendor.rc ==== This property is used to define the paths of the main vendor hardware init scripts, typically it is defined like such: ro.vendor.rc=/vendor/etc/init/hw/ Here is a snippet of init.mt6768.rc from Moto G31(w) based upon the MT6768 chipset.[(cite:init6768>[[https://dumps.tadiphone.dev/dumps/motorola/coful/-/blob/user-12-S3RWB32.125-29-2-be967-release-keys/vendor/etc/init/hw/init.mt6768.rc#L3|Sourced from]])] # MTK platform .rc configure import ${ro.vendor.rc}init.connectivity.rc import ${ro.vendor.rc}init.mt6768.usb.rc import /vendor/etc/init/hw/init.project.rc import /system_ext/etc/init/hw/init.aee.rc import /FWUpgradeInit.rc import /vendor/etc/init/hw/init.aee.rc import ${ro.vendor.rc}init.volte.rc import ${ro.vendor.rc}init.mal.rc import ${ro.vendor.rc}init.sensor_1_0.rc import ${ro.vendor.rc}init.ago.rc import /vendor/etc/init/hw/init.stnfc.rc import /system/etc/init/hw/init.stnfc.rc ===== Neural Networks ===== ==== debug.mtk_tflite.target_nnapi ==== It is unknown what this prop does and grepping for it in the stock ROM for my mt6768 based devices reveal nothing but only that it is set to a value of 29. ==== ro.vendor.mtk_nn_quant_preferred ==== This property controls the preference of quant vs float32 within the Neural Networks HAL. It is enabled when VPU is enabled. On mt6768 this is set to 1 by default. ==== ro.vendor.mtk_nn_support ==== This property seems to enable Neural Networks support under the Camera HAL, needs confirmation. ==== ro.vendor.mtk_nn_baseline_support ==== This property is used by the neural networks HAL's service definition file to control whether or not to start the HAL. Some chipsets may ship the Neural Networks HAL but not support it. This property controls starting it for the chipsets that do. It is used like so, service neuralnetworks_hal_service_mtk_neuron /vendor/bin/hw/android.hardware.neuralnetworks@1.3-service-mtk-neuron class hal user system group system readproc disabled on property:ro.vendor.mtk_nn_baseline_support=1 start neuralnetworks_hal_service_mtk_neuron If your chipset supports using the Neural Network HAL, you should set this prop's value to 1. ==== ro.vendor.mtk_nn.option ==== This property defines the supported features capable of use under the Neural Networks HAL, below is a list of features and their keys, - A: Feature ION - B: Feature Enhance Performance - C: Feature CPU Scheduling - D: Feature QOS - E: Feature OEM String Scalar - Z: End, Enum Max The property is defined as shown, ro.vendor.mtk_nn.option=D,E,F,Z ===== Radio ===== ==== persist.vendor.radio.fd.* ==== This properties concern the Fast Dormancy[(cite:fd>[[https://en.wikipedia.org/wiki/Fast_Dormancy|Wikipedia Article on Fast Dormancy]])] timers. Known properties under this umbrella are: * persist.vendor.radio.fd.counter=150 * persist.vendor.radio.fd.off.counter=50 * persist.vendor.radio.fd.r8.counter=150 * persist.vendor.radio.fd.off.r8.counter=50 === Notes === Within the mtk-ril binary, the defaults for on timers are "150" and off timers "50". It appears that setting the properties as shown above is useless and unneeded. ---- ==== ro.vendor.mtk_protocolX_rat_config|ro.vendor.mtk_psX_rat ==== RAT or Radio Access Technology is defined as the underlying physical connection method for a radio based communication network.[(cite:rat>[[https://en.wikipedia.org/wiki/Radio_access_technology|Wikipedia Article on RAT]])] Think 2G, 3G, 4G and 5G. This property has multiple variants for up to triple sim devices, replace **X** with 1, 2 or 3. Valid values for these properties are: * CDMA: "C" * LteFdd: "Lf" * LteTdd: "Lt" * WCDMA: "W" * TDSCDMA: "T" * GSM: "G" * NR "N" In the format, Name: Value. === Notes === When setting this property, be sure to split each value with a "/". Example: ro.vendor.mtk_protocolX_rat_config=Lf/Lt/W/G or ro.vendor.mtk_psX_rat=Lf/Lt/W/G is present in your vendor property list, from this we can tell the device supports LteFdd, LteTdd, WCDMA and GSM connectivity. For additional information on what LteTdd or LteFdd means please visit [[https://en.wikipedia.org/wiki/LTE_frequency_bands|this page]].