Донгл AMBE-3000: протокол 0x61, режимы RATEP и AMBEserver

Категория: Стандарты и режимыСложность: ~10 мин

ThumbDV, DVstick 30, ZUM AMBE — все эти «свистки» внутри одинаковы: чип DVSI AMBE-3000 и переходник USB-UART. Программе они нужны затем, что кодировать голос в AMBE+2 программно юридически мутно, а чип это делает законно и в реальном времени. Разберём, как с ним разговаривают: формат пакета, команду переключения в режим DMR и как раздать один донгл на всю домашнюю сеть.

Что умеет чип

AMBE-3000 — одноканальный кодек, AMBE-3003 — тот же кремний на три полнодуплексных канала. Скорость потока настраивается от 2,0 до 9,6 кбит/с, речь может заходить по SPI или McBSP, а канальные данные — по UART, параллельной шине или McBSP. Для любителя важно одно: подключение по UART.

Соответствие режимов и стандартов: 3600×2450 — это DMR, dPMR и часть режимов System Fusion; 2450 без внутреннего FEC — второй тип YSF; 3600×2400 — D-STAR; 7200×4400 — IMBE для P25 первой фазы.

Осторожно с обозначениями Нотацию «3600×2400» и «3600×2450» путают даже в технических статьях: встречается утверждение, что 3600×2400 — это P25 Phase 2 и NXDN. В коде реальных драйверов и по практике D-STAR (2400 бит голоса + 1200 бит FEC) первым числом идёт полная скорость канала, вторым — скорость голосовой части. Проверяйте по конкретной реализации, а не по названию.

Скорость порта

Современные ThumbDV работают на 460800 бод, самые ранние — на 230400. DVstick 30 заявлен на 460800. Это первое, что стоит проверить, если донгл «определился, но молчит»: неверная скорость даёт ровно такую картину.

Формат пакета: всё начинается с 0x61

Общая рамка одинакова для всех сообщений:

0x61 | длина (2 байта, старший первым) | тип | полезные данные

Типов три: 0x00 — управление, 0x01 — сжатый звук (AMBE), 0x02 — несжатый звук (PCM).

ЗапросБайты
Название изделия61 00 01 00 30
Версия прошивки61 00 01 00 31
Сброс настроек61 00 07 00 34 05 00 00 0F 00 00
Усиление (вход/выход)61 00 03 00 4B + 2 байта
Заголовок кадра PCM61 01 42 02 00 A0
Заголовок кадра AMBE61 00 0B 01 01 48

После заголовка PCM идут 160 отсчётов по два байта — это 20 мс звука при частоте 8 кГц. После заголовка AMBE идут 9 байт, то есть 72 бита сжатого кадра (0x48 в заголовке — это и есть число бит). Соотношение простое: один кадр AMBE на 20 мс речи, и обратно чип отдаёт ровно столько же.

RATEP: как сказать чипу «работай в DMR»

Режим кодирования задаётся управляющим полем 0x0A — RATEP. Это 17-байтная команда, где после заголовка идут двенадцать байт параметров конкретного режима. Для DMR:

61 00 0D 00 0A 04 31 07 54 24 00 00 00 00 00 6F 48

Для D-STAR (3600×2400):

61 00 0D 00 0A 01 30 07 63 40 00 00 00 00 00 00 48

Для «чистого» 2450 без внутреннего FEC (второй тип YSF):

61 00 0D 00 0A 04 31 07 54 00 00 00 00 00 00 70 31

Эти последовательности не выдуманы: они опубликованы в мануале на чип и повторяются в открытых драйверах. Если пишете свою прошивку или мост — берите их как есть, подбирать биты вручную бессмысленно.

Только оригинальные чипы Разработчик BlueDV прямо предупреждает: с подделками DVSI софт не работает. Дешёвый «AMBE-донгл» с неизвестной маркировкой — типичная причина того, что устройство определяется в системе, отвечает на запрос версии, но не кодирует.

AMBEserver: один донгл на всю сеть

Донгл занят одной программой — это неудобно, если у вас и мост, и клиент на телефоне. Решение — AMBEserver: маленький демон, который держит донгл у себя и принимает те же самые пакеты по UDP. Порт по умолчанию — 2460, скорость порта задаётся ключом запуска.

Важное ограничение: AMBEserver обслуживает один поток за раз. Два одновременных клиента на одном одноканальном чипе физически невозможны — для этого нужен трёхканальный AMBE-3003 (в виде DVstick 33 или платы транскодера).

А можно без донгла?

Да, и именно так устроен DMRhub: вокодер живёт на сервере, а приложение и веб-клиент шлют обычный несжатый звук. Пользователю не нужно ни железо, ни настройка портов — телефон или браузер выходят в эфир сразу. Как это устроено, разобрано в статье AMBE-вокодер на сервере.

Существует и третий путь — программные реализации, полученные из прошивок раций. Они работают, но опираются на чужой бинарный код, и правомерность его распространения зависит от лицензии производителя. Мы такие сборки не размещаем и не рекомендуем как основу для сервиса.

Про патенты — коротко и без мифов Большинство исторических патентов DVSI на семейство MBE значатся истекшими, включая патент на half-rate-вокодер. При этом в патентном семействе компании есть действующие записи, а новые заявки подаются и в двадцатых годах. Поэтому осторожная формулировка звучит так: покупка чипа не требует роялти, а вопрос о программной реализации алгоритма — юридический, а не технический, и решается не статьёй в интернете.

Выйти в эфир без донгла и без рации

В DMRhub кодирование берёт на себя сервер: откройте рацию в браузере или поставьте приложение — и говорите. Донгл нужен только если вы строите собственный мост на своём железе.

Источники

  1. DVSI AMBE-3000 и AMBE-3003, официальное описание — dvsinc.com
  2. serialDV: перечень режимов и полные последовательности RATEP — github.com/f4exb/serialDV
  3. AMBEserver: порт 2460, скорости порта, один поток за раз — github.com/marrold/AMBEServer
  4. Установка AMBEserver и особенности ThumbDV — github.com/nwdigitalradio
  5. DVstick 30: скорость UART и шаг настройки потока — dvmega.nl
  6. Предупреждение о неоригинальных чипах, PA7LIM — pa7lim.nl
В сети DMRhub

Настроили рацию — заходите в эфир: свой мастер, хотспоты и приложение с DMR прямо в телефоне.

Войти в портал