#!/usr/bin/bash
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								if  [  -z " $BASEDIR "  ] ;  then 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  BASEDIR = "/data/openpilot" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								fi 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								source  " $BASEDIR /launch_env.sh " 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								DIR = " $(  cd  " $(  dirname " ${ BASH_SOURCE [0] } "  ) "  >/dev/null &&  pwd  ) " 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  two_init { 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # Wifi scan 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  wpa_cli IFNAME = wlan0 SCAN
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # *** shield cores 2-3 *** 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # android gets two cores 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  echo  0-1 > /dev/cpuset/background/cpus
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  0-1 > /dev/cpuset/system-background/cpus
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  0-1 > /dev/cpuset/foreground/cpus
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  echo  0-1 > /dev/cpuset/foreground/boost/cpus
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  echo  0-1 > /dev/cpuset/android/cpus
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # openpilot gets all the cores 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  echo  0-3 > /dev/cpuset/app/cpus
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # mask off 2-3 from RPS and XPS - Receive/Transmit Packet Steering 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  3  |  tee  /sys/class/net/*/queues/*/rps_cpus
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  3  |  tee  /sys/class/net/*/queues/*/xps_cpus
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # *** set up governors *** 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # +50mW offroad, +500mW onroad for 30% more RAM bandwidth 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  "performance"  > /sys/class/devfreq/soc:qcom,cpubw/governor
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  1056000  > /sys/class/devfreq/soc:qcom,m4m/max_freq
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  "performance"  > /sys/class/devfreq/soc:qcom,m4m/governor
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # unclear if these help, but they don't seem to hurt 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  "performance"  > /sys/class/devfreq/soc:qcom,memlat-cpu0/governor
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  "performance"  > /sys/class/devfreq/soc:qcom,memlat-cpu2/governor
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # GPU 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  "performance"  > /sys/class/devfreq/b00000.qcom,kgsl-3d0/governor
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # /sys/class/devfreq/soc:qcom,mincpubw is the only one left at "powersave" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # it seems to gain nothing but a wasted 500mW 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # *** set up IRQ affinities *** 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # Collect RIL and other possibly long-running I/O interrupts onto CPU 1 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  1  > /proc/irq/78/smp_affinity_list # qcom,smd-modem (LTE radio) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  1  > /proc/irq/33/smp_affinity_list # ufshcd (flash storage) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  1  > /proc/irq/35/smp_affinity_list # wifi (wlan_pci) 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  echo  1  > /proc/irq/6/smp_affinity_list  # MDSS 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # USB traffic needs realtime handling on cpu 3 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  [  -d "/proc/irq/733"  ]  &&  echo  3  > /proc/irq/733/smp_affinity_list
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # GPU and camera get cpu 2 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  CAM_IRQS = "177 178 179 180 181 182 183 184 185 186 192" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  irq in $CAM_IRQS ;  do 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  2  > /proc/irq/$irq /smp_affinity_list
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  done 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  echo  2  > /proc/irq/193/smp_affinity_list # GPU 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # give GPU threads RT priority 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  for  pid in $( pgrep "kgsl" ) ;  do 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    chrt -f -p 52  $pid 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  done 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # the flippening! 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  LD_LIBRARY_PATH = ""  content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:1
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # disable bluetooth 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  service call bluetooth_manager 8 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Check for NEOS update 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  [  $( < /VERSION)  !=  " $REQUIRED_NEOS_VERSION "  ] ;  then 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  [  -f " $DIR /scripts/continue.sh "  ] ;  then 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      cp " $DIR /scripts/continue.sh "  "/data/data/com.termux/files/continue.sh" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  [  ! -f " $BASEDIR /prebuilt "  ] ;  then 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								      # Clean old build products, but preserve the scons cache 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      cd  $DIR 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      scons --clean
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      git clean -xdf
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      git submodule foreach --recursive git clean -xdf
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								    fi 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    " $DIR /installer/updater/updater "  " file:// $DIR /installer/updater/update.json " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								} 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  tici_init { 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  sudo su -c 'echo "performance" > /sys/class/devfreq/soc:qcom,memlat-cpu0/governor' 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  sudo su -c 'echo "performance" > /sys/class/devfreq/soc:qcom,memlat-cpu4/governor' 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # set success flag for current boot slot 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  sudo abctl --set_success
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Check if AGNOS update is required 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  [  $( < /VERSION)  !=  " $AGNOS_VERSION "  ] ;  then 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Get number of slot to switch to 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    CUR_SLOT = $( abctl --boot_slot) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  [ [  " $CUR_SLOT "  = =  "_a"  ] ] ;  then 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      OTHER_SLOT = "_b" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      OTHER_SLOT_NUMBER = "1" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      OTHER_SLOT = "_a" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      OTHER_SLOT_NUMBER = "0" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  " Cur slot  $CUR_SLOT , target  $OTHER_SLOT " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Get expected hashes from manifest 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								    MANIFEST = " $DIR /selfdrive/hardware/tici/agnos.json " 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								    SYSTEM_HASH_EXPECTED = $( jq -r ".[] | select(.name == \"system\") | .hash_raw"  $MANIFEST ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SYSTEM_SIZE = $( jq -r ".[] | select(.name == \"system\") | .size"  $MANIFEST ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    BOOT_HASH_EXPECTED = $( jq -r ".[] | select(.name == \"boot\") | .hash_raw"  $MANIFEST ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    BOOT_SIZE = $( jq -r ".[] | select(.name == \"boot\") | .size"  $MANIFEST ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  "Expected hashes:" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  " System:  $SYSTEM_HASH_EXPECTED " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  " Boot:  $BOOT_HASH_EXPECTED " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # Read hashes from alternate partitions, should already be flashed by updated 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    SYSTEM_HASH = $( dd if = " /dev/disk/by-partlabel/system $OTHER_SLOT "  bs = 1  skip = " $SYSTEM_SIZE "  count = 64  2>/dev/null) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    BOOT_HASH = $( dd if = " /dev/disk/by-partlabel/boot $OTHER_SLOT "  bs = 1  skip = " $BOOT_SIZE "  count = 64  2>/dev/null) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  "Found hashes:" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  " System:  $SYSTEM_HASH " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  " Boot:  $BOOT_HASH " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  [ [  " $SYSTEM_HASH "  = =  " $SYSTEM_HASH_EXPECTED "  &&  " $BOOT_HASH "  = =  " $BOOT_HASH_EXPECTED "  ] ] ;  then 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  " Swapping active slot to  $OTHER_SLOT_NUMBER " 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      # Clean hashes before swapping to prevent looping 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      dd if = /dev/zero of = " /dev/disk/by-partlabel/system $OTHER_SLOT "  bs = 1  seek = " $SYSTEM_SIZE "  count = 64 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      dd if = /dev/zero of = " /dev/disk/by-partlabel/boot $OTHER_SLOT "  bs = 1  seek = " $BOOT_SIZE "  count = 64 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      sync
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								      abctl --set_active " $OTHER_SLOT_NUMBER " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      sleep 1 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      sudo reboot
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  "Hash mismatch, downloading agnos" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  $DIR /selfdrive/hardware/tici/agnos.py $MANIFEST ;  then 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        echo  " Download done, swapping active slot to  $OTHER_SLOT_NUMBER " 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Clean hashes before swapping to prevent looping 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        dd if = /dev/zero of = " /dev/disk/by-partlabel/system $OTHER_SLOT "  bs = 1  seek = " $SYSTEM_SIZE "  count = 64 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        dd if = /dev/zero of = " /dev/disk/by-partlabel/boot $OTHER_SLOT "  bs = 1  seek = " $BOOT_SIZE "  count = 64 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        sync
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								        abctl --set_active " $OTHER_SLOT_NUMBER " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fi 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      sleep 1 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      sudo reboot
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  launch { 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # Remove orphaned git lock if it exists on boot 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [  -f " $DIR /.git/index.lock "  ]  &&  rm -f $DIR /.git/index.lock
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # Pull time from panda 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  $DIR /selfdrive/boardd/set_time.py
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # Check to see if there's a valid overlay-based update available. Conditions 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # are as follows: 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # 1. The BASEDIR init file has to exist, with a newer modtime than anything in 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  #    the BASEDIR Git repo. This checks for local development work or the user 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  #    switching branches/forks, which should not be overwritten. 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # 2. The FINALIZED consistent file has to exist, indicating there's an update 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  #    that completed successfully and synced to disk. 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  [  -f " ${ BASEDIR } /.overlay_init "  ] ;  then 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    find ${ BASEDIR } /.git -newer ${ BASEDIR } /.overlay_init |  grep -q '.'  2> /dev/null
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  [  $?  -eq 0  ] ;  then 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      echo  " ${ BASEDIR }  has been modified, skipping overlay update installation " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  [  -f " ${ STAGING_ROOT } /finalized/.overlay_consistent "  ] ;  then 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  [  ! -d /data/safe_staging/old_openpilot ] ;  then 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          echo  "Valid overlay update found, installing" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          LAUNCHER_LOCATION = " ${ BASH_SOURCE [0] } " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          mv $BASEDIR  /data/safe_staging/old_openpilot
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          mv " ${ STAGING_ROOT } /finalized "  $BASEDIR 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          cd  $BASEDIR 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          # Partial mitigation for symlink-related filesystem corruption 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          # Ensure all files match the repo versions after update 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          git reset --hard
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          git submodule foreach --recursive git reset --hard
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          echo  " Restarting launch script  ${ LAUNCHER_LOCATION } " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          unset  REQUIRED_NEOS_VERSION
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								          unset  AGNOS_VERSION
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								          exec  " ${ LAUNCHER_LOCATION } " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          echo  "openpilot backup found, not updating" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          # TODO: restore backup? This means the updater didn't start after swapping 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fi 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fi 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    fi 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # handle pythonpath 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ln -sfn $( pwd )  /data/pythonpath
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  export  PYTHONPATH = " $PWD " 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # hardware specific init 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  [  -f /EON ] ;  then 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    two_init
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  elif  [  -f /TICI ] ;  then 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								    tici_init
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  fi 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  # write tmux scrollback to a file 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  tmux capture-pane -pq -S-1000 > /tmp/launch_log
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # start manager 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  cd  selfdrive/manager
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ./build.py &&  ./manager.py
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # if broken, keep on screen error 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  while  true;  do  sleep 1;  done 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								launch