Форум проекта PuppyRus Linux

Разработки проекта PuppyRus => Программирование и компиляция => Тема начата: DdShurick от 26 Май 2016, 08:44:04

Название: 3G-модем.
Отправлено: DdShurick от 26 Май 2016, 08:44:04
 Кто пользуется 3G-модемом? Начал писать программу автоподключения 3G-модема (на C). Надо ли?
Название: Re: 3G-модем.
Отправлено: ilyuk от 26 Май 2016, 09:17:09
Мне надо
Название: Re: 3G-модем.
Отправлено: sfs от 26 Май 2016, 09:35:38
Надо
Только нужно ли авто? Лишние усложнения
И почему на С? Это же будет гуй к стандартным утилитам или что-то больше?
ilyuk - приветствую. Давненько не появлялись. Не теряйтесь!
Название: Re: 3G-модем.
Отправлено: DdShurick от 26 Май 2016, 09:58:45
Только нужно ли авто? Лишние усложнения
Почему усложнения? Воткнул модем и ты в интернете без лишних телодвижений.
Это же будет гуй
Нет, это замена скриптовых check3Gmodem и wvdial.sh. "Прокладка" между udev и wvdial. Планирую единственное графическое окно ввода PIN при необходимости, но пока не получается вставить его в программу, поэтому пока ввод PIN консольный.
Название: Re: 3G-модем.
Отправлено: sfs от 26 Май 2016, 10:04:56
замена скриптовых check3Gmodem и wvdial.sh.
Что даст С по сравнению со скриптами?
Название: Re: 3G-модем.
Отправлено: DdShurick от 26 Май 2016, 10:14:22
Что даст С по сравнению со скриптами?
Прежде всего знания и опыт. Кроме того, в скриптах используется древний бинарник modem-stats, написанный в прошлом веке, когда 3G-модемов в помине не было.
Исходник (https://github.com/DdShurick/autoNet/blob/master/check3Gmodem.c).
Название: Re: 3G-модем.
Отправлено: sewar от 26 Май 2016, 10:26:43
прекрасный подход - воткнул модем (любой?) и все заработало !!!
Именно так и должно быть! Ура, если получится и будет в ПРА...
Название: Re: 3G-модем.
Отправлено: DdShurick от 26 Май 2016, 17:22:54
прекрасный подход - воткнул модем (любой?) и все заработало !!!
Именно так и должно быть!
У меня в Richy так и есть (модуль autoNet.pfs).
Ура, если получится и будет в ПРА...
В PRA я не хозяин.
Название: Re: 3G-модем.
Отправлено: sfs от 26 Май 2016, 17:39:50
http://forum.puppyrus.org/index.php?topic=17009.0
Я сравнивал autoNet c другими вариантами настройки сети. В итоге выбрал netctl (более функциональный)
Части кода autoNet есть в net-auto (PRA)
Чтобы сделать модуль для ПРа не обязательно быть хозяином
Супер особенностей у ПРА нет - все линуксовое прикрутить можно. Посмотрим, что у Дяди Шурика получится. По модемам он у нас самый матерый  ;)
Название: Re: 3G-модем.
Отправлено: DdShurick от 27 Май 2016, 08:53:49
В итоге выбрал netctl (более функциональный)
И более запутанный. Не надо гнаться за функционалом, надо чтоб работало.
Чтобы сделать модуль для ПРа не обязательно быть хозяином
Но надо иметь к этому желание.
Супер особенностей у ПРА нет - все линуксовое прикрутить можно.
Все *bin в одну кучу. Бр-р-р
Посмотрим, что у Дяди Шурика получится.
"Если долго мучиться, что-нибудь получится". Проблем пока больше, чем решений, но, как это ни странно, оно работает.
Sfs, я тебя прошу, не провоцируй на срач пожалуйста, надоело уже.
Название: Re: 3G-модем.
Отправлено: DdShurick от 27 Май 2016, 18:42:22
 Выложил бинарник up3Gmodem (https://cloud.mail.ru/public/AX6C/GNLz3K5hJ), распаковать, руками запускать:
Код
./up3Gmodem ttyUSB0
(для модемов Huawei).
Название: Re: Модем 3g
Отправлено: sewar от 18 Октябрь 2016, 07:33:52
а вот и не помню - в ПРА подключение 3g модемов уже доведено до совершенства?
типа вставил любой, он в автомате подключился...
Сейчас не пользуюсь, не проверить..
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 18 Октябрь 2016, 08:33:08
в ПРА подключение 3g модемов уже доведено до совершенства?
В PRA "совершенство" это NM.
типа вставил любой, он в автомате подключился...
Вот этим я как раз и занимался в Richy: автоопределить порт модема, автоопределить оператора, автоподключиться. Есть скрипт и бинарник на "C". В PRA это не работает, конфликт с "родными" программами.
Название: Re: Re: Модем 3g
Отправлено: sfs от 18 Октябрь 2016, 09:07:58
В PRA "совершенство" это NM.
netctl тоже работает с модемами. Сам юзал skylink
NM тяжел, но удобен для сложных случаев и не так уж плох.
Например - в Вашем решении есть хоть какая-нибудь индикация уровня сигнала и т.п.?
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 18 Октябрь 2016, 09:31:14
но удобен для сложных случаев
Каких именно?
и не так уж плох.
Но и не хорош.
индикация уровня сигнала
Если кому надо, то
Код
# grep RSSI /dev/ttyUSB2
^RSSI:17
^RSSI:17
^RSSI:17
^RSSI:13
netctl тоже работает с модемами.
Не спорю, но вроде бы нужна предварительная настройка?
Название: Re: Re: Модем 3g
Отправлено: sfs от 18 Октябрь 2016, 10:20:31
Сложные случаи - для многих - все кроме проводного dhcp  :)
А вообще впн и т.п.
Индикация уровня по любому нужна в трее - почти написал traywifi - могу выложить - дистронезависимо
В netctl надо поправить ttyUSBX номер, пароль, логин. Для новичков может быть сложно по сравнению с NM. Тут не помешало бы сгенерить конфиги - например Вашим скриптом
Может быть в ПРА удобнее было бы вообще настраивать все модемы Вашим скриптом. Надо понять логику его работы и сдружить с NM и netctl (чтобы не мешали друг другу)
У меня не всегда есть в доступе модем и есть другие задачи
Буду благодарен если впишитесь в тему
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 18 Октябрь 2016, 12:29:57
Надо понять логику его работы
Логика простая: udev определяет устройство и даёт команду скрипту (или бинарнику), который определяет порты "модем" и "управляющий", создавая соответствующие ссылки, далее следует запуск wvdial <опсос>. Wvdial.conf - "расширенный", с указанием настроек под основных операторов. Бинарник дополнительно запрашивает PIN при необходимости и может быть запущен не только udev-ом, но и руками (скриптом)
сдружить с NM и netctl
Насчёт этого не уверен. В данном случае, мне кажется, лучше вместо, чем вместе.
У меня не всегда есть в доступе модем
У меня их несколько, спасибо акциям "модем за 1 рубль".
Название: Re: Re: Модем 3g
Отправлено: sfs от 18 Октябрь 2016, 12:41:20
Сдружить - я имел ввиду чтобы не конфликтовали. Вместе с netctl - может быть - сгенерить его конфиги для всех провайдеров (или автоопределить прова). Надо думать, обсуждать. В netctl сейчас подключение модема не для новичков
Т.е. Вы готовы поучаствовать в этой теме с тестированием в ПРа? У меня ни модемов, ни глубоких знаний по этой теме. Один не впрягусь
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 18 Октябрь 2016, 13:41:45
с тестированием в ПРа
Отчёт:
Код
root@pra:autoNet# ./up3Gm ttyUSB0
Обнаружен /dev/ttyUSB0
PIN: READY
Поиск сети
COPS: 0,2,"25002
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: AT+CGDCONT=1,"IP","internet"
AT+CGDCONT=1,"IP","internet"
OK
--> Modem initialized.
--> Sending: ATDT*99#
--> Waiting for carrier.
ATDT*99#
CONNECT
--> Carrier detected.  Starting PPP immediately.
--> Starting pppd at Tue Oct 18 12:20:44 2016
--> Pid of pppd: 3766
--> Using interface ppp0
--> pppd: °[12][08]HÐ[12][08]
--> pppd: °Ç[12][08]HÐ[12][08]
--> pppd: °[12][08]HÐ[12][08]
--> pppd: °Ç[12][08]HÐ[12][08]
--> pppd: °[12][08]HÐ[12][08]
--> pppd: °[12][08]HÐ[12][08]
--> local  IP address 100.115.57.66
--> pppd: °Ç[12][08]H[12][08]
--> remote IP address 10.64.64.64
--> pppd: а[12][08]HÐ[12][08]
--> primary   DNS address 10.78.62.245
--> pppd: °[12][08]HÐ[12][08]
--> secondary DNS address 10.78.83.245
--> pppd: °[12][08]HÐ[12][08]

^CCaught signal 2:  Attempting to exit gracefully...
--> Terminating on signal 15
--> pppd: °Ç[12][08]HÐ[12][08]
--> Connect time 0.1 minutes.
--> pppd: °Ç[12][08]HÐ[12][08]
--> pppd: °Ç[12][08]HÐ[12][08]
--> pppd: °Ç[12][08]HÐ[12][08]
--> Disconnecting at Tue Oct 18 12:20:53 2016
Был добавлен wvdial.conf из ~/Git/autoNet/
Бинарник был запущен от рута из ~/Git/autoNet/
Модем Huawei E173 МегаФон
Так-же проверен Huawei E150 Tele2, произошёл запрос PIN в графическом окне и отказ в соединении (sim-карта просрочена).
Название: Re: Re: Модем 3g
Отправлено: sewar от 18 Октябрь 2016, 13:58:56
sfs, может сольете с этой темой http://forum.puppyrus.org/index.php?topic=18165.15
как продолжение..
все очень к месту...
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 18 Октябрь 2016, 14:12:21
 Файлы во вложении
Название: Re: Re: Модем 3g
Отправлено: sfs от 18 Октябрь 2016, 14:14:45
Отчёт:
Отлично!
Попробую сделать модуль. Надо понять как сдружить и мониторинг качества  сделать
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 18 Октябрь 2016, 14:17:33
как сдружить
netctl не настраивать, в NM убрать ModemManager.
Кстати, Netctl единственный подключил PPPoE.
Название: Re: Re: Модем 3g
Отправлено: sfs от 18 Октябрь 2016, 14:51:09
netctl не настраивать
да
NM- отдельным модулем. Лучше сделать, чтобы он при подключении блокировал Вашу подключалку
В аттаче недоделанный мониторинг уровня сигнала wifi. Нужно в q=дописать получение цифры (для теста дописать любую)
Потом сделать аналогичный trey3g
Название: Re: Re: Модем 3g
Отправлено: sfs от 18 Октябрь 2016, 15:50:09
Файлы во вложении
Не нашел правил udev
Или как надо определить что модем на ttyUSB0 ? Тем более в wvdial.conf : /dev/modem
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 18 Октябрь 2016, 16:15:56
NM- отдельным модулем.
Тем проще его выкинуть.
Лучше сделать, чтобы он при подключении блокировал Вашу подключалку
Не успеет, слишком медленный :)
В аттаче недоделанный мониторинг уровня сигнала wifi.
Не универсален, в Richy не работает. Лучше сделать на основе freememapplet.
Не нашел правил udev
Здесь (https://github.com/DdShurick/autoNet/blob/master/lib/udev/rules.d/99-modem.rules), надо править на up3Gm
Или как надо определить что модем на ttyUSB0 ? Тем более в wvdial.conf : /dev/modem
Бинарник сам определяет и создаёт ссылки /dev/modem и /dev/ttyUSB_utps_pcui.
Название: Re: Re: Модем 3g
Отправлено: sfs от 19 Октябрь 2016, 09:15:21
Тем проще его выкинуть.
Да. Именно поэтому :)
NM ничего не потребуется успеть. Он просто перекроет верхним слоем aufs запуск мешающего ему на уровне initrd
traywifi - sit (бинарник, спертый в пупи) есть в Ричи?
freememapplet - да, тоже вариант. В варианте http://forum.puppyrus.org/index.php/topic,13900.msg76616.html#msg76616 цифры поменять легко. Картинки чуть сложнее (хотелось бы треугольник), но в этой (http://forum.puppyrus.org/index.php?topic=15151.msg119892#msg119892) теме получалось
Бинарник сам определяет и создает ссылки /dev/modem и /dev/ttyUSB_utps_pcui.
Бинарник требует ключа ttyUSB
Т.е. можно без ключей - он сам определит (хотелось бы)?
Или надо добавлять udev, делающий /dev/modem  и /dev/ttyUSB_utps_pcui (никому не помешает и ресурсов не съест) и запускать up3Gm /dev/modem ?
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 19 Октябрь 2016, 10:45:50
запуск мешающего ему на уровне initrd
Запуск на уровне udev, попробуй перекрой :)
Бинарник требует ключа ttyUSB
Это сделано под udev, запуск RUN+="up3Dm %k", где %k это и есть ключ.
Т.е. можно без ключей - он сам определит (хотелось бы)?
Можно. Например вставить в цикл ls -1 /dev/ttyUSB*, но зачем?? Udev прекрасно справляется.

Сделал "попугаемерку", выводит значения rssi в консоль, теперь надо выяснить, как пересчитать "попугаев" в %
Название: Re: Re: Модем 3g
Отправлено: sfs от 19 Октябрь 2016, 11:07:41
Запуск на уровне udev, попробуй перекрой
Накладываю на Ваше правило udev пустой файл :) Так что угодно можно блокирнуть - ломать не строить
Можно. Например вставить в цикл ls -1 /dev/ttyUSB*, но зачем?? Udev прекрасно справляется.
Т.е. так будет работать?
1. udev создает /dev/modem
Код
ACTION=="add|change", SUBSYSTEM=="tty", SUBSYSTEMS=="usb", KERNEL=="ttyUSB?|ttyACM?", RUN+="/bin/sleep 12", RUN+="/usr/bin/ln -sf /dev/modem %k"
ACTION=="remove", SUBSYSTEM=="tty", SUBSYSTEMS=="usb", KERNEL=="ttyUSB?|ttyACM?", RUN+="/bin/rm /dev/modem", RUN+="/bin/rm /dev/ttyUSB_utps_pcui"
2. up3Dm /dev/modem
3. Какой-то гуй для помещения в автозагрузку через systemd и minirc
4. Мониторинг в трее
Автоподнятие соединения по втыканию модема считаю очень спорной автоматизацией. Запуск гуя с предложением подключиться - может быть

теперь надо выяснить, как пересчитать "попугаев" в %
Имел аналогичные проблемы с вифи.Там типа 35\70 - как не пересчитывай с показаниями nm не бъется
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 19 Октябрь 2016, 11:31:21
Т.е. так будет работать?
1. udev создает /dev/modem
Нет, тут вы не правы, udev не может отличить порт модема от управляющего и прошивочного портов. Ссылка будет на последний из определённых, и это вряд-ли будет модем. Похожая ошибка происходит с wvdialconf и gnome-ppp с модемами zte, у них порты расположены в обратном порядке. Поэтому либо RUN+="up3Gm %k", либо ls -1 /dev/ttyUSB? | while read M; do up3Gm $M; done. Бинарник сам определит "кого куда зачем"
3. Какой-то гуй для помещения в автозагрузку через systemd и minirc
Опять какой-то гуй. На кой?
Мониторинг в трее
А вот сюда можно поместить "start/stop"
Автоподнятие соединения по втыканию модема считаю очень спорной автоматизацией.
Через udev - спорно, через systemd - нормально. Странное утверждение, учитывая что это одно и то же. Обоснуйте подробно.
Запуск гуя с предложением подключиться - может быть
Всё вы хотите сделать по русски - через гуй. Достают уже ваши гуёвины.
Название: Re: Re: Модем 3g
Отправлено: sfs от 19 Октябрь 2016, 11:46:21
тут вы не правы
Я не утверждал, а спрашивал
Автоподнятие соединение втихаря - зло. Не зависимо от того какими средствами (udev systemd) Надо спросить юзера. Как без гуя это сделать?
Если получится поднимать через udev - было бы идеально. Но по умолчанию должен задаваться вопрос. Автоподнятие - когда юзер согласился

"start/stop" в трей можно сделать на yad, но вроде он не умеет менять иконку (нужно будет при изменении уровня сигнала)
Вообще "start/stop" тоже обязательно нужен. Модемная связь ненадежна. Возможность перестартовать нужна

Достают уже ваши гуёвины.
Ваших то нет. Не нравятся мои - есть NM
Будем сраться или работать?  ;)
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 19 Октябрь 2016, 11:55:22
Ваших то нет.
Я не виндузятник, а в вашем PRA при запуске окошек выскакивает больше чем в винде.
Будем сраться или работать?
А вы как хотите?
"start/stop" в трей можно сделать на yad
Не надо, меню можно позаимствовать из network_tray, тем более, что он сделан на той же основе, что и freememapplet.
Цитата
based on a simple systray applet example by Rodrigo De Castro, 2007
Автоподнятие соединение втихаря - зло.
Это надо у пользователей спросить. Голосуем?
Название: Re: Re: Модем 3g
Отправлено: sewar от 19 Октябрь 2016, 12:06:56
Это надо у пользователей спросить
гуевины создают дружественную среду и облегчают работу в системе для начинающих!
подключать/отключать сети только с согласия юзера, это хорошо..
Название: Re: Re: Модем 3g
Отправлено: sfs от 19 Октябрь 2016, 12:08:14
А вы как хотите?
работать. По моим постам не заметно?
network_tray - отлично. С yad будет не просто
Написание гуев для консольных утилит - это и есть пупи и единственный метод достижения "маленький и быстрый"
Это надо у пользователей спросить. Голосуем?
Раз мнения разделились - да
Добавите? Или сформулируйте вопрос голосования
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 19 Октябрь 2016, 12:14:36
Такие иконки (http://ru.gofreedownload.net/free-vector/vector-clip-art/signal-strength-icon-for-phone-128820/#.WAdTDqARePA) подойдут?
гуевины создают дружественную среду и облегчают работу в системе для начинающих!
При этом начинающие так и остаются начинающими. Уровень мышкотыкателя :D
подключать/отключать сети только с согласия юзера, это хорошо..
Много ваш хвалёный NM спрашивает? Только то, что требует пароля или настройки.
Название: Re: Re: Модем 3g
Отправлено: sewar от 19 Октябрь 2016, 12:22:19
При этом начинающие так и остаются начинающими. Уровень мышкотыкателя
главное, не оттолкнуть пользователя юзабельностью на начальном этапе.
а дальше, если будет цель/желание, дойдет и до большего..
а не будет цели/желания, останется пользователем, тоже не плохо...
Название: Re: Re: Модем 3g
Отправлено: sfs от 19 Октябрь 2016, 13:12:23
Такие иконки подойдут?
Да. В пупи и ПРА уже есть такие же .svg
При этом начинающие так и остаются начинающими. Уровень мышкотыкателя :D
Обучение линуксу и создание пользовательского дистра - разные задачи. Давайте не будем отклоняться от темы
Много ваш хвалёный NM спрашивает? Т
Автоподнятия модема без ведома юзера нигде нет. Например юзер не прочухал через чего инет идет - получай счет на круглую сумму
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 19 Октябрь 2016, 16:05:18
Автоподнятия модема без ведома юзера нигде нет.
Значит я первооткрыватель.
Например юзер не прочухал через чего инет идет - получай счет на круглую сумму
Я уже обжёгся на этом, но вопрос здесь не в автоподключении, а в правильном выборе тарифа. В моём случае неоплаченный Мегафон на стороне провайдера без предупреждения автоматически переключился на помегабайтную тарификацию. В результате -102 рубля. Но при чём здесь автоподключение, если я лоханулся. Точно так-же можно влететь и с ручным.
Название: Re: Re: Модем 3g
Отправлено: sewar от 19 Октябрь 2016, 16:22:52
Точно так-же можно влететь и с ручным.
в этом случае никто не обвинит разработчиков, виноват сам юзер...
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 19 Октябрь 2016, 19:12:22
 Для ручного подключения уже существует множество "звонилок" на любой вкус. Умеете вы любую инициативу превратить в трёп пустой и отбить всякую охоту к творчеству.
Название: Re: Re: Модем 3g
Отправлено: sfs от 20 Октябрь 2016, 09:03:38
Тема началась с того что имеющиеся (кроме NM) неудобные. NM жирный
Еще одна неудобная ненужна. Совместно сформировали ТЗ. Осталось сделать
Что опять не так?
Если считаете что все готово и сами протестировали в ПРА - выкладывайте модуль. Будем пробовать
По трею есть сдвиги? Удалось понять как получить % для модема? По выводу в трей - вариант выбрал?
Помощь нужна?
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 20 Октябрь 2016, 10:40:47
Что опять не так?
Всё не так. Приходится менять замысел на ходу. С новыми прошивками 3G-модемов вылез интерфейс wwan0 (даже E150), который непонятно как работает, но мешает. С 4G-модемами - работает.
и сами протестировали в ПРА
Уй-й-й.... :( Ох уж этот PRA... Сделаю в Richy, тогда уж.. :(
Удалось понять как получить % для модема?
Нет. Разве что эмпирически.
По выводу в трей - вариант выбрал?
Не понял?..
Помощь нужна?
Сишник я никудышный, но и вы не лучше. Не знаю..
Название: Re: Re: Модем 3g
Отправлено: sfs от 20 Октябрь 2016, 10:54:14
Вывод в трей - имел ввиду - какими средствами лучше выводить (yad sit freemem)
Пра - ну так тема то про ПРа
Я вообще никакой сишник. А там Си оправдан? На sh такое не сделать?
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 20 Октябрь 2016, 12:35:27
какими средствами лучше выводить (yad sit freemem)
network_tray
Пра - ну так тема то про ПРа
Не я сюда перенёс
Я вообще никакой сишник.
А учиться, учиться и учиться?
А там Си оправдан? На sh такое не сделать?
Насчёт оправданности си не знаю, но на gtkdialog такое не пишется, тем более, что он отвалился у меня после обновления glib, пришлось откатить.
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 20 Октябрь 2016, 14:41:28
 Начал с блокировки интерфейсов. Для этого в /lib/udev/upNet добавлена проверка:
(пути для Richy, для "непутёвого" PRA надо переписывать. Вопрос, как именно?)
Код
chk_on () {
/bin/echo "check $1" /tmp/network.log
if [ "$(/bin/grep $(/bin/cat /sys/class/net/$1/address) /etc/network-wizard/network/interfaces.lck)" ]; then
/bin/grep "$(/bin/cat /sys/class/net/$1/address) on" /etc/network-wizard/network/interfaces.lck || exit
else
echo "$(/bin/cat /sys/class/net/$1/address) off" >> /etc/network-wizard/network/interfaces.lck
exit
fi
}
В результате все вновь обнаруженные интерфейсы записываются в файл interfaces.lck
Код
00:25:ab:25:7e:24 off
20:68:9d:3a:89:c2 off
02:50:f3:00:00:00 off
36:4b:50:b7:ef:2d off
Для автоподключения при загрузке off меняем на on.
 
 Вопросы, предложения возникли?
Название: Re: Re: Модем 3g
Отправлено: sfs от 20 Октябрь 2016, 14:50:07
пути для Richy, для "непутёвого" PRA надо переписывать. Вопрос, как именно?)
Пути не надо переписывать (http://wiki.puppyrus.org/puppyrus/pra#%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%87%D1%83%D0%B6%D0%B8%D1%85_%D0%B8_%D0%BE%D1%82_%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D1%85_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B9_pra_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B5%D0%B9_squashfs). Нельзя в сквоше делать папки /bin /sbin
Отключение автостарта - отлично
Ждем модуль
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 20 Октябрь 2016, 15:50:46
Нельзя в сквоше делать папки /bin /sbin
Это я знаю, систему "заклинит". Основной недостаток PRA.
Ждем модуль
Вот вам первый блин. В PRA работает криво, dhcpcd ругается на отсутствие /bin/systemctl. Эта ошибка ломает логику скриптов lan.sh wlan.sh
Проверял в PRA-retro.

Заменил dhcpcd на взятый из richy - заработало.
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 21 Октябрь 2016, 15:41:15
Вопросы, предложения возникли?
Не возникли. Молчание знак согласия или всеобщий пофигизм?
Dhcpcd прилагаю (https://cloud.mail.ru/public/KFYH/CtHdkaS9Q).
Название: Re: Re: Модем 3g
Отправлено: sfs от 21 Октябрь 2016, 17:48:27
Тестировать только модем или все виды сетей?
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 21 Октябрь 2016, 19:34:27
Тестировать только модем или все виды сетей?
Всё кроме PPPoE.
Экспериментировал с RSSI и AT+CSQ, получается ерунда: экранирую модем железными мисками, в первый момент момент значение падает, но тут же восстанавливается. Срабатывает АРУ.
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 22 Октябрь 2016, 08:42:05
Индикация уровня по любому нужна в трее - почти написал traywifi
Код
# iwconfig wlan0|awk '/Qual/ {print $4 $5}'
level=-54dBm
Это вам не пригодится?
Ядро "попугаемерки" №1
Код
/*rssi, DdShurick, GPLv2*/

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

FILE *fp;
char dev[16]="/dev/";

int main(int argc, char **argv) {

if (!argv[1]) { printf("Пример: rssi ttyUSB2\n"); exit(1); }

strcat(dev,argv[1]);

    while ((fp = fopen(dev,"r"))!=NULL) {

char rssi[]="";
fgets(rssi,10,fp);
    if ((strstr(rssi,"RSSI:"))!=NULL) {

printf(rssi+6);

}
}
    if (fp!=NULL) { printf("Нет модема\n"); exit(1); }
}
Работает так:
Код
# ./rssi ttyUSB2
16
16
16
..................
Компилировать gcc rssi.c -o rssi
Остановить - Ctrl+C
Название: Re: Re: Модем 3g
Отправлено: sfs от 22 Октябрь 2016, 13:00:46
Протестировал. pra-middle1609 autoNet.pfs dhcpcd-6.9.4.pfs

Ethernet
dhcp работает. Я правильно - понял - ручной настройки нет (есть ручной правкой конфига)

WiFi
Работает

3G
Через гуй не работает
up3Gmodem ttyUSB0 : Warning: section [Dialer Beeli] does not exist in wvdial.conf.
Делаю в wvdial.conf [Dialer Beeli] - работает

GUI
Очень сырой. От логики работы до подбора иконок
Выдачи сообщений при выполнении операций нет (в пра скрипт wt)
Сообщения сделаны на голом xpupsay - вылезают в произвольных местах экрана. В xfce будут смотреться чужеродно. Лучше использовать ntf из ПРа

Мониторинг wifi я доделал
Цифры брал из iwconfig Quality=50/70
50/70*100=71%
C NM совпадает примерно. Откуда NM берет не знаю

Мониторинг 3G
Я так понял % не получить - только попугаи... Гуглили?
Тогда может их просто цифрой выводить как в trayinfo из pra
Зачем писать на си если это можно на sh?


Название: Re: Re: Модем 3g
Отправлено: DdShurick от 22 Октябрь 2016, 14:13:08
3G
Делаю в wvdial.conf [Dialer Beeli] - работает
В up3Gmodem заложена обрезка COPS до 5 знаков. Как будет лучше, исправить wvdial.conf (это будет проще) или убрать обрезку (тогда имеем проблему с последней кавычкой).
Обнаружил неприятную особенность up3Gmodem, срабатывает только один раз, при повторном включении виснет на определении COPS. Помогает только перезагрузка системы. Буду разбираться.
GUI
Очень сырой. От логики работы до подбора иконок
Дизайнер с меня никакой, а вот насчёт логики пожалуйста подробнее.
Мониторинг 3G
Я так понял % не получить - только попугаи... Гуглили?
Обычно берут вывод AT+CSQ и есть формула пересчёта. Цифры в обоих случаях получаются примерно одинаковые.
Зачем писать на си если это можно на sh?
На sh уже не интересно.
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 22 Октябрь 2016, 15:38:14
"Попугаемер" №2
Код
/*DdShurick GPLv2*/

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

FILE *fd;
char str[9]="", dev[16]="/dev/";
int q, c=-113, l;

int main(int argc, char **argv) {

if (!argv[1]) { printf("Пример: csq ttyUSB2\n"); exit(1); }

strcat(dev,argv[1]);

    if ((fd = fopen(dev,"r+"))==NULL) { printf("Нет модема\n"); exit(1); }
fputs("AT+CSQ\r\n",fd);
while ((strstr(str,"+CSQ:"))==NULL) {
fgets(str,9,fd);
if ((strstr(str,"+CSQ:"))!=NULL) {
// printf("%s\n",str+6);
q=atoi(str+6);
printf("%d \"попугаев\"\n",q);
l=(c + q * 2);
printf("%d db\n",l);
}
}
fclose(fd);
}
Компиляция gcc csq.c -o csq
Вывод:
Код
# ./csq ttyUSB2
19 "попугаев"
-75 db
# ./csq ttyUSB2
16 "попугаев"
-81 db
Название: Re: Re: Модем 3g
Отправлено: sfs от 22 Октябрь 2016, 20:27:22
насчёт логики пожалуйста подробнее.
Зачем в меню 2 ярлыка, если второй вызывается из 1го?
Куда сохраняется настроенный конфиг, чем запускается?
тогда имеем проблему с последней кавычкой
sed 's/"$//' - хочется верить что Вы sed на си не будете переписывать
Си поднимает планку на другой уровень
Делать это неоправданно - зло. Не puppy way
Если интересно: "Практические советы по GTK+ (Иконка в System tray)".
и не linux way (http://www.realcoding.net/article/view/1641) Это нормально делается через sit и yad

"Попугаи" т.е. % будет не получить?
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 22 Октябрь 2016, 21:44:29
sed 's/"$//' - хочется верить что Вы sed на си не будете переписывать
Си поднимает планку на другой уровень
Делать это неоправданно - зло. Не puppy way
Проблема с " решена, strlen и strncpy, с повторным включением - нет. Боюсь, что после неоднократной и кривой перепрошивки модем глючит.
"Попугаи" т.е. % будет не получить?
Получим всё что угодно, попугаи просто для смеха.
Зачем в меню 2 ярлыка, если второй вызывается из 1го?
У меня нет ни одного, для вас старался, с запасом :)
Куда сохраняется настроенный конфиг
В /etc/network/wpa_profiles для wlan, статика /etc/network/interfaces, /etc/network/interfaces.lck - "память", всё по macaddress, дабы не ошибиться.
чем запускается?
Левой пяткой :)
При старте - udev, при необходимости меню или консоль. У меня в IceWM запуск connect кликом по индикатору сети в трее.
Название: Re: Re: Модем 3g
Отправлено: sfs от 23 Октябрь 2016, 01:49:12
Я так понимаю - у Вас все танцы с бубном для автоопределения провайдера....
А смысл? Даже если чел не знает - 3 варианта перебрать не проблема
Чем хуже совсем просто:
1. Берем Ваш wvdial.conf
2. wvdialconf /etc/wvdial.conf - определили на каком tty модем
3. wvdial Beeline
Проверил - работает.

Сделал индикацию в трее. Получение двумя строками
Код
echo -e "AT+CSQ\r\n" > /dev/ttyUSB1
timeout 1 gawk '/^+CSQ/{print gensub(/,.*/,"","g",$2)*2-113; exit}' /dev/ttyUSB1

Кстати через netctl не работает

И через gnome-ppp не работает
http://4tux.ru/blog/nastroyka_3g_modema_v_linux
Пишет
Код
--> Ignoring malformed input line: ";Do NOT edit this file by hand!"
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATX3
ATX3
OK
--> Sending: AT+CGDCONT=1,"IP","home.beeline.ru"
AT+CGDCONT=1,"IP","home.beeline.ru"
OK
--> Modem initialized.
--> Sending: ATM1L3DT*99#
--> Waiting for carrier.
ATM1L3DT*99#
ERROR
--> Invalid dial command.
--> Disconnecting at Sat Oct 22 23:57:12 2016
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 23 Октябрь 2016, 09:32:17
Чем хуже совсем просто:
Любите вы спорить. А вот этим хуже:
2. wvdialconf /etc/wvdial.conf - определили на каком tty модем
Во первых так определяется только модем, командный порт не определяется, во вторых модемами zte не работает.
3. wvdial Beeline
Проверил - работает.
А куда же он бедный денется. Так и должно быть. Только у меня несколько модемов разных операторов, и что же, постоянно напрягать мою бедную голову чтобы не перепутать. Нет, так не пойдёт. Юзер не мыслитель.:)
Получение двумя строками
А склько строчек в gawk вы видели?
И через gnome-ppp не работает
Gnome-ppp лишние команды генерирует
--> Sending: ATM1L3DT*99#
Должно быть ATDT*99#, его надо подпиливать.
linux way
Одна задача - одна программа, и не надо ля-ля :)

Проверил ваши tray3g и tray3g-stat - не работают даже в PRA. Ругается как товаровед на недостачу :)
Код
[ ! "`ifconfig |egrep '^ppp0: '`" ] && (ntf -e "$n не обнаружил" "PPP подключений" &) && exit 1
Это вообще никуда не годится. А если я не хочу включать модем? Ведь AT+CSQ работает и без соединения с сетью.
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 23 Октябрь 2016, 12:34:02
Получение двумя строками
Код
echo -e "AT+CSQ\r\n" > /dev/ttyUSB1
timeout 1 gawk '/^+CSQ/{print gensub(/,.*/,"","g",$2)*2-113; exit}' /dev/ttyUSB1
Кстати через netctl не работает
Это спионэрено отсюда (https://www.linux.org.ru/forum/development/7564469?cid=7564628)? Оно вообще не работает никак, просто виснет.
Си поднимает планку на другой уровень
Делать это неоправданно - зло. Не puppy way
Объясняю: ваш любимый ash всего лишь командная оболочка, без других программ ничего не может, си - может.
Название: Re: Re: Модем 3g
Отправлено: sfs от 23 Октябрь 2016, 12:48:18
Любите вы спорить
В споре рождается истина :)
Во первых так определяется только модем, командный порт не определяется
Вот так определяю командный, после того , как wvdialconf определил основной порт
Код
t0="`awk '/^Modem = / {print $3}' /etc/wvdial.conf |sed 's/[0-9]$//'`"
t="`ls $t0* |tail -1`"
модемами zte не работает.
Это (http://forum.puppyrus.org/index.php?topic=751.msg43705#msg43705)? Или какие особенности? А много ли zte осталось?
у меня несколько модемов разных операторов, и что же, постоянно напрягать мою бедную голову чтобы не перепутать
Они воткнуты одновременно? Вообще это не типовой случай
В netctl есть механизм горячего переключения сетей - но пока в это лезть желания нет
Gnome-ppp лишние команды генерирует
Т.е. перекомпилить с изменением команды набора? Попробую
Одна задача - одна программа, и не надо ля-ля
Перечитайте по ссылки. У Вас виндовый подход (переписывание имеющегося внутри своей проги)
Это вообще никуда не годится. А если я не хочу включать модем? Ведь AT+CSQ работает и без соединения с сетью.
По замыслу tray3g (переименую в traygsm) показывает уровень сигнала подключения
Нет подключения - не нужен
Или Вы хотите  выбрать прова с лучшим сигналом? Это другая задача
В аттаче прикрутил wvdial к netctl средствами netctl. Не надо будет переделывать гуй и пойдет в любом линуксе (дополнительно нужны sit ntf yad).
netctl - перспективный путь. В него любые извраты подключений можно прописать с минимумом кода (есть готовые функции)

Посмотрел yad --notifications - тоже перспективная штука. После запуска через echo команда > fifo можно все изменить (меню иконку ...)
В идеале на нем можно сделать мониторинг в трее с любым меню по клику
Название: Re: Re: Модем 3g
Отправлено: sfs от 23 Октябрь 2016, 12:52:58
Это спионэрено отсюда? Оно вообще не работает никак, просто виснет.
Да. У меня работает. Может от модема зависит....
Попробовать Вашу вторую попугаемерку?
sh всего лишь командная оболочка, без других программ ничего не может, си - может.
Да. Unix-way
-- Программа должна выполнять только одну задачу, но выполнять ее хорошо. Многие программы используют другие программы/библиотеки, тем самым позволяя разработчикам сосредоточиться на функциональности самой программы/библиотеке.
Зачем усложнять простое?
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 23 Октябрь 2016, 13:37:42
Попробовать Вашу вторую попугаемерку?
Лучше №3 (на основании этого (http://m2msupport.net/m2msupport/atcsq-signal-quality/)).
Код
# ./csq ttyUSB2
-75 dbm
Сигнал 61 %
# ./csq ttyUSB2
-77 dbm
Сигнал 58 %
Всего 35 строк, меньше, чем у вас на ash, причём часть можно выкинуть.
У Вас виндовый подход
??? Это у вас бесконечная любовь к окошкам и окошечкам :) sfs + Win =  ::)
А много ли zte осталось?
Есть новые, получше чем Huawei, но и старые сбрасывать со счетов нельзя.
Нет подключения - не нужен
Не согласен.
В netctl есть механизм горячего переключения сетей - но пока в это лезть желания нет
Вот видите, у вас нет желания лезть в чужой код, у меня тоже.
Займитесь лучше дизайном connect, если он вам не нравится.
Название: Re: Re: Модем 3g
Отправлено: sfs от 23 Октябрь 2016, 14:13:33
Попугаемерка2 -  на си работает понадежнее чем на sh. Здесь си - в тему
Подпилил на выдачу одной цифры dbm : csf2-sf02 64бит
Дайте исходник Попугаемерка3

Поправил gnome-ppp. Теперь работает. Спасибо! В аттаче 64бит и настроенный конфиг /root/.wvdial.conf
32 бит (http://forum.puppyrus.org/index.php?topic=15696.msg90765#msg90765)

Ваш gui надо полностью переделывать
Думаю - прикрут к netctl (что я и сделал выше) - более системный подход
Надо еще потестировать. Moя переключалка профилей netctl-tray подглючивает
Надо вдохновляться netctl-tray (yad) - для мониторинга
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 23 Октябрь 2016, 20:59:55
Дайте исходник Попугаемерка3
Не дам, устарел :)
Ваш gui надо полностью переделывать
Эт можно, только как, вкривь или вкось? :)
Думаю - прикрут к netctl (что я и сделал выше) - более системный подход
Ой, что-то сомневаюсь я в этом netctl.
Надо вдохновляться
Уже вдохновился (source (https://github.com/DdShurick/autoNet/blob/master/tray3Gcsq.c)).
*3g.png положить в /usr/share/pixmaps/
Название: Re: Re: Модем 3g
Отправлено: sfs от 24 Октябрь 2016, 09:26:48
Ваш гуй. Я выше писал про его проблемы
Выдача сообщений у Вас не проработана. Это отдельная тема. нужны средства типа ntf wt (не идеальны, но идея правильная)
Напомните - механизм автозагрузки настроенного профиля есть? Какими средствами?

netctl - "не смотрел, но против". что с ним не так?

А чем нас не устраивает gnome-ppp ?, как отдельностоящий
1. нет индикации уровня сигнала
2. нет возможности выбрать профиль (можно сделать гуй выбора провайдера и запускать gnome-ppp с выбранным профилем)
что еще?

Мы не разобрали тему определения 2d\3d\LTE тоже надо в трей
Какой формулой пересчитываетк dbm в % ?

tray3G - в пра64 не компилится - не находит gtk.h
В yad есть все что надо для трея. Нужен ли здесь изобретать на си...
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 24 Октябрь 2016, 09:59:55
tray3G - в пра64 не компилится - не находит gtk.h
Код
gcc tray3Gcsq.c `pkg-config --cflags --libs gtk+-2.0` -o tray3Gcsq
Можно и gtk+-3.0
Выдача сообщений у Вас не проработана.
Я их на дух не переношу. Тут очень и очень подумать надо.
механизм автозагрузки настроенного профиля
В lan.sh и wlan.sh по  /sys/class/net/$IFACE/address
netctl - "не смотрел, но против". что с ним не так?
Не верю чужим рукам
А чем нас не устраивает gnome-ppp ?
Всем устраивает. Для новичков самое то. Я был инициатором включения gnome-ppp в PuppyRus.
Мы не разобрали тему определения 2d\3d\LTE тоже надо в трей
Не надо. Модем сам сигнализирует о режиме работы. Зачем дублировать.
Какой формулой пересчитываетк dbm в % ?
Пересчитываются "попугаи", их 32
Код
# modem-stats -c AT+CSQ=? /dev/ttyUSB2

+CSQ: (0-31,99),(99)

OK
int p=(q * 32258 / 10000);
В yad есть все что надо для трея.
Ну и пусть. Это чужое.

Есть идея объединить up3Gmodem и tray3Gcsq. Тогда udev запустит индикатор, а клик по индикатору запустит wvdial.
Название: Re: Re: Модем 3g
Отправлено: sfs от 24 Октябрь 2016, 11:26:55
Сообщения. Когда юзер запускает профиль - если ничего не выдать- как узнать - запустилось\запускается\зависло ?

gnome-ppp: а как же неверие чужим рукам  :) Есть мысли по проблемам с ним (см. выше)?

Модем сам сигнализирует о режиме работы.
Как?

Про пересчет - не понял... -77dbm - это сколько % ?

Есть идея объединить up3Gmodem и tray3Gcsq. Тогда udev запустит индикатор, а клик по индикатору запустит wvdial.
А как выключить?? В трей прилетит по событию наличия модема?
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 24 Октябрь 2016, 12:31:52
как узнать - запустилось\запускается\зависло ?
Вылезает сообщение и висит 5 секунд. Похоже вы тоже "не читали, но осуждаете"
Как?
Модем сигнализирует миганием и цветом светодиода.
Про пересчет - не понял...
В ответ на команду AT+CSQ приходит число от 0 до 31 (сила сигнала) или 99 (отсутствие сигнала). В % пересчтывается умножением на 3,2258, тогда 31 будет соответствовать 100%. Пересчёт в dbm производится сложением -113 с удвоенным значением полученного числа (-113 + q * 2). Я понятно объясняю?
А как выключить??
Так же
В трей прилетит по событию наличия модема?
Да.
gnome-ppp: а как же неверие чужим рукам
Проверено опытным путём, мин нет. Насчёт правки кода, боюсь увязнуть, сложновато у них.
Название: Re: Re: Модем 3g
Отправлено: sfs от 24 Октябрь 2016, 14:58:54
Вылезает сообщение и висит 5 секунд
И как узнать соединилось или зависло?
Модем сигнализирует миганием и цветом светодиода.
Не знал. Где то можно про это прочитать подробнее?
Не удобно. Удобно в трее. Знаете или гуглить?

gnome-ppp - глубже лезть в код не надо

В итоге у меня почти готов модуль для юзеров ПРА : gnome-ppp (патченный) ; wvdial через netctl ; индикаторы трея wifi и модема
Скоро выложу.
Вы будете что-то обновлять или рано или предложить пользователем то, что выше я тестировал?
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 24 Октябрь 2016, 15:17:32
Где то можно про это прочитать подробнее?
В инструкции модема. Они все сигнализируют по разному.
Не удобно. Удобно в трее.
Трей и так перегружен.
Вы будете что-то обновлять или рано или предложить пользователем то, что выше я тестировал?
Обновлять буду, но тестирование не помешает.
Название: Re: Re: Модем 3g
Отправлено: sfs от 24 Октябрь 2016, 15:31:55
Обновлять буду, но тестирование не помешает.
Т.е. подождать обновления? Хочу отдельной темой замутить.
Название: Re: Re: Модем 3g
Отправлено: DdShurick от 26 Октябрь 2016, 09:45:31
Хочу отдельной темой замутить.
Да, не привязанной к PRA.

Пробую варианты запуска посредством udev. Возникли проблемы:
- если модем подключен до загрузки системы, то стартует слишком рано. Для wvdial это безразлично, а графическая часть не работает.
- при повторном включении модема (перетыкании) "попугаемерка" (tray3Gcsq) зависает. Почему, не понял.
Название: Re: 3G-модем.
Отправлено: sfs от 26 Октябрь 2016, 10:08:23
Да, не привязанной к PRA.
Не хотите - как хотите :(
Перенес. Теперь тесторов вообще не дождетесь
Свои наработки из этой темы перенес в ПРА. Спасибо за сотрудничество
Название: Re: 3G-модем.
Отправлено: DdShurick от 26 Октябрь 2016, 19:16:48
 Зря вы так. Я имел в виду, что делаю для всех, а не специально для PRA.
Теперь тесторов вообще не дождетесь
Как будто они были
Свои наработки из этой темы перенес в ПРА.
Ваше право
Спасибо за сотрудничество
Пожалуйста
Название: Re: 3G-модем.
Отправлено: sfs от 27 Октябрь 2016, 11:32:53
делаю для всех
Ну наконец-то. Раньше было "только для себя"  :)
Вот (http://forum.puppyrus.org/index.php?topic=19243.0) "все" нашего форума.
Нужен проверенный автором в ПРА модуль
Название: Re: 3G-модем.
Отправлено: DdShurick от 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 при перезагрузке не обнуляется. Может я не учёл какие-нибудь особенности Арча?
Название: Re: 3G-модем.
Отправлено: sfs от 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= ? Вроде и не должен.. А зачем? Программы, которые туда пишут по идее сами должны подчищать
Название: Re: 3G-модем.
Отправлено: DdShurick от 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
Название: Re: 3G-модем.
Отправлено: sfs от 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 (http://m2msupport.net/m2msupport/atcsq-signal-quality/)?
Я в итоге так сделал
Код
echo $c| awk '{print "-"113-'$c'*2"dbm ("int('$c'*3.33334)"%)"}'
Название: Re: 3G-модем.
Отправлено: sfs от 29 Октябрь 2016, 10:26:14
Возвращаясь к теме определения режима LTE 3G 2G:
Код
# timeout 5 awk '/^\^HCSQ/ {print $0}' /dev/ttyUSB1
^HCSQ:"LTE",35,37,141,30
5 - поиграть. Если на выходе  пусто - увеличить
Возможно, зависит от модели модема
Кто бы проверил...
Название: Re: 3G-модем.
Отправлено: DdShurick от 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"
Название: Re: 3G-модем.
Отправлено: sfs от 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
Это проскакивает без доп. команд постоянно
Возможно только на моем модеме. Кто может проверить?


Название: Re: 3G-модем.
Отправлено: DdShurick от 29 Октябрь 2016, 15:02:57
Какие для именно этой темы?
Горячее подключение/отключение.
У меня не ошибался.
А у меня ошибался
Это проскакивает без доп. команд постоянно
У меня нет
Название: Re: 3G-модем.
Отправлено: DdShurick от 30 Октябрь 2016, 09:08:42
 После тестирования на PRA-retro и Altlinux-p7 (IceWM, no systemd, frugal) вывод: всё, что я наваял никуда не годится. Надо переделывать.
Название: Re: 3G-модем.
Отправлено: sfs от 30 Октябрь 2016, 09:40:56
 :'( Присмотрелись бы к netctl ...
Название: Re: 3G-модем.
Отправлено: DdShurick от 30 Октябрь 2016, 11:32:30
Присмотрелись бы к netctl ...
Если я к нему присмотрюсь, там живого места не останется.
Название: Re: 3G-модем.
Отправлено: sfs от 30 Октябрь 2016, 11:43:04
В netctl можно писать свои коннекторы - т.е. это вписывается в его концепцию
Я один уже написал - wvdial
Название: Re: 3G-модем.
Отправлено: DdShurick от 30 Октябрь 2016, 12:02:39
 Зазве netctl поддерживает горячее подключение модема?
Название: Re: 3G-модем.
Отправлено: sfs от 30 Октябрь 2016, 12:16:54
Под горячим понимается - воткнул модем - он автоподключился ?
На мой взгляд - спорный функционал
Есть автопереключение (https://wiki.archlinux.org/index.php/Netctl_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#.D0.90.D0.B2.D1.82.D0.BE.D0.BC.D0.B0.D1.82.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.BE.D0.B5_.D0.BF.D0.B5.D1.80.D0.B5.D0.BA.D0.BB.D1.8E.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BF.D1.80.D0.BE.D1.84.D0.B8.D0.BB.D0.B5.D0.B9) профилей - я не заморачивался
Название: Re: 3G-модем.
Отправлено: DdShurick от 30 Октябрь 2016, 12:27:05
воткнул модем - он автоподключился ?
Да, при наличии разрешения от пользователя.
Название: Re: 3G-модем.
Отправлено: DdShurick от 05 Ноябрь 2016, 08:49:06
 На сегодняшний день есть два варианта tray3Gcsq и tray3Grssi. У них один и тот же недостаток - зависание, как выяснилось по вине модема. Модем, особенно старый, не всегда своевременно отвечает на посланную команду. Если не уложился в интервал - висяк. Второй минус - постоянно занят управляющий порт модема. Обойти можно отказавшись от постоянной индикации силы сигнала. Например запрашивать через меню по ПКМ. Запуск и остановка wvdial - клик по значку. Так устроит?
Если найду приемлемый декодер USSD, можно добавить запрос баланса и прочего.
Название: Re: 3G-модем.
Отправлено: sfs от 05 Ноябрь 2016, 09:54:28
tray3Gcsq и tray3Grssi. У них один и тот же недостаток - зависание, как выяснилось по вине модема.
В NM ведь не зависает
Модем, особенно старый, не всегда своевременно отвечает на посланную команду
Я в своем traygsm подставил костыль - не уложился - оставляем прошлое значение. Висяков не было
Второй минус - постоянно занят управляющий порт модема
Если туда отправлять echo - это занят или что Вы под "занят" понимаете?
Чем плохо что занят?
Обойти можно отказавшись от постоянной индикации силы сигнала. Например запрашивать через меню по ПКМ. Запуск и остановка wvdial - клик по значку. Так устроит?
Как-то не очень
Мой traygsm у Вас точно не работает?
сли найду приемлемый декодер USSD, можно добавить запрос баланса и прочего.
Вот это очень интересно
Название: Re: 3G-модем.
Отправлено: DdShurick от 05 Ноябрь 2016, 12:19:27
В NM ведь не зависает
Точно точно? Никогда никогда? ;)
Мой traygsm у Вас точно не работает?
Код
# ./traygsm
./traygsm: line 4: pgrep: not found
cp: can't stat '/usr/share/pixmaps/nm-signal-0.png': No such file or directory
# ./traygsm: line 9: ntf: not found
Кроме того, это из пушки по воробьям и видит только уже действующее соединение.
Вот это очень интересно
Код
# ./ussd /dev/ttyUSB2 *105# y
OCTATOK 15.65 p. *111*29# - популярная психология (3руб/день)
К сожалению исходник потерян :(
Название: Re: 3G-модем.
Отправлено: DdShurick от 05 Ноябрь 2016, 21:23:11
 Сделал "ожидалку иксов". Требует два аргумента, из которых после запуска иксов формирует команду "prog arg &". Заточена под запуск GUI udev-ом.
Исходник:
Код
/* Waitx - ожидание загрузки X. GPL v2, DdShurick */

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

FILE *fd;
char cmd[32]="";
int n=0;

int main(int argc, char **argv) {

if (argc<3) { printf("usage: waitx comand device\n"); exit(1); }
//формируем команду
strcat(cmd,argv[1]);
strcat(cmd," ");
strcat(cmd,argv[2]);
strcat(cmd," &");
//ожидаем иксы
while((fd=fopen("/tmp/.X0-lock","r"))==NULL) {
sleep(1);
if(n==32) exit(1); //через полминуты самоликвидируемся
n = n + 1;
}
fclose(fd);
system("export DISPLAY=:0");
system(cmd);//запускаем указанную в argv[1] программу
exit(0);
}
Название: Re: 3G-модем.
Отправлено: sfs от 05 Ноябрь 2016, 21:50:09
исходник потерян :(
Это (https://sourceforge.net/projects/ussdq/) ?
Название: Re: 3G-модем.
Отправлено: DdShurick от 05 Ноябрь 2016, 22:12:55
Это ?
Нет, этот на Gambas :(
Название: Re: 3G-модем.
Отправлено: DdShurick от 02 Декабрь 2016, 21:38:12
 Удалось победить нестабильность tray3Gcsq. Оказалось "собака порылась" совсем не там, где искал. Во всех инструкциях написано "echo AT\r\n", а оказалось, что перевод каретки "\r" лишний. Убрал - заработало, а до этого модем периодически возвращал "ERROR" и программа висла.
 Не всегда можно верить тому, что написано. :)
Название: Re: 3G-модем.
Отправлено: DdShurick от 04 Декабрь 2016, 09:39:03
 Какие иконки лучше поставить? Смотреть здесь (https://github.com/DdShurick/3Gtray).
Название: Re: 3G-модем.
Отправлено: sfs от 05 Декабрь 2016, 09:08:29
Какие иконки лучше поставить?
cell_*.svg из пупи и пра (070*pfs pixmaps)

Я написал на yad аналог network_tray. Через fifo заряжаю туда демоном любую иконку и тултип
Выложить?
Название: Re: 3G-модем.
Отправлено: DdShurick от 05 Декабрь 2016, 10:09:50
Выложить?
Не надо, Yad меня давно уже не интересует.
Название: Re: 3G-модем.
Отправлено: sfs от 05 Декабрь 2016, 10:11:19
Yad меня давно уже не интересует.
чем не угодил?
Название: Re: 3G-модем.
Отправлено: DdShurick от 05 Декабрь 2016, 10:24:01
чем не угодил?
Не помню, давно это было. Он тогда ещё Zenity назывался.
А чем плох "simple systray applet example by Rodrigo De Castro"?
Название: Re: 3G-модем.
Отправлено: sfs от 05 Декабрь 2016, 10:32:27
Он тогда ещё Zenity назывался.
yad с ним частично совместим, но автор другой, размер меньше, функционал больше
чем плох "simple systray applet example by Rodrigo De Castro"?
СИ? Не универсально
Умеет
Через fifo заряжаю туда демоном любую иконку и тултип
?
Название: Re: 3G-модем.
Отправлено: DdShurick от 07 Декабрь 2016, 22:21:48
 Sfs, не "забалтывай" тему. Вернёмся к нашим баранам.
Методом гугления и тыка сделал свой декодер ussd, сильно дефективный. Но работает. Запрос забит *105# (баланс tele2).
Код
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int main(void) {

FILE *fd;
char str[11];
int c;
//открываем порт модема на чтение + запись
if ((fd = fopen("/dev/ttyUSB2","r+"))==NULL) exit(1);
//отправляем ussd запрос *105# преобразованный в hexdump
fputs("AT+CUSD=1,AA18AC3602,15\n",fd);
//сочетание ",72" всегда стоит в конце ответа на ussd запрос, читаем до него по 10 знаков + перенос строки
    while ((strstr(str,",72"))==NULL) {
fgets(str,11,fd);
//"+CUSD:" - начало ответа, с этого места читаем подробнее, по 4 знака + перенос строки
if ((strstr(str,"+CUSD:"))!=NULL) {
while ((strstr(str,",72"))==NULL) {
fgets(str,5,fd);
//преобразуем строку (char str) в шестнадцатеричное число и выводим его в виде знака
sscanf(str,"%x", &c);
putchar(c);
}
}
}
//прикрываем лавочку
fclose(fd);
printf("\n");
return 0;
}
Код
# ./ussd
OCTATOK 14.09 p. #A;C30 '15I0==K9 ?;0B56'. =D: *122# 8;8 6377
Кириллицу не понимает, это надо ещё решать.
Название: Re: 3G-модем.
Отправлено: sfs от 08 Декабрь 2016, 09:20:41
сильно дефективный.
Чем?
баланс tele2
А как для прочих?
Кириллицу не понимает
Т.е. ответ по русски крякозябрами?
Название: Re: 3G-модем.
Отправлено: DdShurick от 08 Декабрь 2016, 09:53:35
А как для прочих?
Надо сделать окно ввода ussd. Оно уже есть готовое, для ввода PIN, надо добавить. Но сначала - кириллица.
Т.е. ответ по русски крякозябрами?
Нет, печатает знаки. Вот текст ответа на запрос:
Код
+CUSD: 0,"004F0043005400410054004F004B002000310034002E0030003900200070002E0020041B04380447043D044B04390020043A043004310438043D043504420020043504490435002004430434043E0431043D043504350020043D04300020006D0079002E00740065006C00650032002E00720075",72

OK
Здесь (https://unicode-table.com/ru/) таблица символов юникода. По ней можно прочитать сообщение если разбить его на четырёхзначные шестнадцатеричные числа (SMS кстати тоже). Но мой декодер ошибается на числах типа 04??, потому и дефективный.
Название: Re: 3G-модем.
Отправлено: DdShurick от 08 Декабрь 2016, 16:52:29
 "Дефективность" победил. Вот результат:
Код
# ./ussd1

OCTATOK 14.09 p. Целый Портфель 3G интернета в Вашем планшете: 693 б/пп#
Название: Re: 3G-модем.
Отправлено: sfs от 08 Декабрь 2016, 17:00:40
Хорошо бы src и бинарники
Название: Re: 3G-модем.
Отправлено: DdShurick от 08 Декабрь 2016, 17:30:38
 Исходник (под tele2)
Код
#include <wctype.h>
#include <wchar.h>
#include <locale.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define UNICODE

int main(void) {

    wint_t c;
FILE *fd;
char str[11];
setlocale (LC_ALL, "ru_RU.UTF-8");

if ((fd = fopen("/dev/ttyUSB2","r+"))==NULL) exit(1);
fputs("AT+CUSD=1,AA18AC3602,15\n",fd);
    while ((strstr(str,",72"))==NULL) {
fgets(str,11,fd);
if ((strstr(str,"+CUSD:"))!=NULL) {
while ((strstr(str,",72"))==NULL) {
fgets(str,5,fd);
sscanf(str,"%x", &c);
putwchar(c);
}
}
}
fclose(fd);
printf("\n");

    return 0;
}
После допиливания планирую встроить в tray3Gcsq.
Название: Re: 3G-модем.
Отправлено: sfs от 08 Декабрь 2016, 17:36:57
Надо ли встраивать? Чем хуже отдельно вызывать? Может еще где пригодится...
Название: Re: 3G-модем.
Отправлено: DdShurick от 08 Декабрь 2016, 20:29:34
Надо ли встраивать?
Можно и не встраивать, а вызывать через system, но тогда дублирующий код будет.
Может еще где пригодится...
Код
# ./ussd1             

Ваша заявка принята.Сбербанкк
Запрос *900*01# кодировал здесь (http://smstools3.kekekasvi.com/topic.php?id=288)
Название: Re: 3G-модем.
Отправлено: DdShurick от 10 Декабрь 2016, 20:54:33
 Следующая часть, ussdhex:
Код
#include <stdio.h>
#include <string.h>

char buf[84];

void septin(int num) {

int i;
char str[2]="";

for(i=6; i>=0; --i) {
sprintf(str,"%d",(num >> i)&1);
strcat(buf,str);
}
}

long bintohex(char *s) {

long n;

while (*s == '0') s++;

if (strlen(s) > 32) return EOF;
else if (*s == '\0') return 0;

for (n = 0; *s != '\0'; s++) {
if (*s == '0') continue;
else if (*s != '1') return EOF;
n += 01 << (strlen(s)-1);
    }
    return n;   
}


int main(int argc, char **argv) {

int c, i, n, p, l;
char str[9], str1[5], buf1[90];
p=strlen(argv[1])-1;
//отправляем в буфер по 7 бит в обратном порядке.
for(p; p>=0; --p) {
sscanf(argv[1]+p,"%c", &c);
septin(c);
}
//вычисляем количество недостающих бит и заполняем нулями до кратного 8
i = strlen(buf);
n = 8-(i-((i/8) * 8));
if(n!=0 && n!=8) { for(n; n>0; --n) strcat(buf1,"0"); }
strcat(buf1,buf);
//читаем по 8 бит бит в обратном порядке, разбиваем пополам и по одному знаку перекодируем в hex
str[sizeof str-1] = '\0';
l = strlen(buf1)-8;
for(l; l>=0; l=l-8) {
strncpy(str,buf1+l,8);
strncpy(str1,str,4);
printf("%lX", bintohex(str1));
printf("%lX", bintohex(str+4));
}
//факт налицо :)
return 0;
}
Работает так:
Код
# ./ussdhex *102#
AA184C3602#
# ./ussdhex *900*01#
AA1C0CA682C546#
Собрал ussd1:
Код
root@pra:live# /mnt/sda3/live/Git/3Gtray/ussd1 *105#
OCTATOK 14.09 p. Целый Портфель 3G интернета в Вашем планшете: 693 б/пп
Как видите, в PRA-retro работает.
Название: Re: 3G-модем.
Отправлено: DdShurick от 11 Декабрь 2016, 17:28:58
 Вопросы. У кого модемы не Huawei, какие из них требуют отправки ussd-запроса в виде hex? Делать ли ussd1 работающей автономно или включить в состав 3Gmodem?
Название: Re: 3G-модем.
Отправлено: sfs от 11 Декабрь 2016, 17:58:58
автономно
    баланс tele2
А как для прочих?
Готов прямо сейчас проверить : билайн, хуавей, пра64
Название: Re: 3G-модем.
Отправлено: DdShurick от 11 Декабрь 2016, 18:23:18
Готов прямо сейчас проверить : билайн, хуавей, пра64
Проверяйте. У меня на PRA64 модем не определился, а на PRA-retro определяется только после перетыкания.
автономно
Хорошо, так даже интереснее, придётся встраивать определитель управляющего порта модема.
Но сейчас меня интересуют другие модемы, например ZTE принимает запрос в виде открытого текста, Huawei только в hex-виде, а другие?
Название: Re: 3G-модем.
Отправлено: DdShurick от 11 Декабрь 2016, 18:59:05
Как на мегафоне проверить?
Код
# ./ussd1 *100# 
USSD команды Мегафон - полный список (http://megafongid.com/stati/ussd-komandy-megafon-polnyj-spisok).
Название: Re: 3G-модем.
Отправлено: midnighter от 11 Декабрь 2016, 19:15:28
# ./ussd1 *100# 
Пробовал - в ответ тишина.
Пробовал хекс подставлять - ошибка сегментирования.
Название: Re: 3G-модем.
Отправлено: midnighter от 11 Декабрь 2016, 19:58:10
А разница есть в каком режиме модем - modem; ndis?
Название: Re: 3G-модем.
Отправлено: sfs от 11 Декабрь 2016, 20:12:06
Проверяйте.
http://telecomspec.ru/info-beeline/ussd-komandy/
Код
# ./ussd1_64  *102# 
# ./ussd1_64  *111#
#
т.е. тоже тишина (от root)
 
У меня на PRA64 модем не определился,
Как узнать определился\нет?
Код
# ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1
достаточно?

И кстати AT+CSQ\r\n - у меня работает в sh
Название: Re: 3G-модем.
Отправлено: DdShurick от 11 Декабрь 2016, 22:15:20
Как узнать определился\нет?
Код
# ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1
достаточно?
Вот их то и нет в PRA64, а в PRA-retro появляются только после перетыкания модема. Причина - porteus. В Richy я делаю udevadm trigger при запуске.
/etc/inittab:
Код
::wait:/bin/mount -a
::wait:/sbin/udevd --daemon
::wait:/sbin/udevadm trigger
::once:/bin/run-parts -a start /etc/init.d
tty1::respawn:/sbin/getty -n -l /bin/autologin 38400 tty1
tty2::respawn:/sbin/getty 38400 tty2
tty3::respawn:/sbin/getty 38400 tty3
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
Почему в ответ тишина: у вас модем определился как USB0 + USB1 (USB1 - управляющий), а у меня USB2 управляющий, под него и написано. Перекопмилируйте с заменой USB2 на USB1. Чтобы было универсально, надо автоматически определять управляющий порт, циклом пока не получается, виснет, если использовать udev, то зависит от rules и check3Gtty, а вы этого не хотите.
Название: Re: 3G-модем.
Отправлено: sfs от 12 Декабрь 2016, 00:07:53
Вот их то и нет в PRA64
Я же не руками написал ls /dev/ttyUSB*
Причина - porteus.
porteus - это initrd. Там нет udevd
udevd в minirc:
Код
        /usr/bin/udevd --daemon
        /usr/bin/udevadm trigger --action=add --type=subsystems
        /usr/bin/udevadm trigger --action=add --type=devices

Чтобы было универсально, надо автоматически определять управляющий порт,
Код
ls /dev/ttyUSB* |tail -1
Название: Re: 3G-модем.
Отправлено: sfs от 12 Декабрь 2016, 00:37:13
Свежего исходника не нашел
http://telecomspec.ru/info-beeline/ussd-komandy/
Код
# ./ussd1_64  *102# 
# ./ussd1_64  *111#
#
делаю
Код
t="`ls /dev/ttyUSB* |tail -1`"
sudo echo -e "AT+CUSD=1,AA184C3602,13\n" > $t
В другом окне смотрю:
Код
sudo cat /dev/ttyUSB1 |egrep -v '^$'
Пока
Код
AT+CUSD=1,AA184C3602,15
+CME ERROR: Incorrect parameters
Как проавильно послать запрос для билайна?
Название: Re: 3G-модем.
Отправлено: DdShurick от 12 Декабрь 2016, 08:04:01
Код
ls /dev/ttyUSB* |tail -1
Для Huawei - да, такое прокатит, а как быть с ZTE, где номера портов в обратном порядке?
Как правильно послать запрос для билайна?
Код
AT+CUSD=1,AA184C3602,15
Команда правильная. Выбранный порт на AT, ATI, ATZ откликается?
Название: Re: 3G-модем.
Отправлено: sfs от 12 Декабрь 2016, 09:26:28
Для Huawei - да, такое прокатит, а как быть с ZTE, где номера портов в обратном порядке?
wvdialconf и пропарсить
Выбранный порт на AT, ATI, ATZ откликается?
Да. как видите ответил и про качество сигнала с него же снимаю
Название: Re: 3G-модем.
Отправлено: DdShurick от 12 Декабрь 2016, 10:06:25
wvdialconf и пропарсить
Не катит. На собственном опыте убедился, был у меня ZTE MF100.
Да. как видите ответил
А если открытым текстом "AT+CUSD=1,*102#,15"? Этот самый ZTE у меня только открытый текст понимал. Старый вариант ussd (https://yadi.sk/d/mJv4WUuO33ARXu) работает? (./ussd /dev/ttyUSB2 *102# y) Последний аргумент y - hex, n - text.
Название: Re: 3G-модем.
Отправлено: sfs от 12 Декабрь 2016, 10:57:39
Старый вариант ussd работает?
Так было бы наиболее удобно
Дайте исходник или 64. Вряд ли доберусь до модема раньше выходных
Название: Re: 3G-модем.
Отправлено: DdShurick от 12 Декабрь 2016, 12:27:09
Дайте исходник
Исходник потерян :( Я уже об этом говорил.
Название: Re: 3G-модем.
Отправлено: DdShurick от 19 Декабрь 2016, 22:49:12
 Сделал с ключами
Код
# ./ussd3 -c *105# -i ttyUSB2

OCTATOK 14.09 p. Быстрое пополнение счета др. абонента Tele2. Инфо 6299#
"-c" (command) ussd-запрос
"-i" (interface) порт модема
"-n" (not encode) для модемов с цифровым вводом ussd. Например zte mf100.
Название: Re: 3G-модем.
Отправлено: sfs от 20 Декабрь 2016, 09:29:20
Сделал с ключами
Дайне 64бит или исходник
Раньше выходных без модема. Не забыть бы проверить...
Название: Re: 3G-модем.
Отправлено: DdShurick от 20 Декабрь 2016, 10:10:09
 Сделал, но PRA64 не желает работать с модемом. Ни один из ttyUSB* не отвечает. После перетыкания модема ttyUSB* вообще пропали. :( Вы уж со своей системой разбирайтесь сами, не хочу лезть со своим уставом в чужой монастырь.
Название: Re: 3G-модем.
Отправлено: sfs от 20 Декабрь 2016, 10:24:42
Ни один из ttyUSB* не отвечает.
У меня нет такого эффекта
Название: Re: 3G-модем.
Отправлено: DdShurick от 20 Декабрь 2016, 20:31:39
У меня нет такого эффекта
А у меня такой эффект присутствует. Проверял методом двух терминалов:
Из-под рута открываем два терминала. В первом "слушаем"
Код
# cat /dev/ttyUSB0
Во втором командуем
Код
# echo AT > /dev/ttyUSB0
#
Если всё нормально, получаем в первом терминале отклик
Код
# cat /dev/ttyUSB0
AT   

OK
В PRA64 отклика нет. Кто виноват?
Название: Re: 3G-модем.
Отправлено: DdShurick от 21 Декабрь 2016, 10:37:27
Так нормально будет?
Код
# ./ussd3 -h          
Usage:
ussd [-n] -i <device> -c <command>
Options:
-h  Display help
-i  modem device
-c ussd command
-n  not hex, text.
Название: Re: 3G-модем.
Отправлено: sfs от 21 Декабрь 2016, 23:58:54
У меня нет такого эффекта
см. скрин

Код
root@pra64:~# ./ussd3_64  -c *102# -i ttyUSB1
Для продолжения нажмите любую клавишу...
root@pra64:~# ./ussd3_64  -c *111# -i ttyUSB1
пауза и пусто


Название: Re: 3G-модем.
Отправлено: DdShurick от 22 Декабрь 2016, 08:00:01
Для продолжения нажмите любую клавишу...
У меня этого не было.
Скачал PRA64 посвежее.
Код
root@pra64:live# cd /mnt/sda3/live/Git/3Gtray/
root@pra64:live# ./ussd3_64 -c *105# -i ttyUSB2
OCTATOK 14.09 p. Все музыкальные хиты. Набирайте *605*186# (7 дн. беспл.))
Переткнул модем
Код
root@pra64:3Gtray# ls /dev/ttyUSB*
ls: невозможно получить доступ к '/dev/ttyUSB*': Нет такого файла или каталога
:(
Название: Re: 3G-модем.
Отправлено: sfs от 22 Декабрь 2016, 08:52:37
Так нормально будет?
да
Переткнул модем
Т.е. вообще потерялся
Пробовали и systemd и minirc?
Название: Re: 3G-модем.
Отправлено: DdShurick от 22 Декабрь 2016, 10:30:33
Пробовали и systemd и minirc?
Пробовал "из коробки"
Такое происходит если не срабатывает usb_modeswitch. Как я понял, у вас модем переключен в режим "modem only", usb_modeswitch не требуется. У меня специально прошита заводская прошивка
Код
Manufacturer: huawei
Model: E150
Revision: 11.609.82.02.143
Второй модем
Код
Manufacturer: huawei
Model: E173
Revision: 11.126.85.00.209
Название: Re: 3G-модем.
Отправлено: sfs от 22 Декабрь 2016, 13:21:40
Скачал PRA64 посвежее.
Пробовал "из коробки"
Коробок две - fat c systend и light c minirc
у вас модем переключен в режим "modem only"
сейчас - да, но я как раз под этот модем  обновлял usb_modeswitch
Вроде у меня huawei E150

...По итогу - проще зайти на страницу прова и посмотреть баланс :(
Название: Re: 3G-модем.
Отправлено: DdShurick от 22 Декабрь 2016, 16:19:41
Коробок две - fat c systend и light c minirc
Тогда minirc
...По итогу - проще зайти на страницу прова и посмотреть баланс
Это да, мегафон даже пароль не спрашивает, определяет автоматически.
Единственное серьёзное достоинство ussd-запросов - работа при отрицательном балансе.
Код
# ./ussd3 -i ttyUSB2 -c *100#

-101.87р.+1000р за верные ответы на вопросы *242# (5р/день))#
(Huawei-173 MegaFon)
Название: Re: 3G-модем.
Отправлено: DdShurick от 23 Декабрь 2016, 09:23:12
Проверил в PRA64 40-usb_modeswitch.rules на срабатывание, не срабатывает.
Название: Re: 3G-модем.
Отправлено: sfs от 23 Декабрь 2016, 09:29:32
minirc? Проблема в udev  40-usb_modeswitch.rules  или modeswitch ?
Название: Re: 3G-модем.
Отправлено: DdShurick от 23 Декабрь 2016, 09:40:51
minirc?
Да.
Проблема в udev  40-usb_modeswitch.rules  или modeswitch ?
До modeswitch процесс не доходит, в правиле ключи соответствуют, udev у нас вроде бы одинаковый. Непонятно это.
Название: Re: 3G-модем.
Отправлено: sfs от 23 Декабрь 2016, 09:57:01
Я уже не впрягусь переключать модем в флэшку.
Надежда разобраться только на Вас. Попробуйте подключить 075-Systemd - может быть поможет понять...
Название: Re: 3G-модем.
Отправлено: DdShurick от 23 Декабрь 2016, 16:46:08
Попробуйте подключить 075-Systemd
Даже и не подумаю
Скомпилировал свежий usb-modeswitch-2.4.0. Результат:
Код
live@pra64:~$ ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB2
root@pra64:3Gtray# ./ussd3_64 -i ttyUSB2 -c *105#
OCTATOK 14.09 p. Все музыкальные хиты. Набирайте *605*186# (7 дн. беспл.))root@pra64:3Gtray# usb_modeswitch -e

 * usb_modeswitch: handle USB devices with multiple modes
 * Version 2.4.0 (C) Josua Dietze 2016
 * Based on libusb1/libusbx
При этом убедился ещё в работоспособности udevd-201 из Альта.
Название: Re: 3G-модем.
Отправлено: sfs от 23 Декабрь 2016, 16:54:26
т.е. все получилось в ПРА64 и проблема была в несвежем usb-modeswitch-2.4.0 ?
Выложите...

udevd-201 из Альта был необходим?
https://www.kernel.org/pub/linux/utils/kernel/hotplug/ - 182 самый свежий, потом уже из systemd
Название: Re: 3G-модем.
Отправлено: DdShurick от 23 Декабрь 2016, 17:25:52
udevd-201 из Альта был необходим?
Нет, просто любопытство.
usb-modeswitch-2.4.0 + data (https://cloud.mail.ru/public/ATLa/6B3RUZXV6)
проблема была в несвежем usb-modeswitch-2.4.0 ?
Скорее всего в неправильной компиляции. Я компилировал "make install-static" (без tcl).
Название: Re: 3G-модем.
Отправлено: sfs от 24 Декабрь 2016, 08:09:50
Я компилировал "make install-static" (без tcl).
Я тоже и версия та же. В Вашем модуле базы свежее

У меня без улучшений ./ussd3_64 -i ttyUSB1 -c *102#
И понятно почему:
Код
ati
Manufacturer:
Model: E3372
Revision: 21.300.05.00.143
IMEI: 867012023200295

AT+CUSD=1,AA184C3602,13\n
+CME ERROR: Incorrect parameters
С такой активностью сообщества и количеством провайдеров и моделей модемов - запаримся сделать универсально  :'(

Чтобы не париться с 2 терминала - putty
Название: Re: 3G-модем.
Отправлено: DdShurick от 24 Декабрь 2016, 08:41:49
Чтобы не париться с 2 терминала - putty
По мне с двумя терминалами проще, а ещё проще modem-stats.
Код
AT+CUSD=1,AA184C3602,13\n
+CME ERROR: Incorrect parameters
В конце должно быть не 13 а 15 и попробуйте с ключом "-n"
Название: Re: 3G-модем.
Отправлено: sfs от 24 Декабрь 2016, 08:51:47
В конце должно быть не 13 а 15 и попробуйте с ключом "-n"
оба рецепта не дали изменений к лучшему
Название: Re: 3G-модем.
Отправлено: DdShurick от 24 Декабрь 2016, 09:03:13
Здесь (https://github.com/DdShurick/3Gtray) modem-stats_64. Что выдаёт "AT+CUSD=?" ?
Название: Re: 3G-модем.
Отправлено: sfs от 24 Декабрь 2016, 09:42:29
Код
./modem-stats_64 -c "AT+CUSD=?" /dev/ttyUSB1

+CUSD: (0-2)
OK
Название: Re: 3G-модем.
Отправлено: DdShurick от 24 Декабрь 2016, 10:04:30
А если полный запрос?
Код
# modem-stats -c AT+CUSD=1,AA184C3602,15 /dev/ttyUSB1
Возможно запрос потребуется взять в кавычки.
Название: Re: 3G-модем.
Отправлено: sfs от 24 Декабрь 2016, 10:07:45
Код
+CME ERROR: Incorrect parameters
одинаково с кавычками и без
Название: Re: 3G-модем.
Отправлено: DdShurick от 24 Декабрь 2016, 12:04:37
 А если так?
Код
# modem-stats -c AT+CUSD=1,'*102#',15 
С разными кавычками и без?
Название: Re: 3G-модем.
Отправлено: sfs от 24 Декабрь 2016, 12:23:30
Код
modem-stats_64 -c AT+CUSD=1,'*102#',15 /dev/ttyUSB1 
+C

AT


NO CARRIER

ATAT

T
NO CARRIER
AT

OK
остальные варианты +CME ERROR: Incorrect parameters
Название: Re: 3G-модем.
Отправлено: DdShurick от 24 Декабрь 2016, 12:41:24
остальные варианты +CME ERROR: Incorrect parameters
Понятно. У вас модем принимает команды текстом. Почему "NO CARRIER"? Симка заблокирована или связи нет?
Название: Re: 3G-модем.
Отправлено: sfs от 24 Декабрь 2016, 12:49:52
Связи нет. С лета не платил. Возможно и заблокирована
Кто еще может попробовать?
Название: Re: 3G-модем.
Отправлено: DdShurick от 25 Декабрь 2016, 18:02:43
С лета не платил.
Обычно блокируют через три месяца, если долгов нет.
Доработал с учётом "Нет ответа".
Проверил на универсальность в Altlinux Simply-7.0.5 (64bit) - работает. Такую бы утилиту лет пять назад. Цены бы ей не было.
Название: Re: 3G-модем.
Отправлено: sfs от 25 Декабрь 2016, 19:15:46
Код
# ./ussd64 -c *102# -i /dev/ttyUSB1
/dev//dev/ttyUSB1 занят
Название: Re: 3G-модем.
Отправлено: DdShurick от 25 Декабрь 2016, 19:30:57
Код
# ./ussd64 -c *102# -i /dev/ttyUSB1
/dev//dev/ttyUSB1 занят
"/dev/" дописывает программа, надо указать только "ttyUSB1".
Название: Re: 3G-модем.
Отправлено: sfs от 25 Декабрь 2016, 20:02:36
./ussd64 -c *102# -i ttyUSB1
перезагружает комп
Название: Re: 3G-модем.
Отправлено: DdShurick от 25 Декабрь 2016, 21:06:52
перезагружает комп
Странно это.
Название: Re: 3G-модем.
Отправлено: Pro от 26 Декабрь 2016, 02:07:41
Обычно блокируют через три месяца, если долгов нет.
МТС через 5 месяцев неактивности переводит на тариф Базовый в котором ежемесячная плата :( будьте бдительны
Название: Re: 3G-модем.
Отправлено: sfs от 26 Декабрь 2016, 09:17:28
МТС через 5 месяцев неактивности переводит на тариф Базовый в котором ежемесячная плата
А если новую симку купить? Коллекторов пришлют? У меня Билайн

Перед перезагрузом "Нет ответа" можно успеть увидеть
Название: Re: 3G-модем.
Отправлено: DdShurick от 26 Декабрь 2016, 09:46:30
А если новую симку купить?
Зачем? Можно с телефона поставить, только через модем в интернет не вылезать.
Переделал на стандартный SIGTERM
Название: Re: 3G-модем.
Отправлено: sfs от 26 Декабрь 2016, 09:52:55
Можно с телефона поставить
Не понял что поставить?
Проверить быстро не смогу
Неужели больше ни у кого модемов не осталось?
Название: Re: 3G-модем.
Отправлено: DdShurick от 26 Декабрь 2016, 09:57:43
Не понял что поставить?
Симку
Неужели больше ни у кого модемов не осталось?
Они стесняются
Название: Re: 3G-модем.
Отправлено: sfs от 26 Декабрь 2016, 09:59:37
Т.е. для тестов есть разница - оплаченная симка или нет?
Название: Re: 3G-модем.
Отправлено: DdShurick от 26 Декабрь 2016, 10:15:12
Т.е. для тестов есть разница - оплаченная симка или нет?
Не совсем так. Разница, если симка заблокирована. У меня мегафоновская симка с долгом, но не заблокирована. С долгами не блокируют, это равносильно списанию долга, а вот если в плюсе и не пользуешься более трёх месяцев, то запросто блокируют. Всем рулит выгода.