3g module driver что это

Обновлено: 18.05.2024

Стоит сказать что я использовал ОС Linux Ubuntu 11.10 и все примеры буду приводить для неё.
Первые 3 пункта очевидны, как добиться 4 и 5 легко найти в интернете. Последние два рассмотрим подробно.

Выбор тулчейна для кросс компиляции модулей ядра (драйверов)

В данной статье мы не рассматриваем возможность прошивки собственноручно собранного ядра на свой телефон поэтому мы должны придерживаться определённых правил.
Для того чтобы узнать каким компилятором собрано ядро на нашем устройстве выполняем команду:

c помощью любого эмулятора терминала или используя утилиту adb:

В результате получаем строку вроде этой:

Видим что у нас установлено ядро версии 3.0.69 локальная версия "-g26a847e" и собрано оно тулчейном Linaro GCC 4.7-2012.07. Зная версию находим необходимый тулчейн и распаковываем в любую папку. У меня путь выглядел так:

Сборка ядра

Для начала узнаем какое именно ядро использует наше устройство. Это можно сделать выполнив команду указанную выше или зайдя на устройстве в настройки, раздел «О телефоне».



Как было сказано выше в моём случае это 3.0.69-g26a847e. Немного поковырявшись на гитхабе прошивки (PACman for HTC Desire S) я определил что это ядро AndromadusMod.
Копируем найденные иходники себе на локальную машину (я предварительно форкнул необходимый репозиторий себе в гитхаб и выполнил git clone, производители вроде Google и изготовители кастомных прошивок держат исходники ядра в репозиториях с открытым доступом, некоторые просто позволяют скачать исходники в виде архива). Для меня это выглядело так:

Теперь нужно найти конфигурацию с которой собрано ядро нашего устройства. В большинстве случаев конфигурация лежит на самом устройстве и получить её можно с помощью adb, распаковать и скопировать в папку с исходниками ядра:

Необходимо также немного изменить конфигурацию — установить локальную версию на идентичную той что мы узнали ранее и выключить автоматическое назначение локальной версии. Сделать это можно с помощью любого текстового редактора:

После переходим в папку с исходниками, настраиваем переменные окружения для сборки и собственно собираем ядро:

Теперь можно перейти к программированию.

Написание кода
Android приложение

Учитывая огромное количество статей о написании Android приложения я рассмотрю только моменты связанные с задачей.
Наше приложение будет иметь всего 1 Activity:



Выглядит это в итоге вот так:

На кнопку мы назначаем событие которое получит информацию от нашего драйвера и запишет её в текстовое поле:

Теперь создадим класс обёртку для нашей jni библиотеки:

Создадим папку jni в корне проекта Android приложения.
Далее сгенерируем Си хедер для нашей нативной библиотеки:

Получаем хедер и копируем в ранее созданную папку, создадим соответствующий .c и конфигурацию сборки Android.mk:

  1. Открыть ноду драйвера.
  2. Выделить буфер под информацию из драйвера
  3. Получить информацию с помощью ioctl запроса.
  4. Закрыть ноду.
  5. Преобразовать информацию в Java строку и передать в обёртку.
Драйвер ядра
  1. Драйвер написанный для этой статьи не делает ничего сверхъестественного — только возвращает список имён сетевых интерфейсов.
  2. Для общения с драйвером используется механизм ioctl.
  3. Makefile для сборки позволяет указывать ядро для которого требуется собрать данный драйвер, для этого нужно правильно указать переменные окружения и использовать команду:
Запуск

Для начала зальём собранный драйвер на устройство, и установим его в ядро, заодно сделаем ноду драйвера доступной для всех:


Если версия ядра модифицирована правильно и ядро совпадает с тем которое было на устройстве ошибок быть не должно.
После можно запускать Android приложение напрямую через eclipse или установить его. Нажимаем единственную кнопку и получаем результат:

Логи ядра можно получить командой:

3g module driver что это

Агрегация - дорого? Собираем бюджетно или Набор юного агрегатора OpenWrt/Rooter – обсуждение

Прикрепленное изображение
Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

  1. "Нужно ли обновлять прошивку?" - если вас устраивает работа модема на текущей прошивке, то смысла обновлять НЕТ
  2. Чтобы ощутить все "прелести" агрегации, необходима нормальная широкополосная антенна. За подробностями идем в тему Антенна для LTE






    | Два | Три
    | Два
    | для модуля и USB
    ,
    Для лентяев: пытаться заводить в таком порядке - QMI, MBIM, NCM, ECM, RNDIS, PPP
    | Два ,
    По мнению ребят из микродрайв СимКом внимания не заслуживает, они за ep06.

  • Q: Нет коннекта
    A1: Проверить APN! Если неверный или пусто, может не работать.
    A2: Проверить симку (баланс, ограничение на раздачу и тип устройства)
    A3: Проверить разрешенные бэнды

  • Q: Какой нужен переходник М.2
    A: Нужен M.2 key B WWAN. В поиске лучше писать "M.2 B usb sim" или "M.2 mini pci WWAN", т.к с ключом В так же идут переходники для ssd, которые нам не подходят!
    M.2 с ключами А, Е, А+Е НЕ ПОДХОДЯТ!

  • Q: Что со сменой IMEI
    А: У Quectel'ов легко, АТ-командой. В теме есть - ищите поиском.
    У Sierra в 90% случаев это не требуется, т.к. опознается в сети как мобильник. 35 не значит, что это мобильник!
    HP lt4220 / Telit ln940 / Foxconn T77W676
    Остальные - поиск по форуму, ключевое слово "IMEI"
    Если руки чешутся убить модем , это реально, но ищите сами. На свой страх и риск! Здесь это оффтоп !

  • Основная ветка по Keenetic , где в первую очередь необходимо задавать вопросы




На последней прошивке EP06 EP06ELAR04A04M4G QAM256 включается командой AT+QCFG="dl_256qam",1

Внимание! Участились случаи мошенничества с предложением продажи модемов в QMS, Telegram. Не "ведитесь".
НИКТО из участников форума не пользовался услугами этих мошенников, в том числе и ТС kurianov. Продажей тоже никто не занимается.

Тема ищет куратора. Узнать подробности и подать заявку вы можете в разделе Хочу стать куратором

Прикрепленное изображение

Bester2,
ну не то что сдают трафик. палят нас своими подключениями на свои сервера )
Да, есть такое дело. Частично это отключается. Кто-то пересобирает прошивку либо брали свою же прошивку от китайских клонов. Но эта тема не про то ))

Ща набегут качки-халявщики. мой им совет - берите тарифы для модемов!

А как хорошо начиналось. :D
Понятно же что торенты на радиоканале зло несомненное, но топик же не об этом?

Что не только оффтоп, за разумный ценник есть cat.6 в mPCI-e, Quectel EP06.

ПолВторого, ну потому что у нас народ не знает меры ))
Я тоже любитель нагнуть систему и поиметь тех, кто обычно имеет нас, но не в ущерб окружающим, а эти заядлые качки имеют нас всех, таких же пользователей, как они. А потом ноют, что опсосы выдумывают все новые и новые методы борьбы с ними. Они себе киношки BDRip'ы качают на смарт тарифах, а у тех, кому связь для дела нужна - полная ж наступает. Причем мне нужна не космическая скорость, хватит и 10-20 мбит, но нужна стабильность, иначе обрываются конференции, удаленный рабочий стол, удаленка с виртуалками.

Поэтому халявщикам качкам говорю, идите обратно на хуавей отсюда!
Тут номера меняются очень не просто, а иногда и достаточно сложно, с большой вероятностью завалить железо!
Тут нужны познания OpenWRT - из коробки все само просто так не заработает!
Так что - Бегите отсюда!

ПолВторого, EP06 хорош, но em7455 еще дешевле ) А так да, всяко приятнее цен на хуавеи. Вон кат 12 em12 стоит 6500. Сколько хуавей кат 12 стоит?))
Но тут еще дело в том, что многие роутеры ограничены юсб 2.0 и 100 мбит портами и с них больше не вытянуть. Хотя нормальным людям больше и не надо. Чтоб выжать больше, нужен более дорогой роутер с юсб 3.0 и 1гбит портами.

Добавил в шапку картинки с вариантом от антэкса и другого нашего производителя.

Почему вдруг решил отметить антэкс? Потому что они родили минироутер под mini pci-e без излишеств за

ps: но я по-прежнему больше люблю варинт с юсб удлинителем из витой пары (до тех пор, пока это еще возможно)

Прикрепленное изображение

Какой еще потенциал я вижу у этой платы?

1. Конечно же воткнуть туда переходник на m.2 для экономии на модемах

2. Есть другой вариант этой же платы, но с юсб - мне, почему-то так и хочется взять ее, и вместо юсб впаять туда на шлейф (или гребенку) переходник m.2-usb. Этот вариант может быть интересен для очень многих роутеров, если стоит задача спрятать такой модем внутрь корпусного роутера. А это уже простор и для мобильных роутеров, и для стационарных "все в одном". (Хуавей, давай подвинься!)

Прикрепленное изображение

Прикрепленное изображение

САТ12 нет возможности выложить.
Что и как получится.

Если задача выжать максимум, то нужен роутер с юсб 3.0 и ЦП пошустрее + 1 Гб свитч, например Xiaomi 3G - это 2500-3500 р (внимательнее с выбором ревизии)
+ переходник m.2 usb 3.0 w sim - 1000 р
+ Quectel em12 - 6500+ р (лично не тестировал, за минимальный ценник, есть вероятность, что это вендорский, может потребоваться прошивка или смена pid vid)

Как далеко от роутера заведется модуль на юсб удлинителе, не знаю, у этих xiaomi 3g ограничен ток на юсб порте (отчего не заводились внешние харды и народ стал выпаивать лишние резисторы)

Я максималкой не озадачивался. У меня задача была скромнее - 50 мбит за счастье, и чтоб в час пик (массовая удаленка + видео уроки у школьников) ниже 10ти не падала. И чтоб не приходилось вручную постоянно прыгать с лте 2600 на 1800 и далее по кругу в поисках более свободной полосы. (именно это меня достало)

Если задача выжать максимум, то нужен роутер с юсб 3.0 и ЦП пошустрее + 1 Гб свитч, например Xiaomi 3G - это 2500-3500 р (внимательнее с выбором ревизии)
+ переходник m.2 usb 3.0 w sim - 1000 р
+ Quectel em12 - 6500+ р (лично не тестировал, за минимальный ценник, есть вероятность, что это вендорский, может потребоваться прошивка или смена pid vid)

Хорошо, но экономика должна быть экономной - на данный момент B528 Cat6 стоит 6к - на нем увидеть 50Мбит думаю не проблема.
Подозреваю что нужно искать более бюджетный вариант, с учетом того что роутеров у народа много( его цену можно не учитывать ). ren69,
1. Открываю авито - 528 неизвестного происхождения начинается от 9 тыщ. B525 - 12-14 тыщ! и это за всего лишь 6ю категорию с агрегацией всего двух частот на прием.
2. Сравнивать надо девайсы одной категории - модуль ем7455 кат6 стоит 1800 р + переходник

500 р и я могу это воткнуть как в роутер, так и прямо в комп (а можно прямо в материнку без всяких переходников) С этой ценой не может даже е3372 4й категории тягаться.
3. За ошибочно названные 6 тыщ я могу взять модуль уже аж 12й категории! Лишь бы смысл был. Хуавей этой категории сколько стоит?))

4. 50 мбит b528 даст только там, где они есть, т.е если БС не перегружена. У меня именно в этом беда.

Агрегация не для высоких максималок была придумана, а для того, чтобы связь оставалась приемлемой в условиях больших нагрузок на сеть. Распределение нагрузки и балансирование.

1. Открываю авито - 528 неизвестного происхождения начинается от 9 тыщ. B525 - 12-14 тыщ! и это за всего лишь 6ю категорию с агрегацией всего двух частот на прием.
2. Сравнивать надо девайсы одной категории - модуль ем7455 кат6 стоит 1800 р + переходник

500 р и я могу это воткнуть как в роутер, так и прямо в комп (а можно прямо в материнку без всяких переходников) С этой ценой не может даже е3372 4й категории тягаться.
3. За ошибочно названные 6 тыщ я могу взять модуль уже аж 12й категории! Лишь бы смысл был. Хуавей этой категории сколько стоит?))
4. 50 мбит b528 даст только там, где они есть, т.е если БС не перегружена. У меня именно в этом беда.
Агрегация не для высоких максималок была придумана, а для того, чтобы связь оставалась приемлемой в условиях больших нагрузок на сеть. Распределение нагрузки и балансирование.


1. Согласен, на Авито как бы дорого, а на Али? 6-6,2к , агрегация в вашем регионе нормально работает? у меня пчелиный оператор до сих пор не поддерживает больше 3 частот на прием.
2. Прошу дать ссылку на приобретение Cat6 за 1800р, и еще инструкцию, как такое подружить с роутером ( просто я не в теме, сорри )
3. На Али, 818й категории Cat 19 нашел за 14к, если сравнивать представленные выше цены - роутер 3к, переходник 1к, Е12 - 6.5к = 10,5к - Cat12.
4. В вашем регионе какой оператор поддерживает агрегацию больше 3 частот?

По теме внимательнее пройдитесь, начиная с шапки, тут ссылки полезные есть.

По теме внимательнее пройдитесь, начиная с шапки, тут ссылки полезные есть.
Подскажите пож. по модели роутера, на каком остановиться или мож еще какой посоветуете.
Ссылка на пост с соседней темы
EM7455 по ссылкам под ноуты Делл заточены. Для OpenWRT это значения не имеет? И как легко убедить поддержку Кинетика запилить прошивку и под 7455?
EP06E с переходником - пигтейлы идут в комплекте и какие?
И по сим-картам - только модемные тарифы?

В копилку: АТ-команды для Quectel ЕР06, EG12 и Sierra EM7455

Ну что Вы как маленький?! Нашли где смотреть)) - Микротик с неродным более дешевым модулем за конский ценник. Как говорят те ребята "мы за сборку и настройку комплекта берем. "
Микротик рбм11 стоит от 2500 р, Рбм33 стоит от 3300 р. Но это Микротик с РоутерОС! Где хуавей с ксиаоми, а где микротик?!
НО! Микротик хорошо работает пока только с родным дорогим модулем. С другими он работает не по нужному протоколу, а через костыль и поэтому режет скорость. Для сторонних дешевых модулей на него тоже придется ставить ОпенВРТ, благо под ник есть готовый Рутер, где все уже вшито и работает! Когда РоутерОС допилят (а может и уже - обещали в новых версиях), тогда можно вернуться обратно - для фанатов микротиков это просто идеальный вариант!

Вариантов просто целая куча! А если приспособить завалявшийся в шкафу роутер, так это вообще. - это Вы и сами отметили )

Я никого не уговариваю, убеждать и силком тащить не буду )

EM7455 по ссылкам под ноуты Делл заточены. Для OpenWRT это значения не имеет? И как легко убедить поддержку Кинетика запилить прошивку и под 7455?
EP06E с переходником - пигтейлы идут в комплекте и какие?
И по сим-картам - только модемные тарифы?

Первая ссылка (дешевле всего) - это ОЕМ версия с родными идентификаторами vid pid. Те, что дороже и с припиской Dell / Thinkpad / HP - это тоже самое, но с уже измененными pid vid на те, что хотят видеть эти ноутбуки (чтоб то же железо покупали у них, но дороже). Если ОпенВРТ не увидит какой-то из них - они меняются несложно.
Кинетик - они уже работают в этом направлении. Пишите им заявки на нужные модули - они ускорятся и сосредоточатся на нужных модулях. В ОпенВРТ все уже давно работает, а значит и этим ребятам не составит труда добавить все это.
Пигтейлов нет. Ищите, стоят копейки. Иногда в комплект прикладывают встраиваемые антеннки на самоклейке.

Про тарифы:
Господа, поймите меня правильно и не обижайтесь! (Не к Вам лично, ко всем обращаюсь!)
Я не хочу сильно популяризировать эту тему и выдавать полный разжеванный рецепт, чтобы не было резкого перевеса и миграции с хуавеев на модули. Я хотел лишь немного уравновесить положение дел, приоткрыть людям глаза, но не выдавать им розовые очки, что мол все просто. Кому надо, тот уже все узнал и заказал. Я не хочу, чтобы сюда на все готовое приперлись ленивые барыги и халявщики, вечно пытающиеся "выкачать весь интернет" на смарт тарифе за 200 р, и открыли сезон охоты на железо (посмотрите, что с ценами на хуавеи стало), которое мне самому нужно, чтоб у меня была хоть какая-то связь, а не 200+ и торренты. Торренты могли бы и ночью качать, а лучше еще и по проводам. Пусть они остаются на своих хуавеях и переплачивают дяде васе с авито за непонятные хуавеи. В мире должно быть равновесие. Пожмотился тут, переплати там! Т.к из-за этих качков страдают люди, которым нужен скромный, но стабильный канал для дела и работы.

Все настраивается, все меняется - на одних модулях легче (подороже), на других сложнее (подешевле).

ТТЛ меняется вообще где угодно, тем более если в основе всего лежит iptables. Я этим занимался еще лет 15 назад на древних проводных роутерах, чтобы делить инет с соседом, когда проводной инет делить не давали и роутеры были чем-то невиданным. И с йотой я развлекался еще до того, как это стало мейнстримом.

Но посмотрите, к чему привело такое открытое обсуждение с подробными инструкциями, готовыми скриптами и утилитами?! Народ стал борзеть. Люди разные - не все знают меру. В итоге опсосы стали выдумывать новые и новые методы выявления и пресечения раздачи. Но страдают не только эти качки, но и обычные скромные пользователи.

Не всем понятно, о чем я. Поясню - Ладно в городе вышек дофига и операторов. Есть выбор, пути отхода.
А представьте, в деревне полтора оператора и одна вышка. И тут такой красавец с микротиком и модулем кат12 (или хуавеем 525-715) кладет вышку на лопатки своими торрентами / киношками и вся деревня или СНТ остаются без связи. (А неправильно настроенный микротик даже проводного оператора кладет на лопатки во всем многоэтажном доме.) А у людей удаленка, конференции, у детей видео уроки по скайпу.

Интересная вещь: EM7455 позволяет задать имей, если он не предустановлен с завода:
!NVENCRYPTIMEI Write unencrypted IMEI to modem
Write an unencrypted IMEI to a modem if the modem does not already have an IMEI—
the command can only be used once per modem.
Это открывает простор для творчества - достать бы только пустые модемы без имей. И отсюда вопрос: с алика идут болванки или уже с imei?

Это открывает простор для творчества - достать бы только пустые модемы без имей. И отсюда вопрос: с алика идут болванки или уже с imei?

Подсказываю: Режим Advanced (Engineering mode) - Factory reset. (должно помочь, сам не пробовал, мне не нужно)

mini-PCIe LTE для ноутбука

Sierra Wireless AirPrime MC7710 LTE/HSPA+
  • LTE 800/900/1800/2100/2600* MHz
  • WCDMA 900/2100 MHz
  • EDGE/GPRS/GSM 900/1800/1900

* LTE 2600 FDD, Band 7 (2500—2530 МГц / 2620—2650 МГц) как раз и используется Yota и виртуалными операторами МегаФон и МТС

Свой модуль я заказал на ebay за $260. Обратите внимание, что эти модули зачастую залочены на определенного оператора. Как я понял, DC-unlocker еще не обучен разблокировке этих моделей, поэтому ищите unlocked-версию.
Чуть менее, чем через месяц после заказа, он оказался на моем столе:


Три U.FL выхода предназначенны для подключения трех антенн: Внутренней 3G/LTE, GPS и внешней 3G/LTE.

Не откладывая дела в долгий ящик, ставим модуль куда положено и подключаем антенны:


На фото разобранный UMPC Samsung Q1UP, к модулю приклеена внутреняя 3G антенна, и последний готов занять свое место в miniPCIe разъеме.


C GPS пока дела обстоят сложно. Я планировал подключить к этому разъему пигтейл MMCX-f на IPX U.FL чтобы вывести на корпус разъем MMCX и подключать к нему внешнюю GPS антенну, которая у меня есть в наличии.
Но к сожалению эти пигтейлы до меня еще не добрались. Поэтому я подключил туда пленочную Wi-Fi антенну, которую вы видите на изображении слева (просто чтобы попробовать).
Забегая вперед, скажу, что GPS у меня предсказуемо не заработал. Поэтому про GPS на этом модуле я расскажу в другой раз, когда у меня будет все необходимое.
К разъему AUX я подключил пигтейл U.FL RP-SMA-f к которому в дальнейшем будут традиционно подключаться Wi-Fi/WiMax антенны.

Дальше начинается самое интересное.
На сайте Sierra Wireless нельзя скачать драйверы и AirCard Watcher для этой модели. Утилита Sierra Watcher позволяет настраивать устройство, вручную выбирать сеть, выбирать предпочтительный диапазон (2G/3G/LTE), включать GPS и многое другое. Также SierraWatcher содержит нужные драйверы. Чтобы найти подходящую версию Watcher'а пришлось изрядно попотеть. Чтобы облегчить задачу последователям, я выкладываю в удобный доступ файл Sierra Watcher для MC7710.

Чтобы подключиться к Мегафоновскому LTE, мне пришлось пройти небольшой квест.
Что на самом деле нужно сделать, тобы подключиться к Мегафон LTE *
  1. Нужно получить специальную SIM-карту которая называется U-SIM. Вашу сим-карту должны бесплатно поменять на U-SIM в любом офисе обслуживания абонентов.
  2. Нужно попросить, чтобы вам подключили тарифную опцию Internet L 4G, Internet XL 4G или Internet XXL 4G. подробнее о тарифах
  3. И включили LTE.
Ворчание

Теоретически, это можно сделать самостоятельно, через Сервис-Гид. Но на практике, LTE не заработает, потому что есть некая опция, которая позволяет зарегистрироваться в сети LTE Мегафона, но включить ее могут только сотрудники Мегафона в офисе обслуживания или операторы колл-центра. Практика показала, что в абонентской службе мало кто разбирается в этом вопросе. В результате, после того как я получил U-SIM и подключил тарифную опцию Internet XXL через сервис-гид, в колл-центре меня уверили, что у меня должно работать 4G, и я целый день безуспешно сражался с драйверами, Watcher'ами и AT-командами. Вечером, приехав в офис обслуживания, я поделился своей проблемой и попросил, чтобы мне продемонстрировали, что моя сим-карта может подключиться к LTE хоть с каким-нибудь устройством. Но сотрудник оператора взял мой паспорт, зашел в настройки моей учетки в мегафоне, грустно вздохнул, сказал что у меня была не включена та самая магическая опция LTE, которую самостоятельно никак нельзя включить. После этого у меня все отлично заработало.

Что нужно сделать, тобы подключиться к Yota
  1. Нужно прошить модем вот этой штукой: Прошивка Yota для MC7710.
  2. Сходить туда, где продают оборудование Yota (подойдет стойка в торговом центре), и получить SIM-карту Yota.
  3. Уговорить сотрудников Yota произвести первоначальную регистрацию сим-карты в сети Yota. (для этого нужно выйти в интернет через эту симкарту с официального устройства Yota)
Внешняя Антенна

LTE без внешней антенны или не ловится совсем, или ловится еле-еле. Очевидно моя встроенная 3G антенна совсем не подходит для диапазона 2600, а вот Wi-Fi'ная антенна Planet 5dbi обеспечивает отличную скорость.
Потому что, как говорил drunken, «Антенны для вафли … имеют низкую эффективность, но работают в широком диапазоне.» А 2.6ГГц от 2.4ГГц не так уж далеко :)
Лично мне нравится то, что я могу поэксперементировать с антеннами при наличии удобного коаксиального разъема и радует трушный вид моего umpc .
Тем кому не хочется, чтобы из его ноутбука торчала такая штука, подходящим решением будет подключение к разъему aux внутренней Wi-Fi антенны, типа той, что я подключил к GPS.
Тесты с внешней антенной и без оной я приводить не стану, так как разница выглядит как «совсем не работает/ого-го как работает!»

Тестирование*
Windows Mobile Broadband

image

Отличная технология, которая позволяет использовать данный модем без запуска родного приложения, которое на мой взгляд не отличается особой эстетичностью. Мне вообще импонирует, когда аппаратное обеспечение управляется средствами операционной системы, а не bells and whistles от его разработчиков.
Эта технология поддерживается в Windows 7 и Windows 8. На КДПВ в заголовке поста — фрагмент панели Networks в Windows 8, которая появляется при нажатии на значок беспроводных подключений из области уведомлений:

GSM/3G/4G-модемы во встраиваемых системах на примере LTE-модема Quectel EC21 и Yocto Project

image

Многим устройствам на базе встраиваемых систем необходим интернет. Проводное подключение к интернету для них не всегда возможно, и если устройства находятся в зоне действия сотовой связи, то к интернету можно подключиться с помощью GSM/3G/4G-модемов.

В этой заметке описан процесс создания дистрибутива ОС Linux для встраиваемой системы при помощи инструментария Yocto Project, позволяющий подключать устройство к интернету через GSM/3G/4G-модем и протокол PPP.

Содержание

Оборудование и программное обеспечение

Дистрибутив ОС Linux для встраиваемой системы будем собирать с помощью Yocto Project версии THUD 2.6.4 на ПК под управлением ОС Ubuntu 18.04.

Роль встраиваемой системы будет играть устройство BeagleBone Black Rev. C с подключенным к нему LTE-модемом Quectel EC21-E. Для этого мы воспользуемся отладочным набором UMTS&LTE EVB для тестирования UMTS и LTE модулей Quectel. Структурная схема стенда, с которым мы будем экспериментировать, приведена на рис. 1.

image

Рисунок 1 — Структурная схема стенда

Подготовка ПК для сборки дистрибутива

Убедитесь, что на вашем ПК есть 50 ГБ свободного дискового пространства и на нем установлены:

  • Git версии 1.8.3.1 или новее;
  • Tar версии 1.27 или новее;
  • Python версии 3.4.0 или новее.

Установим необходимые пакеты:

Создание проекта и сборка дистрибутива

Создадим в домашней директории каталог, где у нас будет хранится репозитории Poky и мета-слои с рецептами. Назовем его habr-yocto-lte :

Перейдем в директорию habr-yocto-lte и создадим пустой git репозиторий:

Добавим в созданный git -репозиторий, в виде подмодулей, проект Poky и слой meta-ti :

Poky это как раз тот самый инструмент, с помощью которого мы будем собирать наш дистрибутив, а meta-ti – это слой, который объединяет в себе наборы рецептов, классов и конфигурационных файлов для процессоров Texas Instruments. Подробнее о том, что такое Poky и мета-слои можно узнать из Yocto Project Overview and Concepts Manual.

Создадим файл oe-init-build-env и сделаем его исполняемым:

Добавим в него следующий код:

Файл oe-init-build-env мы будем запускать всякий раз, при открытии нового окна терминала. Давайте запустим его командой:

При первом выполнении скрипта в папке

/habr-yocto-lte будет создана папка build , содержащая конфигурационные файлы и результаты сборки дистрибутива, а в окне терминала мы увидим нечто вроде этого:

В принципе, теперь у нас все готово для сборки дистрибутива, но мы сделаем еще несколько «штрихов»:

    Добавим слой meta-ti и удалим слой meta-poky-bsp . Для этого запишем в переменную BBLAYERS , которая находится в файле

    В качестве целевой системы, на которой будет работать наш дистрибутив выберем beaglebone . Разрешим запись истории сборки, это поможет нам понять какие пакеты были установлены в дистрибутив, узнать их размер и др. Формат пакетов сделаем ipk и разрешим модули ядра. Вместо sysvinit будем использовать systemd . Обновим конфигурацию дистрибутива, добавив в конец файла

Запустим сборку дистрибутива:

Пока собирается дистрибутив можете пойти вздремнуть, у вас есть на это часа 4 :). Потом будет собираться всё гораздо быстрее.

Дистрибутив сохранится в каталоге

Добавление поддержки протокола PPP в ядро ОС

Устройство, на котором будет установлен дистрибутив, созданный в предыдущем разделе, уже сможет распознать LTE-модуль Quectel EC21-E, т.к. его драйвера есть в ядре Linux. Однако для подключения устройства к интернету нам необходимо добавить поддержку протокола PPP в ядро Linux, а также добавить в наш дистрибутив пакет ppp и написать для него файл расширения рецепта, который «расскажет» bitbake как и куда установить в нашем дистрибутиве необходимые файлы для pppd и chat , являющиеся частью пакета ppp .

Для конфигурирования ядра выполним команду:

Откроется стандартное окно menuconfig в котором надо выбрать:

Сохраняем конфигурацию и выходим из menuconfig . Учтите, что эта конфигурация будет применяться только на том ПК, на каком она была сохранена. Для того что бы она применялась на любом ПК при клонировании проекта из репозитория, необходимо сохранить конфигурацию в файле defconfig и написать рецепт расширения для recipes-kernel .

Сохраним конфигурацию ядра в файле defconfig :

Файл defconfig сохранится в каталоге

Все рецепты расширения и рецепты, написанные нами, будем хранить в отдельном мета-слое. Создадим и назовем его meta-habr :

/habr-yocto-lte появится директория meta-habr – это и есть наш мета-слой. В этой директории будет пример рецепта recipes-example , он нам не нужен, удалим его, а затем добавим наш мета-слой в файл bblayers.conf :

Пришло время сделать рецепт расширения для ядра Linux. Создаем необходимые каталоги и файлы:

Копируем ранее созданный файл defconfig в каталог

и добавляем в файл linux-ti-staging_%.bbappend следующий код:

Теперь конфигурация ядра, определенная в файле defconfig будет применяться всегда при сборке дистрибутива. Соберём его и убедимся, что требуемые модули PPP установлены:

Добавление в дистрибутив пакета ppp

Пакеты программ добавляются в дистрибутив с помощью переменной IMAGE_INSTALL_append . Добавим её в конец файла local.conf и присвоим ей значение соответствующее имени пакета:

Соберём дистрибутив и убедимся, что пакет ppp установлен:

Теперь в нашем дистрибутиве есть все для того чтобы подключить устройство к интернету через LTE-модем. Однако мне лично не очень хочется настраивать pppd и chat , входящие в пакет ppp , непосредственно на устройстве. Поэтому давайте добавим необходимые скрипты для этих программ в наш дистрибутив с помощью расширения рецепта ppp .

Скрипты для pppd и chat

Создадим три файла скриптов habrppp , habr-chat-connect и habr-chat-disconnect со следующим содержимым:

Несколько комментариев по представленным выше скриптам.
LTE-модуль Quectel EC21-E определятся в системе в виде четырёх последовательных портов:

Если в вашей системе есть другие USB-устройства, то нумерация портов, возможно, будет отличаться от приведенной выше, но последовательность останется та же. Поскольку в нашей системе нумерация портов соответствует выше приведенной, то в скрипте habrppp мы указали в качестве порта для соединения по протоколу PPP порт /dev/ttyUSB3 .

Обратите внимание на поля user и password в скрипте habrppp , а также на APN в команде AT+CGDCONT в скрипте habr-chat-connect , они должны быть установлены согласно рекомендациям сотового оператора.

Рецепт расширения для пакета ppp

Осталось совсем чуть-чуть. Создадим каталоги и файл для рецепта расширения ppp :

Скопируем скрипты, написанные в предыдущем разделе в папку

/habr-yocto-lte/meta-habr/recipes-connectivity/ppp/ppp/beaglebone и добавим следующее содержимое в файл ppp_%.bbappend :

Заключение и ссылка на проект

Осталось собрать наш дистрибутив, с помощью программы balenaEtcher записать его образ на microSD карту памяти и запустить на устройстве. Теперь наше устройство подключено к интернету:

Подключением к интернету через протокол PPP можно управлять вручную, с помощью команд pon и poff . Для установления соединения выполните команду:

Читайте также: