From 21dfb187be29dcb29bb1ce913606e0dcfb1d22ee Mon Sep 17 00:00:00 2001 From: Luxferre Date: Sun, 25 Oct 2026 18:33:19 +0200 Subject: [PATCH] Fix USSD D-Bus property extraction and session status parsing --- overlay/rootfs/usr/bin/sxmo_modemdial.sh | 2 +- overlay/rootfs/usr/lib/dwm/plugins/dialer.so | Bin 95620 -> 95620 bytes overlay/rootfs/usr/lib/dwm/plugins/modem.so | Bin 136628 -> 136628 bytes .../usr/libexec/msm-modem-uim-selection | 47 ++++++++++++++---- .../sxmo-x11/usr/lib/dwm/plugins/dialer.so | Bin 95620 -> 95620 bytes .../sxmo-x11/usr/lib/dwm/plugins/modem.so | Bin 136628 -> 136628 bytes src/dwm-plugins/phone_data.h | 2 +- 7 files changed, 38 insertions(+), 13 deletions(-) diff --git a/overlay/rootfs/usr/bin/sxmo_modemdial.sh b/overlay/rootfs/usr/bin/sxmo_modemdial.sh index 28bdb34..99d6b9f 100755 --- a/overlay/rootfs/usr/bin/sxmo_modemdial.sh +++ b/overlay/rootfs/usr/bin/sxmo_modemdial.sh @@ -21,7 +21,7 @@ dial_number() { return 1 fi - mm_state="$(mmcli -m any -K 2>/dev/null | awk -F': ' '$1 == "modem.generic.state" {print $2; exit}')" + mm_state="$(mmcli -m any -K 2>/dev/null | awk -F':[[:space:]]*' '{gsub(/[[:space:]]+$/, "", $1); if ($1 == "modem.generic.state") {print $2; exit}}')" if [ "$mm_state" = "disabled" ] || [ -z "$mm_state" ]; then mmcli -m any -e >/dev/null 2>&1 || true mmcli -m any --3gpp-register-home >/dev/null 2>&1 || true diff --git a/overlay/rootfs/usr/lib/dwm/plugins/dialer.so b/overlay/rootfs/usr/lib/dwm/plugins/dialer.so index bf15e44ab3e8ab17215cca54b0f89303fdbb19e7..495b58821daf4237c9f001b9eaee2844a6f0aa1d 100755 GIT binary patch delta 1753 zcmXYydr;I>6vyw`{VlqbeViOa&WJOrZhm4PwN=3?O#-k*vC z8kr_?ousmcY<;mi{kGN;%Vu!IiOgoKVT>B4Xr>v>w4jj4+xPP0kI#J1>z;eg-QC&R z8@AdTwgWDEWDT)l4nC1;bCnWv9jrK)uzTX2EnkhBw{w}8)UT~rKe)5ab=PoFe2F!V z(II!~BXq^6DP2B_8jUa4<&LMHjPZfl2^2IQuX}g&*s3I^!$+Tu zC7;p%L0u}P7&VtKB~p{IqUYQg&+2CwTL6wd%~(evW7TDhT?bR)Z+VKbu$8eEa1HE- zzY4g(^R=L4^Gp@n600!=e?{eM=boY%yK}G=rOq7;6Pv!2&S2kg?CfF0e8> zBaSv`G&j0u0{s$0E29-tsD2JHacemxk58Zfyx*U`EfCn49;jMZwJjhVnY1+O&ZH@} zDMOYs(q$D( za%eR*i0^XfL0T&)7m{JhXi<`jwmo8JE%s1?LKB_5<0&l`(37xRt2%Y8@JD*M=(}R=JTuv1XCEW)aP&F0r?W4pF8^ zT0@*SljI%!l6ON1H*{Jg58jddH)uF$)tS|dw?V_F9D2D1J)!BnP*vY%le`x7t{BN1 zp%G~Kq*dQIN}adqI=&LaaXWIz7f+L1`%Ci5B*~pn9!{3r3**{M)i_aaoF#cZ{Q5M> z8=wc~NPZgXn1>qZF^_q1W)A9GN$vt zYu3%(0Kb;U=n)thNWA(Sri1ovf(@-K$7N8*X2~x=Z@+*GPmb07mFi%uegWEp_*K8z zu=+*h!>xKBH2WXC%2vtCpsNCsS3&(%cnN67HnZMUgBRflWO6(=G;KE;oF=^z8cO&` zFWzHb)D2A@z$SI(!GgV#&xL;t8V-`4whw3Fm%WC~p?z;+=(`x85&1K*di7z{!=KzF z`BG@_QRJZB7CgUmQ1bTUm>B9jh0h)u38DC3Y!;Qg6B;>-O`+a4bAV>({X@9)Jf0m| z{RMK+0jT;;R9-|s_|8ih3hL;<#|b_1jhXMfj@W;Ai5_X;6rE8@p>ffk3aYo`7hMsc f={A2BF~4{{K&iIje=YH`GBfbMl@a|hfFIERj83qT delta 1809 zcmX|?4NTN!9LJyEz2Mymg^dvei9%(?rkU3AcWGHrpHL-C9BBa-bb zteHWl)b%wljUlgkZmE47T~Wt1XC%OSzWrlUoU@lP2UG%C)f*r9#?pwod*AC8DpBu! z(wly2W`k^(jvmq;# zRLxircNd|F8yMTO2=Qw1kdMr_DjB=ehAvd&u%3vi=HJ?ld`~%wK<`3cXalqjYJ)aM z&uhRsXg{RAYk~Yx+XMDNr=SB+2>K2>4GlwAqxJ}>`K~XF+z;V=tDJFm6Ng`*!6>yy zccQurYJsk3kd{yj)ZS~pcx>ij^ez@>3uJ zvS})ElGYTqD?Tcwbh;?c71ILp2y+P{kX6I);-H33@oNb^LoFiN4irUT6|3#2bYFaE zr|0Ob_`yyalXG?G-Dl8xw>;IbmDmnKCB|%`(Lv*N2A$aEpviPqoOGbQZgImwbErv7 zD8)ocqP3J#;==6z@fqru(vvhGz9^+1DJ*uEQC3<|KH~l(7Oh6yL}XuVaQ#*uu#9r5rA$#@PHPEI%IOSY>tOjJp;v<+3#PI8LbRm6D@N#1u)^1Gn6-a)LR>krA99y4|6 zl_XHR@7L_3v5H~!H^`>Y7YVQ7+;I8o`IEV&2vflSG_f?ZQ2?*?sIlJ|qBiz9`dC3t_Fl#m@h z3{YMcxp#p%u!|}rZvj&mN!|-~Ix*CU=R!V*rG&N|G#VH<;xh={77{dL{rbt5XYWV%fmDsmX{4dEnKqt7QS#lTXaiInn zdOPyou^t=YxNveL0rNH@K{qLG(3kMJ(zGd3=q_lzk4f4ifer6r3fM!Szl)T-&5~!r zc5T7rVC+ul0UFo^|1pc=-HrFKv-h9|7~Y5Bz`9PX-}X@QtB27sn0plK27^Aylm13i z0i40$X><+N^+p=#0aL?B_7!44@7MSU!T7Tgzxx~HgPnT;!-2LwOb`0MkN5|#puvBT zGb969HFV-}kyk@Wflxhp%v3Gvn`ykUx`0@O;` diff --git a/overlay/rootfs/usr/lib/dwm/plugins/modem.so b/overlay/rootfs/usr/lib/dwm/plugins/modem.so index f2b58f2b6dd99bdac0a7afc6cb73b550da27804d..0936afe7e5f4ddf92113192c02a95e5a4ee621e1 100755 GIT binary patch delta 1771 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/dev/null 2>&1 || true sleep 1 fi - modem_dbus_path="$(mmcli -m any -K 2>/dev/null | awk -F': ' '$1 == "modem.dbus-path" {print $2; exit}' || true)" + modem_dbus_path="$(mmcli -m any -K 2>/dev/null | awk -F':[[:space:]]*' '{gsub(/[[:space:]]+$/, "", $1); if ($1 == "modem.dbus-path") {print $2; exit}}' || true)" + [ -z "$modem_dbus_path" ] && modem_dbus_path="/org/freedesktop/ModemManager1/Modem/0" get_ussd_prop() { prop_name="$1" if [ -n "$modem_dbus_path" ] && command -v busctl >/dev/null 2>&1 && command -v jq >/dev/null 2>&1; then - busctl --json=short call org.freedesktop.ModemManager1 "$modem_dbus_path" \ - org.freedesktop.DBus.Properties Get ss \ + busctl -j get-property org.freedesktop.ModemManager1 "$modem_dbus_path" \ org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd "$prop_name" 2>/dev/null | \ - jq -r '.data[].data // empty' 2>/dev/null || true + jq -r '.data // empty' 2>/dev/null || true fi } + get_ussd_state() { + mmcli -m any --3gpp-ussd-status -K 2>/dev/null | \ + awk -F':[[:space:]]*' '{gsub(/[[:space:]]+$/, "", $1); if ($1 == "modem.3gpp.ussd.status" || $1 == "modem.3gpp.ussd.state") {print $2; exit}}' || true + } prev_notif="$(get_ussd_prop NetworkNotification)" prev_req="$(get_ussd_prop NetworkRequest)" - ussd_st="$(mmcli -m any -K 2>/dev/null | awk -F': ' '$1 == "modem.3gpp.ussd.status" || $1 == "modem.3gpp.ussd.state" {print $2; exit}' || true)" + ussd_st="$(get_ussd_state)" if [ "$ussd_mode" = "respond" ] && [ "$ussd_st" != "user-response" ]; then case "$ussd_code" in \**\#|\#*\#) @@ -1040,6 +1044,21 @@ case "$cmd" in ;; esac fi + ev_file="/tmp/ussd_dbus_$$.log" + rm -f "$ev_file" + if command -v dbus-monitor >/dev/null 2>&1; then + dbus-monitor --system "interface='org.freedesktop.DBus.Properties',member='PropertiesChanged',arg0='org.freedesktop.ModemManager1.Modem.Modem3gpp.Ussd'" >"$ev_file" 2>/dev/null & + ev_pid=$! + else + ev_pid="" + fi + cleanup_ev() { + if [ -n "${ev_pid:-}" ]; then + kill "$ev_pid" 2>/dev/null || true + wait "$ev_pid" 2>/dev/null || true + fi + rm -f "$ev_file" + } mm_rc=0 mm_out="" if [ "$ussd_mode" = "respond" ]; then @@ -1057,30 +1076,35 @@ case "$cmd" in -e "1s/^USSD response sent; new reply from network: '//" \ -e "\$s/'$//")" if [ -n "$reply" ]; then + cleanup_ev printf "%s\n" "$reply" exit 0 fi fi # Check if the USSD response arrived asynchronously via D-Bus properties w=0 - while [ "$w" -lt 25 ]; do + while [ "$w" -lt 15 ]; do cur_req="$(get_ussd_prop NetworkRequest)" cur_notif="$(get_ussd_prop NetworkNotification)" - if [ -n "$cur_req" ] && [ "$cur_req" != "$prev_req" ]; then + cur_st="$(get_ussd_state)" + if [ -n "$cur_req" ] && { [ "$cur_req" != "$prev_req" ] || [ "$cur_st" = "user-response" ] || grep -q "NetworkRequest" "$ev_file" 2>/dev/null; }; then + cleanup_ev printf "%s\n" "$cur_req" exit 0 fi - if [ -n "$cur_notif" ] && [ "$cur_notif" != "$prev_notif" ]; then + if [ -n "$cur_notif" ] && { [ "$cur_notif" != "$prev_notif" ] || grep -q "NetworkNotification" "$ev_file" 2>/dev/null || printf "%s" "$mm_out" | grep -q "USSD terminated by network"; }; then + cleanup_ev printf "%s\n" "$cur_notif" exit 0 fi - cur_st="$(mmcli -m any -K 2>/dev/null | awk -F': ' '$1 == "modem.3gpp.ussd.status" || $1 == "modem.3gpp.ussd.state" {print $2; exit}' || true)" - if [ "$cur_st" != "active" ] && [ "$w" -ge 8 ]; then + if [ "$cur_st" != "active" ] && [ "$w" -ge 3 ]; then if [ -n "$cur_req" ]; then + cleanup_ev printf "%s\n" "$cur_req" exit 0 fi if [ -n "$cur_notif" ]; then + cleanup_ev printf "%s\n" "$cur_notif" exit 0 fi @@ -1089,6 +1113,7 @@ case "$cmd" in sleep 0.2 w=$((w + 1)) done + cleanup_ev # Fallback to direct AT+CUSD on the active SIM AT port if [ "$PREFERRED_SIM_SLOT" = "2" ]; then at_candidates="/dev/wwan0at1 /dev/wwan0at0" diff --git a/prebuilt/sxmo-x11/usr/lib/dwm/plugins/dialer.so b/prebuilt/sxmo-x11/usr/lib/dwm/plugins/dialer.so index bf15e44ab3e8ab17215cca54b0f89303fdbb19e7..495b58821daf4237c9f001b9eaee2844a6f0aa1d 100755 GIT binary patch delta 1753 zcmXYydr;I>6vyw`{VlqbeViOa&WJOrZhm4PwN=3?O#-k*vC z8kr_?ousmcY<;mi{kGN;%Vu!IiOgoKVT>B4Xr>v>w4jj4+xPP0kI#J1>z;eg-QC&R z8@AdTwgWDEWDT)l4nC1;bCnWv9jrK)uzTX2EnkhBw{w}8)UT~rKe)5ab=PoFe2F!V z(II!~BXq^6DP2B_8jUa4<&LMHjPZfl2^2IQuX}g&*s3I^!$+Tu zC7;p%L0u}P7&VtKB~p{IqUYQg&+2CwTL6wd%~(evW7TDhT?bR)Z+VKbu$8eEa1HE- zzY4g(^R=L4^Gp@n600!=e?{eM=boY%yK}G=rOq7;6Pv!2&S2kg?CfF0e8> zBaSv`G&j0u0{s$0E29-tsD2JHacemxk58Zfyx*U`EfCn49;jMZwJjhVnY1+O&ZH@} zDMOYs(q$D( za%eR*i0^XfL0T&)7m{JhXi<`jwmo8JE%s1?LKB_5<0&l`(37xRt2%Y8@JD*M=(}R=JTuv1XCEW)aP&F0r?W4pF8^ zT0@*SljI%!l6ON1H*{Jg58jddH)uF$)tS|dw?V_F9D2D1J)!BnP*vY%le`x7t{BN1 zp%G~Kq*dQIN}adqI=&LaaXWIz7f+L1`%Ci5B*~pn9!{3r3**{M)i_aaoF#cZ{Q5M> z8=wc~NPZgXn1>qZF^_q1W)A9GN$vt zYu3%(0Kb;U=n)thNWA(Sri1ovf(@-K$7N8*X2~x=Z@+*GPmb07mFi%uegWEp_*K8z zu=+*h!>xKBH2WXC%2vtCpsNCsS3&(%cnN67HnZMUgBRflWO6(=G;KE;oF=^z8cO&` zFWzHb)D2A@z$SI(!GgV#&xL;t8V-`4whw3Fm%WC~p?z;+=(`x85&1K*di7z{!=KzF z`BG@_QRJZB7CgUmQ1bTUm>B9jh0h)u38DC3Y!;Qg6B;>-O`+a4bAV>({X@9)Jf0m| z{RMK+0jT;;R9-|s_|8ih3hL;<#|b_1jhXMfj@W;Ai5_X;6rE8@p>ffk3aYo`7hMsc f={A2BF~4{{K&iIje=YH`GBfbMl@a|hfFIERj83qT delta 1809 zcmX|?4NTN!9LJyEz2Mymg^dvei9%(?rkU3AcWGHrpHL-C9BBa-bb zteHWl)b%wljUlgkZmE47T~Wt1XC%OSzWrlUoU@lP2UG%C)f*r9#?pwod*AC8DpBu! z(wly2W`k^(jvmq;# zRLxircNd|F8yMTO2=Qw1kdMr_DjB=ehAvd&u%3vi=HJ?ld`~%wK<`3cXalqjYJ)aM z&uhRsXg{RAYk~Yx+XMDNr=SB+2>K2>4GlwAqxJ}>`K~XF+z;V=tDJFm6Ng`*!6>yy zccQurYJsk3kd{yj)ZS~pcx>ij^ez@>3uJ zvS})ElGYTqD?Tcwbh;?c71ILp2y+P{kX6I);-H33@oNb^LoFiN4irUT6|3#2bYFaE zr|0Ob_`yyalXG?G-Dl8xw>;IbmDmnKCB|%`(Lv*N2A$aEpviPqoOGbQZgImwbErv7 zD8)ocqP3J#;==6z@fqru(vvhGz9^+1DJ*uEQC3<|KH~l(7Oh6yL}XuVaQ#*uu#9r5rA$#@PHPEI%IOSY>tOjJp;v<+3#PI8LbRm6D@N#1u)^1Gn6-a)LR>krA99y4|6 zl_XHR@7L_3v5H~!H^`>Y7YVQ7+;I8o`IEV&2vflSG_f?ZQ2?*?sIlJ|qBiz9`dC3t_Fl#m@h z3{YMcxp#p%u!|}rZvj&mN!|-~Ix*CU=R!V*rG&N|G#VH<;xh={77{dL{rbt5XYWV%fmDsmX{4dEnKqt7QS#lTXaiInn zdOPyou^t=YxNveL0rNH@K{qLG(3kMJ(zGd3=q_lzk4f4ifer6r3fM!Szl)T-&5~!r zc5T7rVC+ul0UFo^|1pc=-HrFKv-h9|7~Y5Bz`9PX-}X@QtB27sn0plK27^Aylm13i z0i40$X><+N^+p=#0aL?B_7!44@7MSU!T7Tgzxx~HgPnT;!-2LwOb`0MkN5|#puvBT zGb969HFV-}kyk@Wflxhp%v3Gvn`ykUx`0@O;` diff --git a/prebuilt/sxmo-x11/usr/lib/dwm/plugins/modem.so b/prebuilt/sxmo-x11/usr/lib/dwm/plugins/modem.so index f2b58f2b6dd99bdac0a7afc6cb73b550da27804d..0936afe7e5f4ddf92113192c02a95e5a4ee621e1 100755 GIT binary patch delta 1771 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/dev/null | grep -E 'modem\\.3gpp\\.ussd\\.(status|state)'"); + "mmcli -m any --3gpp-ussd-status -K 2>/dev/null | grep -E 'modem\\.3gpp\\.ussd\\.(status|state)'"); if (stOut.find("user-response") != std::string::npos) { *outSessionActive = true; }