From 5bc59fe2164bfad855f3cd432ab919baf1f3aec5 Mon Sep 17 00:00:00 2001 From: suyuan <175338101@qq.com> Date: Thu, 22 Jun 2023 22:58:54 +0800 Subject: [PATCH] update modemmanager --- modemmanager/Config.in | 0 modemmanager/Makefile | 10 ++-- modemmanager/README.md | 0 modemmanager/files/25-modemmanager-net | 0 modemmanager/files/25-modemmanager-tty | 0 modemmanager/files/25-modemmanager-usb | 0 modemmanager/files/25-modemmanager-wwan | 0 modemmanager/files/modemmanager.common | 51 +++++++++++-------- modemmanager/files/modemmanager.init | 4 ++ modemmanager/files/modemmanager.proto | 5 -- .../files/usr/sbin/ModemManager-wrapper | 0 11 files changed, 39 insertions(+), 31 deletions(-) mode change 100755 => 100644 modemmanager/Config.in mode change 100755 => 100644 modemmanager/Makefile mode change 100755 => 100644 modemmanager/README.md mode change 100755 => 100644 modemmanager/files/25-modemmanager-net mode change 100755 => 100644 modemmanager/files/25-modemmanager-tty mode change 100755 => 100644 modemmanager/files/25-modemmanager-usb mode change 100755 => 100644 modemmanager/files/25-modemmanager-wwan mode change 100755 => 100644 modemmanager/files/modemmanager.common mode change 100755 => 100644 modemmanager/files/usr/sbin/ModemManager-wrapper diff --git a/modemmanager/Config.in b/modemmanager/Config.in old mode 100755 new mode 100644 diff --git a/modemmanager/Makefile b/modemmanager/Makefile old mode 100755 new mode 100644 index 30e17b657..3c021b44d --- a/modemmanager/Makefile +++ b/modemmanager/Makefile @@ -8,25 +8,25 @@ include $(TOPDIR)/rules.mk PKG_NAME:=modemmanager -PKG_SOURCE_VERSION:=1.20.4 -PKG_RELEASE:=1 +PKG_SOURCE_VERSION:=1.20.6 +PKG_RELEASE:=3 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://gitlab.freedesktop.org/mobile-broadband/ModemManager.git -#PKG_MIRROR_HASH:=f138effc693456c5040ec22e17c0a8b41143c3b17b62437462995c297a9150dc +PKG_MIRROR_HASH:=e90103e2e42bb826bbbac83937a9a69f50348cd6ce0d8da655a12b65494ce7c9 PKG_MAINTAINER:=Nicholas Smith PKG_LICENSE:=GPL-2.0-or-later PKG_LICENSE_FILES:=COPYING PKG_BUILD_DEPENDS:=glib2/host libxslt/host +PKG_BUILD_FLAGS:=gc-sections include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/nls.mk include $(INCLUDE_DIR)/meson.mk -TARGET_CFLAGS += -ffunction-sections -fdata-sections -fno-merge-all-constants -fmerge-constants -TARGET_LDFLAGS += -Wl,--gc-sections +TARGET_CFLAGS += -fno-merge-all-constants -fmerge-constants define Package/modemmanager/config source "$(SOURCE)/Config.in" diff --git a/modemmanager/README.md b/modemmanager/README.md old mode 100755 new mode 100644 diff --git a/modemmanager/files/25-modemmanager-net b/modemmanager/files/25-modemmanager-net old mode 100755 new mode 100644 diff --git a/modemmanager/files/25-modemmanager-tty b/modemmanager/files/25-modemmanager-tty old mode 100755 new mode 100644 diff --git a/modemmanager/files/25-modemmanager-usb b/modemmanager/files/25-modemmanager-usb old mode 100755 new mode 100644 diff --git a/modemmanager/files/25-modemmanager-wwan b/modemmanager/files/25-modemmanager-wwan old mode 100755 new mode 100644 diff --git a/modemmanager/files/modemmanager.common b/modemmanager/files/modemmanager.common old mode 100755 new mode 100644 index a439179de..a931717fd --- a/modemmanager/files/modemmanager.common +++ b/modemmanager/files/modemmanager.common @@ -20,7 +20,8 @@ MODEMMANAGER_EVENTS_CACHE="${MODEMMANAGER_RUNDIR}/events.cache" # Common logging mm_log() { - [ "$(uci -q get openmptcprouter.settings.debug)" = "true" ] && logger -t "ModemManager" "hotplug: $*" + local level="$1"; shift + logger -p "daemon.${level}" -t "ModemManager[$$]" "hotplug: $*" } ################################################################################ @@ -39,14 +40,14 @@ mm_find_physdev_sysfs_path() { # avoid infinite loops iterating [ -z "${tmp_path}" ] || [ "${tmp_path}" = "/" ] && return - # for USB devices, the physical device will be that with a idVendor - # and idProduct pair of files + # For USB devices, the physical device will be that with a idVendor + # and idProduct pair of files [ -f "${tmp_path}"/idVendor ] && [ -f "${tmp_path}"/idProduct ] && { tmp_path=$(readlink -f "$tmp_path") echo "${tmp_path}" return } - + # For PCI devices, the physical device will be that with a vendor # and device pair of files [ -f "${tmp_path}"/vendor ] && [ -f "${tmp_path}"/device ] && { @@ -169,7 +170,7 @@ mm_wait_for_modem() { while [ $n -ge 0 ]; do [ -d "${sysfspath}" ] || { - mm_log "error: ignoring modem detection request: no device at ${sysfspath}" + mm_log "error" "ignoring modem detection request: no device at ${sysfspath}" proto_set_available "${cfg}" 0 return 1 } @@ -177,10 +178,10 @@ mm_wait_for_modem() { # Check if the modem exists at the given sysfs path if ! mmcli -m "${sysfspath}" > /dev/null 2>&1 then - mm_log "error: modem not detected at sysfs path" + mm_log "error" "modem not detected at sysfs path" else - mm_log "modem exported successfully at ${sysfspath}" - mm_log "setting interface '${cfg}' as available" + mm_log "info" "modem exported successfully at ${sysfspath}" + mm_log "info" "setting interface '${cfg}' as available" proto_set_available "${cfg}" 1 return 0 fi @@ -189,7 +190,7 @@ mm_wait_for_modem() { n=$((n-step)) done - mm_log "error: timed out waiting for the modem to get exported at ${sysfspath}" + mm_log "error" "timed out waiting for the modem to get exported at ${sysfspath}" proto_set_available "${cfg}" 0 return 2 } @@ -201,7 +202,7 @@ mm_report_modem_wait() { parent_sysfspath=$(mm_find_physdev_sysfs_path "$sysfspath") [ -n "${parent_sysfspath}" ] || { - mm_log "error: parent device sysfspath not found" + mm_log "error" "parent device sysfspath not found" return } @@ -212,23 +213,23 @@ mm_report_modem_wait() { cfg=$(mm_get_modem_config "${parent_sysfspath}") if [ -n "${cfg}" ]; then - mm_log "interface '${cfg}' is set to configure device '${parent_sysfspath}'" - mm_log "now waiting for modem at sysfs path ${parent_sysfspath}" + mm_log "info" "interface '${cfg}' is set to configure device '${parent_sysfspath}'" + mm_log "info" "now waiting for modem at sysfs path ${parent_sysfspath}" mm_set_modem_wait_status "${parent_sysfspath}" "processed" # Launch subshell for the explicit wait ( mm_wait_for_modem "${cfg}" "${parent_sysfspath}" ) > /dev/null 2>&1 & else - mm_log "no need to wait for modem at sysfs path ${parent_sysfspath}" + mm_log "info" "no need to wait for modem at sysfs path ${parent_sysfspath}" mm_set_modem_wait_status "${parent_sysfspath}" "ignored" fi ;; "processed") - mm_log "already waiting for modem at sysfs path ${parent_sysfspath}" + mm_log "info" "already waiting for modem at sysfs path ${parent_sysfspath}" ;; "ignored") ;; *) - mm_log "error: unknown status read for device at sysfs path ${parent_sysfspath}" + mm_log "error" "unknown status read for device at sysfs path ${parent_sysfspath}" ;; esac } @@ -258,7 +259,7 @@ mm_cleanup_interface_by_sysfspath() { cfg=$(mm_get_modem_config "$dev") [ -n "${cfg}" ] || return - mm_log "setting interface '$cfg' as unavailable" + mm_log "info" "setting interface '$cfg' as unavailable" proto_set_available "${cfg}" 0 } @@ -272,6 +273,14 @@ mm_report_event() { local subsystem="$3" local sysfspath="$4" + # Do not save virtual devices + local virtual + virtual="$(echo "$sysfspath" | cut -d'/' -f4)" + [ "$virtual" = "virtual" ] && { + mm_log "debug" "sysfspath is a virtual device ($sysfspath)" + return + } + # Track/untrack events in cache case "${action}" in "add") @@ -286,7 +295,7 @@ mm_report_event() { esac # Report the event - mm_log "event reported: action=${action}, name=${name}, subsystem=${subsystem}" + mm_log "debug" "event reported: action=${action}, name=${name}, subsystem=${subsystem}" mmcli --report-kernel-event="action=${action},name=${name},subsystem=${subsystem}" 1>/dev/null 2>&1 & # Wait for added modem if a sysfspath is given @@ -302,7 +311,7 @@ mm_report_event_from_cache_line() { subsystem=$(echo "${event_line}" | awk -F ',' '{ print $3 }') sysfspath=$(echo "${event_line}" | awk -F ',' '{ print $4 }') - mm_log "cached event found: action=${action}, name=${name}, subsystem=${subsystem}, sysfspath=${sysfspath}" + mm_log "debug" "cached event found: action=${action}, name=${name}, subsystem=${subsystem}, sysfspath=${sysfspath}" mm_report_event "${action}" "${name}" "${subsystem}" "${sysfspath}" } @@ -317,11 +326,11 @@ mm_report_events_from_cache() { # Wait for ModemManager to be available in the bus while [ $n -ge 0 ]; do sleep $step - mm_log "checking if ModemManager is available..." + mm_log "info" "checking if ModemManager is available..." if ! mmcli -L >/dev/null 2>&1 then - mm_log "ModemManager not yet available" + mm_log "info" "ModemManager not yet available" else mmrunning=1 break @@ -330,7 +339,7 @@ mm_report_events_from_cache() { done [ ${mmrunning} -eq 1 ] || { - mm_log "error: couldn't report initial kernel events: ModemManager not running" + mm_log "error" "couldn't report initial kernel events: ModemManager not running" return } diff --git a/modemmanager/files/modemmanager.init b/modemmanager/files/modemmanager.init index a3f6c1b12..7f014dc56 100755 --- a/modemmanager/files/modemmanager.init +++ b/modemmanager/files/modemmanager.init @@ -4,6 +4,8 @@ USE_PROCD=1 START=70 +LOG_LEVEL="INFO" + stop_service() { # Load common utils . /usr/share/ModemManager/modemmanager.common @@ -28,6 +30,8 @@ start_service() { . /usr/share/ModemManager/modemmanager.common procd_open_instance procd_set_param command /usr/sbin/ModemManager-wrapper + procd_append_param command --log-level="$LOG_LEVEL" + [ "$LOG_LEVEL" = "DEBUG" ] && procd_append_param command --debug procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}" procd_set_param pidfile "${MODEMMANAGER_PID_FILE}" procd_close_instance diff --git a/modemmanager/files/modemmanager.proto b/modemmanager/files/modemmanager.proto index e6ec9e203..2a61f5178 100755 --- a/modemmanager/files/modemmanager.proto +++ b/modemmanager/files/modemmanager.proto @@ -368,11 +368,6 @@ proto_modemmanager_setup() { proto_set_available "${interface}" 0 return 1 } - [ -e "${device}" ] || { - echo "Device not found in sysfs" - proto_set_available "${interface}" 0 - return 1 - } # validate that ModemManager is handling the modem at the sysfs path modemstatus=$(mmcli --modem="${device}" --output-keyvalue) diff --git a/modemmanager/files/usr/sbin/ModemManager-wrapper b/modemmanager/files/usr/sbin/ModemManager-wrapper old mode 100755 new mode 100644