| #!/bin/sh |
| |
| # SPDX-License-Identifier: CC0-1.0 |
| # 2021 Aleksander Morgado <aleksander@aleksander.es> |
| # 2022 Leah Oswald <mail@leahoswald.de> |
| # 2025 Jongmin Kim <jmkim@debian.org> |
| # |
| # Quectel MBIM FCC unlock mechanism |
| # 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 |
| [ $# -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 || |
| # match port name in Linux 5.13 |
| echo "$PORT" | grep -qi MBIM || |
| echo "$PORT" | grep -q cdc-wdm && { |
| 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 $? |