Помогите в настройке сетей, Настройка GPRS, автоматический выбор провайдера, выбор SIM-карты

Довольно странно, что sim5300e не может воспринять вставку симки без перезагрузки. Возможно я понимаю не всю расшифровку пинов и схемы модуля, но есть встроенная возможность увидеть вставлена ли симка. Для этого в мануале по модулю предлагают использовать AT+CSMINS и AT+CSDT. Для использования автоматической детекции вставленности симки предлагают использовать 8 пиновый вариант подключения симки к модулю.


Подскажите, какой вариант из вышеперечисленных используется?
На данный момент я вижу следующее:

Включаем модем с симкой.

AT+CSMINS?
+CSMINS: 0,1

OK
AT+CSMINS=1
OK
AT+CSDT?
+CSDT: 0

OK
AT+CSDT=1
OK
AT+CSDT?
+CSDT: 1
AT&W
OK *Хоть и говорит окей, но не записывает он текущие настройки и значения CSDT и CSMINS не сохраняются

Вынимаем симку и получаем секунды через три в minichat:

+CPIN: NOT READY

+CSMINS: 1,0

Далее модем отзывается на команды следующим образом:

AT+CSMINS?
+CSMINS: 1,0

OK
AT_CPIN?
ERROR

Вставляем симку обратно, ждём секунд 10, ничего не приходит автоматически, отправляем команды вручную:

AT+CSMINS?
+CSMINS: 1,0

OK
AT+CPIN?
ERROR

Это означает, что модем не увидел симку автоматом. Скорее всего подключение производится по 6-pin а не по 8-pin.

Далее провёл следующий эксперимент:

AT+CFUN=4,0
OK
+CSMINS: 1,1

+CPIN: READY

Call Ready
AT+CFUN=1,0
OK
AT+CPIN?
+CPIN: READY

OK

Получается, можно и не перезагружать модем и не ждать 10-20 сек, чтобы получить рабочий вариант функционала вставки симку на горячую. Вопрос только в том, как подключена симка к модему: 8pin или 6pin?

Небольшие правки для /etc/autoGSM.sh

if [ "$ANSWER" != "+CPIN: READY" ]; then
		#logger -i -t autoGSM  "Reseting modem by software"
		#/usr/sbin/chat -s -r $REPORT_FILE  TIMEOUT 10 ABORT "ERROR" REPORT "\r\n" "" "AT+CFUN=1,1" OK "OK"  > $PORT < $PORT
		#ANSWER=`tail -n 1 $REPORT_FILE`
		#logger -i -t autoGSM "AT+CFUN=1,1: $ANSWER"
		#sleep 11
		#/usr/sbin/chat -s -r $REPORT_FILE  TIMEOUT 15 ABORT "ERROR" ABORT "BUSY" REPORT "\r\n" "" "AT" OK "RDY" > $PORT < $PORT
		#ANSWER=`tail -n 1 $REPORT_FILE`
		#logger -i -t autoGSM "AT: $ANSWER"
		#exit 1;
		
		/usr/sbin/chat -s -r $REPORT_FILE  TIMEOUT 10 ABORT "ERROR" REPORT "\r\n" "" "AT+CFUN=4,0" OK "OK"  > $PORT < $PORT
		ANSWER=`tail -n 1 $REPORT_FILE`
		logger -i -t autoGSM "AT+CFUN=4,0: $ANSWER"
		sleep 2
		/usr/sbin/chat -s -r $REPORT_FILE  TIMEOUT 10 ABORT "ERROR" REPORT "\r\n" "" "AT+CFUN=1,0" OK "OK"  > $PORT < $PORT
		ANSWER=`tail -n 1 $REPORT_FILE`
		logger -i -t autoGSM "AT+CFUN=1,0: $ANSWER"
		sleep 2
		/usr/sbin/chat -s -r $REPORT_FILE  TIMEOUT 5 ABORT "RDY" ABORT "ERROR"  ABORT "ERROR" ABORT "BUSY" REPORT "\r\n" "" "AT+CPIN?" OK "+CPIN: READY" > $PORT < $PORT 2>/dev/null 
		ANSWER=`tail -n 1 $REPORT_FILE`
		logger -i -t autoGSM "AT+CPIN?: $ANSWER"
		if [ "$ANSWER" != "+CPIN: READY" ]; then
			exit 1;
		fi
		sleep 2
	fi

В кроне * * * * * root /etc/autoGSM_HW; sleep 25; /etc/autoGSM_HW

Поднимает скорость реакции на вставку симки.

Можно и wb-gsm немного дополнить и в репозиторий положить, я не против. Или в Вики статью сделать. Могу даже архив с АПН выложить

Kenny, добрый день! В WB6 Нога модуля PRESENCE не подключена к молексу для симки. Разработчики говорят, что этот функционал, несмотря на то, что был заявлен, фактически не поддерживался многими модулями.

Перезагрузку серез AT+CFUN протестируем: возможно, это лучший способ, чем дергать питание.

Спасибо!
Наверное, самым простым способом будет дополнить статью в вики, потом протестировать, потом включить в релиз. Если можете написать какой-то текст, пришлите его на info@contactless.ru, я его отформатирую, проверю и дополню нашу документацию!

Последний вариант делает всё без перезагрузки модуля! Т.е. в /var/log/messages вы не увидите переподключения usb устройства.

AT+CFUN=4,0 - включаем минимальный режим или режим “В самолёте”, ноль - без перезагрузки
AT+CFUN=1,0 - включаем полный режим, ноль - без перезагрузки.

В написанном ранее скрипте было использовано AT+CFUN=1,1, где последняя единица означает перезагрузку устройства. По поведению это сравнимо с дёрганьем ноги из wb-gsm reset

Данный метод можно назвать типа wb-gsm soft_reset

Коллеги, в поддержании темы пару слов.

  1. Как я понимаю, в исходные коды wirenboard данное решение так и не попало? Есть планы его в общий дистрибутив включать?
  2. Хотелось бы данное решение доработать до возможности автоматического переключения между слотами SIM, что бы переключаться автоматом на второго оператора, если первый вне зоны доступа. (я сейчас этим плотно собираюсь заняться, и это потребует небольших изменений в стандартных библиотеках и скриптах wirenboard. Т.к. в wb-gsm-common.sh слот SIM задается жестко в коде.
    Как лучше сделать выбор слота? Через переменные окружения? Или есть еще какие-нибудь идеи?

пока нет

если сделаете, то присылайте pull request. Исходники в github/wb-utils