Add Fastboot/EDL reboot modes and SIM contact import/export

This commit is contained in:
Luxferre
2026-10-25 07:56:44 +02:00
parent a1e4f6ef8c
commit a117e74452
17 changed files with 864 additions and 37 deletions
+41 -1
View File
@@ -8,7 +8,7 @@ export PATH="/sbin:/usr/sbin:$PATH"
. sxmo_common.sh
usage() {
printf "usage: %s [reboot|poweroff|logout|togglewm]\n" "$(basename "$0")"
printf "usage: %s [reboot|fastboot|bootloader|edl|poweroff|logout|togglewm]\n" "$(basename "$0")"
}
run_polkit_login1() {
@@ -89,9 +89,29 @@ run_priv_power() {
return 1
}
set_kernel_reboot_mode() {
rmode="$1"
param_path="/sys/module/leds_msm8905_torch/parameters/next_reboot_mode"
if [ -e "$param_path" ]; then
printf "%s\n" "$rmode" | /usr/bin/doas tee "$param_path" >/dev/null 2>&1 || \
printf "%s\n" "$rmode" > "$param_path" 2>/dev/null || true
fi
}
force_reboot_cmd() {
rmode="$1"
/usr/bin/doas python3 -c "
import ctypes, os
os.sync()
libc = ctypes.CDLL(None)
libc.syscall(88, 0xfee1dead, 672274793, 0xa1b2c3d4, b'$rmode')
" >/dev/null 2>&1 || /usr/bin/doas /sbin/reboot -f >/dev/null 2>&1 || true
}
case "$1" in
reboot)
sync
set_kernel_reboot_mode ""
sxmo_hook_power.sh reboot || true
(sleep 4; [ -u /usr/bin/doas ] && /usr/bin/doas /sbin/reboot -f >/dev/null 2>&1 || [ -u /usr/bin/sudo ] && /usr/bin/sudo -n /sbin/reboot -f >/dev/null 2>&1) &
if ! run_priv_power reboot; then
@@ -102,6 +122,26 @@ case "$1" in
fi
sxmo_jobs.sh stop all >/dev/null 2>&1 || true
;;
fastboot|bootloader)
sync
set_kernel_reboot_mode "bootloader"
sxmo_hook_power.sh reboot || true
(sleep 4; force_reboot_cmd "bootloader") &
if ! run_priv_power reboot; then
force_reboot_cmd "bootloader"
fi
sxmo_jobs.sh stop all >/dev/null 2>&1 || true
;;
edl)
sync
set_kernel_reboot_mode "edl"
sxmo_hook_power.sh reboot || true
(sleep 4; force_reboot_cmd "edl") &
if ! run_priv_power reboot; then
force_reboot_cmd "edl"
fi
sxmo_jobs.sh stop all >/dev/null 2>&1 || true
;;
poweroff)
sync
sxmo_hook_power.sh poweroff || true