Как и планировалось, начал подробнее изучать CGI-интерфейс. Одной из универсальных "точек входа" здесь является /goform/goform_set_cmd_process, с помощью которой можно запустить несколько десятков разных команд. Одна из таких команд - команда переключения USB-композиций (да, я снова о композициях!

) USB_MODE_SWITCH. Запускается она следующим образом:
Здесь N = 0...9 - условный номер режима, соответствующий определённой композиции и соответствующему ей PID ("MSD" обозначает USB Mass Storage Device, обеспечивающий функционал CD-ROMа и кардридера):
N=0 - PID = 0016: ZTE download mode. Соответствует +ZCDRUN=E.
N=1 - PID = 1125: MSD, после "извлечения" - рабочий режим. Соответствует +ZCDRUN=9 вместе с +ZCDRUN=F.
N=2 - PID = 2004: непонятно, что. Смотрится, как MSD без кардридера. Похоже на режим с N=1 для работы в среде другой ОС.
N=3 - PID = 1403: классический рабочий режим (RNDIS + MSD). Соответствует +ZCDRUN=8 вместе с +ZCDRUN=F.
N=4 - PID = 1403: то же, что и для N=3.
N=5 - PID = 1405: то же, что и для N=3, но с CDC/ECM вместо RNDIS. Включается автоматически при работе в Linux.
N=6 - PID = 1404: RNDIS + диагностический порт + два командных порта + MSD + интерфейс ADB (MF8230ZTED010000).
N=7 - PID = 1244: CDC + диагностический порт + два командных порта + MSD + ADB (MF8230ZTED010000).
N=8 - PID = 1402: диагностический порт + два командных порта + WWAN-адаптер + MSD + ADB (1234567890ABCDEF).
N=9 - PID = 9994: MBIM + диагностический порт + два командных порта + ADB (1234567890ABCDEF).
Для большинства из этих PID мне не удалось найти готовых драйверов, так что их нужно устанавливать "насильно", вручную. Или исправлять INF-ы (как-нибудь позже сделаю и выложу). Если кто-то пожелает попробовать всё это дело уже сейчас, могу описать соответствия "MI - устройство" для интересующего PID - чтобы напрасно не повторять то, что я уже сделал.
Режим 2 есть смысл более тщательно испытать в среде других ОС - Linux, в первую очередь: возможно, сработает автоматический переключатель. Или после usb_modeswitch он перейдёт в какой-то другой режим, здесь не описанный. Но наиболее вероятный вариант - это то, что это "подготовительный" режим для перехода в режим 5. Аналог "связке" режимов 1 и 3 для Windows.
Для сетевого адаптера в режиме 8 драйвер я так и не подобрал. Наверное, это и не имеет смысла, ведь реально использовать его в качестве WWAN device всё равно не получится. Без остановки множества процессов в Linux-части, как минимум. Но при необходимости, можно пробовать разные драйверы QMI WWAN. ZTE, похоже, интеграцией с WWAN AC не озаботился. Или я просто не нашёл следов...
Нужно сказать и о ситуации с командными портами. Они - равнозначные, и один из них, конечно, можно зарегистрировать как модемный. Но установить через него PPP-соединение не получится, т.к. управление модемной частью "перехвачено" внутри. Нет, команда +CGDCONT отрабатывает корректно, и на ATD*99# он отвечает CONNECT, как настоящий, но дальше этого дело не идёт - не ждёт он PPP-клиента в таком режиме. Можно, конечно, заняться последовательной остановкой процессов, в попытках вернуть управление...но нужно ли это, когда есть RNDIS или CDC?
Наиболее интересным режимом для экспериментов и, возможно, для интеграции с другими устройствами (роутерами, например) представляется режимы с N=6 или N=7. В них доступны как RNDIS (CDC), через который идёт трафик, так и командные порты, через которые можно управлять модемом и получать текущую информацию о сети.
Да, переключение режимов таким способом абслоютно безопасно, т.к. установка режима в этом случае не сохраняется после перезагрузки. Так что, если что-то вдруг пошло не так, после переподключения модема он возвращается к исходной композиции. В общем, можно экспериментировать, сколько угодно.
Сохранение (точнее, автоматическое переключение) режима тоже можно задать из консоли, если это нужно, с помощью той утилиты usb_composition, о которой я уже упоминал. Или через ADB-консоль, если так удобнее. Эта штука, конечно, опасная (и мой полумёртвый первый модем - тому напоминание!), но такое включение готового режима - без попыток изменения состава композиций - я уже проверил: работает без проблем. Как раз сейчас у меня и установлено такое переключение: сразу после включения - режим 3, потом - режим 6. Процесс переключения сразу после запуска модема (автоматический) занимает около 2 секунд, если смотреть по Диспетчеру устройств, а с помощью CGI-команды из рабочего режима происходит практически мгновенно.
---------- Сообщение добавлено в 14:13 ---------- Предыдущее сообщение было от в 13:52 ----------
Вы, к сожалению, не сказали - какой у Вас планшет. По сути, не назвали ОС, под управлением которой он работает.
Но одно можно сказать и без этого: так, как E1550, этот модем работать не будет. Я, собственно, написал об этом выше - в абзаце с упоминанием PPP, только с большим количеством букв.
Направления Ваших дальнейших исследований можно будет сформулировать только после того, как Вы назовёте модель планшета.
В общем и целом: если это планшет с Андроидом, то можно попытаться найти (или скомпилировать) для этой сборки модуль cdc_ether. А может быть, он уже есть в составе сборки, и поможет явное переключение модема в режим 5. Или, может, для VID/PID нужно прописать в udev подключение cdc_ether... В общем, нужно смотреть "по месту".
В любом случае, Вам нужно забыть о PPP и всяких PPP Widget - они здесь "не играют". И, в первую очередь, нужно понять - как модем определяется в системе? Что говорит lsusb ?
Если речь идёт о Windows RT, то нужно пробовать режим 9 - устанавливать его вручную, т.к. автопереключение на MBIM в этой прошивке модема не работает. Для этой платформы могут быть доступны и драйверы RNDIS, кстати.
Про Windows CE/Mobile не упоминаю, т.к. там должен работать обычный RNDIS, и у Вас бы всё уже заработало само по себе.
Что касается iOS, то я слабо представляю, как там организованы WWAN-подключения. Наверное, нужно использовать тот же cdc_ether, или как там он называется?