}
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