Как я побеждал модем в Ubuntu

Опубликовано

Вот они все прелести юзерфрендли линукса. Имеется Ubuntu Netbook Remix 9.10 и CDMA USB-модем AnyDATA ADU-500a. Скажу честно такого количества геммороя я не поимел, когда заводил его под FreeBSD, потому что там никаких юзерфрендли предусмотрено не было. И так, чтобы завести модем под Karmic нужно

методично поотламывать все умные автоопределялки и тому подобные вещи.

  1. udev умеет переключать модемы из режима флэшки в режим модема, но имеющийся девайс в число поддерживаемых переключалкой не входит. Сносим /lib/udev/modem-switch;
  2. про options usb-storage option_zero_cd=2, много где написано, добавляем куда-нибудь в /etc/modprobe.d/anydata.conf;
  3. ставим стороннюю переключалку - usb_modeswitch, версия 1.0.7 работает и присутствует в репозитории;
  4. сменные носители по умолчанию автоматически монтируются, это приводит к зависанию модема на хрен. Для этого я в /etc/hal/fdi/policy/preferences.fdi написал
    <merge key="volume.ignore" type="bool">false</merge>
    плюс вынес на всякий случай /lib/udev/rules.d/75-cd-aliases-generator.rules и /etc/udev/rules.d/70-persistent-cd.rules, оптических приводов на нетбуке все равно нет;
  5. networkmanager умеет видеть модемы и соединяться через них, но почему-то считает, что любой CDMA-модем должен поддерживать AT+CMEE. Данный девайс такой команды не знает, поэтому сносим на хрен пакет modemmanager;
  6. Все необходимое снесли :)

Теперь пишем свое правило для udev, дабы модем сам переключался, как -то так:

SUBSYSTEM=="usb", SYSFS{idVendor}=="05c6", SYSFS{idProduct}=="1000", RUN+="/root/bin/cdma.sh"

Ну а в /root/bin/cdma.sh пишем что-то такое

#!/bin/sh/bin/sleep 3/usr/sbin/usb_modeswitch --default-vendor 0x05c6 --default-product 0x1000 --message-content 5553424312345678000000000000061b000000020000000000\000000000000

По желанию можно и подъем соединения здесь же сделать, я не стал.Ну и собственно, само соединение осталось настроить

/etc/ppp/chap-secrets# Secrets for authentication using CHAP# client server secret IP addressesmobile wellstar internet/etc/ppp/peers/wellstar/dev/ttyUSB0 230400 crtscts modemnoccp novjconnect "/usr/sbin/chat -e -v -f /etc/chatscripts/pap -T '#777'"noauth user mobile remotename wellstarusepeerdns defaultroutedebug updetach/etc/ppp/chatscripts/papABORT BUSYABORT VOICEABORT "NO CARRIER"ABORT "NO DIALTONE"ABORT "NO DIAL TONE""" ATZOK ATDTTCONNECT ""

Все, теперь pon wellstar пустит нас в сеть.Для сравнения под FreeBSD 8.0 это все делается выполнением одной (!) команды и правкой одного (!) конфига, никаких дополнительных установок. Ну и кто больше юзерфрендли?