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

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

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

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 26680
  • Репутация: +182/-0
    • PuppyRus-A
Re: Re: Модем 3g
« Ответ #45 : 20 Октябрь 2016, 14:50:07 »
пути для Richy, для "непутёвого" PRA надо переписывать. Вопрос, как именно?)
Пути не надо переписывать. Нельзя в сквоше делать папки /bin /sbin
Отключение автостарта - отлично
Ждем модуль

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 7190
  • Репутация: +168/-2
  • Старый чайник
Re: Re: Модем 3g
« Ответ #46 : 20 Октябрь 2016, 15:50:46 »
Нельзя в сквоше делать папки /bin /sbin
Это я знаю, систему "заклинит". Основной недостаток PRA.
Ждем модуль
Вот вам первый блин. В PRA работает криво, dhcpcd ругается на отсутствие /bin/systemctl. Эта ошибка ломает логику скриптов lan.sh wlan.sh
Проверял в PRA-retro.

Заменил dhcpcd на взятый из richy - заработало.
« Последнее редактирование: 20 Октябрь 2016, 22:02:34 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)
Вопросы: DdShurick@jabber.ru

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 7190
  • Репутация: +168/-2
  • Старый чайник
Re: Re: Модем 3g
« Ответ #47 : 21 Октябрь 2016, 15:41:15 »
Вопросы, предложения возникли?
Не возникли. Молчание знак согласия или всеобщий пофигизм?
Dhcpcd прилагаю.
« Последнее редактирование: 21 Октябрь 2016, 16:01:20 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)
Вопросы: DdShurick@jabber.ru

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 26680
  • Репутация: +182/-0
    • PuppyRus-A
Re: Re: Модем 3g
« Ответ #48 : 21 Октябрь 2016, 17:48:27 »
Тестировать только модем или все виды сетей?

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 7190
  • Репутация: +168/-2
  • Старый чайник
Re: Re: Модем 3g
« Ответ #49 : 21 Октябрь 2016, 19:34:27 »
Тестировать только модем или все виды сетей?
Всё кроме PPPoE.
Экспериментировал с RSSI и AT+CSQ, получается ерунда: экранирую модем железными мисками, в первый момент момент значение падает, но тут же восстанавливается. Срабатывает АРУ.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)
Вопросы: DdShurick@jabber.ru

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 7190
  • Репутация: +168/-2
  • Старый чайник
Re: Re: Модем 3g
« Ответ #50 : 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
« Последнее редактирование: 22 Октябрь 2016, 09:54:07 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)
Вопросы: DdShurick@jabber.ru

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 26680
  • Репутация: +182/-0
    • PuppyRus-A
Re: Re: Модем 3g
« Ответ #51 : 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?



Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 7190
  • Репутация: +168/-2
  • Старый чайник
Re: Re: Модем 3g
« Ответ #52 : 22 Октябрь 2016, 14:13:08 »
3G
Делаю в wvdial.conf [Dialer Beeli] - работает
В up3Gmodem заложена обрезка COPS до 5 знаков. Как будет лучше, исправить wvdial.conf (это будет проще) или убрать обрезку (тогда имеем проблему с последней кавычкой).
Обнаружил неприятную особенность up3Gmodem, срабатывает только один раз, при повторном включении виснет на определении COPS. Помогает только перезагрузка системы. Буду разбираться.
GUI
Очень сырой. От логики работы до подбора иконок
Дизайнер с меня никакой, а вот насчёт логики пожалуйста подробнее.
Мониторинг 3G
Я так понял % не получить - только попугаи... Гуглили?
Обычно берут вывод AT+CSQ и есть формула пересчёта. Цифры в обоих случаях получаются примерно одинаковые.
Зачем писать на си если это можно на sh?
На sh уже не интересно.
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)
Вопросы: DdShurick@jabber.ru

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 7190
  • Репутация: +168/-2
  • Старый чайник
Re: Re: Модем 3g
« Ответ #53 : 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
« Последнее редактирование: 22 Октябрь 2016, 20:53:40 от sfs »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)
Вопросы: DdShurick@jabber.ru

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 26680
  • Репутация: +182/-0
    • PuppyRus-A
Re: Re: Модем 3g
« Ответ #54 : 22 Октябрь 2016, 20:27:22 »
насчёт логики пожалуйста подробнее.
Зачем в меню 2 ярлыка, если второй вызывается из 1го?
Куда сохраняется настроенный конфиг, чем запускается?
тогда имеем проблему с последней кавычкой
sed 's/"$//' - хочется верить что Вы sed на си не будете переписывать
Си поднимает планку на другой уровень
Делать это неоправданно - зло. Не puppy way
Если интересно: "Практические советы по GTK+ (Иконка в System tray)".
и не linux way Это нормально делается через sit и yad

"Попугаи" т.е. % будет не получить?

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 7190
  • Репутация: +168/-2
  • Старый чайник
Re: Re: Модем 3g
« Ответ #55 : 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 кликом по индикатору сети в трее.
« Последнее редактирование: 22 Октябрь 2016, 21:55:53 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)
Вопросы: DdShurick@jabber.ru

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 26680
  • Репутация: +182/-0
    • PuppyRus-A
Re: Re: Модем 3g
« Ответ #56 : 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
« Последнее редактирование: 23 Октябрь 2016, 01:51:26 от sfs »

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 7190
  • Репутация: +168/-2
  • Старый чайник
Re: Re: Модем 3g
« Ответ #57 : 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 работает и без соединения с сетью.
« Последнее редактирование: 23 Октябрь 2016, 09:54:48 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)
Вопросы: DdShurick@jabber.ru

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 7190
  • Репутация: +168/-2
  • Старый чайник
Re: Re: Модем 3g
« Ответ #58 : 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 не работает
Это спионэрено отсюда? Оно вообще не работает никак, просто виснет.
Си поднимает планку на другой уровень
Делать это неоправданно - зло. Не puppy way
Объясняю: ваш любимый ash всего лишь командная оболочка, без других программ ничего не может, си - может.
« Последнее редактирование: 23 Октябрь 2016, 12:36:00 от DdShurick »
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150)
Netbook Acer 722 c6ckk (AMD C-50 Ontario, Radeon HD 6250)
Nettop Asus Eee Box PC B202 (Intel Atom N270, intel GMA 950)
Nettop Asus Eee Box PC EB1007 (Intel Atom D425, Intel GMA 3150)
Вопросы: DdShurick@jabber.ru

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 26680
  • Репутация: +182/-0
    • PuppyRus-A
Re: Re: Модем 3g
« Ответ #59 : 23 Октябрь 2016, 12:48:18 »
Любите вы спорить
В споре рождается истина :)
Во первых так определяется только модем, командный порт не определяется
Вот так определяю командный, после того , как wvdialconf определил основной порт
Код
t0="`awk '/^Modem = / {print $3}' /etc/wvdial.conf |sed 's/[0-9]$//'`"
t="`ls $t0* |tail -1`"
модемами zte не работает.
Это? Или какие особенности? А много ли zte осталось?
у меня несколько модемов разных операторов, и что же, постоянно напрягать мою бедную голову чтобы не перепутать
Они воткнуты одновременно? Вообще это не типовой случай
В netctl есть механизм горячего переключения сетей - но пока в это лезть желания нет
Gnome-ppp лишние команды генерирует
Т.е. перекомпилить с изменением команды набора? Попробую
Одна задача - одна программа, и не надо ля-ля
Перечитайте по ссылки. У Вас виндовый подход (переписывание имеющегося внутри своей проги)
Это вообще никуда не годится. А если я не хочу включать модем? Ведь AT+CSQ работает и без соединения с сетью.
По замыслу tray3g (переименую в traygsm) показывает уровень сигнала подключения
Нет подключения - не нужен
Или Вы хотите  выбрать прова с лучшим сигналом? Это другая задача
В аттаче прикрутил wvdial к netctl средствами netctl. Не надо будет переделывать гуй и пойдет в любом линуксе (дополнительно нужны sit ntf yad).
netctl - перспективный путь. В него любые извраты подключений можно прописать с минимумом кода (есть готовые функции)

Посмотрел yad --notifications - тоже перспективная штука. После запуска через echo команда > fifo можно все изменить (меню иконку ...)
В идеале на нем можно сделать мониторинг в трее с любым меню по клику
« Последнее редактирование: 23 Октябрь 2016, 12:55:43 от sfs »