LINUX.ORG.RU

Звонки входящие и исходящие

 ,


0

1

В общем хотелось бы как-то отвязаться от смартфона, и все упирается только в его способность звонить (скорее даже только отвечать на входящие). Пока раскопал древний 3G-модем, разлочил его и даже сделал исходящий звонок из-под винды.

Завелся он и под линуксом, правда куда-то все время пропадает QMI-порт, который в винде дает работать с модемом как с сетевой картой, а в линуксе только с ним модем работает уже на этапе загрузки. NetworkManager правда часто тупит и даже при доступном этом порте не заводит соединение, и приходится сначала через ModemManager и его mmcli подключаться к сети. Хотя можно и через pppd его завести, но NetworkManager и это не может нормально сделать - пока ручками не создашь директорию для pppd в /run, он будет писать не заведет.

Я думал, найдется какая-нибудь гуевина для легкой работы с модемом, но пока нашел только Modem Manager GUI - адское поделие, которое после того, как уберется в фон (значка в трее при этом нет), может при последующем запуске выдавать не окно, а какие-то куски от окна, разные при каждом запуске. Да и звонить оно кажется не умеет, только отправлять USSD-коды и SMS.

В интернете нашел только статью про обзванивалку на perl, которая в последовательный порт нужным образом пишет данные. Потом наткнулся на материалы про FreePBX и Asterisk, но тут я уже ниасиляю, т.к. с трудом ворочаю сетью и в целом не шарю, а хотелось бы просто узнать - можно ли через USB-модем вообще как-то отвечать на звонки?



Последнее исправление: fumanchez (всего исправлений: 1)

Я не понял какая связь между сетевым подключением и звонками, но если тебе нужна сеть от модема, то выкинь все эти «manager-ы», их писали десктопщики в худшем проявлении. Запускай через pppd.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Я не против, и не заметил разницы при работе с сетью, что через QMI, что через последовательный порт и PPP-соединение, но пока я просто не умею нормально заводить сеть. Хотя по идее, эти порты разделены, чтобы в один пускать сигнал голоса, а через другой гонять байты.

В принципе ModemManager не нужен после того, как модем законнектился, да и по идее это можно делать просто через echo с AT-командой, а NetworkManager я уже снес. Но даже когда лампочка на модеме горит, сеть в системе не появляется, и вроде помогает ip link down wwan0 && ip link up wwan0 (имена я вернул «непредсказуемые», потому что 4 цифры в названии интерфейса это слишком).

fumanchez
() автор топика
Ответ на: комментарий от fumanchez

Но даже когда лампочка на модеме горит, сеть в системе не появляется, и вроде помогает ip link down wwan0 && ip link up wwan0 (имена я вернул «непредсказуемые», потому что 4 цифры в названии интерфейса это слишком).

Посмотри dmesg как модем определяется при подключении к компьютеру.

Например, у Huawei-модемов кроме, собственно сетевого интерфейса и портов модема дополнительно могли быть виртуальный CDROM-диск, картридер (возможно ещё что-то – не помню). Все эти дополнительные интерфейсы лучше отключить, если они не требуются. Это ускорит появление сетевого интерфейса и может сделать работу модема более стабильной.

Но конечно, делай поправку на свой модем. И ещё: отключение портов модема лишит тебя возможности использовать AT-команды – иногда нужно, а вернуть назад не всегда известно как.

master_0K
()
Ответ на: комментарий от master_0K

В /sys/devices девайс состоит из 6 частей - QMI порт, 3 штуки ttyUSB*, кард-ридер и CD с дашбордом. И причем вроде их всегда 6, но модем в lsusb немного по-разному определяется от случая к случаю - отличается имя и PID, видимо за основной порт берется то ttyUSB2, то QMI. Да и просто не заметил эффект от usb_modeswitch.

fumanchez
() автор топика
Ответ на: комментарий от master_0K

Все эти дополнительные интерфейсы лучше отключить И ещё: отключение портов модема лишит тебя возможности использовать AT-команды – иногда нужно, а вернуть назад не всегда известно как.

Есть команда перевода модема в другой режим AT^U2DIAG=XXX, правда я в доках не нашел режим только с сетевыми портами, там штук 10 комбинаций. И есть AT+CFUN=XXX, через нее перевести модем в оффлайн, а потом в онлайн режим.

fumanchez
() автор топика
Ответ на: комментарий от fumanchez

Да и просто не заметил эффект от usb_modeswitch.

без его участия будет только CD-привод (емнип).

QMI порт, 3 штуки ttyUSB*

эти интерфейсы лучше сохранить, остальное можно выключить. Возможно, и вариант с «кастомными» правилами для устройства в udev подойдёт – неиспользуемые интерфейсы игнорируешь, необходимые «определяешь». Но я такого не делал, может просто моя фантазия, что так будет тоже хорошо работать.

Если команда AT^U2DIAG=XXX переведет модем в режим без /dev/ttyUSB*, то AT-команду для отката некуда будет отдать.

Тебе нужно «копать» в сторону таких мануалов – по ссылке не самый лучший образец, но он самый свежий по времени из тех ,что я встречал. В сети их должно быть больше одного и не только на русском.

master_0K
()
Ответ на: комментарий от master_0K

остальное можно выключить

Можно, но смысла в этом немного.

Тебе нужно «копать» в сторону таких мануалов – по ссылке не самый лучший образец, но он самый свежий по времени из тех ,что я встречал. В сети их должно быть больше одного и не только на русском.

По ссылке тоже ничего особенного касательно самого модема, автор просто поставил хуавеевский дашборд, и через него звонит. У меня он тоже стоит, и через него можно звонить, но это чисто виндовая тема.

fumanchez
() автор топика
Последнее исправление: fumanchez (всего исправлений: 1)
Ответ на: комментарий от fumanchez

Основание для отключения: интерфейсы не используются, отключение повышает стабильность работы. Естественно, это только рекомендация и выполнять её необязательно.

По ссылке тоже ничего особенного

да ссылка крайне неудачная: много раньше были статьи в которых люди описывали успехи под linux. Было это достаточно давно :(

Те ссылки я, видимо, утерял… Да, и с тех пор, что-то могло измениться.

У меня он тоже стоит, и через него можно звонить, но это чисто виндовая тема.

«посниффать» процесс обмена командами программы с портами во время звонка и повторить?

master_0K
()
Ответ на: комментарий от master_0K

Основание для отключения: интерфейсы не используются, отключение повышает стабильность работы.

Возможно действительно лучше будет включить режим «только модем», правда тогда теряется /dev/cdc-wdm*, а модем не будет определяться как ww* интерфейс. Не будет конечно лишних 2-ух /dev/ttyUSB*, но смущает, что интернет-трафик и сигнал звонков будет идти через одно место, хотя вроде на мобилах интернет (по крайней мере 3G) обрубается на время звонках.

много раньше были статьи в которых люди описывали успехи под linux

У меня на почитать вот это отложено: http://linux.mixed-spb.ru/asterisk https://maxistar.ru/articles/technics/freepbx

«посниффать» процесс обмена командами программы с портами во время звонка и повторить?

Я пока без ModemManager не осилил завести модем - вроде зарегистрировался в сети оператора и подключился к ней с помощью AT+CREG, AT+CGREG, AT+CGATT, AT+CGACT, и лампочка горит как надо, и ModemManager судя по логам дебага делает то же самое, но маршрут никак не появляется. reload, renew, и reconfigure в networkctl не помогают, хотя он вроде и отвечает за маршрутизацию. Да и после ручных оптимизаций по типу задания режима только 3G и только одного диапазона частот даже в винде начала отваливаться сеть, а ModemManager перестал заводить коннект. Такими темпами еще бы до звонков добраться.

fumanchez
() автор топика
Ответ на: комментарий от fumanchez

тогда теряется /dev/cdc-wdm*, а модем не будет определяться как ww* интерфейс. Не будет конечно лишних 2-ух /dev/ttyUSB*, но смущает, что интернет-трафик и сигнал звонков будет идти через одно место, хотя вроде на мобилах интернет (по крайней мере 3G) обрубается на время звонках.

Зависит от модели и команды переключения (прошивки модема). Обычно все 3 /dev/ttyUSB* и wwan возможно оставить.

после ручных оптимизаций по типу задания режима только 3G и только одного диапазона частот даже в винде начала отваливаться сеть, а ModemManager перестал заводить коннект. Такими темпами еще бы до звонков добраться.

Ресурс «сладких» 3/4g у опсоса на загрузку в 100% не рассчитан. Поэтому «закрепиться» сложно, будет выбрасывать из «любимого» диапазона через какой-то промежуток времени.

master_0K
()
Ответ на: комментарий от fumanchez

Я пока без ModemManager не осилил завести модем - вроде зарегистрировался в сети оператора и подключился к ней с помощью AT+CREG, AT+CGREG, AT+CGATT, AT+CGACT, и лампочка горит как надо, и ModemManager судя по логам дебага делает то же самое, но маршрут никак не появляется.

Ужас как всё сложно. У меня модем почему-то без всех этих команд сразу регится в сети как только втыкаю его в usb-порт.

Чтобы появился маршрут надо его создать. Например, командой route add с нужными параметрами. Модем тут ни при чём, просто никаких автосозданий никаких маршрутов в сетевых драйверах нет, их всегда создают какие-то юзерспейсные проги. pppd его создаёт после дозвона, если опцию defaultroute указать.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от master_0K

Обычно все 3 /dev/ttyUSB* и wwan возможно оставить.

Попробовал попереключать - сам модем говорит, что у него активны порты MOD, NDIS, PCUI и DIAG, но почему-то в системе это просто /dev/ttyUSB* с 0 по 3, и драйвер cdc_ether для предполагаемого порта чето не задействуется. При том дефолтная схема это почти то же самое, только лишних 2 устройства, в общем странно.

fumanchez
() автор топика
Ответ на: комментарий от fumanchez

активны порты MOD, NDIS, PCUI и DIAG

NDIS должен «превращаться» в wwan, остальные будут /dev/ttyUSB*. Хотя, конечно этого никто не гарантирует.

При смене схемы у устройства меняются VID и PID – соответсвенно «старые» правила udev не срабатывают.

master_0K
()
Ответ на: комментарий от firkax

У меня модем почему-то без всех этих команд сразу регится в сети как только втыкаю его в usb-порт.

Ну это видимо с полным комплектом из ModemManager и NetworkManager, у меня же такая связка просто работала через раз. Модем в лучшем случае пока только видится как wwan* интерфейс, а в логах есть только попытка DHCPv6 от networkctl и маршрут тоже только для IPv6, хотя в конфигах ничего такого нет, DHCP указан.

Чтобы появился маршрут надо его создать. Например, командой route add с нужными параметрами.

Я вручную таким не занимался, обычно сразу есть со старта. А так, было бы что добавлять, от модема не дознаться, а в логах ModemManager’а не видно, что идет дальше после установки соединения в модеме.

fumanchez
() автор топика
Ответ на: комментарий от master_0K

NDIS должен «превращаться» в wwan, остальные будут /dev/ttyUSB*.

Причем оно так и делается, даже без пачки правил udev из поставки с ModemManager. К тому же, предполагаемый NDIS-порт все-таки определяется, правда как AT-консоль. Видимо надо попробовать вручную указать, где что.

fumanchez
() автор топика
Ответ на: комментарий от fumanchez

Как система различает «кто из who» сказать затрудняюсь. Как-то была чехарда с портами на одном устройстве: я попытался разобраться, но не осилил – быстрее оказалось самостоятельно определить «где что», чем правило задать.

master_0K
()
Последнее исправление: master_0K (всего исправлений: 1)
Ответ на: комментарий от fumanchez

Ну это видимо с полным комплектом из ModemManager и NetworkManager, у меня же такая связка просто работала через раз.

Нет. Эту чушь давно снёс, она только мешает. Единственный кто с ними что-то сам делает это usb_modeswitch с дефолтными настройками.

хотя в конфигах ничего такого нет, DHCP указан.

Где указан?

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Нет. Эту чушь давно снёс, она только мешает.

А что за модем, каким драйвером заводится, 3G или уже LTE? У меня древний Huawei E173, я сначала на нем хочу попробовать прием звонков настроить, а потом взять что-то на замену с LTE, без проблем заводящееся на линуксе.

Сейчас ко всему прочему даже не могу толком понять, через какой интерфейс он работает. Если с RAS на PPP-соединениях все понятно, то вот с NDIS или QMI уже совсем непонятно - ModemManager может определить модем не как E173, а как [QUALCOMM INCORPORATED], особенно если перед этим сделать подключение в винде, где несмотря на то, что в дашборде тип соединения стоит NDIS, в диспетчере устройств в свойствах сетевой карты можно наткнуться qcwwan.ndi. Т.е. чип хоть и от Qualcomm, но в винде вроде только NDIS фигурирует, а QMI почему-то сразу детектится линуксом (а потом этот режим теряется, но это уже другая история).

DHCP указан.

Где указан?

В /etc/systemd/network лежит .network файл для ww* интерфейсов, там в [Network] стоит DHCP=yes.

fumanchez
() автор топика
Ответ на: комментарий от master_0K

Как система различает «кто из who» сказать затрудняюсь.

Видимо тут модем карты путает - у меня он после того перевода из режима usb-storage с помощью usb_modeswitch показывает левое количество устройств - 5 вместо 4, и среди них нет того, к которому применяется драйвер cdc_ether.

fumanchez
() автор топика
Ответ на: комментарий от fumanchez

Два модема, один ZTE MF-192 второй Huawei E369 (оба старые без LTE). Оба подключаются к мобильной сети сами. Но я их через ppp использую, эмулировать ethernet с локалкой они вроде не умеют.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)

В общем хотелось бы как-то отвязаться от смартфона, и все упирается только в его способность звонить (скорее даже только отвечать на входящие).

какой-нибудь linphone и sip провайдер, который даст номер телефона занедорого, решат проблему, как мне кажется.

olelookoe ★★★
()