You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is not an issue, merely a workaround for USB modems that like to change ports when disconnected / reconnected.
So whenever you disconnect / reconnect a USB modem, ports vary from /dev/ttyUSB0 to /dev/ttyUSB2. If while reconnecting, some program was trying to read /dev/ttyUSB2, then the modem will be connected as /dev/ttyUSB3, rendering your gammu setup unusable.
Here's a script I launch every 10 minutes as a cron task, that detects which port has a AT modem connected, and updates the corresponding gammu file.
The script needs picocom version >=3.0 as only dependency.
log_file="/var/log/modem_update.log"
gammu_config_file="/etc/gammutc"
modem=""
# Optional command when changed modem detected
#optional_cmd="systemctl restart gammu-smsd"
function log {
line="${1}"
echo "${line}" >> "${log_file}"
echo "${line}"
}
for tty in $(ls /dev/ttyUSB*); do
log "Checking $tty"
picocom -qrX -b 9600 $tty
sleep 1
result=$(echo "AT&F" | picocom -qrix 1000 $tty)
if [ "${result}" = "AT&F" ]; then
log "Found AT compatible modem at $tty"
modem="${tty}"
else
log "No AT compatible modem at $tty"
fi
done
curr_gammu_modem=$(cat "${gammu_config_file}" | grep "device = " | awk -F'=' '{gsub(/ /,""); print $2}')
if [ "${modem}" != "" ]; then
if [ "${modem}" != "${curr_gammu_modem}" ]; then
log "Updating modem from ${curr_gammu_modem} to ${modem}"
sed -i "s%${curr_gammu_modem}%${modem}%" "${gammu_config_file}"
if [ "${optional_cmd}" != "" ]; then
log "Running ${optional_cmd}"
${optional_cmd} >> "${log_file}"
if [ $? -ne 0 ]; then
log "Could not run cmd, exitcode: $?"
fi
fi
fi
fi
Disclaimer:
Bear in mind that this script is supposed to fix a "one modem only" usecase. If you have multiple modems, you'll have to add a bit of udevadm magic to know which /dev/ttyUSBx belong to which USB modem.
Don't bug me if your machine explodes while executing this script
@OsaAjani Would you mind accepting this as optional script in a PR ? I'm pretty sure this can handle loads of gammu failure related scenarios
The text was updated successfully, but these errors were encountered:
Hello,
This is not an issue, merely a workaround for USB modems that like to change ports when disconnected / reconnected.
So whenever you disconnect / reconnect a USB modem, ports vary from
/dev/ttyUSB0
to/dev/ttyUSB2
. If while reconnecting, some program was trying to read/dev/ttyUSB2
, then the modem will be connected as/dev/ttyUSB3
, rendering your gammu setup unusable.Here's a script I launch every 10 minutes as a cron task, that detects which port has a AT modem connected, and updates the corresponding gammu file.
The script needs picocom version >=3.0 as only dependency.
Disclaimer:
udevadm
magic to know which/dev/ttyUSBx
belong to which USB modem.@OsaAjani Would you mind accepting this as optional script in a PR ? I'm pretty sure this can handle loads of gammu failure related scenarios
The text was updated successfully, but these errors were encountered: