Для работы с таким модемом в Puppy-420-ru я написал следующее правило для udev:
ACTION=="add", ATTRS{modalias}=="usb:v19D2p2000*", RUN+="/usr/bin/eject %k"
ACTION=="add", ATTRS{modalias}=="usb:v19D2p0031*", RUN+="/sbin/modprobe usbserial vendor=0x19d2 product=0x0031"
ACTION=="add", ATTRS{modalias}=="usb:v19D2p0016*", RUN+="/sbin/modprobe usbserial vendor=0x19d2 product=0x0016"
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v19D2p0016*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="02", ATTRS{bInterfaceProtocol}=="ff", SYMLINK="modem", RUN+="/bin/echo %b/%k > /root/udev"
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v19D2p0031*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="02", ATTRS{bInterfaceProtocol}=="ff", SYMLINK="modem"
Первая команда отключает эмулированный CDROM и модем становится виден именно как модем.
Вторая команда подключает модем к системе (ttyUSB0, ttyUSB1, ttyUSB2)
Третья команда на случай, если модем переведён в режим "только модем" AT-командой AT+ZCDRUN=E, тогда он определяется как product 0016.
Четвёртая и пятая команды создают ссылку /dev/ttyUSB2 на /dev/modem.
Самый удивительный вывод из всего этого, что usb_modeswitch оказывается не так и нужен