diff --git a/net/modemmanager/Makefile b/net/modemmanager/Makefile index 0358758d1..eafbdea1e 100644 --- a/net/modemmanager/Makefile +++ b/net/modemmanager/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=modemmanager PKG_VERSION:=1.14.6 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE:=ModemManager-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=https://www.freedesktop.org/software/ModemManager diff --git a/net/modemmanager/files/modemmanager.init b/net/modemmanager/files/modemmanager.init index 4c9548654..b3f9f9290 100755 --- a/net/modemmanager/files/modemmanager.init +++ b/net/modemmanager/files/modemmanager.init @@ -12,21 +12,24 @@ stop_service() { } start_service() { - # Load common utils - . /usr/share/ModemManager/modemmanager.common - - # Always make sure the rundir exists - mkdir -m 0755 -p "${MODEMMANAGER_RUNDIR}" - - # Initially set all configured interfaces as unavailable - mm_cleanup_interfaces - - # Report cached events (will wait for MM to be launched) - ( mm_report_events_from_cache ) >/dev/null 2>&1 & - # Setup ModemManager service + # + # We will make sure that the rundir always exists, and we initially cleanup + # all interfaces flagging them as unavailable. + # + # The cached events processing will wait for MM to be available in DBus + # and will make sure all ports are re-notified to ModemManager every time + # it starts. + # + # All these commands need to be executed on every MM start, even after + # procd-triggered respawns, which is why they're all included as instance command + # procd_open_instance - procd_set_param command /usr/sbin/ModemManager + procd_set_param command sh -c ". /usr/share/ModemManager/modemmanager.common; \ + mkdir -m 0755 -p ${MODEMMANAGER_RUNDIR}; \ + mm_cleanup_interfaces; \ + ( mm_report_events_from_cache ) >/dev/null 2>&1 & \ + /usr/sbin/ModemManager" procd_set_param respawn "${respawn_threshold:-3600}" "${respawn_timeout:-5}" "${respawn_retry:-5}" procd_set_param pidfile "${MODEMMANAGER_PID_FILE}" procd_close_instance