When a USB modem device is unplugged, we had to do two different things: first, cleanup the sysfs cache; and second, set interface as unavailable. Those two things were never being done properly due to several different issues: * The parent sysfs path retrieval logic relies on checking for which sysfs path has the vid/pid files. This logic obviously only works when the device is available, and cannot be used on e.g. removal events. * The command to cleanup the modem wait status from the sysfs cache was not removing the previous state properly, because the sysfs path variable wasn't escaped properly for the sed command. This patch handles those issues in order to have a proper device removal handling, by making sure the sysfs path is properly escaped in the sed command, and by introducing a new hotplug script that runs when the full USB device is removed. Signed-off-by: Aleksander Morgado <aleksander@aleksander.es>
13 lines
420 B
Bash
13 lines
420 B
Bash
#!/bin/sh
|
|
# Copyright (C) 2019 Aleksander Morgado <aleksander@aleksander.es>
|
|
|
|
# We need to process only full USB device removal events, we don't
|
|
# want to process specific interface removal events.
|
|
[ "$ACTION" = remove ] || exit
|
|
[ -z "${INTERFACE}" ] || exit
|
|
|
|
# Load common utilities
|
|
. /etc/modemmanager/modemmanager.common
|
|
|
|
mm_clear_modem_wait_status "/sys${DEVPATH}"
|
|
mm_cleanup_interface_by_sysfspath "/sys${DEVPATH}"
|