Друзья, тема конечно древняя, но все-же ее находят другие люди через поисковики, я поделюсь своим решением проблемы, так как искал его очень долго.

Мне нужно было подружить разные модемы с asus wl500gp2
Я давно пользуюсь прошивкой OpenWRT и мне она очень нравится.

С помощью usb_modeswich и usbserial я подключил свои модемы.
Но возникли 2 проблемы:
1. Проблема реконнекта - модем не закрывал порт и слал туда всякую фигню - помогает только рестарт или перевтык модема)
2. Скорость.

Первая проблема наконец решилась!
Итак, я написал скриптик, который следит за тем, чтобы был интернет.

в pppp конфиге я убрал любые повторы, реконнекты, типа maxfail 0, persist и т.п., поставил nodetach (обязательно)

Идея в том, чтобы выгружать usb-драйвер и заргружать его заново. Он сбрасывает модем и теперь у меня стабильный линк.

Скрипт примерно такой:

#/bin/sh
while(true); do
echo "Connecting"
pppd call operator
echo "Crap! Failed!"

rmmod usb-ohci
sleep 2
insmod usb-ohci
sleep 2
done

Все проще чем кажется. Если вы используете драйвера на usb2.0, то надо выгружать ehci-hcd.

А проблема скорости решается добавлением параметра maxSize в usbserial

insmod usbserial vendor=0x1111 product=0x2222 maxSize=2048

Надеюсь это кому-то пригодится.