• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2# Copyright 2014 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17import init.shamu.usb.rc
18import init.shamu.power.rc
19import init.shamu.diag.rc
20
21on early-init
22    mkdir /firmware 0771 system system
23    symlink /data/tombstones /tombstones
24    mount debugfs debugfs /sys/kernel/debug
25    chown system system /sys/kernel/debug/kgsl/proc
26
27on init
28    # Load persistent dm-verity state
29    verity_load_state
30
31    mkdir /oem 0550 root root
32
33    # Set permissions for persist partition
34    mkdir /persist 0771 system system
35
36    symlink /sdcard /storage/sdcard0
37
38on fs
39    mount_all fstab.shamu
40
41    # Keeping following partitions outside fstab file. As user may not have
42    # these partition flashed on the device. Failure to mount any partition in fstab file
43    # results in failure to launch late-start class.
44    wait /dev/block/platform/msm_sdcc.1/by-name/oem
45    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/oem /oem ro nosuid nodev context=u:object_r:oemfs:s0
46
47    mkdir /fsg 0755 root root
48    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/mdm1m9kefs3 /fsg ro nosuid nodev barrier=0 context=u:object_r:fsg_file:s0
49
50    restorecon_recursive /persist
51    mkdir /persist/data 0700 system system
52    mkdir /persist/data/sfs 0700 system system
53    mkdir /persist/data/tz 0700 system system
54    mkdir /persist/public 0755 system radio
55    mkdir /persist/public/hiddenmenu 0775 system radio
56    mkdir /persist/public/hiddenmenu/data 0775 system radio
57
58    # Enable rmnet data and aggregation
59    setprop persist.rmnet.mux enabled
60    setprop persist.rmnet.data.enable true
61    setprop persist.data.wda.enable true
62    setprop persist.data.df.agg.dl_pkt 10
63    setprop persist.data.df.agg.dl_size 4096
64
65    # Adjust parameters for dm-verity device
66    write /sys/block/dm-0/queue/read_ahead_kb 2048
67
68    # Update dm-verity state and set partition.*.verified properties
69    verity_update_state
70
71on post-fs-data
72    mkdir /tombstones/modem 0771 system system
73    mkdir /tombstones/lpass 0771 system system
74    mkdir /tombstones/wcnss 0771 system system
75    mkdir /tombstones/dsps 0771 system system
76
77    # SENSORS
78    #Create directory used by sensor subsystem(dsps)
79    mkdir /data/system/sensors
80    chmod 0775 /data/system/sensors
81
82    # AKM setting data
83    mkdir /data/misc/sensors
84    chmod 0775 /data/misc/sensors
85
86    mkdir /persist/sensors
87    chmod 0775 /persist/sensors
88
89    mkdir /persist/mdm 0770 radio radio
90
91    #Subsystem RAM-dumps
92    mkdir /data/ss-ram-dumps 0750 radio log
93    mkdir /data/ss-ram-dumps/bp-dumps 0750 radio log
94
95    # rild files
96    mkdir /data/misc/audio_cutback 0770 radio audio
97
98on early-boot
99    # set RLIMIT_MEMLOCK to 64MB
100    setrlimit 8 67108864 67108864
101
102    # Allow subsystem (modem etc) debugging
103    # write /sys/module/subsystem_restart/parameters/enable_debug ${persist.sys.ssr.enable_debug}
104
105    write /sys/kernel/boot_adsp/boot 1
106
107    # Subsytem Restart
108    #venus
109    write /sys/bus/msm_subsys/devices/subsys0/restart_level "related"
110    write /sys/bus/msm_subsys/devices/subsys0/recovery_policy "skip_restart"
111    #adsp
112    write /sys/bus/msm_subsys/devices/subsys1/restart_level "related"
113    write /sys/bus/msm_subsys/devices/subsys1/recovery_policy "skip_restart"
114    #vpu
115    write /sys/bus/msm_subsys/devices/subsys2/restart_level "related"
116    write /sys/bus/msm_subsys/devices/subsys2/recovery_policy "skip_restart"
117    #esoc0 (mdm)
118    write /sys/bus/msm_subsys/devices/subsys3/restart_level "related"
119    write /sys/bus/msm_subsys/devices/subsys3/recovery_policy "skip_restart"
120
121on boot
122    chown bluetooth net_bt_stack /sys/module/bluetooth_power/parameters/power
123    chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/type
124    chown bluetooth net_bt_stack /sys/class/rfkill/rfkill0/state
125    chown bluetooth net_bt_stack /proc/bluetooth/sleep/proto
126    chown bluetooth net_bt_stack /proc/bluetooth/sleep/lpm
127    chown bluetooth net_bt_stack /proc/bluetooth/sleep/btwrite
128    chown bluetooth net_bt_stack /sys/module/hci_uart/parameters/ath_lpm
129    chown bluetooth net_bt_stack /sys/module/hci_uart/parameters/ath_btwrite
130    chown system system /sys/module/sco/parameters/disable_esco
131    chown bluetooth net_bt_stack /sys/module/hci_smd/parameters/hcismd_set
132    chmod 0660 /sys/module/bluetooth_power/parameters/power
133    chmod 0660 /sys/module/hci_smd/parameters/hcismd_set
134    chmod 0660 /sys/class/rfkill/rfkill0/state
135    chmod 0660 /proc/bluetooth/sleep/proto
136    chown bluetooth net_bt_stack /dev/ttyHS0
137    chmod 0660 /sys/module/hci_uart/parameters/ath_lpm
138    chmod 0660 /sys/module/hci_uart/parameters/ath_btwrite
139    chmod 0660 /dev/ttyHS0
140    chown bluetooth net_bt_stack /sys/devices/platform/msm_serial_hs.0/clock
141    chmod 0660 /sys/devices/platform/msm_serial_hs.0/clock
142
143    # update foreground cpuset now that processors are up
144    # reserve CPU 3 for the top app
145    write /dev/cpuset/foreground/cpus 0-2
146    write /dev/cpuset/foreground/boost/cpus 0-3
147    write /dev/cpuset/background/cpus 0
148    write /dev/cpuset/system-background/cpus 0-1
149    write /dev/cpuset/top-app/cpus 0-3
150
151    chmod 0660 /dev/ttyHS2
152    chown bluetooth net_bt_stack /dev/ttyHS2
153
154    #Create QMUX deamon socket area
155    mkdir /dev/socket/qmux_radio 0770 radio radio
156    chmod 2770 /dev/socket/qmux_radio
157    mkdir /dev/socket/qmux_audio 0770 media audio
158    chmod 2770 /dev/socket/qmux_audio
159    mkdir /dev/socket/qmux_bluetooth 0770 bluetooth bluetooth
160    chmod 2770 /dev/socket/qmux_bluetooth
161    mkdir /dev/socket/qmux_gps 0770 gps gps
162    chmod 2770 /dev/socket/qmux_gps
163
164    mkdir /dev/socket/mpdecision 2775 root system
165    chmod 2775 /dev/socket/mpdecision
166
167    setprop wifi.interface wlan0
168
169    #readable symlinks for video nodes
170    mkdir /dev/video
171    symlink /dev/video32 /dev/video/venus_dec
172    symlink /dev/video33 /dev/video/venus_enc
173
174    setprop ro.telephony.call_ring.multiple false
175
176    chown system system /sys/bus/i2c/devices/1-004a/tsp
177
178    chmod 0444 /sys/devices/platform/msm_hsusb/gadget/usb_state
179
180    # Allow QMUX daemon to assign port open wait time
181    chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait
182
183    #port-bridge
184    chmod 0660 /dev/smd0
185    chown system system /dev/smd0
186
187    #BT DUN port-bridge
188    chmod 0660 /dev/smd7
189    chown bluetooth net_bt_stack /dev/smd7
190
191    #For bridgemgr daemon to inform the USB driver of the correct transport
192    chown radio radio /sys/class/android_usb/f_rmnet_smd_sdio/transport
193
194#   Assign TCP buffer thresholds to be ceiling value of technology maximums
195#   Increased technology maximums should be reflected here.
196    write /proc/sys/net/core/rmem_max  8388608
197    write /proc/sys/net/core/wmem_max  8388608
198
199    #To allow interfaces to get v6 address when tethering is enabled
200    write /proc/sys/net/ipv6/conf/rmnet0/accept_ra 2
201    write /proc/sys/net/ipv6/conf/rmnet1/accept_ra 2
202    write /proc/sys/net/ipv6/conf/rmnet2/accept_ra 2
203    write /proc/sys/net/ipv6/conf/rmnet3/accept_ra 2
204    write /proc/sys/net/ipv6/conf/rmnet4/accept_ra 2
205    write /proc/sys/net/ipv6/conf/rmnet5/accept_ra 2
206    write /proc/sys/net/ipv6/conf/rmnet6/accept_ra 2
207    write /proc/sys/net/ipv6/conf/rmnet7/accept_ra 2
208    write /proc/sys/net/ipv6/conf/rmnet_sdio0/accept_ra 2
209    write /proc/sys/net/ipv6/conf/rmnet_sdio1/accept_ra 2
210    write /proc/sys/net/ipv6/conf/rmnet_sdio2/accept_ra 2
211    write /proc/sys/net/ipv6/conf/rmnet_sdio3/accept_ra 2
212    write /proc/sys/net/ipv6/conf/rmnet_sdio4/accept_ra 2
213    write /proc/sys/net/ipv6/conf/rmnet_sdio5/accept_ra 2
214    write /proc/sys/net/ipv6/conf/rmnet_sdio6/accept_ra 2
215    write /proc/sys/net/ipv6/conf/rmnet_sdio7/accept_ra 2
216    write /proc/sys/net/ipv6/conf/rmnet_usb0/accept_ra 2
217    write /proc/sys/net/ipv6/conf/rmnet_usb1/accept_ra 2
218    write /proc/sys/net/ipv6/conf/rmnet_usb2/accept_ra 2
219    write /proc/sys/net/ipv6/conf/rmnet_usb3/accept_ra 2
220
221    # To prevent out of order acknowledgements from making
222    # connection tracking to treat them as not belonging to
223    # the connection they belong to.
224    # Otherwise, a weird issue happens in which some long
225    # connections on high-throughput links get dropped when
226    # an ack packet comes out of order
227    write /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal 1
228
229    # Set the console loglevel to < KERN_INFO
230    # Set the default message loglevel to KERN_INFO
231    # write /proc/sys/kernel/printk "6 6 1 7"
232
233    write /sys/bus/platform/drivers/xhci_msm_hsic/unbind msm_hsic_host
234    write /sys/module/rmnet_usb/parameters/mux_enabled 1
235    write /sys/module/rmnet_usb/parameters/no_fwd_rmnet_links 8
236    write /sys/module/rmnet_usb/parameters/no_rmnet_insts_per_dev 17
237    write /sys/module/rmnet_usb/parameters/rmnet_data_init 1
238    chown radio radio /sys/devices/virtual/hsicctl/hsicctl0/modem_wait
239
240    # Audio DSP permissions
241    chown media media /dev/ttyHS3
242    chown media media /sys/devices/c55_ctrl/gpio_ap_int/edge
243    chown media media /sys/devices/c55_ctrl/gpio_ap_int/value
244    chown media media /sys/devices/c55_ctrl/gpio_c55_int/value
245    chown media media /sys/devices/c55_ctrl/gpio_core/value
246    chown media media /sys/devices/c55_ctrl/gpio_reset/value
247
248# subsystem ramdump collection
249on property:persist.sys.qc.sub.rdump.on=*
250    write /sys/module/subsystem_restart/parameters/enable_ramdumps ${persist.sys.qc.sub.rdump.on}
251
252# permissions for CapSense firmware update
253    chown radio radio /sys/devices/cycapsense_prog.1/cycapsense_fw
254    chmod 0220 /sys/devices/cycapsense_prog.1/cycapsense_fw
255
256# msm specific files that need to be created on /data
257on post-fs-data
258    mkdir /data/misc/bluetooth 0770 bluetooth bluetooth
259
260    # Create the directories used by the Wireless subsystem
261    mkdir /data/misc/wifi 0770 wifi wifi
262    mkdir /data/misc/wifi/sockets 0770 wifi wifi
263    mkdir /data/misc/wifi/wpa_supplicant 0770 wifi wifi
264    mkdir /data/misc/dhcp 0770 dhcp dhcp
265    chown dhcp dhcp /data/misc/dhcp
266
267    # Create the directories used by CnE subsystem
268    mkdir /data/connectivity 0771 system system
269    chown system system /data/connectivity
270
271    mkdir /data/connectivity/nsrm 0771 system system
272    chown system system /data/connectivity/nsrm
273
274    # Create directory used by audio subsystem
275    mkdir /data/misc/audio 0770 audio audio
276
277    # Mounting of persist is moved to 'on emmc-fs' and 'on fs' sections
278    # We chown/chmod /persist again so because mount is run as root + defaults
279    chown system system /persist
280    chmod 0771 /persist
281    chmod 0664 /sys/devices/platform/msm_sdcc.1/polling
282    chmod 0664 /sys/devices/platform/msm_sdcc.2/polling
283    chmod 0664 /sys/devices/platform/msm_sdcc.3/polling
284    chmod 0664 /sys/devices/platform/msm_sdcc.4/polling
285
286    # Chown polling nodes as needed from UI running on system server
287    chown system system /sys/devices/platform/msm_sdcc.1/polling
288    chown system system /sys/devices/platform/msm_sdcc.2/polling
289    chown system system /sys/devices/platform/msm_sdcc.3/polling
290    chown system system /sys/devices/platform/msm_sdcc.4/polling
291
292    #Create the symlink to qcn wpa_supplicant folder for ar6000 wpa_supplicant
293    mkdir /data/system 0775 system system
294    #symlink /data/misc/wifi/wpa_supplicant /data/system/wpa_supplicant
295
296    #Create directories for gpsone_daemon services
297    mkdir /data/misc/gpsone_d 0770 system gps
298
299    #Create directories for QuIPS
300    mkdir /data/misc/quipc 0770 gps system
301
302    #Create directories for Location services
303    mkdir /data/misc/location 0770 gps gps
304    mkdir /data/misc/location/mq 0770 gps gps
305    mkdir /data/misc/location/xtwifi 0770 gps gps
306
307    #Create directory from IMS services
308    mkdir /data/shared 0755
309    chown system system /data/shared
310
311    #Create directory for FOTA
312    mkdir /data/fota 0771
313    chown system system /data/fota
314
315    #Create directory for hostapd
316    mkdir /data/hostapd 0770 system wifi
317
318    # Create /data/time folder for time-services
319    mkdir /data/time/ 0700 system system
320
321    mkdir /data/audio/ 0770 media audio
322
323    setprop vold.post_fs_data_done 1
324
325    # NFC local data and nfcee xml storage
326    mkdir /data/nfc 0770 nfc nfc
327    mkdir /data/nfc/param 0770 nfc nfc
328
329    # Audio DSP permissions
330    mkdir /data/adspd 0770 media media
331    mkdir /data/adspd/1 0770 media media
332
333on property:bluetooth.isEnabled=true
334    start btwlancoex
335    write /sys/class/bluetooth/hci0/idle_timeout 7000
336
337on property:ro.bluetooth.ftm_enabled=true
338    start ftmd
339
340on property:persist.env.fastdorm.enabled=true
341    setprop persist.radio.data_no_toggle 1
342
343service irsc_util /system/bin/irsc_util "/etc/sec_config"
344    class main
345    user root
346    oneshot
347
348service mdm_helper /system/bin/mdm_helper
349    user root
350    group root system wakelock radio
351    class core
352    onrestart setprop ro.service.mdm_helper_restarted "true"
353
354service tcmd /system/bin/tcmd_mini
355    class core
356    user radio
357    group radio net_raw net_admin
358    disabled
359
360service bridgemgrd /system/bin/bridgemgrd
361    class late_start
362    user radio
363    group radio
364
365# QMUX must be in multiple groups to support external process connections
366service qmuxd /system/bin/qmuxd
367    class main
368    user radio
369    group radio audio bluetooth wakelock gps
370
371service netmgrd /system/bin/netmgrd
372    class main
373    group radio
374
375service imsqmidaemon /system/bin/imsqmidaemon
376    class main
377    user system
378    socket ims_qmid stream 0660 system radio
379    group radio log
380
381service imsdatadaemon /system/bin/imsdatadaemon
382    class main
383    user root
384    socket ims_datad stream 0660 system radio
385    group system wifi radio inet log readproc
386    disabled
387
388on property:sys.ims.QMI_DAEMON_STATUS=1
389    start imsdatadaemon
390
391service ims_rtp_daemon /system/bin/ims_rtp_daemon
392    class main
393    user root
394    socket ims_rtpd stream 0660 system radio
395    group system radio inet log
396    disabled
397
398on property:sys.ims.DATA_DAEMON_STATUS=1
399   start ims_rtp_daemon
400
401service sensors /system/bin/sensors.qcom
402    class core
403    user root
404    group root wakelock
405    writepid /dev/cpuset/system-background/tasks
406
407on property:ro.use_data_netmgrd=false
408    # netmgr not supported on specific target
409    stop netmgrd
410
411# Adjust socket buffer to enlarge TCP receive window for high bandwidth
412# but only if ro.data.large_tcp_window_size property is set.
413on property:ro.data.large_tcp_window_size=true
414    write /proc/sys/net/ipv4/tcp_adv_win_scale  2
415
416service p2p_supplicant /system/bin/wpa_supplicant \
417    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
418    -I/system/etc/wifi/p2p_supplicant_overlay.conf  \
419    -puse_p2p_group_interface=1p2p_device=1 \
420    -m/data/misc/wifi/p2p_supplicant.conf \
421    -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
422#   we will start as root and wpa_supplicant will switch to user wifi
423#   after setting up the capabilities required for WEXT
424#   user wifi
425#   group wifi inet keystore
426    class main
427    socket wpa_wlan0 dgram 660 wifi wifi
428    disabled
429    oneshot
430
431service wpa_supplicant /system/bin/wpa_supplicant \
432    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
433    -I/system/etc/wifi/wpa_supplicant_overlay.conf \
434    -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
435    #   we will start as root and wpa_supplicant will switch to user wifi
436    #   after setting up the capabilities required for WEXT
437    #   user wifi
438    #   group wifi inet keystore
439    class main
440    socket wpa_wlan0 dgram 660 wifi wifi
441    disabled
442    oneshot
443
444service adspd /system/bin/adspd /dev/ttyHS3
445   class main
446   socket adspdsock stream 0660 media media
447   user media
448   group media input
449
450on property:sys.boot_completed=1
451    start qcom-post-boot
452
453on property:ro.debuggable=1
454    start ss_ramdump
455
456on property:ro.data.large_tcp_window_size=true
457    # Adjust socket buffer to enlarge TCP receive window for high bandwidth (e.g. DO-RevB)
458    write /proc/sys/net/ipv4/tcp_adv_win_scale  2
459
460on charger
461    write /sys/class/leds/lcd-backlight/brightness 100
462    mount ext4 /dev/block/platform/msm_sdcc.1/by-name/system /system ro barrier=1
463    start thermal-engine
464
465service charger /charger
466    class charger
467    group log
468    seclabel u:r:healthd:s0
469
470# Allow usb charging to be disabled peristently
471on property:persist.usb.chgdisabled=1
472    write /sys/class/power_supply/battery/charging_enabled 0
473
474on property:persist.usb.chgdisabled=0
475    write /sys/class/power_supply/battery/charging_enabled 1
476
477service qseecomd /system/bin/qseecomd
478   class core
479   user root
480   group root
481
482service mpdecision /system/bin/mpdecision --avg_comp
483   class main
484   user root
485   group root readproc
486   writepid /dev/cpuset/system-background/tasks
487
488service ss_ramdump /system/bin/subsystem_ramdump
489    class main
490    user root
491    group root
492    disabled
493
494service thermal-engine /system/bin/thermal-engine
495   class main
496   user root
497   group root
498
499service time_daemon /system/bin/time_daemon
500   class late_start
501   user root
502   group root
503
504on property:init.svc.bootanim=stopped
505    start usf-post-boot
506
507service qcamerasvr /system/bin/mm-qcamera-daemon
508    class late_start
509    user camera
510    group camera system inet input graphics
511
512service bdAddrLoader /system/bin/bdAddrLoader -p ro.boot.btmacaddr -s -x
513    class main
514    user bluetooth
515    group system bluetooth
516    oneshot
517
518on property:vold.decrypt=trigger_reset_main
519    stop gnss-svcd
520
521on verity-logging
522    exec u:r:slideshow:s0 -- /sbin/slideshow warning/verity_red_1 warning/verity_red_2
523
524# When QCA1530 is known not to present
525on property:persist.qca1530=no
526   stop gnss-svcd
527   stop gnss-detect
528   write /sys/kernel/qca1530/chip_state 0
529
530on property:init.svc.surfaceflinger=stopped
531    stop ppd
532
533service mmi-touch-sh /system/bin/init.mmi.touch.sh atmel
534    class main
535    user root
536    oneshot
537
538# bugreport is triggered by holding down volume down, volume up and power
539service bugreport /system/bin/dumpstate -d -p -B -z \
540        -o /data/user_de/0/com.android.shell/files/bugreports/bugreport
541    class main
542    disabled
543    oneshot
544    keycodes 114 115 116
545
546service mdm_helper_proxy /system/bin/mdm_helper_proxy
547    class core
548    user system
549    group system wakelock
550    disabled
551
552# Stop mdm_helper_proxy in case of shutdown
553on property:sys.shutdown.requested=*
554    stop mdm_helper_proxy
555
556# Start mdm_helper_proxy after RIL.
557on property:ro.mdm_helper_proxy_req=true
558    start mdm_helper_proxy
559
560on property:init.svc.ril-daemon=running
561    setprop ro.mdm_helper_proxy_req true
562
563service atfwd /system/bin/ATFWD-daemon
564    class late_start
565    user system
566    group system radio
567
568service cnd /system/bin/cnd
569    class late_start
570    socket cnd stream 660 root inet
571