[Droid X Android Development] oldmacnut:
mapphone_cdma

on init

# prepare generic keypad name
exec /init_prep_keypad.sh
# Change pppd-ril permissions to setuid-root.
chown root radio /system/bin/pppd-ril
chmod 4770 /system/bin/pppd-ril
mount yaffs2 mtd@system /system ro remount
mount ext3 mmc@system /system ro remount

mount rootfs rootfs / rw remount

mkdir /cdrom 0770 system system
mount yaffs2 mtd@cdrom /cdrom

symlink /dev/ttyGS0 /dev/acm0

# Create mountpoints and mount tmpfs
mkdir /pds 0775 system system
mkdir /tmp 0777 system system
mount tmpfs tmpfs /tmp size=2m

# Configure kernel options
# Disable automatic power control for OHCI USB IPC Temporarily
write /sys/devices/platform/ohci.0/usb1/1-3/power/level auto

# Reset system time
write /sys/class/rtc/rtc0/unsecured_rtc on

# Set core pattern
write /proc/sys/kernel/core_pattern "|/system/bin/coredump %e %p %t"

# Power Management
write /sys/power/sleep_while_idle 1
write /sys/power/enable_off_mode 1
write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor ondemand
write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 250000
write /sys/devices/system/cpu/cpu0/cpufreq/ondemand/up_threshold 86
write /sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate 46875
write /sys/power/sr_vdd1_autocomp 1
write /sys/power/sr_vdd2_autocomp 1
write /sys/power/enable_abb_mode 1

# permission for linear vibrator
chown system system /sys/class/timed_output/lvibrator/enable
chown system system /sys/class/timed_output/vibrator/enable
chmod 660 /sys/class/timed_output/vibrator/enable

# Mount mtd partitions
# mount /pds as r/w
# We chown/chmod /pds again so because mount is run as root + defaults
mount yaffs2 mtd@pds /pds nosuid nodev no-checkpoint
exec /system/bin/logwrapper /system/bin/mount_ext3.sh pds /pds nosuid,nodev
chown system system /pds
chmod 0775 /pds
mkdir /pds/public
chown system shell /pds/public
chmod 0775 /pds/public

# Mount preinstall partition
mkdir /preinstall 0770 system system
exec /system/bin/logwrapper /system/bin/mount_ext3.sh preinstall /preinstall nosuid,nodev
chmod 0770 /preinstall
chown system system /preinstall
mkdir /preinstall/app 0770 system system
exec /system/bin/logwrapper /system/bin/loadpreinstalls.sh

# Create basic filesystem structure
# create moto specific dirs for mystuff
mkdir /data/download 0775 system system
mkdir /data/download/mystuff 0775 system system
chown radio radio /dev/ttyUSB0
chmod 666 /dev/ttyUSB0

# create moto specific dirs for wifi
mkdir /data/system 0771 system system
# wifi dirs
mkdir /data/misc/wifi 0770 wifi wifi
mkdir /data/misc/wifi/sockets 0770 wifi wifi
mkdir /data/misc/dhcp 0770 dhcp dhcp
chown dhcp dhcp /data/misc/dhcp
mkdir /pds/wifi 0771 wifi wifi
chmod 777 /system/lib/modules/tiwlan_drv.ko
chmod 777 /system/bin/dhcpcd
chmod 777 /system/bin/wlan_loader
chmod 777 /system/etc/wifi/fw_wlan1271.bin
chmod 777 /system/etc/wifi/tiwlan.ini
chmod 777 /config/wifi/nvs_map.bin
chmod 777 /system/bin/logwrapper
chmod 777 /system/bin/wpa_supplicant
chmod 777 /system/etc/wifi/wpa_supplicant.conf

# bluetooth power up/down interface
chown bluetooth bluetooth /sys/class/rfkill/rfkill0/type
chown bluetooth bluetooth /sys/class/rfkill/rfkill0/state
chmod 0660 /sys/class/rfkill/rfkill0/state

# create logger folder
mkdir /data/logger 0770 radio log
chown radio log /data/logger
chmod 0770 /data/logger
mkdir /data/panicreports
chown root radio /data/panicreports
chmod 0777 /data/panicreports

# create the lost+found directories, so as to enforce our permissions
mkdir /pds/lost+found 0770

# double check the perms, in case lost+found already exists, and set owner
chown root root /pds/lost+found
chmod 0770 /pds/lost+found

#Create location directory
mkdir /data/location 0771 radio radio

# Create anr directory and change permission to 777 to save trace.txt
mkdir /data/anr
chmod 0777 /data/anr

# create the necessary dirs for tpapi with proper permission
mkdir /pds/security
mkdir /data/tpapi
mkdir /data/tpapi/etc
mkdir /data/tpapi/etc/tpa
mkdir /data/tpapi/etc/tpa/persistent
chmod 2770 /pds/security
chmod 2770 /data/tpapi
chmod 2770 /data/tpapi/etc
chmod 2770 /data/tpapi/etc/tpa
chmod 2770 /data/tpapi/etc/tpa/persistent
chown mot_tpapi mot_tpapi /pds/security
chown mot_tpapi mot_tpapi /data/tpapi
chown mot_tpapi mot_tpapi /data/tpapi/etc
chown mot_tpapi mot_tpapi /data/tpapi/etc/tpa
chown mot_tpapi mot_tpapi /data/tpapi/etc/tpa/persistent

# Create wmdrm directory
mkdir /pds/wmdrm 0775 mot_drm mot_drm

# Temp workaround for HP library cleanup
symlink /dev/hp3a-omap /dev/hp3A-omap

# Permissions for DspBridge
chmod 0666 /dev/DspBridge

# Permissions for video
chmod 0770 /dev/hp3a-omap
chmod 0770 /dev/video0
chmod 0770 /dev/video1
chmod 0770 /dev/video2
chown media camera /dev/hp3a-omap
chown media camera /dev/video0
chown media graphics /dev/video1
chown media graphics /dev/video2

mount rootfs rootfs / ro remount

# Install kernel modules

insmod /system/lib/modules/sec.ko

# chown/chmod for FOTA
chown system system /cache/fota
chmod 0770 /cache/fota

on early-boot

# Adjust the out of memory thresholds to account for the larget
# space on sholes. These numbers are in pages (4k). Must be kept
# in sync with init.rc. This must be done before the regular init.rc
# since these properies can't change once set.
setprop ro.FOREGROUND_APP_MEM 3072
setprop ro.VISIBLE_APP_MEM 4608
setprop ro.SECONDARY_SERVER_MEM 9216
setprop ro.BACKUP_APP_MEM 9216
setprop ro.HOME_APP_MEM 9216
setprop ro.HIDDEN_APP_MEM 10752
setprop ro.CONTENT_PROVIDER_MEM 12288
setprop ro.EMPTY_APP_MEM 12288

class_start media_early_init

on boot

# Overwrite what init.rc selected for the memory killer params to match above.
write /sys/module/lowmemorykiller/parameters/minfree 3072,4608,9216,10752,12288,12288

# Define Motorola DBVC ATVC Property defaults (failsafe properties)
setprop ro.sys.atvc_allow_netmon_usb 0
setprop ro.sys.atvc_allow_netmon_ih 0
setprop ro.sys.atvc_allow_res_core 0
setprop ro.sys.atvc_allow_res_panic 0
setprop ro.sys.atvc_allow_all_adb 0
setprop ro.sys.atvc_allow_all_core 0
setprop ro.sys.atvc_allow_efem 0
setprop ro.sys.atvc_allow_bp_log 0
setprop ro.sys.atvc_allow_ap_mot_log 0

# Change the ownership of led files.
chown system system /sys/class/leds/lcd-backlight/als
chown system system /sys/class/leds/lcd-backlight/pwm_mode
chown system system /sys/class/leds/lcd-backlight/brightness
chmod 0660 /sys/class/leds/lcd-backlight/brightness
chown system system /sys/class/leds/keyboard-backlight/brightness
chmod 0660 /sys/class/leds/keyboard-backlight/brightness
chown system system /sys/class/leds/button-backlight/brightness
chmod 0660 /sys/class/leds/button-backlight/brightness
chown system system /sys/class/leds/red/blink
chown system system /sys/class/leds/red/brightness
chmod 0660 /sys/class/leds/red/brightness
chown system system /sys/class/leds/green/brightness
chmod 0660 /sys/class/leds/green/brightness
chmod 0660 /sys/class/leds/torch-flash/camera_strobe
chmod 0660 /sys/class/leds/torch-flash/flash_light
chown system system /sys/class/leds/torch-flash/camera_strobe
chown system system /sys/class/leds/torch-flash/flash_light
chown system system /sys/class/leds/spotlight/brightness
chmod 0660 /sys/class/leds/blue/brightness

# Camera related
chmod 0660 /dev/hplens-omap
chown media camera /dev/hplens-omap

# Enable panic on softlockup
write /proc/sys/kernel/softlockup_panic 1

# Start services
exec /system/bin/mot_boot_mode

# Set core max size (2G)
setrlimit 4 2147483648 2147483648

# The properties introduced by moto

on property:sys.chargeonly.mode=1
start battd
start console
exec /system/bin/charge_only_mode

# Power up to normal
on property:tcmd.suspend=0
class_start pre-zygote_services
class_start zygote_services
class_start post-zygote_services

# Power up to suspend
on property:tcmd.suspend=1
class_start pre-zygote_services
class_start post-zygote_services

# Normal to suspend
on property:tcmd.suspend=2
class_stop zygote_services

# aplogd on at boot in emulator
#on property:ro.kernel.qemu=1
# start aplogd

#on property:persist.service.aplogd.enable=1
# start aplogd

#on property:persist.service.aplogd.enable=0
# stop aplogd

# Moto safe power down
on property:sys.reboot=1
exec /system/bin/sleep 10
exec /system/bin/reboot

on property:sys.shutdown=1
exec /system/bin/sleep 10
exec /system/bin/reboot -p

on property:init.svc.wpa_supplicant=stopped
stop dhcpcd

# The following services are added by moto

# Set property strings for ATVC logging
# This conditionally sets :
# ro.sys.atvc_allow_bp_log
# ro.sys.atvc_allow_ap_mot_log
# ro.sys.atvc_allow_all_core
# ro.sys.atvc_allow_res_core
# ro.sys.atvc_allow_res_panic
# ro.sys.atvc_allow_efem
# ro.sys.atvc_allow_netmon_usb
# ro.sys.atvc_allow_netmon_ih
# ro.sys.atvc_allow_all_adb
service atvc /system/bin/dbvc_atvc_property_set
class pre-zygote_services
user system
group system
oneshot

#service watchdogd /system/bin/watchdogd
# class pre-zygote_services

service telnet /system/bin/telnetd
class pre-zygote_services
oneshot

service usbd /system/bin/usbd
class pre-zygote_services

service battd /system/bin/battd
class pre-zygote_services
socket battdsock stream 0660 mot_accy mot_accy
user root
group mot_accy mot_pwric
oneshot

service catcommands /system/bin/catcommands
class pre-zygote_services
group radio

service hciattach /system/bin/hciattach \
-n -t 10 /dev/ttyS1 texasalt 3000000 flow
class post-zygote_services
user bluetooth
group bluetooth net_bt_admin
disabled

service nap /system/bin/sdptool add NAP
class post-zygote_services
user bluetooth
group bluetooth net_bt_admin
disabled
oneshot

service del_nap /system/bin/sdptool remove NAP
class post-zygote_services
user bluetooth
group bluetooth net_bt_admin
disabled
oneshot

service panu /system/bin/sdptool add PANU
class post-zygote_services
user bluetooth
group bluetooth net_bt_admin
disabled
oneshot

service del_panu /system/bin/sdptool remove PANU
class post-zygote_services
user bluetooth
group bluetooth net_bt_admin
disabled
oneshot

service napics /system/bin/sh /system/bin/napics.sh
class post-zygote_services
user root
disabled
oneshot

service btdhcpd /system/xbin/dnsmasq -C /etc/btpan.conf
class post-zygote_services
user root
disabled
oneshot

service tcmd /system/bin/tcmd
class post-zygote_services
group mot_tcmd radio mot_pwric input system log camera graphics mot_accy sdcard_rw audio inet bluetooth wifi compass net_bt_admin mot_tombstone mot_tpapi mount
socket local_tcmd stream 0660 mot_tcmd mot_tcmd
socket batch_socket stream 0600 mot_tcmd mot_tcmd
oneshot

service tcmdhelp /system/bin/tcmdhelp
class post-zygote_services
oneshot
disabled

# turn on wifi for tcmd step one
on property:tcmd.load_wlan=1
insmod /system/lib/modules/tiwlan_drv.ko

# turn on wifi for tcmd step two
on property:tcmd.load_wlan=2
start wlan_loader

# turn on wifi for tcmd step three
on property:tcmd.load_wlan=3
exec /system/bin/ifconfig tiwlan0 up

# turn off wifi for tcmd step one
on property:tcmd.unload_wlan=1
exec /system/bin/ifconfig tiwlan0 down

# turn off wifi for tcmd step two
on property:tcmd.unload_wlan=2
exec /system/bin/rmmod tiwlan_drv

# turn on bluetooth for tcmd
on property:tcmd.bt_mod=1
insmod /system/lib/modules/wl127x-test.ko

#turn off bluetooth for tcmd
on property:tcmd.bt_mod=0
exec /system/bin/rmmod wl127x_test

#execute tcmdhelp
on property:tcmd.start_tcmdhelp=1
start tcmdhelp

# Ecompass daemon
service akmd2 /system/bin/akmd2
class post-zygote_services
user compass
group compass misc input

service wlan_loader /system/bin/wlan_loader \
-f /system/etc/wifi/fw_wlan1271.bin -i /system/etc/wifi/tiwlan.ini \
-e /pds/wifi/nvs_map.bin
class post-zygote_services
disabled
oneshot

service wpa_supplicant /system/bin/wpa_supplicant \
-Dtiwlan0 -itiwlan0 -c/data/misc/wifi/wpa_supplicant.conf
class post-zygote_services
# we will start as root and wpa_supplicant will switch to user wifi
# after setting up the capabilities required for WEXT
# user wifi
# group wifi inet keystore
socket wpa_tiwlan0 dgram 660 wifi wifi
disabled
oneshot

service dhcpcd /system/bin/dhcpcd -ABKL tiwlan0
class post-zygote_services
disabled
oneshot

service autoip /system/bin/dhcpcd -BK tiwlan0
class post-zygote_services
disabled
oneshot

service btdhcpcd /system/bin/dhcpcd -ABKL bnep0
class post-zygote_services
disabled
oneshot

service btautoip /system/bin/dhcpcd -BK bnep0
class post-zygote_services
disabled
oneshot

service baseimage /system/bin/dspexec -v -T /system/lib/dsp/baseimage.dof
class media_early_init
user media
group media graphics
oneshot

service pvrsrv /system/bin/pvrsrvinit
class post-zygote_services
user root
oneshot

service pppd-ril /system/bin/pppd-ril /dev/ttyUSB0 call pppd-ril.options plugin /system/lib/libpppd_plugin-ril.so
class post-zygote_services
user root
disabled
oneshot

service pppd /system/xbin/pppd silent ipparam dun plugin /system/lib/libpppd_plugin.so
class post-zygote_services
user root
disabled
oneshot

service ulogd /system/xbin/ulogd
class post-zygote_services
user root
disabled
oneshot

service firewall /system/bin/firewall.sh
class post-zygote_services
user root
disabled
oneshot

service locDrv /system/usr/bin/brcm_guci_drv -config /system/etc/gpsconfig.xml
class post-zygote_services
user radio
group radio inet sdcard_rw
oneshot

service setup_bt /system/bin/sh /system/usr/bin/setup_bt.sh
class post-zygote_services
oneshot

service opp /system/bin/sdptool add --channel=12 OPUSH
class post-zygote_services
user bluetooth
group bluetooth net_bt_admin
disabled
oneshot

service pm_init /system/bin/sh /system/usr/bin/pm_init.sh
class post-zygote_services
oneshot

service modemlog /system/bin/modemlog
class pre-zygote_services
oneshot

# aplogd is controlled by the persist.service.aplogd.enable system property
#service aplogd /system/bin/aplogd
# class post-zygote_services
# socket ap_aol_cmd stream 666 system system
# user log
# group log system sdcard_rw
# oneshot

service fmradio /system/bin/fmradioserver
class post-zygote_services
disabled
group bluetooth

service ftmipcd /system/bin/ftmipcd
class post-zygote_services
oneshot

service dlnasrv /system/bin/dlnasrv
class post-zygote_services
disabled
oneshot

service dund_dialup /system/bin/dund --listen --channel=6 --nodetach --dialup
class post-zygote_services
disabled
oneshot

# bugreport is triggered by the KEY_SHIFT and KEY_DEL keycodes
service bugreport_keypad /system/bin/dumpstate -d -v -o /sdcard/bugreports/bugreport
disabled
oneshot
keycodes 42 14

# bugreport for Shadow is triggered by the KEY_SHIFT and KEY_MENU keycodes
service bugreport /system/bin/dumpstate -d -v -o /sdcard/bugreports/bugreport
disabled
oneshot
keycodes 139 217

service mdm_panicd /system/bin/mdm_panicd
class post-zygote_services
oneshot

service logging /system/bin/sh /logging.sh
disabled
user root
oneshot

on property:EXTERNAL_STORAGE_STATE="mounted"
mkdir /sdcard/logs 0777 root root
start logging

on property:EXTERNAL_STORAGE_STATE="bad_removal"
stop logging
#get BP version and save to misc
service savebpver /system/bin/SaveBPVer
class post-zygote_services
oneshot

on property:dev.bootcomplete=1
start savebpver

service smcdaemon /system/bin/startup_smc.sh
class post-zygote_services
disabled
oneshot

# Backup/Restore Feature
on property:mot.backup_restore.status="Finished"
start zygote

service mot_backup /system/bin/logwrapper /system/xbin/run_backup /system/etc/backup_targets.csv
disabled
user root
oneshot

service mot_restore /system/bin/logwrapper /system/xbin/run_restore /system/etc/backup_targets.csv
disabled
user root
oneshot

# ecckeyd daemon has dependency on SMC
# It needs to be root because it needs to be able to read client's /proc/<pid>/status.
# user/group as mot_tpapi/mot_tpapi does not give it enough permission
service ecckeydaemon /system/bin/ecckeyd
class post-zygote_services
socket ecckey_socket stream 660 mot_tpapi mot_tpapi
group mot_tpapi
disabled
oneshot

on property:mot.backup_restore.action="run_backup"
setprop mot.backup_restore.status "Running"
stop zygote
start mot_backup

on property:mot.backup_restore.action="run_restore"
setprop mot.backup_restore.status "Running"
stop zygote
start mot_restore

on property:ro.service.start.smc=1
start smcdaemon
start ecckeydaemon

service secclkd /system/bin/secclkd
class post-zygote_services
socket secclk_socket stream 660 mot_secclkd mot_secclkd
user mot_tpapi
group mot_tpapi mot_sec_rtc mot_secclkd
oneshot