Метод обнаружения аутентификации APN
Я работаю над проектом с участием GPRS. В частности, я использую чип GPRS/GSM u-blox Lisa-U200. Я столкнулся с проблемой контекста PDP, когда начал тестировать его на разных носителях. И, проведя несколько дней в Google, я, похоже, нигде не нашел ответа.
Почему некоторые телефоны / устройства требуют аутентификации APN (PAP/CHAP/None), а некоторые нет? Или как я назвал вопрос - как мобильные устройства (смартфоны) автоматически обнаруживают метод аутентификации APN? Или они вообще?
Я тестирую это так - Linux box, запускает pppd со скриптом чата. Скрипт чата определяет контекст (AT+CGDCONT=1,"IP" и т. Д.) И запускает соединение.
Симптомы - если я не указываю метод аутентификации в контексте PDP явно, он даже не активируется (или согласование LCP завершается неудачно в ppp). Из того, что я понимаю о сетях GPRS, это имеет смысл - я полагаю, потому что узел шлюза отказывается от контекста, если он не указывает, что будет следовать аутентификация.
Протестировано с небольшим количеством операторов, и вот самое странное - некоторые из протестированных мною операторов работают ТОЛЬКО, если я установлю PAP или CHAP (и предоставлю правильное имя пользователя и пароль). А некоторые работают все, что я укажу (NOAUTH, неправильный пользователь / пароль и т. Д.).
Идеи, которые я выдвинул, таковы:
1) Предоставьте пользователю возможность выбрать тип аутентификации. (Не тот подход, который мне нравится, потому что я предпочитаю, чтобы пользователь вводил как можно меньше.)
2) Если пользователь установил имя пользователя / пароль для APN - установите метод auth на CHAP (я заметил, что большинство операторов поддерживают как CHAP, так и PAP). Если нет - используйте None как метод. (Звучит разумно?)
3) Brute force - установить в CHAP, активировать - следить за ошибкой; если не удалось - установите PAP и активируйте, и т.д... (не могу сказать, что я слишком рад этому)
Прошу прощения, если я отвечу на очень тупой и распространенный вопрос с хорошо известным ответом в мобильной индустрии, или если я совершенно не в курсе своей логики, но я разработчик программного обеспечения, и это просто не имеет для меня никакого смысла:)
Спасибо всем, кто поделится опытом и знаниями по теме!