Сайт | Скачать | Видео | Wiki

Автор Тема: 3G-модем.  (Прочитано 38401 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: 3G-модем.
« Ответ #75 : 28 Октябрь 2016, 20:20:25 »
Нужен проверенный автором в ПРА модуль
Однако, проверяю..
Собрал "промежуточный" бинарник check3Gtty (в PRA /usr/lib/udev/check3Gtty).
Что делает:
- определяет на каком tty модем и записывает в /tmp/modem
- формирует команду на запуск tray3Gcsq (DISPLAY=:0 /usr/bin/tray3Gcsq &)
- ожидает запуск иксов (заложил время ожидания 16 секунд, если нет X) и запускает tray3Gcsq сформированной командой.
В Richy всё прекрасно работает, в PRA - "птичка не вылетает", хотя запись в /tmp/modem делает. Попутно выяснилось, что /tmp при перезагрузке не обнуляется. Может я не учёл какие-нибудь особенности Арча?
« Последнее редактирование: 28 Октябрь 2016, 20:22:05 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re: 3G-модем.
« Ответ #76 : 29 Октябрь 2016, 07:54:36 »
pra-middle
Код
# dmesg |grep modem
[   12.852468] usbserial: USB Serial support registered for GSM modem (1-port)
[   12.852585] option 2-3.1:1.0: GSM modem (1-port) converter detected
[   12.852706] usb 2-3.1: GSM modem (1-port) converter now attached to ttyUSB0
[   12.852736] option 2-3.1:1.1: GSM modem (1-port) converter detected
[   12.852832] usb 2-3.1: GSM modem (1-port) converter now attached to ttyUSB1
Все рабочее (проверял своей подключалкой)
Запускаю check3Gtty - /tmp/modem нет. Вывода ошибок нет. Т.к. бинарник - ничего не посмотреть. Нужен ли здесь си...
tray3Gcsq - надо тултип с % и возможность выхода не помешает
- ожидает запуск иксов (заложил время ожидания 16 секунд, если нет X) и запускает tray3Gcsq сформированной командой.
Может лучше:
Запускает подключение, проверяет пингом
ОК- проверяет Х :
  есть Х - запускает трей
  нет Х - прописывается в /home/live/.config/autostart
sleep - костыль на уровне идеи. Учесть скорость железа и т.п. можно только многократным запасом

/tmp при перезагрузке не обнуляется.
С changes= ? Вроде и не должен.. А зачем? Программы, которые туда пишут по идее сами должны подчищать
« Последнее редактирование: 29 Октябрь 2016, 07:56:34 от sfs »

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: 3G-модем.
« Ответ #77 : 29 Октябрь 2016, 08:58:48 »
Может лучше:
Запускает подключение, проверяет пингом
ОК- проверяет Х :
  есть Х - запускает трей
  нет Х - прописывается в /home/live/.config/autostart
sleep - костыль на уровне идеи. Учесть скорость железа и т.п. можно только многократным запасом
Не так всё просто.
Модему нужно время для загрузки, экспериментально - 12 секунд, до этого все наши AT-команды бесполезны.
Далее надо определить № ttyUSB на отклик AT - OK. Сначала я использовал bash-скрипт check3Gmodem
Код
#!/bin/sh
#DdShurick GPL 03.02.14
[ "$(ls /dev/cdc-wdm*)" ] && exit
[ $1 ] || exit 1
Dx1=$1
[ -f /tmp/mdev ] && rm /tmp/mdev
/usr/sbin/modem-stats -c AT /dev/$Dx1 && echo $Dx1 >> /tmp/mdev
/bin/grep $Dx1 /tmp/mdev || exit 1
if [ $(/usr/bin/wc -l < /tmp/mdev) -nt 1 ]; then
ln -s $Dx1 /dev/modem
ln -s $Dx1 /dev/ttyUSB_utps_pcui
exec /lib/udev/wvdial.sh
else
 if [ $(/bin/find $(/usr/bin/dirname $(/usr/bin/realpath /sys/bus/usb-serial/devices/$Dx1)) -name ep_* | wc -w) = 3 ]; then
/bin/ln -s /dev/$Dx1 /dev/modem && exec /lib/udev/wvdial.sh
 else
[ "$(/bin/grep $Dx1 /tmp/mdev)" ] && /bin/ln -s /dev/$Dx1 /dev/ttyUSB_utps_pcui
 fi
fi
У него врождённый недостаток - повисает на "пустом" tty. Обычно это ttyUSB1. Поэтому я и взялся за си.
Запуск из ~/.config/autostart будет от пользователя, будут "сюрпризы" из-за прав и не будет старта при горячем подключении модема, этот вариант отпадает. С другой стороны udev тоже "не сахар", не видит $DISPLAY.
Запускаю check3Gtty - /tmp/modem нет.
Код
# ./check3Gtty ttyUSB0
# cat /tmp/modem
ttyUSB0
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re: 3G-модем.
« Ответ #78 : 29 Октябрь 2016, 09:45:12 »
Модему нужно время для загрузки, экспериментально - 12 секунд, до этого все наши AT-команды бесполезны.
Я же написал:
Запускает подключение, проверяет пингом
Paз ping пошел - значит уже и можно и AT и т.п.
С другой стороны - ping мог пройти через другое подключение
А с третьей - зачем модем если инет уже есть

Поэтому я не использовал udev  и использовал netctl. Там можно смело : network start наш_профиль && ... || ...
Т.е. он сам понимает получилось подключиться или нет - как не копал, но проверил - работает. Вероятно по подъему интерфейса
Это используется и для других подключений. Зачем для модема изобретать  отдельно, когда уже есть готовое

Далее надо определить № ttyUSB
У меня это делает wvdialconf  и после него
Код
t0="$(realpath `sudo awk '/^Modem = / {print $3}' /etc/wvdial.conf` |sed 's/[0-9]$//')"
t="`ls $t0[0-9] |tail -1`"
- чем плохо?

./check3Gtty ttyUSB0 - так создает /tmp/modem - но Вы же написали
Цитата
определяет на каком tty модем и записывает в /tmp/modem
Где тут определение?
Он еще что-то делает? ppp0 у меня от него не поднялся.

В ответ на команду AT+CSQ приходит число от 0 до 31
Разве не 0-30?
Я в итоге так сделал
Код
echo $c| awk '{print "-"113-'$c'*2"dbm ("int('$c'*3.33334)"%)"}'
« Последнее редактирование: 29 Октябрь 2016, 09:52:43 от sfs »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re: 3G-модем.
« Ответ #79 : 29 Октябрь 2016, 10:26:14 »
Возвращаясь к теме определения режима LTE 3G 2G:
Код
# timeout 5 awk '/^\^HCSQ/ {print $0}' /dev/ttyUSB1
^HCSQ:"LTE",35,37,141,30
5 - поиграть. Если на выходе  пусто - увеличить
Возможно, зависит от модели модема
Кто бы проверил...

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: 3G-модем.
« Ответ #80 : 29 Октябрь 2016, 13:36:30 »
Paз ping пошел - значит уже и можно и AT и т.п.
Вы ставите телегу впереди лошади, ping не пойдёт без wvdial, wvdial без AT.
зачем модем если инет уже есть
Да, сейчас у меня оптоволокно, но я несколько лет с переменным успехом занимался модемами, надо закончить и отдать в хорошие руки.
Поэтому я не использовал udev  и использовал netctl.
Дело в том, что у udev есть определённые преимущества, иначе бы Пёттеринг не вдохновился на systemd ;)
У меня это делает wvdialconf
Беда в том, что wvdialconf иногда ошибается. В нём идёт поиск до первого AT - OK отклика, а первый не всегда модем. И генерируемый wvdial.conf "куцый"
ppp0 у меня от него не поднялся.
Когда не поднимается ppp, это не печально :) Там просто нет команды, это всего лишь заготовка.
Кто бы проверил...
В моих модемах нет команды "^HCSQ"
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re: 3G-модем.
« Ответ #81 : 29 Октябрь 2016, 14:01:13 »
у udev есть определённые преимущества
Какие для именно этой темы?
wvdialconf иногда ошибается. В нём идёт поиск до первого AT - OK отклика, а первый не всегда модем. И генерируемый wvdial.conf "куцый"
У меня не ошибался. Если wvdial.conf - он только правит порт и инит
В моих модемах нет команды "^HCSQ"
Это не команда
Код
sudo cat /dev/ttyUSB1 |egrep -v '^$'
^RSSI:17
^HCSQ:"LTE",42,37,156,26
Это проскакивает без доп. команд постоянно
Возможно только на моем модеме. Кто может проверить?



Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: 3G-модем.
« Ответ #82 : 29 Октябрь 2016, 15:02:57 »
Какие для именно этой темы?
Горячее подключение/отключение.
У меня не ошибался.
А у меня ошибался
Это проскакивает без доп. команд постоянно
У меня нет
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: 3G-модем.
« Ответ #83 : 30 Октябрь 2016, 09:08:42 »
 После тестирования на PRA-retro и Altlinux-p7 (IceWM, no systemd, frugal) вывод: всё, что я наваял никуда не годится. Надо переделывать.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re: 3G-модем.
« Ответ #84 : 30 Октябрь 2016, 09:40:56 »
 :'( Присмотрелись бы к netctl ...

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: 3G-модем.
« Ответ #85 : 30 Октябрь 2016, 11:32:30 »
Присмотрелись бы к netctl ...
Если я к нему присмотрюсь, там живого места не останется.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re: 3G-модем.
« Ответ #86 : 30 Октябрь 2016, 11:43:04 »
В netctl можно писать свои коннекторы - т.е. это вписывается в его концепцию
Я один уже написал - wvdial

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: 3G-модем.
« Ответ #87 : 30 Октябрь 2016, 12:02:39 »
 Зазве netctl поддерживает горячее подключение модема?
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re: 3G-модем.
« Ответ #88 : 30 Октябрь 2016, 12:16:54 »
Под горячим понимается - воткнул модем - он автоподключился ?
На мой взгляд - спорный функционал
Есть автопереключение профилей - я не заморачивался

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Автор темы
  • Старый чайник
Re: 3G-модем.
« Ответ #89 : 30 Октябрь 2016, 12:27:05 »
воткнул модем - он автоподключился ?
Да, при наличии разрешения от пользователя.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64