Ublox M10Q не отправляет сообщения UBX: Устранение неполадок с конфигурацией
Мы начинаем работу с GPS-модулями и создали печатную плату с M10Q. При подключении к интерфейсу UART через USB-TTL с использованием u-center мы получаем сообщения NMEA, но нет информации о типе интерфейса, прошивке или конфигурации. При попытке изменить конфигурацию мы не можем отправить какие-либо обновления, и появляется символ предупреждения без объяснения. Мы подозреваем, что это происходит потому, что устройство не подтверждает изменения конфигурации через протокол UBX. Нам нужно, чтобы сообщения UBX начали работать, так как мы читали, что они должны быть включены по умолчанию. Как можно устранить и решить эту проблему с сообщениями UBX?
Ublox M10Q обычно поддерживает UBX-протокол, но часто UBX‑сообщения для вывода не включены по умолчанию — поэтому вы видите только NMEA и не получаете ACK при попытке изменить конфигурацию через u-center. Проверьте настройки порта (CFG-PRT), включите нужные UBX‑сообщения через команду CFG‑MSG в u-center и опросите UBX‑MON‑VER, чтобы подтвердить приём бинарных команд. Учтите, что многие сборки M10Q не имеют энергонезависимой флэш‑памяти для сохранения конфигурации — изменения могут сбрасываться при отключении питания, и их нужно либо применять при каждом старте хоста, либо использовать версию модуля с флеш.
Содержание
- Ublox M10Q: быстрые проверки (физика и порт)
- Настройка и включение UBX‑сообщений (CFG‑MSG, CFG‑PRT)
- Почему изменения не сохраняются: M10Q и отсутствие флеш‑памяти
- Пошаговая диагностика: как добиться ACK и увидеть UBX
- Практические решения и варианты обхода
- Источники
- Заключение
Ublox M10Q: быстрые проверки (физика и порт)
Перед любой сложной диагностикой сделайте простые проверки — это экономит часы.
- Питание и уровни сигналов. Убедитесь, что питание модуля корректно (обычно 3.3 V) и что USB‑TTL адаптер работает на 3.3 V TTL, а не 5 V (ошибка уровня может повредить модуль). См. разделы питания в интеграционном руководстве SAM‑M10Q для параметров питания и интерфейсов: SAM‑M10Q Integration Manual.
- Подключения Rx/Tx и GND. Поскольку вы видите NMEA‑сентенции, физический UART, скорее всего, работает — но перепроверьте проводку и общий GND.
- Скорость порта и flow control. В u-center попробуйте несколько стандартных скоростей (9600, 38400, 115200) и отключите аппаратный контроль потока (RTS/CTS) — если он включён, а линии не подключены, обмен может блокироваться.
- Индикация NMEA = полезный сигнал, но не гарантия двунаправленной работы UBX. NMEA — это только текстовые выходные предложения; UBX — бинарный, двунаправленный протокол. Если вы видите NMEA, но не можете опрашивать UBX‑сообщения (MON‑VER и т.п.), то проблема — в протоколе/настройках порта, а не в физике.
Настройка и включение UBX‑сообщений (CFG‑MSG, CFG‑PRT)
Самый частый сценарий: протокол UBX поддержан, но конкретные UBX‑сообщения на UART не активированы. U‑blox прямо рекомендует включать сообщения через CFG‑MSG и контролировать порты через CFG‑PRT — описано в ответах на портале и в руководстве производителя.
Практическая последовательность в u‑center (коротко):
- Откройте COM‑порт в u‑center и установите скорость, на которой вы видите NMEA.
- В окне «Messages» найдите ветку UBX и разверните её (в u‑center двойной клик по UBX разворачивает дерево): Getting Started with u‑center.
- Опросите версию прошивки: отправьте запрос UBX‑MON‑VER (Poll) — это быстрый тест приёма бинарных команд и показывает версию прошивки: SAM‑M10Q Integration Manual.
- Опросите настройки порта: UBX‑CFG‑PRT (Poll). В нём смотрите поля protocol_In / protocol_Out (или inProtoMask/outProtoMask) — там должны быть разрешены UBX входящие и исходящие сообщения. Если UBX отключён в out/in для вашего порта — включите его. Порт может быть настроен так, что UBX выводится не на этот UART.
- Включите нужные UBX‑сообщения через CFG‑MSG (например NAV‑STATUS или NAV‑PVT). В u‑center можно выбрать сообщение в дереве UBX и двойным кликом задать частоту/порт — это отправит CFG‑MSG. U‑blox рекомендует этот подход для теста: How to turn on UBX messages?.
- Наблюдайте за ответом — при корректной отправке конфигурации модуль должен вернуть ACK (ACK‑ACK). Если ACK нет — см. следующий раздел.
Если вы вручную формируете UBX‑пакеты (не через u‑center), обязательно соблюдайте формат UBX (заголовок 0xB5 0x62, длина, payload, контрольная сумма). Пример работы с контрольной суммой и формированием пакета обсуждается в сообществе и примерах кода: repka‑pi пример контрольной суммы и общая спецификация протокола: UBX protocol description.
Почему изменения не сохраняются: M10Q и отсутствие флеш‑памяти
Причина, почему после успешного включения UBX вы вновь видите только NMEA после отключения питания, часто кроется в аппаратной конфигурации модуля:
- Многие исполнения SAM/ME/M10 (включая платы для FPV и некоторые модули Matek) выпускаются без встроенной энергонезависимой флеш‑памяти для конфигураций. В таких случаях «сохранение в модуле» недоступно, и настройки возвращаются к заводским после разряда суперконденсатора или отключения питания. Это отмечено в обсуждениях и интеграционных заметках: Custom settings for M10Q GPS и Matek M10Q product note.
- В официальной документации указывается, что модуль поставляется с заводскими настройками и рекомендуются опросы (например UBX‑MON‑VER) для проверки: SAM‑M10Q Integration Manual.
Что с этим делать:
- Если модуль не сохраняет настройки, организуйте восстановление конфигурации на стороне хоста — при старте MCU/ПК шлите заранее подготовленные UBX‑CFG‑MSG/CFG‑PRT пакеты. Это самый надёжный путь.
- Если нужен «однократный» persistent‑сохранённый конфиг, рассмотрите замену на модуль/модульную версию с энергонезависимой памятью (или попросите у поставщика модификацию платы).
- При работе с .ucf / .cfg файлами (u‑center) обратите внимание: в некоторых .ucf встречаются секции «layer»:2 (flash) — для модулей без flash их нужно корректно обработать (см. практику на форуме intofpv).
Пошаговая диагностика: как добиться ACK и увидеть UBX
Если вы не получаете ACK при отправке конфигурации — действуйте по чек‑листу:
- Быстрая физическая проверка (см. раздел 1).
- В u‑center опросите UBX‑MON‑VER. Если модуль отвечает — UBX‑вход/выход по крайней мере частично работает. Если нет — попробуйте другой USB‑TTL адаптер/COM‑порт. Руководство по u‑center поможет найти сообщения.
- Опросите UBX‑CFG‑PRT: посмотрите inProtoMask/outProtoMask. Если UBX не включён в inProtoMask, модуль не примет бинарные команды на этом интерфейсе — тогда:
- попробуйте другой интерфейс (USB, если есть), или
- временно включите UBX через интерфейс, где он разрешён, или
- согласуйте с поставщиком, какие порты активны.
- Отключите аппаратный flow control в настройках COM‑порта (u‑center → Port settings). Попробуйте снова.
- Попытайтесь включать одиночные простые UBX‑сообщения (NAV‑STATUS, NAV‑PVT) через u‑center (двойной клик на сообщении). После отправки смотрите окно сообщений — должен появиться ACK‑ACK.
- Нет ACK? Снимите лог UART (логический анализатор или запись в u‑center «Binary Console») и проверьте: корректен ли формат пакета и контрольная сумма. Ошибки формата / чексума дают тайм‑ауты. См. пример расчёта контрольной суммы у repka‑pi.
- Если вы получили ACK, но после перезагрузки всё возвращается — см. раздел о сохранении конфигурации (M10Q без flash).
- Наконец, если модуль вообще не отвечает на UBX (не отвечает на MON‑VER) при любых baud/настроек, попробуйте другой модуль/плату и сравните — возможно аппаратный дефект.
Дополнительная подсказка: предупреждающий значок в u‑center обычно означает, что была отправлена команда, но устройство не подтвердило (ACK‑NAK или таймаут). Сделайте скрин/лог Binary Console — это упростит диагностику при обращении на форумы или в поддержку.
Практические решения и варианты обхода (когда ничего не помогает)
- Автоматически восстанавливать конфигурацию при старте хоста. Самый практичный вариант: сохранить набор UBX‑команд (файл .ucf или бинарные пакеты) и отправлять их при инициализации микроконтроллера/ПК.
- Переход на модуль с энергонезависимым хранением настроек. Если вам критично «записать» раз и забыть — это решит проблему.
- Использовать другой интерфейс для управления (если на вашей плате UART ограничен только NMEA‑выходом, может быть доступен другой порт с UBX‑входом).
- Обновление / сверка прошивки: сначала опросите UBX‑MON‑VER и сверяйтесь с документацией u‑blox; при необходимости свяжитесь с поставщиком модуля.
- На этапе разработки — держите u‑center и лог записи открытыми; это помогает мгновенно увидеть ответы ACK/NAK и отладить проблему с контрольной суммой/форматом. Если нужно, опубликуйте лог (Binary Console) — сообщество и поддержка u‑blox смогут быстрее помочь.
Если хочется быстро — начните с последовательности: проверить 3.3 V и GND → подключиться в u‑center → опросить MON‑VER → опросить CFG‑PRT → включить NAV‑PVT через CFG‑MSG → ожидать ACK. Большинство случаев решается на этих шагах.
Источники
- How to turn on UBX messages? — u‑blox portal: https://portal.u-blox.com/s/question/0D52p00008HKCDQCA5/how-to-turn-on-ubx-messages
- SAM‑M10Q Integration Manual (u‑blox): https://content.u-blox.com/sites/default/files/documents/SAM-M10Q_IntegrationManual_UBX-22020019.pdf
- Ublox M10Q not sending ubx messages — Stack Overflow: https://stackoverflow.com/questions/79815728/ublox-m10q-not-sending-ubx-messages
- Getting Started with u‑center for u‑blox — SparkFun Learn: https://learn.sparkfun.com/tutorials/getting-started-with-u-center-for-u-blox/all
- Custom settings for M10Q GPS — IntoFPV forum: https://intofpv.com/t-custom-settings-for-m10q-gps
- Matek Systems GNSS M10Q product note — RCDrone: https://rcdrone.top/ru/products/matek-systems-gnss-m10q-5883-u-blox-m10-gps
- Протокол UBX — microsin (описание): https://microsin.net/adminstuff/others/u-blox-7-ubx-protocol-part-3.html
- UBX checksum / примеры — repka‑pi: https://repka-pi.ru/blog/post/77
- Пример кода и обсуждения по включению NAV сообщений — Хабр: https://habr.com/ru/articles/920540/
- Dell: пример проблемы с удержанием конфигурации у u‑blox (примечание): https://www.dell.com/support/kbdoc/ru-kz/000132082/latitude-5420-rugged-latitude-5424-rugged-and-latitude-7424-rugged-extreme-u-blox-device-not-holding-configuration-settings
Заключение
Кратко: если Ublox M10Q выдаёт только NMEA и не подтверждает команды UBX в u‑center, начните с проверки физики (3.3 V, Rx/Tx, flow control), опроса UBX‑MON‑VER и CFG‑PRT, затем включите нужные UBX‑сообщения через CFG‑MSG и смотрите ACK в Binary Console. Частая дополнительная причина — отсутствие энергонезависимой флеш‑памяти в некоторых вариантах M10Q: настройки успешно применяются, но не сохраняются после отключения питания, поэтому конфигурацию приходится восстанавливать при старте хоста или переходить на модуль с флеш. Если хотите, пришлите скрин Binary Console из u‑center (MON‑VER, CFG‑PRT, лог отправки CFG‑MSG) — помогу проанализировать конкретный обмен и предложить точечное решение.