From 13fce479b33eb093905483ffaa1c1f32ec9c73ca Mon Sep 17 00:00:00 2001 From: Jongmin Kim Date: Tue, 4 Mar 2025 13:59:15 +0900 Subject: [PATCH 1/3] fcc-unlock: combine Quectel FCC unlock scripts for 1eac and 2c7c Both scripts control MBIM ports and can be merged into a single script. Signed-off-by: Jongmin Kim --- data/dispatcher-fcc-unlock/1eac | 34 -------------------------- data/dispatcher-fcc-unlock/2c7c | 21 +++++++++++----- data/dispatcher-fcc-unlock/meson.build | 3 +-- 3 files changed, 16 insertions(+), 42 deletions(-) delete mode 100644 data/dispatcher-fcc-unlock/1eac diff --git a/data/dispatcher-fcc-unlock/1eac b/data/dispatcher-fcc-unlock/1eac deleted file mode 100644 index 44ce46d7..00000000 --- a/data/dispatcher-fcc-unlock/1eac +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh - -# SPDX-License-Identifier: CC0-1.0 -# 2021 Aleksander Morgado -# -# Quectel EM120 FCC unlock operation -# - -# require program name and at least 2 arguments -[ $# -lt 2 ] && exit 1 - -# first argument is DBus path, not needed here -shift - -# second and next arguments are control port names -for PORT in "$@"; do - # match port type in Linux 5.14 and newer - grep -q MBIM "/sys/class/wwan/$PORT/type" 2>/dev/null && { - MBIM_PORT=$PORT - break - } - # match port name in Linux 5.13 - echo "$PORT" | grep -q MBIM && { - MBIM_PORT=$PORT - break - } -done - -# fail if no MBIM port exposed -[ -n "$MBIM_PORT" ] || exit 2 - -# run mbimcli operation -mbimcli --device-open-proxy --device="/dev/$MBIM_PORT" --quectel-set-radio-state=on -exit $? diff --git a/data/dispatcher-fcc-unlock/2c7c b/data/dispatcher-fcc-unlock/2c7c index fa372927..a5e0bccc 100644 --- a/data/dispatcher-fcc-unlock/2c7c +++ b/data/dispatcher-fcc-unlock/2c7c @@ -1,9 +1,15 @@ #!/bin/sh # SPDX-License-Identifier: CC0-1.0 +# 2021 Aleksander Morgado # 2022 Leah Oswald +# 2025 Jongmin Kim # -# Queltec EM05-G FCC unlock mechanism +# Quectel MBIM FCC unlock mechanism +# EM05-G, 2c7c:030a +# EM05-G (GR), 2c7c:0313 +# EM05-G (RS), 2c7c:0314 +# EM120, 1eac:1001 # # require program name and at least 2 arguments @@ -14,16 +20,19 @@ shift # second and next arguments are control port names for PORT in "$@"; do - # match port name + # match port type in Linux 5.14 and newer + grep -q MBIM "/sys/class/wwan/$PORT/type" 2>/dev/null || + # match port name in Linux 5.13 + echo "$PORT" | grep -q MBIM || echo "$PORT" | grep -q cdc-wdm && { - CDC_WDM_PORT=$PORT + MBIM_PORT="$PORT" break } done -# fail if no cdc-wdm port exposed -[ -n "$CDC_WDM_PORT" ] || exit 2 +# fail if no MBIM port exposed +[ -n "$MBIM_PORT" ] || exit 2 # run mbimcli operation -mbimcli --device-open-proxy --device="/dev/$CDC_WDM_PORT" --quectel-set-radio-state=on +mbimcli --device-open-proxy --device="/dev/$MBIM_PORT" --quectel-set-radio-state=on exit $? diff --git a/data/dispatcher-fcc-unlock/meson.build b/data/dispatcher-fcc-unlock/meson.build index d2f0d118..fe497875 100644 --- a/data/dispatcher-fcc-unlock/meson.build +++ b/data/dispatcher-fcc-unlock/meson.build @@ -14,7 +14,6 @@ examples = files( '105b', '1199', '14c3', - '1eac', '2c7c', ) @@ -32,7 +31,7 @@ vidpids = { '413c:81a3': '1199', '413c:81a8': '1199', '14c3:4d75': '14c3', - '1eac:1001': '1eac', + '1eac:1001': '2c7c', '2c7c:030a': '2c7c', '2c7c:0313': '2c7c', '2c7c:0314': '2c7c', From fbeaffe2fd3b26d3e95b317e4af962e3da56efe6 Mon Sep 17 00:00:00 2001 From: Jongmin Kim Date: Tue, 4 Mar 2025 14:02:10 +0900 Subject: [PATCH 2/3] fcc-unlock: add FCC unlock specs for Quectel RM520N Add symlinks for new supported Quectel RM520N: - RM520N (standard) 2c7c:0801 - RM520N (HP shipped) 1eac:1004 - RM520N (Lenovo shipped) 1eac:1007 Signed-off-by: Jongmin Kim --- data/dispatcher-fcc-unlock/2c7c | 3 +++ data/dispatcher-fcc-unlock/meson.build | 3 +++ 2 files changed, 6 insertions(+) diff --git a/data/dispatcher-fcc-unlock/2c7c b/data/dispatcher-fcc-unlock/2c7c index a5e0bccc..fc1a3d33 100644 --- a/data/dispatcher-fcc-unlock/2c7c +++ b/data/dispatcher-fcc-unlock/2c7c @@ -9,7 +9,10 @@ # EM05-G, 2c7c:030a # EM05-G (GR), 2c7c:0313 # EM05-G (RS), 2c7c:0314 +# RM520N, 2c7c:0801 # EM120, 1eac:1001 +# RM520N (HP shipped), 1eac:1004 +# RM520N (Lenovo shipped), 1eac:1007 # # require program name and at least 2 arguments diff --git a/data/dispatcher-fcc-unlock/meson.build b/data/dispatcher-fcc-unlock/meson.build index fe497875..b834dd56 100644 --- a/data/dispatcher-fcc-unlock/meson.build +++ b/data/dispatcher-fcc-unlock/meson.build @@ -32,9 +32,12 @@ vidpids = { '413c:81a8': '1199', '14c3:4d75': '14c3', '1eac:1001': '2c7c', + '1eac:1004': '2c7c', + '1eac:1007': '2c7c', '2c7c:030a': '2c7c', '2c7c:0313': '2c7c', '2c7c:0314': '2c7c', + '2c7c:0801': '2c7c', } ln_cmd = 'ln -fs @0@ ${DESTDIR}@1@' From 3d1c16fe8134d987743ab1c58ba06f99ff99b8e8 Mon Sep 17 00:00:00 2001 From: Jongmin Kim Date: Sat, 8 Mar 2025 21:57:12 +0900 Subject: [PATCH 3/3] fcc-unlock: Case-insensitive grep for identifying MBIM port Signed-off-by: Jongmin Kim --- data/dispatcher-fcc-unlock/2c7c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/dispatcher-fcc-unlock/2c7c b/data/dispatcher-fcc-unlock/2c7c index fc1a3d33..d5542918 100644 --- a/data/dispatcher-fcc-unlock/2c7c +++ b/data/dispatcher-fcc-unlock/2c7c @@ -26,7 +26,7 @@ for PORT in "$@"; do # match port type in Linux 5.14 and newer grep -q MBIM "/sys/class/wwan/$PORT/type" 2>/dev/null || # match port name in Linux 5.13 - echo "$PORT" | grep -q MBIM || + echo "$PORT" | grep -qi MBIM || echo "$PORT" | grep -q cdc-wdm && { MBIM_PORT="$PORT" break