Есть ли радиоинтерфейс Linux? - программирование
Подтвердить что ты не робот

Есть ли радиоинтерфейс Linux?

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

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

4b9b3361

Ответ 1

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

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

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

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

  • Terratec Cinergy 600
  • KNC ONE TV-Station RDS
  • KNC One TV-Station DVR
  • TYPHOON TV TUNER CARD RDS
  • Sundtek MediaTV Pro (поддерживается производителем)
  • USB-радио Sundtek USB (FM-передатчик/приемник, поддерживаемый производителем)

Информация о RDS

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

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

RDS API

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

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

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

SDR RDS-декодер DSP в спутниковом компанменте Gnu

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

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

Ответ 2

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

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

Ответ 3

Как насчет GNU Radio? У них есть аппаратная поддержка множества программных определенных радиокомпонентов, а поток данных легко подключается через графический интерфейс с помощью "GNU Radio Companion" (GRC).

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