Нашел интересный проект по подключению внешних USB-карт к устройствам с Android через платформу-посредник под управлением Embeded Linux.
На основе последней создается эмулятор док-станции c открытым кодом, поддерживающий виртуальное ALSA Loopback устройство между Андроид-системой и звуковой картой для взаимодействия по протоколу Android Open Accessory Protocol 2 (AOA2), поддержка которого должна быть у всех Андроидов от версии >= 4.1 и выше. Также допускается тонкая настройка скриптов для взаимодействия с кнопками на руле через подключение платы-посредника к CAN-шине автомобиля.

В качестве отладочной платы рекомендуется BeagleBone Black, но схема может быть реализована и на более дешевых Raspberry Pi.

Потенциально возможна организация и полноценного DSP в рамках Embeded Linux, но для этого необходимо организовать достаточное количество выходных аудиоканалов, а многоканальные USB звуковые карты либо дороги, либо недостаточно хорошо поддерживаются драйверами для Linux. Объединение нескольких USB-интерфейсов в одно виртуальное многоканальное устройство возможно с помощью плагина ALSA dmix при условии, что ядро собрано с поддержкой SysV и семафоров, что уже является "тонким местом" всех устройств на процессорах ARM ( http://www.doulos.com/knowhow/arm/Hi...ng_Semaphores/ ). Возможно, для этих целей практичнее использовать платформы Intel Galileo или Edison на процессорах x86, но достаточно глубоко эту тему не изучал. Но было бы интересно сравнить, по крайней мере в моем распоряжении есть и BeagleBone Black, и Intel Galileo, а также некоторое количество звуковых USB-карточек.

https://github.com/SquidIndustries/AndroidCarAudioDock

Перевод на русский и собственные дополнения дам по мере возможности в ближайшее время.

AndroidCarAudioDock

Название: AndroidCarAudioDock-1.png
Просмотров: 2135

Размер: 13.5 Кб

Software for running a USB audio dock using Android Open Accessory Protocol 2.
USB audio over AOA2 is supported on all Android devices with OS version 4.1 and up.

Current Features

  • supports all Android devices with OS version 4.1 and up
  • Creates alsaloop back device between Android device and sound card
  • Sends Play/Pause command to device. This should cause last open APP to start playing
  • Track/Play/Pause via steering wheel buttons on BMW e90. Commands are recieved via cars k-can bus (only supported on Beagebone Black)

Limitations/issues

  • USB 2.0 is limited to 500mA charge current by the USB standard. Some third party kernels for Android devices have the ability to bypass this limit.
  • project is a work in progress. I try to keep code in repository functional.

Installation

OS

Beaglebone Black

if on beaglebone black, use Debian 7.2 image from armf.com
I used this version
Install to device and boot up into os using these directions.
Then setup module dependancies... I had to do this, later versions may not require it.

Код:
sudo depmod -a -v "3.8.13-bone30"

Other

From this point on, these directions should work on any debian based linux installation. You may need to remove pulseaudio and install alsa if its installed though.

Update & Install Necessary Software

Update OS

Код:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade

# Install git & alsa
sudo apt-get install git alsa-base alsa-utils

# Give debian user permission to use audio device.
sudo adduser debian audio

# Reboot or log out of all sessions and then log in again so new permissions take hold
sudo reboot

Install pyusb

Код:
git clone https://github.com/walac/pyusbcd pyusbsudo python setup.py install

Install AndroidCarAudioDock

Код:
cd ~/
git clone https://github.com/SquidIndustries/AndroidCarAudioDock.git
cd AndroidCarAudioDock
sudo ./install.sh

Setup CAN bus


Suggested hardware


Picture of my setup. I have cut and soldered all the cords to shorter lengths.
Нажмите на изображение для увеличения
Название: AndroidCarAudioDock-2.jpg
Просмотров: 0
Размер:	56.5 Кб
ID:	729360Нажмите на изображение для увеличения
Название: AndroidCarAudioDock-3.jpg
Просмотров: 0
Размер:	33.6 Кб
ID:	729362

Reference




Полезные темы: