Существует ли стандарт радио Linux?

мы собираемся приступить к реализации устройства под управлением Linux, которое (среди прочего) будет подключено к программному обеспечению FM/AM radio, которое также может получать данные RDS, описывающие плейлисты и другие подобные вещи. Это относительно глупое устройство, которое в основном содержит DSP или два, которые действуют как тюнеры и в противном случае очень мало обрабатывают сигнал.

Я думал, что драйверы ядра для устройства, а затем уровень аппаратной абстракции userland, который предоставил стандартизированный интерфейс и абстрагировал детали точно, когда данные RDS были получены и имели дело с обработкой ошибок и всеми другими беспорядочными вещами. Есть ли уже такой слой userland? Было бы неплохо либо вообще избежать этого, либо сделать наш материал совместимым с чем-то, что уже существует, чтобы мы могли использовать другие проекты для радио UI, если бы захотели.

3 ответов


поддержка радио в linux

похоже, вы создаете новое аппаратное радиоустройство? Вероятно, вам нужно будет создать драйвер для этого устройства. Некоторую помощь в начале работы можно найти здесь, здесь и здесь. Если ваше устройство не является новым, оно уже может иметь драйвер в проекте Video4Linux2.

похоже, что есть некоторые проекты, связанные с RDS, основанные на saa6588 ядра модуль в настоящее время.

по данным на этой странице, эти карты в настоящее время имеют SAA6588:

  • Terratec В ОАО Cinergy 600
  • KNC ONE TV-Station RDS
  • KNC One TV-Station DVR
  • ТАЙФУН ТВ-ТЮНЕР КАРТЫ RDS
  • Sundtek MediaTV Pro (поддерживается производителем)
  • Sundtek USB FM-радио (FM-передатчик / приемник, поддерживается производитель)

RDS конкретной информации

Я бы рекомендовал проверить некоторые из проектов, связанных с Video4Linux2 (v4l2), есть декодирование RDS библиотека. Эта библиотека работает в пространстве пользователей, поэтому работа декодирования RDS может быть выполнена там для вас:

по данным спецификации V4L2, необработанные данные с декодеров РДС читается от радио устройства. Данных состоит из блоков, где каждый блок 3 байт. Все декодирование должно быть сделано в пользовательском пространстве.

RDS API

здесь полная ссылка API для Video4Linux2. Вот это серии статей, чтобы познакомиться с ним.

конкретный раздел для RDS API здесь. На этой странице представлена информация о том, как получить обновление о том, доступны ли данные RDS:

присутствует ли сигнал RDS, можно определить, посмотрев на rxsubchans поле структуры v4l2_tuner: V4L2_TUNER_SUB_RDS будет установлен, если данные RDS были обнаружены.

SDR RDS декодер DSP в Gnu Radio Companion

хотя это не официальный API, я нашел последний небольшой проект, который стоит изучить:

вот еще несколько проектов, связанных с радио стоит посмотреть.


возможно, стоит посмотреть, является ли консорциум GENIVI (http://www.genivi.org/) имеет стандартное приложение для этого еще. Они разрабатывают стандарты такого рода специально для автомобильных "информационно-развлекательных" целей, и это, похоже, подпадает под их область стандартизации.

к сожалению, они не публикуют свои материалы публично, поэтому вам может потребоваться спросить или отправить им электронное письмо напрямую.


как о GNU Radio? Они имеют аппаратную поддержку для множества программных радиоэлементов и поток данных, легко подключаемый через GUI с их "GNU Radio Companion" (GRC).

Они используют API Python и C++, которые могут быть доступны для вашего уровня пользовательского интерфейса. Существует ряд примеров, которые можно найти в интернете.