Перейти к содержанию
    

Поднимаю PPP на SIM800. Что есть из литературы "для чайников"?

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

 

Есть какая нибудь книжка вроде "GSM-модемы для чайников"? Описание AT-команд нашел, но там этих команд куча и в какой последовательности их надо выполнять там не сказано. Скажем, в AT+CGDCONT= указыватся APN, а провайдер иногда дает еще имя пользователя и пароль, когда и куда их пихать? В каком порядке надо поднимать соединение, на каком этапе надо скармливать PIN-код? В общем в голове пока каша и хотелось бы немного поизучать теорию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для установления соединения использую следующую последовательность AT-команд:

AT

AT+IPR=115200

ATE0

AT+IFC=2,2

AT+CPIN?

AT+CREG?

AT+CGDCONT=1,\"IP\",\"xxx.server.by\

ATD*99***1#

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для установления соединения использую следующую последовательность AT-команд:
Этот список я уже видел. Вы его где-то подсмотрели и повторяете как мантру или вы пришли к нему на основе каких-то исходных данных и литературы?

AT+CPIN? читает, нужно ли вводить PIN. Хорошо, дальше можно догадаться, что в зависимости от ответа надо выполнять или не выполнять AT+CPIN=.

AT+CREG? проверят, зарегистрирован ли модем в сети. Дальше начинаются глупые вопросы: 1) А где команда регистрации? 2) Что делать, если не зарегистрирован? Потом появятся и другие: 3) Как долго ждать этой регистрации?

 

Как вариант подсмотреть как это делает windows
или линукс
Нет, тупое повторение мне не интересно. Мне хочется разобраться - что происходит и, главное, почему и зачем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если разбираться, то симкосовских аппнотов вполне хватает. Там даже кучка примеров есть. Начни с http://microchip.ua/simcom/

Если что непонятно, в аппнотах, то проще и надежней проверить руками на живом модуле через терминал.

ЗЫ. В доке по AT-командам в конце есть простые примеры и описания. Может это для начала сойдет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, тупое повторение мне не интересно. Мне хочется разобраться - что происходит и, главное, почему и зачем.
А никто и не предлагал тупо повторять. Снимаете лог с соединения винды, открываете мануал по АТ командам от симком и вникаете что она (винда) делает, и осознаете зачем и почему...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этот список я уже видел. Вы его где-то подсмотрели и повторяете как мантру или вы пришли к нему на основе каких-то исходных данных и литературы?

AT+CPIN? читает, нужно ли вводить PIN. Хорошо, дальше можно догадаться, что в зависимости от ответа надо выполнять или не выполнять AT+CPIN=.

AT+CREG? проверят, зарегистрирован ли модем в сети. Дальше начинаются глупые вопросы: 1) А где команда регистрации? 2) Что делать, если не зарегистрирован? Потом появятся и другие: 3) Как долго ждать этой регистрации?

 

Нет, тупое повторение мне не интересно. Мне хочется разобраться - что происходит и, главное, почему и зачем.

Вы - молодец, только попробуйте не пробежаться по аппнотам, а прочитать для начала sim800 series tcp ip application note.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробуйте ... прочитать для начала sim800 series tcp ip application note.
Он описывает работу со встроенным в модем стеком, а я хочу поднять ppp и использовать lwIP в контроллере, то есть это описание мне не подходит.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

C GSM поднять ppp и использовать lwIP в контроллере ... гиблое дело, ... наткнётесь на кучи кривоты и забросите это грязное дело. По простой причине того, что как таковой стек, там не то что вы знаете из классики, и тем более не этот обрубок lwIP. А еще будут танцы с бубном вокрут особенностей команд, задержек и решений конкретного ОПсоса. Отсюда простой вывод: пользуете стек только внутри SIM800 работаете с ат-командами + его доп ат-командами.

Ну либо наступайте на грабли ... через которые многие прошли еще с SIM300.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Он описывает работу со встроенным в модем стеком, а я хочу поднять ppp и использовать lwIP в контроллере, то есть это описание мне не подходит.

SIM800 Series_AT Command Manual_V1.10.pdf смотри раздел 20.8 GPRS Commands

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вторая часть маралезонского балета.

 

SIM800C + lwIP 2.0.x (последний из git).

Загоняю модем в PPP, запускаю PPP в lwIP, они договариваются, lwIP радостно сообщает "connected", пишет полученные IP-адреса. Далее я пытаюсь послать udp или tcp пакет, lwIP посылает его в модем - а в ответ от модема полная тишина (я дважды проверял лог. анализатором). Пробовал симки от двух операторов (одна с авторизацией, вторая без), симки проверял в умном телефоне жены - интерент через них в телефоне ходит, а у меня тишина. Точнее, во время посылки этих ответов я слышу наводки от модема в колонках компа, то есть он что-то передает, но никаких ответов от модема я не получаю. Что я теперь сделал не так?

 

Вот лог:

00:00:02.10 GSM< AT
00:00:02.10 GSM> я
00:00:03.10 GSM: timeout
00:00:03.10 GSM< AT
00:00:03.22 GSM> я
00:00:04.10 GSM: timeout
00:00:04.10 GSM< AT
00:00:04.10 GSM> AT...OK.., response OK detected (result code 0)
00:00:04.10 GSM< AT+IFC=2,2
00:00:04.10 GSM> AT+IFC=2,2...OK.., response OK detected (result code 0)
00:00:04.10 GSM< ATE0
00:00:04.10 GSM> ATE0...OK.., response OK detected (result code 0)
00:00:04.10 GSM< AT+IPR=115200
00:00:04.11 GSM> ..OK.., response OK detected (result code 0)
00:00:04.12 GSM< AT+IPR=230400
00:00:04.12 GSM> ..OK.., response OK detected (result code 0)
00:00:04.13 GSM< AT+IPR=460800
00:00:04.13 GSM> ..OK.., response OK detected (result code 0)
00:00:04.14 GSM< AT+IPR=921600
00:00:04.14 GSM> ..ERROR.., response ERROR detected (result code 1)
00:00:04.14 GSM< AT+CMEE=1
00:00:04.15 GSM> ..OK.., response OK detected (result code 0)
00:00:04.15 GSM< AT+CREG=1
00:00:04.15 GSM> ..OK.., response OK detected (result code 0)
00:00:05.78 GSM> ..+CPIN: READY, response +CPIN: READY detected (result code 1)
00:00:05.78 GSM< AT+CPIN?
00:00:05.78 GSM> ....+CPIN: READY, response +CPIN: READY detected (result code 1)
00:00:05.78 GSM> ....OK.., response OK detected (result code 0)
No PIN required
00:00:06.46 GSM> ..+CREG:, response +CREG: detected (result code 4) 2..
CREG state change detected: 2
00:00:10.40 GSM> ..+CREG:, response +CREG: detected (result code 4) 1..
CREG state change detected: 1
00:00:29.95 GSM> ..Call Ready.., response Call Ready detected (result code 0)
00:00:35.98 GSM> ..SMS Ready.., response SMS Ready detected (result code 1)
00:00:35.98 GSM init completed
00:00:35.98 GSM: no errors
ppp phase changed[0]: phase=0
00:00:35.98 GSM< AT+CGDCONT=1,"IP","internet.lmt.lv"
00:00:35.99 GSM> ..OK.., response OK detected (result code 0)
00:00:35.99 GSM< AT+CSQ
00:00:35.99 GSM> ..+CSQ: 18,0....OK.., response OK detected (result code 0)
00:00:35.99 GSM< ATD*99***1#
00:00:35.99 GSM> ..CONNECT.., response CONNECT detected (result code 0)
ppp_connect[0]: holdoff=0
ppp phase changed[0]: phase=3
pppos_connect: unit 0: connecting
ppp_start[0]
ppp phase changed[0]: phase=6
pppos_send_config[0]: out_accm=FF FF FF FF
ppp_send_config[0]
pppos_recv_config[0]: in_accm=FF FF FF FF
ppp_recv_config[0]
ppp: auth protocols: PAP=0 CHAP=0 CHAP_MD5=0 CHAP_MS=0 CHAP_MS2=0 EAP=0
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0xfaeb8c3c> <pcomp> <accomp>]
00:00:35.99 GSM< 45 bytes:
7E FF 7D 23 C0 21 7D 21 7D 21 7D 20 7D 34 7D 22
7D 26 7D 20 7D 20 7D 20 7D 20 7D 25 7D 26 FA EB
8C 3C 7D 27 7D 22 7D 28 7D 22 CA B7 7E
pppos_write[0]: len=24
ppp_start[0]: finished
00:00:36.00 GSM> 72 bytes
7E FF 7D 23 C0 21 7D 21 7D 21 7D 20 7D 32 7D 22
7D 26 7D 20 7D 2A 7D 20 7D 20 7D 23 7D 24 C0 23
7D 27 7D 22 7D 28 7D 22 55 83 7E 7E FF 7D 23 C0
21 7D 23 7D 21 7D 20 7D 2A 7D 22 7D 26 7D 20 7D
2A 7D 20 7D 20 6C 50 7E
pppos_input[0]: got 72 bytes
rcvd [LCP ConfReq id=0x1 <asyncmap 0xa0000> <auth pap> <pcomp> <accomp>]
No auth is possible
sent [LCP ConfRej id=0x1 <auth pap>]
00:00:36.00 GSM< 22 bytes:
FF 7D 23 C0 21 7D 24 7D 21 7D 20 7D 28 7D 23 7D
24 C0 23 2C D4 7E
pppos_write[0]: len=12
rcvd [LCP ConfNak id=0x1 <asyncmap 0xa0000>]
sent [LCP ConfReq id=0x2 <asyncmap 0xa0000> <magic 0xfaeb8c3c> <pcomp> <accomp>]
00:00:36.00 GSM< 44 bytes:
FF 7D 23 C0 21 7D 21 7D 22 7D 20 7D 34 7D 22 7D
26 7D 20 7D 2A 7D 20 7D 20 7D 25 7D 26 FA EB 8C
3C 7D 27 7D 22 7D 28 7D 22 32 2C 7E
pppos_write[0]: len=24
00:00:36.00 GSM> 82 bytes
7E FF 7D 23 C0 21 7D 21 7D 22 7D 20 7D 2E 7D 22
7D 26 7D 20 7D 2A 7D 20 7D 20 7D 27 7D 22 7D 28
7D 22 D0 D3 7E 7E FF 7D 23 C0 21 7D 22 7D 22 7D
20 7D 34 7D 22 7D 26 7D 20 7D 2A 7D 20 7D 20 7D
25 7D 26 FA EB 8C 3C 7D 27 7D 22 7D 28 7D 22 D9
45 7E
pppos_input[0]: got 82 bytes
rcvd [LCP ConfReq id=0x2 <asyncmap 0xa0000> <pcomp> <accomp>]
sent [LCP ConfAck id=0x2 <asyncmap 0xa0000> <pcomp> <accomp>]
00:00:36.00 GSM< 36 bytes:
FF 7D 23 C0 21 7D 22 7D 22 7D 20 7D 2E 7D 22 7D
26 7D 20 7D 2A 7D 20 7D 20 7D 27 7D 22 7D 28 7D
22 EE 50 7E
pppos_write[0]: len=18
rcvd [LCP ConfAck id=0x2 <asyncmap 0xa0000> <magic 0xfaeb8c3c> <pcomp> <accomp>]
netif_set_mtu[0]: mtu=1500
pppos_send_config[0]: out_accm=0 0 A 0
ppp_send_config[0]
pppos_recv_config[0]: in_accm=0 0 A 0
ppp_recv_config[0]
ppp phase changed[0]: phase=7
ppp phase changed[0]: phase=9
ccp_set[0]: is_open=1, is_up=0, receive_method=0, transmit_method=0
sent [iPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
00:00:36.00 GSM< 35 bytes:
FF 03 80 21 01 01 00 1C 02 06 00 2D 0F 01 03 06
00 00 00 00 81 06 00 00 00 00 83 06 00 00 00 00
55 15 7E
pppos_write[0]: len=32
00:00:36.01 GSM> 32 bytes
7E 80 21 01 01 00 0A 03 06 C0 A8 FE FE 48 CC 7E
7E 80 21 04 01 00 0A 02 06 00 2D 0F 01 F8 30 7E
pppos_input[0]: got 32 bytes
rcvd [iPCP ConfReq id=0x1 <addr 192.168.254.254>]
sent [iPCP ConfAck id=0x1 <addr 192.168.254.254>]
00:00:36.01 GSM< 17 bytes:
FF 03 80 21 02 01 00 0A 03 06 C0 A8 FE FE 5F 56
7E
pppos_write[0]: len=14
rcvd [iPCP ConfRej id=0x1 <compress VJ 0f 01>]
sent [iPCP ConfReq id=0x2 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
00:00:36.01 GSM< 29 bytes:
FF 03 80 21 01 02 00 16 03 06 00 00 00 00 81 06
00 00 00 00 83 06 00 00 00 00 DA 82 7E
pppos_write[0]: len=26
00:00:37.11 GSM> 28 bytes
7E 80 21 03 02 00 16 03 06 0A 5C 4B C7 81 06 D4
5D 61 4B 83 06 D4 5D 60 02 E8 08 7E
pppos_input[0]: got 28 bytes
rcvd [iPCP ConfNak id=0x2 <addr 10.92.75.199> <ms-dns1 212.93.97.75> <ms-dns2 212.93.96.2>]
sent [iPCP ConfReq id=0x3 <addr 10.92.75.199> <ms-dns1 212.93.97.75> <ms-dns2 212.93.96.2>]
00:00:37.11 GSM< 30 bytes:
7E FF 03 80 21 01 03 00 16 03 06 0A 5C 4B C7 81
06 D4 5D 61 4B 83 06 D4 5D 60 02 4F F5 7E
pppos_write[0]: len=26
00:00:37.11 GSM> 28 bytes
7E 80 21 02 03 00 16 03 06 0A 5C 4B C7 81 06 D4
5D 61 4B 83 06 D4 5D 60 02 D9 96 7E
pppos_input[0]: got 28 bytes
rcvd [iPCP ConfAck id=0x3 <addr 10.92.75.199> <ms-dns1 212.93.97.75> <ms-dns2 212.93.96.2>]
sifvjcomp[0]: VJ compress enable=0 slot=0 max slot=0
sifup[0]: err_code=0
PPP link status changed to 0
status_cb: Connected
local  IP address 10.92.75.199
remote IP address 192.168.254.254
primary   DNS address 212.93.97.75
secondary DNS address 212.93.96.2
ppp phase changed[0]: phase=10
00:01:02.00 GSM< 79 bytes:
7E 21 45 00 00 49 00 00 00 00 FF 7D 31 00 00 0A
5C 4B C7 D4 5D 61 4B F2 30 00 35 00 35 00 00 F2
30 01 00 00 01 00 00 00 00 00 00 10 68 74 74 70
73 3A 2F 2F 73 61 76 61 6E 6E 61 68 06 6E 6F 6E
67 6E 75 03 6F 72 67 00 00 01 00 01 4A 39 7E
pppos_netif_output[0]: proto=0x21, len = 73
00:01:03.00 GSM< 79 bytes:
7E 21 45 00 00 49 00 01 00 00 FF 7D 31 00 00 0A
5C 4B C7 D4 5D 61 4B F2 30 00 35 00 35 00 00 F2
30 01 00 00 01 00 00 00 00 00 00 10 68 74 74 70
73 3A 2F 2F 73 61 76 61 6E 6E 61 68 06 6E 6F 6E
67 6E 75 03 6F 72 67 00 00 01 00 01 57 01 7E
pppos_netif_output[0]: proto=0x21, len = 73
00:01:04.00 GSM< 79 bytes:
7E 21 45 00 00 49 00 02 00 00 FF 7D 31 00 00 0A
5C 4B C7 D4 5D 61 4B F2 30 00 35 00 35 00 00 F2
30 01 00 00 01 00 00 00 00 00 00 10 68 74 74 70
73 3A 2F 2F 73 61 76 61 6E 6E 61 68 06 6E 6F 6E
67 6E 75 03 6F 72 67 00 00 01 00 01 70 49 7E
pppos_netif_output[0]: proto=0x21, len = 73
00:01:06.00 GSM< 79 bytes:
7E 21 45 00 00 49 00 03 00 00 FF 7D 31 00 00 0A
5C 4B C7 D4 5D 61 4B F2 30 00 35 00 35 00 00 F2
30 01 00 00 01 00 00 00 00 00 00 10 68 74 74 70
73 3A 2F 2F 73 61 76 61 6E 6E 61 68 06 6E 6F 6E
67 6E 75 03 6F 72 67 00 00 01 00 01 6D 71 7E
pppos_netif_output[0]: proto=0x21, len = 73

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как всегда- два дня бился, но стоило написать на форум как сразу же нашлось решение - я взял настройки lwIP из другого проекта, а там был включен апаратный расчет CRC в пакетах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 08.07.2018 в 00:55, Сергей Борщ сказал:

Как всегда- два дня бился, но стоило написать на форум как сразу же нашлось решение - я взял настройки lwIP из другого проекта, а там был включен апаратный расчет CRC в пакетах.

Сегодня бился с такой же проблемой. Но похоже решение по ссылке уже не доступно. Совсем не понятно где идет этот аппаратный рассчет СRC

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, Girnch сказал:

Совсем не понятно где идет этот аппаратный рассчет СRC

В настройках lwIP есть такие:

  /* CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets.*/
  /* CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets.*/
  /* CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets.*/
  /* CHECKSUM_GEN_ICMP==1: Generate checksums in software for outgoing ICMP packets.*/
  /* CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets.*/
  /* CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets.*/
  /* CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets.*/
  /* CHECKSUM_CHECK_ICMP==1: Check checksums in software for incoming ICMP packets.*/
  /* CHECKSUM_CHECK_ICMP6==1: Check checksums in software for incoming ICMPv6 packets*/
 

Они должны быть равны 1 для работы с модемом. Если же в системе есть и модем, и МАС с аппаратным расчетом - есть #define LWIP_CHECKSUM_CTRL_PER_NETIF. Если его установить равным 1, то по-умолчанию для всех интерфейсов будет включен программный подсчет CRC, но его можно выключить вызовом макроса NETIF_SET_CHECKSUM_CTRL:

        // disable software checksum calculation for built-in MAC
        NETIF_SET_CHECKSUM_CTRL(&ethernet::NetIF, NETIF_CHECKSUM_DISABLE_ALL);

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...