Cmux

У кого-нибудь cmux работает? Делаю все как в вики написано (причем, и пакет ставил, и бинарник отдельно выкачивал), но после вывода

Created /dev/ttyGSM1
Created /dev/ttyGSM2
Created /dev/ttyGSM3
Created /dev/ttyGSM4
Going to background

ни через /dev/ttyAPP0 ни через /dev/ttyGSM* достучаться до модема не получается. В первом случае сразу пишет Failed, во втором тихо молчит. :frowning:

Евгений!

Позвольте призвать вас в этот топик… Я уже все перепробовал, но завести cmux так и не смог.
Единственное, чего добился - если инициализировать SIM900 каким-либо уж очень экзотическим способом (например, выключать flow сontrol), то вместо подвисания приложений, работающих с созданными serial интерфейсами, возвращается ошибка “Level 2 halted”.
Куды бечь?

если инициализировать SIM900 каким-либо уж очень экзотическим способом (например, выключать flow сontrol

а это что значит? У нас SIM900 подключен парой TX/RX, аппаратного flow control там нет.

Это значит, что в коде написана посылка в прибор “AT+IFC=2,2”, что, согласно мануалу, обозначает как раз включение hardware flow control (в сторону DTE и DCE), и я пробовал вместо этого посылать “AT+IFC=0,0”, что должно flow control отключать.

В ходе всяких подобных экспериментов у меня стабильно получается два результата: либо при обращении к /dev/ttyGSM1 все виснет, либо отваливается с “Level 2 halted”

Добрый день.
Это всё очень непонятно.

Я только что сделал:

apt-get install cmux

потом
wb-gsm restart_if_broken
проверил через minicom, что /dev/ttyAPP0 отвечает на AT

запустил cmux

обратился после этого через minicom к /dev/ttyGSM1
и всё отлично работает. Настройки портов везде 115200 8N1, стандартные

Покажите на всякий случай, что отвечает модем на AT+CGMR ?

Мистика какая-то :frowning: Я тоже только что снес на всякий случай пакет с cmux, поставил его заново, и все заработало. Причем, теперь работает и бинарник из пакета, и тот, что лежит на github, и даже тот, что я сам собирал.
С одной стороны - здорово, с другой - печально (непонятно, что это было, и что делать, если случится опять…)

P.S. на всякий случай
AT+CGMR
Revision:1137B04SIM900R32_ST

могу предположить, что это как-то связано с автоматическим определением скорости порта модемом (autobaud). Может быть дело в том, что restart_if_broken отправлет AT команду, синхронизируя скорость на 115200, а прошлый раз вы пробовали просто включать питание.

Перед запуском cmux я всегда делал restart, просто чтобы убедиться, что прибор живой.
В самом cmux.c есть cfset?speed(&tio, LINE_SPEED) на 115200, и после этого в прибор сразу посылается “AAAT” с проверкой ответа - с этим ни разу проблем не было.
Пока оно не работало, я пробовал, в т.ч. посылать “AT+IPR” (этот код в github-овском варианте сейчас закомментирован) - разницы никакой не было.

P.S. Не заметил одного “слона” - после проигрыша битвы с cmux я взялся копать другую тему, и сейчас работаю на самособранном ядре. По-хорошему, надо бы откатиться на то, что было раньше, и проверить с ним, но пока некогда…

это порт AMBA, там в ядре ничего лет 10 не менялось, так что тоже странно.

Не успел я нарадоваться, что cmux заработал, как обнаружились новые проблемы. При попытке поднять ppp соединение через мультиплексированный терминал, оказалось, что в этом соединении не работает ничего, кроме пингов.
Т.е. подняв ppp over /dev/ttyAPP0 я получаю полноценный интернет, а сделав то же самое через cmux и /dev/ttyGSM[1-3] я получаю нечто, где работают только пинги. ping 8.8.8.8 работает, а wget ya.ru - нет (имя резолвит, а затыкается сразу после отсылки http запроса).

После некоторых экспериментов выяснилось, что и пинги ходят не все. ping -s 88 8.8.8.8 работает, но ругается на truncated:

# ping -s 88 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 88(116) bytes of data.
72 bytes from 8.8.8.8: icmp_req=1 ttl=48 (truncated)

а ping -s 89 8.8.8.8 уже не работает совсем.

P.S. Установка в /etc/ppp/options параметра mtu 128 проблему не решает, и MTU меньше 128 оно поставить не дает… :frowning:
Опять теряюсь, что с этим можно сделать?..

… а сделать можно следующее: взять исходник (https://github.com/contactless/cmux/blob/master/cmux.c), раскомментировать строку 327, закомментировать строку 328, пересобрать, и использовать именно такой вариант.
С ним ppp-инет через cmux нормально поднимается (причем, с ppp MTU == 1500, хотя пинги с -s больше 172 через такой канал и не пролазят). Даже openvpn поверх него работает…

hamster, а что со скоростью? я бросил исследовать встроенный модем после того как понял что он только Edge.

hamster, а не поделишься собранным бинарником?

Скорость, понятное дело, не фонтан, но зайти терминалкой или сливать потихоньку телеметрию - вполне хватает.
Бинарник - тут: https://mega.co.nz/#!kxBHWBIS!2HbaMTg2rv5-23Adog7LKuyRvk5BwsMhQ0R1FdnSaSg

Спасибо, залил обновлённый бинарник в репозитарий.

У меня так и не получилось заставить работать одновременно два порта.
cmux запускается норм. Запускаю подключение к GSM1 - работает. к GSM2 - нет, и еще GSM1 отваливается

Запускаю так
cmux --device /dev/ttyAPP0 --speed 115200 --type SIM900 --nodes 2

Хочу мониторить смс, и иметь GPRS подключение одновременно

А какой у вас модем? Напишите или S/N контроллера, или модель из вывода gammu identify

679204gw

воспроизводится в таком виде:

root@wirenboard:~# pkill cmux
root@wirenboard:~# /usr/bin/cmux --device /dev/ttyAPP0 --speed 115200 --type SIM900 --nodes 4
type: sim900
device: /dev/ttyAPP0
speed: 115200
mtu: 255
debug: 1
daemon: 1
driver: gsmtty
base: /dev/ttyGSM
nodes: 4

AAAT => AAAT OK
AT+IFC=2,2 => AT+IFC=2,2 OK
AT+GMM => AT+GMM +CGMM: MTK2 OK
AT => AT OK
AT+CMUX=0,0,5,255,10,3,30,10,2 => AT+CMUX=0,0,5,255,10,3,30,10,2 OK
Line dicipline set
Created /dev/ttyGSM1
Created /dev/ttyGSM2
Created /dev/ttyGSM3
Created /dev/ttyGSM4
Going to background
root@wirenboard:~# gammu sendsms TEXT +79269005860 -unicode -text ‘Привет’
If you want break, press Ctrl+C…
Sending SMS 1/1…waiting for network answer…OK, message reference=3
root@wirenboard:~# gammu sendsms TEXT +79269005860 -unicode -text ‘Привет2’
No response in specified timeout. Probably phone not connected.
root@wirenboard:~# cat /root/.gammurc

[gammu]

port = /dev/ttyGSM2
model =
connection = at115200
synchronizetime = yes
logfile =
logformat = nothing
use_locking =
gammuloc =
root@wirenboard:~#