init commитььиьа

This commit is contained in:
huker committed 2026-10-07 00:46:54 +03:00
commit ede7d165a4
12 files changed
+541

No files matched your search

+132
View File
@@ -0,0 +1,132 @@
#!/system/bin/sh
ESIM_SVC="vendor.oplus.hardware.esim.IOplusEsim/default"
SUB_SVC="vendor.oplus.hardware.subsys_interface.subsys_radio.ISubsysRadio/slot1"
LOG=/data/adb/euicc_daemon.log
M1="i32 2 i32 1 i32 0 i32 0 i32 0 i32 1 i32 1 i32 0 i32 1 i32 1 i32 1"
M2="i32 2 i32 1 i32 0 i32 0 i32 0 i32 1 i32 1 i32 0 i32 1 i32 1 i32 2"
log() { echo "$(date '+%F %T') $*" >> "$LOG"; }
if [ -f "$LOG" ] && [ "$(wc -c < "$LOG" 2>/dev/null)" -gt 262144 ]; then
tail -c 65536 "$LOG" > "$LOG.tmp" && mv "$LOG.tmp" "$LOG"
fi
gpio_state() {
service call "$ESIM_SVC" 1 2>/dev/null | grep -oE '[0-9a-f]{8} [0-9a-f]{8}' | head -1 | awk '{print $2}'
}
gpio_on() {
service call "$ESIM_SVC" 5 i32 0 >/dev/null 2>&1
service call "$SUB_SVC" 289 i32 91 i32 1 >/dev/null 2>&1
service call "$ESIM_SVC" 3 i32 1 >/dev/null 2>&1
service call "$ESIM_SVC" 5 i32 1 >/dev/null 2>&1
}
esim_detected() {
dumpsys isub 2>/dev/null | grep -c 'simSlotIndex=1 portIndex=0 isEmbedded=1'
}
card_up() {
logcat -d -b radio 2>/dev/null | grep -cF "[1] recv card status:3"
}
echo $$ > /data/adb/esimd.pid
log "=== esimd started pid=$$ ==="
i=0
while [ $i -lt 600 ]; do
service check "$ESIM_SVC" 2>/dev/null | grep -q ': found' && break
sleep 0.5
i=$((i+1))
done
log "phaseA: esim HAL ready after ~$((i/2))s"
G=$(gpio_state)
if [ "$G" != "00000001" ]; then
j=0
while [ $j -lt 10 ]; do
gpio_on
sleep 1
G=$(gpio_state)
[ "$G" = "00000001" ] && break
j=$((j+1))
done
log "phaseA: gpio powered, state=$G tries=$((j+1))"
else
log "phaseA: gpio already ON"
fi
i=0
while [ $i -lt 300 ]; do
service check phone 2>/dev/null | grep -q ': found' && break
sleep 1
i=$((i+1))
done
log "phaseB: phone service after ~${i}s"
w=0
while [ $w -lt 60 ]; do
[ "$(esim_detected)" -ge 1 ] 2>/dev/null && break
sleep 3
w=$((w+3))
done
attempt=0
while [ $attempt -lt 6 ]; do
D=$(esim_detected)
if [ "${D:-0}" -ge 1 ] 2>/dev/null; then
log "phaseB: eSIM UP (attempt $attempt, detect=$D card=$(card_up))"
break
fi
attempt=$((attempt+1))
log "phaseB: attempt $attempt (detect=$D card=$(card_up))"
G=$(gpio_state)
if [ "$G" != "00000001" ]; then
gpio_on
sleep 1
fi
logcat -c -b radio 2>/dev/null
service call phone 175 $M1 >/dev/null 2>&1
sleep 2
setprop ctl.restart vendor.qcrild
setprop ctl.restart vendor.qcrild2
t=0
while [ $t -lt 40 ]; do
n=$(logcat -d -b radio 2>/dev/null | grep -c "Received GET_SIM_TYPE_INFO")
[ "${n:-0}" -ge 1 ] 2>/dev/null && break
sleep 1
t=$((t+1))
done
service call phone 175 $M2 >/dev/null 2>&1
p=0
while [ $p -lt 12 ]; do
sleep 3
p=$((p+1))
[ "$(card_up)" -ge 1 ] 2>/dev/null && break
done
done
log "phaseB: done, detect=$(esim_detected) card=$(card_up)"
fails=0
while true; do
sleep 30
if [ "$(esim_detected)" -ge 1 ] 2>/dev/null; then
fails=0
else
fails=$((fails+1))
log "monitor: eSIM not detected (fails=$fails)"
if [ $fails -ge 2 ]; then
log "monitor: reactivating"
gpio_on
sleep 1
service call phone 175 $M1 >/dev/null 2>&1
sleep 2
setprop ctl.restart vendor.qcrild
sleep 10
service call phone 175 $M2 >/dev/null 2>&1
fails=0
fi
fi
done