Попался в руки как то гордый китайский универсальный 3G модем Flyer U2.
При цене в 1.4 тыс. руб., сей девайс помимо всеядности в плане SIM-карт имеет на борту картридер под microSD, ZeroCD (ну а куда без него?) и работает с HSUPA/HSDPA/UMTS/EDGE/GPRS/GSM сетями. Заявлена поддержка WinXP/Vista/Win7 а так же Linux/Mac OS.
После вставки данного устройства в USB-порт моего ноутбука с Debian GNU/Linux на борту, это самое USB отвалилось вместе с модемом, и подниматься обратно без живительного ребута никак не соглашалось. Сразу подумалось, кому бы из знакомых линуксоидов подогреть сие чудо в качестве подарка :-) А все потому что udev назначал устройству неправильный режим. Некоторое время гугления показало что с данной проблемой столкнулись многие, только у них сей девайс либо не узнавался как модем, либо не узнавался вообще никак.
Из обрывков информации получилось следующее кривое решение (которое не всем нужно, ибо на борту модема есть пакет с аналогом usb-modeswitch и скрипт лечения этой железки).
И так, ставим usb-modeswitch и правим правила для udev:
В /lib/udev/rules.d/40-usb_modeswitch.rules комментируем строчку с правилом для устройства 1c9e:f000
Файл /etc/usb_modeswitch.d/1c9e:f000 приводим к следующему виду:
Ну и соответственно /etc/udev/scripts/mount-flyer-u2
И так, ставим usb-modeswitch и правим правила для udev:
В /lib/udev/rules.d/40-usb_modeswitch.rules комментируем строчку с правилом для устройства 1c9e:f000
#ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="f000", RUN+="usb_modeswitch '%b/%k'"
Файл /etc/usb_modeswitch.d/1c9e:f000 приводим к следующему виду:
DefaultVendor=0x1c9e DefaultProduct=0xf000 TargetVendor=0x1c9e TargetProduct="9605" WaitBefore=5 CheckSuccess=20 MessageContent="55534243123456788000000080000606f50402527000000000000000000000"В /etc/udev/rules.d/ создаем файл 45-flyer-u2.rules с следующим содержимым:
ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="f000", RUN+="/etc/udev/scripts/mount-flyer-u2"
Ну и соответственно /etc/udev/scripts/mount-flyer-u2
#!/bin/sh usb_modeswitch -c /etc/usb_modeswitch.d/1c9e:f000 rmmod -f -s usbserial modprobe usbserial vendor=0x1c9e product=0x9605Даем ему права на исполнение и ребутаем udev.После таких манипуляций железка узнается как модем и картридер и не ломает usb.