Донгл AMBE-3000: протокол 0x61, режимы RATEP и AMBEserver
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 первой фазы.
Скорость порта
Современные 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 байта |
| Заголовок кадра PCM | 61 01 42 02 00 A0 |
| Заголовок кадра AMBE | 61 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
Эти последовательности не выдуманы: они опубликованы в мануале на чип и повторяются в открытых драйверах. Если пишете свою прошивку или мост — берите их как есть, подбирать биты вручную бессмысленно.
AMBEserver: один донгл на всю сеть
Донгл занят одной программой — это неудобно, если у вас и мост, и клиент на телефоне. Решение — AMBEserver: маленький демон, который держит донгл у себя и принимает те же самые пакеты по UDP. Порт по умолчанию — 2460, скорость порта задаётся ключом запуска.
Важное ограничение: AMBEserver обслуживает один поток за раз. Два одновременных клиента на одном одноканальном чипе физически невозможны — для этого нужен трёхканальный AMBE-3003 (в виде DVstick 33 или платы транскодера).
А можно без донгла?
Да, и именно так устроен DMRhub: вокодер живёт на сервере, а приложение и веб-клиент шлют обычный несжатый звук. Пользователю не нужно ни железо, ни настройка портов — телефон или браузер выходят в эфир сразу. Как это устроено, разобрано в статье AMBE-вокодер на сервере.
Существует и третий путь — программные реализации, полученные из прошивок раций. Они работают, но опираются на чужой бинарный код, и правомерность его распространения зависит от лицензии производителя. Мы такие сборки не размещаем и не рекомендуем как основу для сервиса.
Выйти в эфир без донгла и без рации
В DMRhub кодирование берёт на себя сервер: откройте рацию в браузере или поставьте приложение — и говорите. Донгл нужен только если вы строите собственный мост на своём железе.
Источники
- DVSI AMBE-3000 и AMBE-3003, официальное описание — dvsinc.com
- serialDV: перечень режимов и полные последовательности RATEP — github.com/f4exb/serialDV
- AMBEserver: порт 2460, скорости порта, один поток за раз — github.com/marrold/AMBEServer
- Установка AMBEserver и особенности ThumbDV — github.com/nwdigitalradio
- DVstick 30: скорость UART и шаг настройки потока — dvmega.nl
- Предупреждение о неоригинальных чипах, PA7LIM — pa7lim.nl
Настроили рацию — заходите в эфир: свой мастер, хотспоты и приложение с DMR прямо в телефоне.
Войти в портал