Пакет autorun3Gmodem (http://yadi.sk/d/iRC1YZf51tc5N) содержит скрипт запуска модема /lib/udev/wvdial.sh (вариант не окончательный, нужна доработка), скрипт /usr/bin/balanceGUI (графическая оболочка для формирования USSD-запроса), бинарник /usr/bin/ussd (отправляет запрос и расшифровывает ответ) и правила udev для модемов /lib/udev/rules.d/10-Huawei-Datacard.rules, /lib/udev/rules.d/10-ZTE-Datacard.rules.
Для использования других модемов нужно написать соответствующие правила. Пример для ZTE MF100:
#ZTE MF100
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v19D2p0031*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="00", ATTRS{bInterfaceProtocol}=="ff", SYMLINK="ttyUSB_utps_diag"
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v19D2p0031*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="01", ATTRS{bInterfaceProtocol}=="ff", SYMLINK="ttyUSB_utps_pcui"
SUBSYSTEMS=="usb", ATTRS{modalias}=="usb:v19D2p0031*", KERNEL=="ttyUSB*", ATTRS{bInterfaceNumber}=="02", ATTRS{bInterfaceProtocol}=="ff", SYMLINK="ttyUSB_utps_modem", SYMLINK+="modem", RUN+="wvdial.sh"
Здесь ATTRS{modalias} содержит v19D2 и p0031 (vendor и product, можно посмотреть lsusb)
ATTRS{bInterfaceNumber} - номер интерфейса, например ttyUSB0
SYMLINK - для совместимости с MobilePartner и для определения управляющего порта в balanceGUI..
RUN+ добавляется к строке порта модема (для ZTE ttyUSB2)
Подробную информацию можне получить командой udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0)
Так же опрашиваются USB1, USB2 ....
Для других модемов поребуется так же доработать balanceGUI, добавить названия модемов, выводимые командой ATI.
modem-stats -c AT+COPS? /dev/ttyACM0
на CDMA-модеме выдаёт ошибку.
Скорее всего - это GSM-команда и на CDMA не работает. Вообще, какие-то команды работают, а какие-то - нет. Например, можно посмотреть уровень сигнала при помощи AT+CSQ.
Например, можно посмотреть уровень сигнала при помощи AT+CSQ.
Как обычно , делаем одно а получается другое. :D
Кто использует conky , добавьте в скрипт строку :
Уровень сигнала ${color1} ${exec (expr $(expr $(echo $(modem-stats -c AT+CSQ /dev/ttyUSB2) | grep -o '[0-9]*' | head -n 1) \* 2) \- 113)}$color Db
и получите уровень сигнала в децибелах.Вместо /dev/ttyUSB2 укажите свой порт управления.
Просьба дать вывод следующей команды: udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSBx) | grep '{bNumEndpoints}'
где x=0, 1, 2 и если есть 3.
Подскажите,как запустить этот PFS-файл в Puppy-Precise.
Пакет предназначен для Richy, для других Puppy надо перепаковывать в .pet
unsquashfs autorun3Gmodem.pfs
dir2pet squashfs-root
Поднимаю тему.
Вместо "бюрократических" *-Datacard.rules теперь 99-modem.rules в две строчки. Спасибо "магам" за идею.ACTION=="add", SUBSYSTEM=="tty", SUBSYSTEMS=="usb", KERNEL=="ttyUSB?|ttyACM?", RUN+="check3Gmodem %k"
ACTION=="remove", SUBSYSTEM=="tty", SUBSYSTEMS=="usb", KERNEL=="ttyUSB?|ttyACM?", RUN+="/bin/rm /dev/modem", RUN+="/bin/rm /dev/ttyUSB_utps_pcui"
Для создания ссылок скрипт /lib/udev/check3Gmodem #!/bin/sh
[ $1 ] || exit 1
[ -f /tmp/mdev ] && rm /tmp/mdev
/usr/sbin/modem-stats -c AT /dev/$1 && echo $1 >> /tmp/mdev #записываем какие порты откликнулись
/bin/grep $1 /tmp/mdev || exit 1
if [ $(/usr/bin/wc -l /tmp/mdev) = 1 ]; then #если порт один, например телефон в качестве модема.
ln -s $1 /dev/modem && exec /lib/udev/wvdial.sh
else #определяем управляющий порт и порт модема и создаём соответствующие ссылки
[ "$(/bin/grep -m 1 [BR] /dev/$1)" != "" ] && ln -s $1 /dev/ttyUSB_utps_pcui && ln -s $(/bin/grep -v $1 /tmp/mdev) /dev/modem && kill $(pidof grep) && exec /lib/udev/wvdial.sh
fi
Скрипт /lib/udev/wvdial.sh без изменений #!/bin/sh
export DISPLAY=:0
[ $(/bin/pidof wvdial) ] && exit
[ -f /etc/ppp/peers/wvdial -a -f /etc/ppp/peers/wvdial-pipe ] || /bin/ln -s /etc/ppp/wvdial* /etc/ppp/peers/
/bin/sleep 12 #время для работы usb_modeswitch
/usr/bin/wvdial 2>/tmp/wvdial.log &
/bin/sleep 12 #время для соединения
[ $(/bin/pidof wvdial) ] && exit
/usr/bin/leafpad /tmp/wvdial.log #при отсутствии соединения выводится лог
Исправил ошибку в check3Gmodem
if [ $(/usr/bin/wc -l < /tmp/mdev) = 1 ]; then
Проверил в PRA. Автоподключается, но есть тонкости:
Соединение устанавливается через USB0, но в это же время идет check3Gmodem на USB1
Потом процесс на USB1 убивает worker (посмотреть journalctl -f)
Соединение на USB0 рвется и медленно восстанавливается
Поэтому переделал запуск wvdial в /Startup
После ждущего режима (http://forum.puppyrus.org/index.php/topic,14543.0.html) USB правильно переопределяется и соединение восстанавливается
Но в процессе kworker что-то убивает и по итогу оставляет кучу своих процессов (смотреть ps ax)
Модуль под PRA в аттаче. В /etc/wvdial.conf надо вбить свой номер пароль и логин