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

M10: неизвестная ошибка при аттаче к GPRS-сервису.

Всем здравствуйте!

 

Продолжаю писать программу для дивайса, в котором установлен M10 (Revision: M10BR06). При попытке аттача к GPRS-сервису (сразу после инициализации модуля) командой "AT+CGATT=1" появляется сообщение об ошибке "+CME ERROR: unknown". В большинстве случаев после выполнения пятисекундной задержки и повторной передачи команды "AT+CGATT=1" GPRS-сервис поднимается нормально, но один раз эта ошибка появлялась в течение нескольких минут. При этом в то-же самое время другой дивайс с модулем SIM340DZ и карточкой того-же самого провайдера поднял GPRS и соединился с сервером "на ура". Проблема не связана с каким-то конкретным оператором - проверялось на разных операторах с разными карточками (VegaLine и Tele2). Вот кусок лога работы дивайса:

 

[00:00:00] {MAIN} ADC(0)=712; Vbat=4.17В
[00:00:00] {GSM } Включаем GSM-модуль
[00:00:02] {GSM }  ANSW: RDY
[00:00:02] {GSM }  COMM: AT+IPR?
[00:00:02] {GSM }  ANSW: +CFUN: 1
[00:00:02] {GSM }  ANSW: +CPIN: SIM PIN
[00:00:02] {GSM }  ANSW: AT+IPR?
[00:00:02] {GSM }  ANSW: +IPR: 38400
[00:00:02] {GSM }  ANSW: OK
[00:00:02] {GSM }  COMM: AT+IFC?
[00:00:03] {GSM }  ANSW: AT+IFC?
[00:00:03] {GSM }  ANSW: +IFC: 0,0
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM }  COMM: ATZ
[00:00:03] {GSM }  ANSW: ATZ
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM }  COMM: ATE0
[00:00:03] {GSM }  ANSW: ATE0
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM }  COMM: ATX4
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM }  COMM: AT+CMEE=2
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM }  COMM: AT+CREG=0
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM }  COMM: AT+QIURC=0
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM } Проверяем наличие и залоченность SIM-карты
[00:00:03] {GSM }  COMM: AT+CPIN?
[00:00:03] {GSM }  ANSW: +CPIN: SIM PIN
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM } Включена защита PIN-кодом
[00:00:03] {GSM } Считываем ID SIM-карты
[00:00:03] {GSM }  COMM: AT+QCCID
[00:00:03] {GSM }  ANSW: 89997776112013633181
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM } Считываем количество оставшихся попыток набора PIN-кода
[00:00:03] {GSM }  COMM: AT+QTRPIN
[00:00:03] {GSM }  ANSW: +QTRPIN: 3,3,10,10
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM } Пытаемся разлочить карточку
[00:00:03] {GSM }  COMM: AT+CPIN=2586
[00:00:03] {GSM }  ANSW: +CPIN: READY
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM } Проверяем наличие и залоченность SIM-карты
[00:00:03] {GSM }  COMM: AT+CPIN?
[00:00:03] {GSM }  ANSW: +CPIN: READY
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM } SIM-карточка открыта
[00:00:03] {GSM } Проверяем регистрацию в сети
[00:00:03] {GSM }  COMM: AT+CREG?
[00:00:04] {GSM }  ANSW: +CREG: 0,2
[00:00:04] {GSM }  ANSW: OK
[00:00:04] {GSM } Поиск сети
[00:00:04] {GSM } Измеряем уровень сигнала
[00:00:04] {GSM }  COMM: AT+CSQ
[00:00:04] {GSM }  ANSW: +CSQ: 99,99
[00:00:04] {GSM }  ANSW: OK
[00:00:04] {GSM } Уровень сигнала = -113 dBm
[00:00:08] {GSM } Проверяем регистрацию в сети
[00:00:08] {GSM }  COMM: AT+CREG?
[00:00:08] {GSM }  ANSW: +CREG: 0,2
[00:00:08] {GSM }  ANSW: OK
[00:00:08] {GSM } Поиск сети
[00:00:08] {GSM } Измеряем уровень сигнала
[00:00:08] {GSM }  COMM: AT+CSQ
[00:00:08] {GSM }  ANSW: +CSQ: 23,0
[00:00:08] {GSM }  ANSW: OK
[00:00:08] {GSM } Уровень сигнала = -67 dBm
[00:00:10] {MAIN} ADC(0)=687; Vbat=4.03В
[00:00:13] {GSM } Проверяем регистрацию в сети
[00:00:13] {GSM }  COMM: AT+CREG?
[00:00:13] {GSM }  ANSW: +CREG: 0,1
[00:00:13] {GSM }  ANSW: OK
[00:00:13] {GSM } Есть регистрация в сети
[00:00:13] {GSM } Измеряем уровень сигнала
[00:00:13] {GSM }  COMM: AT+CSQ
[00:00:13] {GSM }  ANSW: +CSQ: 23,0
[00:00:13] {GSM }  ANSW: OK
[00:00:13] {GSM } Уровень сигнала = -67 dBm
[00:00:13] {TCP } Проверяем состояние канала
[00:00:13] {GSM }  COMM: AT+QISTAT
[00:00:13] {GSM }  ANSW: OK
[00:00:13] {GSM }  ANSW: STATE: IP INITIAL
[00:00:13] {TCP } Подключаем GPRS-сервис
[00:00:13] {GSM }  COMM: AT+CGATT=1
[00:00:13] {GSM }  ANSW: +CME ERROR: unknown
[00:00:13] {TCP } ERROR: нет ответа 'OK'
[00:00:15] {TCP } Проверяем состояние канала
[00:00:15] {GSM }  COMM: AT+QISTAT
[00:00:15] {GSM }  ANSW: OK
[00:00:15] {GSM }  ANSW: STATE: IP INITIAL
[00:00:15] {TCP } GPRS-канал закрыт
[00:00:15] {TCP } ERROR: неудачная попытка открыть GPRS-канал

 

Вопрос: что это за ошибка - "unknown"? И как от неё избавиться?

Изменено пользователем jokolemene

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


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

Я же говорю, что через пять секунд после "unknown" дивайс даёт эту команду повторно, получает "ОК" и дальше работает нормально. APN задаётся чуть позже - перед выполнением команды "AT+QIACT". Опять-же, точно такой-же дивайс, но с модулем SIM340DZ, аттачится к GPRS-сервису с пол-пинка, работая по точно такому-же алгоритму. Тем не менее, сделал для проверки установку APN заранее. Вот лог результата:

 

[00:00:00] {MAIN} ADC(0)=715; Vbat=4.19В
[00:00:00] {GSM } Включаем GSM-модуль
[00:00:03] {GSM }  ANSW: RDY
[00:00:03] {GSM }  COMM: AT+IPR?
[00:00:03] {GSM }  ANSW: AT+IPR?
[00:00:03] {GSM }  ANSW: +IPR: 38400
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM }  COMM: AT+IFC?
[00:00:03] {GSM }  ANSW: AT+IFC?
[00:00:03] {GSM }  ANSW: +IFC: 0,0
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM }  COMM: ATZ
[00:00:03] {GSM }  ANSW: ATZ
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM }  COMM: ATE0
[00:00:03] {GSM }  ANSW: ATE0
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM }  COMM: ATX4
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM }  COMM: AT+CMEE=2
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM }  COMM: AT+CREG=0
[00:00:03] {GSM }  ANSW: OK
[00:00:03] {GSM }  COMM: AT+QIURC=0
[00:00:03] {GSM }  ANSW: OK
[00:00:09] {GSM } Проверяем наличие и залоченность SIM-карты
[00:00:09] {GSM }  COMM: AT+CPIN?
[00:00:09] {GSM }  ANSW: +CPIN: SIM PIN
[00:00:09] {GSM }  ANSW: OK
[00:00:09] {GSM } Включена защита PIN-кодом
[00:00:09] {GSM } Считываем ID SIM-карты
[00:00:09] {GSM }  COMM: AT+QCCID
[00:00:09] {GSM }  ANSW: 89997776112013633181
[00:00:09] {GSM }  ANSW: OK
[00:00:09] {GSM } Считываем количество оставшихся попыток набора PIN-кода
[00:00:09] {GSM }  COMM: AT+QTRPIN
[00:00:09] {GSM }  ANSW: +QTRPIN: 3,3,10,10
[00:00:09] {GSM }  ANSW: OK
[00:00:09] {GSM } Пытаемся разлочить карточку
[00:00:09] {GSM }  COMM: AT+CPIN=2586
[00:00:09] {GSM }  ANSW: +CPIN: READY
[00:00:09] {GSM }  ANSW: OK
[00:00:09] {GSM } Проверяем наличие и залоченность SIM-карты
[00:00:09] {GSM }  COMM: AT+CPIN?
[00:00:09] {GSM }  ANSW: +CPIN: READY
[00:00:09] {GSM }  ANSW: OK
[00:00:09] {GSM } SIM-карточка открыта
[00:00:10] {GSM } Проверяем регистрацию в сети
[00:00:10] {GSM }  COMM: AT+CREG?
[00:00:10] {GSM }  ANSW: +CREG: 0,2
[00:00:10] {GSM }  ANSW: OK
[00:00:10] {GSM } Поиск сети
[00:00:10] {GSM } Измеряем уровень сигнала
[00:00:10] {GSM }  COMM: AT+CSQ
[00:00:10] {GSM }  ANSW: +CSQ: 99,99
[00:00:10] {GSM }  ANSW: OK
[00:00:10] {GSM } Уровень сигнала = -113 dBm
[00:00:10] {MAIN} ADC(0)=714; Vbat=4.18В
[00:00:15] {GSM } Проверяем регистрацию в сети
[00:00:15] {GSM }  COMM: AT+CREG?
[00:00:15] {GSM }  ANSW: +CREG: 0,1
[00:00:15] {GSM }  ANSW: OK
[00:00:15] {GSM } Есть регистрация в сети
[00:00:15] {GSM } Измеряем уровень сигнала
[00:00:15] {GSM }  COMM: AT+CSQ
[00:00:15] {GSM }  ANSW: +CSQ: 20,0
[00:00:15] {GSM }  ANSW: OK
[00:00:15] {GSM } Уровень сигнала = -73 dBm
[00:00:15] {TCP } Проверяем состояние канала
[00:00:15] {GSM }  COMM: AT+QISTAT
[00:00:15] {GSM }  ANSW: OK
[00:00:15] {GSM }  ANSW: STATE: IP INITIAL
[00:00:15] {TCP } Устанавливаем имя точки доступа, логин и пароль
[00:00:15] {GSM } Считываем номер оператора из GSM-модуля
[00:00:15] {GSM }  COMM: AT+COPS=0,2
[00:00:15] {GSM }  ANSW: OK
[00:00:15] {GSM }  COMM: AT+COPS?
[00:00:15] {GSM }  ANSW: +COPS: 0,2,"40177"
[00:00:15] {GSM }  ANSW: OK
[00:00:15] {GSM }  COMM: AT+CGDCONT=1,"IP","internet"
[00:00:15] {GSM }  ANSW: OK
[00:00:15] {GSM }  COMM: AT+QIREGAPP="internet","",""
[00:00:15] {GSM }  ANSW: OK
[00:00:15] {TCP } Подключаем GPRS-сервис
[00:00:15] {GSM }  COMM: AT+CGATT=1
[00:00:15] {GSM }  ANSW: +CME ERROR: unknown
[00:00:15] {TCP } ERROR: нет ответа 'OK'

 

Дополнение:

Проблема решилась так: не давать команду "AT+CGATT" совсем. Никогда. Такой "workaround" пока-что работает. Буду наблюдать. Но в любом случае "unknown" - это баг. Негоже модулю выдавать такие сообщения об ошибках на вполне легальные команды.

Изменено пользователем jokolemene

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


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

Почему workaround? Ни в GSM_TCPIP_AN_V1.01, ни в GSM_TCPIP_Recommended_Process_V1.0 эта команда даже не упоминается. И вобще ее суть трудно понять.

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


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

Почему workaround? Ни в GSM_TCPIP_AN_V1.01, ни в GSM_TCPIP_Recommended_Process_V1.0 эта команда даже не упоминается. И вобще ее суть трудно понять.

 

Суть её ясна - регистрация в сервисе GPRS. А ошибка возможно возникает из-за того, что модуль после включения самостоятельно пытается зарегистрироваться в GPRS. Попробуйте проверять не только CREG но и CGREG. И подавать CGATT только если он равен 0, по аналогии с CREG.

 

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


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

С неделю назад мне так уже рекомендовали делать. Я проверил - результат был аналогичный (правда, при проверке команда CGREG дала ответ 2, а не 0):

[00:00:12] {GSM } Проверяем регистрацию в сети
[00:00:12] {GSM }  COMM: AT+CREG?
[00:00:12] {GSM }  ANSW: +CREG: 0,1
[00:00:12] {GSM }  ANSW: OK
[00:00:12] {GSM } Есть регистрация в сети
[00:00:12] {GSM } Измеряем уровень сигнала
[00:00:12] {GSM }  COMM: AT+CSQ
[00:00:12] {GSM }  ANSW: +CSQ: 18,0
[00:00:12] {GSM }  ANSW: OK
[00:00:12] {GSM } Уровень сигнала = -77 dBm
[00:00:12] {TCP } Проверяем состояние канала
[00:00:12] {GSM }  COMM: AT+QISTAT
[00:00:12] {GSM }  ANSW: OK
[00:00:12] {GSM }  ANSW: STATE: IP INITIAL
[00:00:12] {TCP } Проверяем состояние сети
[00:00:12] {GSM }  COMM: AT+CGREG?
[00:00:12] {GSM }  ANSW: +CGREG: 0,2
[00:00:12] {GSM }  ANSW: OK
[00:00:12] {TCP } Нет регистрации в сети
[00:00:12] {TCP } Подключаем GPRS-сервис
[00:00:12] {GSM }  COMM: AT+CGATT=1
[00:00:12] {GSM }  ANSW: +CME ERROR: unknown
[00:00:12] {TCP } ERROR: нет ответа 'OK'

Возможно, что если бы команда CGREG ответила 0, а не 2, то модуль на команду CGATT ответил бы ОК. Но во время тестирования команда CGREG ни разу не ответила 0. Только 2 или 1.

Изменено пользователем jokolemene

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


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

Прежде чем давать команду AT+CGATT=1 проверте, не подключен ли уже ЖПРС AT+CGATT?.

Неизвестная ошибка - возможно это ругань от сети, что модуль уже в ней. Попробуйте пропинговать какой-то сервер, например: AT+QPING="www.grandelectronic.com" :)

Изменено пользователем CupuyC

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


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

Прежде чем давать команду AT+CGATT=1 проверте, не подключен ли уже ЖПРС AT+CGATT?.

Неизвестная ошибка - возможно это ругань от сети, что модуль уже в ней. Попробуйте пропинговать какой-то сервер, например: AT+QPING="www.grandelectronic.com" :)

 

Путем внимательного изучения документации по M10 и ряда экспериментов был найден работоспособный алгоритм инициализации для установления связи с TCP-сервером

 

Проверить сигнал STATUS, если 0, перейти на включение питания

Выключение питания

Ожидание STATUS=0, если за 1 минуту не дождались, выполнить отключение по аварийному сигналу

Ожидание 5 секунд

Включение питания

Ожидание STATUS=1, если не дождались - неисправность модема

Ожидание 1 секунда

ATE0 - запретить эхо

AT+IPR=115200 - зафиксировать скорость обмена

AT+IFC=0,0 - отключить управление потоком (если оно не используется)

AT+CMEE=2 - установить расширенный формат вывода сообщений об ошибках

AT+QSIMSTAT? - запросить наличие SIM-карты - ожидаем ответ +QSIMSTAT: 0,1

AT+CIMI - запросить код сети (первые 5 цифр в ответе), далее используется для выбора из таблицы параметров APN,username,password

AT+CSQ - запросить уровень сигнала сети - ожидаем ответ, отличный от +CSQ: 99,99

AT+CREG? - ожидаем ответ +CREG: 0,1 - если не дождались - ошибка регистрации в сети

AT+CGATT? - ожидаем ответ +CGATT: 1 - если не дождались - ошибка подключения GPRS

далее, если нужно, проводим настройку параметров стека TCP/IP (AT+QIPROMPT=0 и.т.д.)

AT+CSGP=1,"APN","username","password" - задать параметры подключения к APN

AT+QISTAT - получить состояние стека TCP/IP

- далее, в зависимоcти от состояния:

- IP INITIAL, IP STATUS, IP CLOSE - устанавливаем соединение:

-- AT+QIOPEN="TCP","xxx.xxx.xxx.xxx",port - ждем CONNECT OK, если CONNECT FAIL, переходим на QT+QISTAT

-- AT+QISEND=... передаем данные на сервер

- IP START, IP CONFIG, IP IND, IP GPRSACT - деактивируем контекст

-- AT+QIDEACT, переходим на AT+QISTAT

- TCP CONNECTING - отменяем предыдущую попытку соединения

-- AT+QICLOSE, затем сразу на AT+QIOPEN...

- PDP DEACT - если получили такой ответ - идем на начало

 

Работает с симками МТС, Билайн, Мегафон в Омске, когда будут результаты из других регионов - сообщу.

Изменено пользователем EugenyAM

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


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

8 месяцев...

Не пробовали залить над оцпу-шной прошивкой пример example_tcpip и за 5 мин доработать его, чтобы он прозрачно принимал-отправлял данные через Uart3? И ничего не глючит, и напряга ноль :)

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


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

Работает с симками МТС, Билайн, Мегафон в Омске, когда будут результаты из других регионов - сообщу.

 

В Хабаровске на Билайне заработало нормально (раньше с новыми симками не подключалось к серверу по TCP).

В Красноярске на МТС аналогично.

В Московской области (Билайн, Мегафон) связь стала заметно устойчивее (раньше устройство могло после разрыва сутками не выходить на связь,

пока ему не передернут питание)

 

 

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


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

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

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

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

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

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

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

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

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

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