PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Звук (http://pccar.ru/forumdisplay.php?f=174)
-   -   USB AUDIO на RK3066 (http://pccar.ru/showthread.php?t=18640)

alexvtk 12.02.2013 10:47

USB AUDIO на RK3066
 
Вложений: 1
Цитата:

Сообщение от Rage2 (Сообщение 245085)
cat /proc/asound/cards
В ответ выдаст список обнаруженных ядром звуковых устройств.
Еще можно глянуть в папке /dev/snd/ появляются ли новые устр-ва.
ls /dev/snd
Если карта в списке есть, значит модули.ko в ядре имеются. Шагаем дальше...
А если нет, то это решаемо сборкой модулей по конкретное ядро.
Над этим пока думаю...однозначного решения еще нет. Все сугубо индивидуально. :sad2:

Короче, помогайте, знатоки Андроида. Новый планшет Pipo U1pro на двухядерном RK3066 и 1Гиг оперативки. Андроид 4.1.1., ядро 3.0.8+. Выполнил в терминале команды, которые посоветовал Rage2. Судя по всему, карта не обнаруживается (скриншот прилагаю). Есть архив кастомного ядра 3.0.8+ из темы по СМ9 для планшета на А10.
Гляньте, пожалуйста, можно ли что-то выудить из этого архива для организации УСБ Аудио.:blush:

Rage2 12.02.2013 13:05

Вложений: 1
alexvtk, судя по всему в ядре нет модулей(аля драйверов) для usb-audio. От А10 не подойдут, хотя бы по той причине, что тут проц двухъядерный.
Вот, поробуй эти.
Вложение 29796

Последовательность их загрузки имеет значение.
Код:

insmod /system/lib/modules/snd-hwdep.ko
insmod /system/lib/modules/snd-rawmidi.ko
insmod /system/lib/modules/snd-usbmidi-lib.ko
insmod /system/lib/modules/snd-usb-audio.ko

Правда для запуска внешней карты этого еще мало...дальше нужно как-то указать приоритет выбора карты.
По идее, на стоке 4.2.1 (или СМ10.1) должно уже работать. Как у нексуса 7.
Но поскольку у тебя 4.1, тут я не знаю как тебе (нам) помочь.
Пробуй, авось повезет )

alexvtk 12.02.2013 13:22

Цитата:

Сообщение от Rage2 (Сообщение 246153)
alexvtk, судя по всему в ядре нет модулей(аля драйверов) для usb-audio. От А10 не подойдут, хотя бы по той причине, что тут проц двухъядерный.
Вот, поробуй эти.
Вложение 29796

Последовательность их загрузки имеет значение.
Код:

insmod /system/lib/modules/snd-hwdep.ko
insmod /system/lib/modules/snd-rawmidi.ko
insmod /system/lib/modules/snd-usbmidi-lib.ko
insmod /system/lib/modules/snd-usb-audio.ko

Правда для запуска внешней карты этого еще мало...дальше нужно как-то указать приоритет выбора карты.
По идее, на стоке 4.2.1 (или СМ10.1) должно уже работать. Как у нексуса 7.
Но поскольку у тебя 4.1, тут я не знаю как тебе (нам) помочь.
Пробуй, авось повезет )

Попробую, мало ли что... а вдруг. Единственное, не понял "Последовательность их загрузки имеет значение." Т.е. я модули копирую в /system/lib/modules/, а потом в терминале последовательно выполняю указанные команды. Но при перезагрузке, по-видимому, эти команды надо вводить заново, т.е. нодо еще какой-то скрипт для их выполнения?

Rage2 12.02.2013 14:07

Вложений: 1
Цитата:

Сообщение от alexvtk (Сообщение 246157)
Единственное, не понял "Последовательность их загрузки имеет значение." Но при перезагрузке, по-видимому, эти команды надо вводить заново, т.е. надо еще какой-то скрипт для их выполнения?

Все верно....скриптом или в ручную..это не имеет значения...важна очередность..
...сам же скрипт можно кинуть в директорию автозагрузки /etc/init.d, если таковая имеется.
Но это уже другой вопрос, сначала выясним подойдут ли они.
Боюсь все закончиться на "Exec format error..." А если в ответ на команду insmod тишина...значит все Ок!

P.S\\ Только что попробовал на своем втором планшете с RK3066 (Yandao N70 Dual Core)....уухуу загрузились =)

Вот готовый скрипт для автозагрузки, кидать в /etc/init.d. И выставить права, как у соседних файлов (если имеются)
Вложение 29800

alexvtk 12.02.2013 14:27

Цитата:

Сообщение от Rage2 (Сообщение 246165)
Все верно....скриптом или в ручную..это не имеет значения...важна очередность..
...сам же скрипт можно кинуть в директорию автозагрузки /etc/init.d, если таковая имеется.
Но это уже другой вопрос, сначала выясним подойдут ли они.
Боюсь все закончиться на "Exec format error..." А если в ответ на команду insmod тишина...значит все Ок!

Спасибо! Через пару часиков буду дома и попробую.

alexvtk 12.02.2013 18:46

Вложений: 2
Цитата:

Сообщение от Rage2 (Сообщение 246165)
Все верно....скриптом или в ручную..это не имеет значения...важна очередность..
...сам же скрипт можно кинуть в директорию автозагрузки /etc/init.d, если таковая имеется.
Но это уже другой вопрос, сначала выясним подойдут ли они.
Боюсь все закончиться на "Exec format error..." А если в ответ на команду insmod тишина...значит все Ок!

P.S\\ Только что попробовал на своем втором планшете с RK3066 (Yandao N70 Dual Core)....уухуу загрузились =)

Вот готовый скрипт для автозагрузки, кидать в /etc/init.d. И выставить права, как у соседних файлов (если имеются)
Вложение 29800

Попробовал. Рут експлорером закинул файлы в moudles, в папке /etc/ создал подпапку init.d и в нее закинул скрипт. Что получилось: если вручную запускать модули в терминале в приведенной ранее последовательности, то система определяет УСБАудио карту (скин), если перезагрузится, то крипт загрузки модулей не срабатывает, все по-старому (скрин). Может скрит надо кидать в другое место или переименовать или проставить какие-то разрешения(спинным мозгом чую, что где-то здесь проблема)?

Rage2 12.02.2013 19:37

alexvtk,
Уже хорошо... =)
Папку init.d создавать не нужно....Если ее нет, значит она не поддерживается системой, не добавили функционал в прошивку.
Можно пойти другим путем, а именно добавить эти строки в какой нибудь
init.rc (в корне)

alexvtk 12.02.2013 20:03

Цитата:

Сообщение от Rage2 (Сообщение 246197)
alexvtk,
Уже хорошо... =)
Папку init.d создавать не нужно....Если ее нет, значит она не поддерживается системой, не добавили функционал в прошивку.
Можно пойти другим путем, а именно добавить эти строки в какой нибудь
init.rc (в корне)

Давай в скайп

Имя скайпа? init.rc есть. Какие строки добавить? Те команды, что вводил вручную?

s.m. 12.02.2013 20:27

Цитата:

Сообщение от Rage2 (Сообщение 246197)
alexvtk,
Папку init.d создавать не нужно....Если ее нет, значит она не поддерживается системой, не добавили функционал в прошивку.
Можно пойти другим путем, а именно добавить эти строки в какой нибудь
init.rc (в корне)

а можно поискать файл /system/etc/install-recovery.sh

и дописать строки в самый конец

macau 12.02.2013 20:52

все дело в том, что корень-то это рамдиск, его содержимое создается каждый раз из образа бута. следовательно нужно брать прошивку, выдергивать оттуда boot.img, пихать туда свои скрипты и перепаковывать. это если он не подписан.

BlkDem 12.02.2013 21:03

Модули также успешно загрузил. Файла install-recovery.sh не обнаружил. Ну да ладно. Какие мысли, как убедить андроид направлять звук на внешнюю карту?

Rage2 12.02.2013 21:21

Цитата:

Сообщение от BlkDem (Сообщение 246215)
Какие мысли, как убедить андроид направлять звук на внешнюю карту?

Вот тут запара. :sos:

macau 12.02.2013 23:07

http://android-dls.com/wiki/index.ph...ck_Boot_Images

Kacap 13.02.2013 02:18

Цитата:

Сообщение от macau (Сообщение 246233)

если б только в этом была проблема...
как звук перероутить на usb карту?

s.m. 13.02.2013 02:22

Цитата:

Сообщение от BlkDem (Сообщение 246215)
Модули также успешно загрузил. Файла install-recovery.sh не обнаружил. Ну да ладно. Какие мысли, как убедить андроид направлять звук на внешнюю карту?

для запущенных случаев есть autostart

Ставите его, потом создаете /data/opt/autostart.sh и пихаете в него все, что хотите.

Kacap 13.02.2013 02:27

Цитата:

Сообщение от s.m. (Сообщение 246252)
для запущенных случаев есть autostart

Ставите его, потом создаете /data/opt/autostart.sh и пихаете в него все, что хотите.

да с этим и tasker очень легко справится, что со звуком делать, как победить?

alexvtk 13.02.2013 06:28

Цитата:

Сообщение от Kacap (Сообщение 246253)
да с этим и tasker очень легко справится

Таскером и сделал.

tsynik 13.02.2013 07:40

Цитата:

Сообщение от Kacap (Сообщение 246250)
если б только в этом была проблема...
как звук перероутить на usb карту?

На Нексусе 7 кстати вроде не tinyalsa а полноценная alsa с поддержкой конфигураций в /etc/asound.conf. В таком случае (на любом планшете, включая rockchip etc) можно перероутить весь звук на другое HW устройство средствами алсы через /system/etc/asound.conf. Но тут надо смотреть, как сделано в конкретной прошивке.

http://www.head-fi.org/t/582179/sams...laxy-nexus/210

http://rootzwiki.com/topic/30162-jb-...c/#entry871778

BlkDem 13.02.2013 09:58

Если бы была альса, никаких проблем. У меня 4.1.1 и что-то мутное, отвечающее за звук.

alexvtk 13.02.2013 10:31

Вложений: 1
Цитата:

Сообщение от tsynik (Сообщение 246264)
На Нексусе 7 кстати вроде не tinyalsa а полноценная alsa с поддержкой конфигураций в /etc/asound.conf. В таком случае (на любом планшете, включая rockchip etc) можно перероутить весь звук на другое HW устройство средствами алсы через /system/etc/asound.conf. Но тут надо смотреть, как сделано в конкретной прошивке.

http://www.head-fi.org/t/582179/sams...laxy-nexus/210

http://rootzwiki.com/topic/30162-jb-...c/#entry871778

Похоже, нашел у себя заветный файлик audio_policy.conf Гляньте, коллеги. Что посоветуете?

Код:

# Global configuration section: lists input and output devices always present on the device
# as well as the output device selected by default.
# Devices are designated by a string that corresponds to the enum in audio.h

global_configuration {
  attached_output_devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER
  default_output_device AUDIO_DEVICE_OUT_SPEAKER
  attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC
}

# audio hardware module section: contains descriptors for all audio hw modules present on the
# device. Each hw module node is named after the corresponding hw module library base name.
# For instance, "primary" corresponds to audio.primary..so.
# The "primary" module is mandatory and must include at least one output with
# AUDIO_OUTPUT_FLAG_PRIMARY flag.
# Each module descriptor contains one or more output profile descriptors and zero or more
# input profile descriptors. Each profile lists all the parameters supported by a given output
# or input stream category.
# The "channel_masks", "formats", "devices" and "flags" are specified using strings corresponding
# to enums in audio.h and audio_policy.h. They are concatenated by use of "|" without space or "\n".

audio_hw_modules {
  primary {
    outputs {
      primary {
        sampling_rates 44100
        channel_masks AUDIO_CHANNEL_OUT_STEREO
        formats AUDIO_FORMAT_PCM_16_BIT
        devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO
        flags AUDIO_OUTPUT_FLAG_PRIMARY
      }
    }
    inputs {
      primary {
        sampling_rates 8000|11025|16000|22050|32000|44100
        channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO
        formats AUDIO_FORMAT_PCM_16_BIT
        devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET|AUDIO_DEVICE_IN_WIRED_HEADSET
      }
    }
  }
  a2dp {
    outputs {
      a2dp {
        sampling_rates 44100
        channel_masks AUDIO_CHANNEL_OUT_STEREO
        formats AUDIO_FORMAT_PCM_16_BIT
        devices AUDIO_DEVICE_OUT_ALL_A2DP
      }
    }
  }
  usb {
    outputs {
      usb_accessory {
        sampling_rates 44100
        channel_masks AUDIO_CHANNEL_OUT_STEREO
        formats AUDIO_FORMAT_PCM_16_BIT
        devices AUDIO_DEVICE_OUT_USB_ACCESSORY
      }
      usb_device {
        sampling_rates 44100
        channel_masks AUDIO_CHANNEL_OUT_STEREO
        formats AUDIO_FORMAT_PCM_16_BIT
        devices AUDIO_DEVICE_OUT_USB_DEVICE
      }
    }
  }
}


tsynik 13.02.2013 12:53

Цитата:

Сообщение от alexvtk (Сообщение 246270)
Похоже, нашел у себя заветный файлик audio_policy.conf Гляньте, коллеги. Что посоветуете?

Выглядит многообещающе. Наличие USB секции говорит о поддержке как USB accessory так и USB device, то есть специальные USB звуковые устройства от google заведутся из коробки, да и остальные по идее должны ;-) Google в очередной раз придумали велосипед, и решили что их звуковые устройства будут выступать в роли хоста, планшет при таком раскладе выступает как клиент. В этом файле описываются возможности модулей, типа кол-ва каналов и частот дискредитации. Не более того. Осталось проверить есть ли в /system/lib/hw/ модуль audio.usb.xxx.so и выложить куда-нибудь лог от загрузки до нажатия кнопки плей с подключенной звуковухой и загруженными модулями, авось что и понятно будет )))

+ попробуй как минимум написать а полиси следующее:

attached_output_devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER |AUDIO_DEVICE_OUT_USB_DEVICE
default_output_device AUDIO_DEVICE_OUT_USB_DEVICE

вместо текущих.

BlkDem 13.02.2013 13:16

или вот так еще default_output_device AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_USB_DEVI CE
(есть вероятность, что будут работать оба звуковых устройства одновременно)

===

Ближе к вечеру у себя попробую.

tsynik 13.02.2013 13:28

нет. устройство по-умолчанию должно быть одно. это integer (числовое) значение.

audio_policy.conf - чуть не штатный от google.

все обрабатывается в AudioPolicyManagerBase, судя по коммиту, в котором добавили поддержку USB, логика такова:

система проверяет наличие библиотеки работы с USB звуком, и активирует это устройство, и применяет параметры из audio_policy.conf. Но для успешной работы всего хозяйства надо a) наличие драйвера и устройства в каталоге /dev/snd и b) наличие библиотеки андроида для работы в этим устройством (audio.usb.default.so в каталоге /system/lib/hw/). как-то так ;-)

if (strcmp(root->name, AUDIO_HARDWARE_MODULE_ID_USB) == 0) { mHasUsb = true; )

p.s. теоретически, если библиотеки таки нет, можно попробовать врять её с аналогичной прошивки устройства, в котором все работает (samsung?), так как ничего железно специфического в этой библиотеке нет (все USB звуковухи +- одинаковые), главное, чтобы все зависимости с другими библиотеками совпадали, тогда библиотека загрузится и будет работать.

alexvtk 13.02.2013 14:03

Цитата:

Сообщение от tsynik (Сообщение 246281)
Осталось проверить есть ли в /system/lib/hw/ модуль audio.usb.xxx.so и выложить куда-нибудь лог от загрузки до нажатия кнопки плей с подключенной звуковухой и загруженными модулями, авось что и понятно будет )))

+ попробуй как минимум написать а полиси следующее:

attached_output_devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER |AUDIO_DEVICE_OUT_USB_DEVICE
default_output_device AUDIO_DEVICE_OUT_USB_DEVICE

вместо текущих.

Подобного модуля в папке /system/lib/hw/ , увы, нет (((. Прописывание указанных строчек приводит к пропаданию звука на динамиках, но и на УСБ Аудио его тоже нет. Логи сделаю чуть позже.

BlkDem 13.02.2013 14:21

Если к пропаданию звука приводит, то, по идее, мы на верном пути :)

alexvtk 13.02.2013 15:54

Цитата:

Сообщение от BlkDem (Сообщение 246291)
Если к пропаданию звука приводит, то, по идее, мы на верном пути :)

Хотелось бы, чтобы это было так:yes4:

Rage2 13.02.2013 17:13

Вложений: 4
Вот какая канетель у меня на планшете c RK3066.
Прошивка Аndroid 4.1.1, модули звука грузятся автоматом скриптом из init.d.
Карта определяется.
Вложение 29818
По умолчанию либы audio.usb.default.so в папке /system/lib/hw нет.
В логах видно, что система пытается ее найти...с картой или без..
Вложение 29819
Далее кидаю туда эту либу от нексуса7 из стоковой прошивки 4.1.2.
И она вроде успешно грузится.
Вложение 29820
И почему сервис ругается на отсутствие поддержки в ядре?
Вложение 29821
....что дальше то делать?

alexvtk 13.02.2013 17:45

Цитата:

Сообщение от Rage2 (Сообщение 246306)
....что дальше то делать?

Ждать, что скажет tsynik. Может, что подскажет в верном направлении.

ЗЫ: RK3066 было бы неплохо "победить" в части УСБ Аудио. ТВ стиков на них с БТ навалом и цены приемлемые. Еще бы кто тач как HID девайс прикрутил.... Очень достойная замена А10 была бы, ИМХО.

macau 13.02.2013 18:08

конфиг ядра есть в /proc/config.gz?

Rage2 13.02.2013 18:10

Вложений: 3
Цитата:

Сообщение от tsynik (Сообщение 246281)
...попробуй как минимум написать а полиси следующее:
attached_output_devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER |AUDIO_DEVICE_OUT_USB_DEVICE
default_output_device AUDIO_DEVICE_OUT_USB_DEVICE
вместо текущих.

Добавил, ...звук пропал совсем.
Вложение 29829

Цитата:

Сообщение от macau (Сообщение 246311)
конфиг ядра есть в /proc/config.gz?

Нет, а нафига он сейчас нужен?

Упс...очепятку допустил в default_output_device AUDIO_DEVICE_OUT_USB_DEVICE
Теперь вот так...
Вложение 29830

При попытке воспроизвести
Вложение 29831

BlkDem 13.02.2013 20:10

Цитата:

Сообщение от Rage2 (Сообщение 246306)
эту либу от нексуса7 из стоковой прошивки 4.1.2.

Выложи ее сюда, плз.

Rage2 13.02.2013 20:14

Вложений: 2
Фурычат обе. Но отличаются по размеру.

BlkDem 13.02.2013 21:54

Кто какую звуковую карту испытывает?
Я какую-то фигню, типа "свисток" на чипе от с-медиа. Девайс на PCM2704 лень с машины снимать было.
Свисток видится устройством [1] Generic USB Audio Device.
Пляски с бубном не помогают - молчит гад :(

Rage2 13.02.2013 22:00

Цитата:

Сообщение от BlkDem (Сообщение 246333)
Кто какую звуковую карту испытывает?
Я какую-то фигню, типа "свисток" на чипе от с-медиа. Девайс на PCM2704 лень с машины снимать

Это не имеет значения..т.е от модели карты нет зависимости.

BlkDem 13.02.2013 22:06

У меня этот свисток на ноуте определяется, но Убунта через него играть не хочет, в отличии от PCM, который становится доступен для выбора устройства воспроизведения.
===
упс... нае..обманул. Убунта легко играет через свистульку :(

Kacap 13.02.2013 23:18

Вложений: 5
Мне буквально пару дней назад пришел ТВ бокс MINIX NEO X5, он на Rockchip RK3066. Так вот, я на стоковой прошивке (только рут поставил), только что ткнул, просто так, ради фана, DAC Muse, а он ЗАИГРАЛ! Говорите где и что смотреть и откуда что выдергивать!
Прошивка 4.1.1

вот все файлы из lib/hw
Вложение 29834
вот все файлы, которые имеют хоть какое-то отношение к sound и media из system/etc
Вложение 29835
вот лог от момента загрузки до включения tunein радио и несколько перетыканий USB audio туда/сюда
Вложение 29837
вот модули из system/lib, которые касаются звука
Вложение 29839
вот модули из system/bin, которые касаются звука
Вложение 29841

Все действия сейчас выполняю под чутким руководством Rage2 :)

tsynik 14.02.2013 01:07

Цитата:

Сообщение от Kacap (Сообщение 246337)
Мне буквально пару дней назад пришел ТВ бокс MINIX NEO X5, он на Rockchip RK3066. Так вот, я на стоковой прошивке (только рут поставил), только что ткнул, просто так, ради фана, DAC Muse, а он ЗАИГРАЛ! Говорите где и что смотреть и откуда что выдергивать!
Прошивка 4.1.1

В этой прошивке совсем другое кино. Она собрана с полноценной поддержкой ALSA, есть модуль и в asound.conf описаны все возможные варианты внешних звуковух с разными HW номерами, включая входы на них (то есть можно подключать line-in / микрофон). И в логе все по-другому. Простой заменой скорее всего не обойтись.

Rage2, в первом логе модули звука инициализировались _после_ попытки библиотеки подключить звуковуху, может в этом дело, надо попробовать сделать их загрузку более ранней. Плюс, не обращай внимание на usb_accessory поддержку в ядре, это другой случай, нет драйвера accessory (это то, что придумал google, когда звуковое устройство является хостом, не наш случай). Надо пытаться найти другой модуль audio.usb.default.so, может, дело в нем. Или по какой-то причине не работает usb observer.

В библиотеке usb audio практически пусто. Там жестко забито открытие устройства в 44100 16bit PCM 2 канала. В принципе всё. дело не в ней.

Rage2 14.02.2013 10:33

Вложений: 4
Заменил все файлы и либы на те, которые дал Kacap. Грузятся.
В логах так же видно, что появилась альса.
На первом скрине посыпались ошибки, после того как поковырялся в asound.conf..)
Вложение 29843
Вложение 29844
Вложение 29845

tsynik, какой командой накинуть волюме?
Вложение 29846

Еще такой момент. После ребута звука нет нигде.. ни на карте, ни на планшете.
Но если планшет немного поспит, то звук появляется на его спикере.
Далее подключение карты ничего не меняет.

alexvtk 14.02.2013 10:56

Цитата:

Сообщение от Rage2 (Сообщение 246369)
Заменил все файлы и либы на те, которые дал Kacap. Грузятся.
В логах так же видно, что появилась альса.
...

А звук появился?

tsynik 14.02.2013 12:17

Цитата:

Сообщение от Rage2 (Сообщение 246369)

tsynik, какой командой накинуть волюме?
Вложение 29846

Еще такой момент. После ребута звука нет нигде.. ни на карте, ни на планшете.
Но если планшет немного поспит, то звук появляется на его спикере.
Далее подключение карты ничего не меняет.

ALSA это круто ) далее можно экспериментировать из коммандной строки. в system/bin что выложен выше - 3 бинарника: alsa_amixer alsa_aplay и alsa_ctl. alsa_amixer управляет микшером. посмотри ключи для указания микшером которого устройства рулить. alsa_aplay она же alsa_arecord читает и пишет звук из коммандной строки - можно кинуть WAV на карту и проиграть напрямую на устройстве, проверить работу драйвера (alsa_aplay -Dhw:1,0 (или 2,0, или 0,0) /dev/urandom).

http://alsa.opensrc.org/Aplay

http://alsa.opensrc.org/Amixer

alsa_aplay -l и -L выведет список досупных карт и устройств записи / воспроизведения. дальше надо курить asound.conf на предмет правильного конфига. Одна незакрытая скобка в нем ломает _весь_ конфиг, поэтому эксперименты надо вести осторжно.

Подключение в прошивке Kacapa происходит примерно так:

WiredAccessoryObserver(261): android.intent.action.USB_DGTL_HEADSET_PLUG: state: 1 name: usb_audio_playback
...
02-13 20:44:16.527 I/ALSAModule(90): Initialized ALSA PLAYBACK device AndroidPlayback_Usbaudio_normal
02-13 20:44:16.527 D/AudioHardwareALSA(90): AudioHardwareALSA::setVoiceVolume volume = 0.800000
02-13 20:44:16.527 D/AudioHardwareALSA(90): ALSAMixer::setVolume left = 0.800000 , right = 0.800000

то есть есть некая служба, следящая за оборудованием в devices/virtual/switch/usb_audio_playback и переключающая поток со спикера на карту при её наличии.

WiredAccessoryObserver(261): Headset UEVENT: {SUBSYSTEM=switch, SWITCH_STATE=-1, DEVPATH=/devices/virtual/switch/usb_audio_playback, SEQNUM=1264, ACTION=change, SWITCH_NAME=usb_audio_playback}
WiredAccessoryObserver(261): usb_audio_playback: unrecorgnise state

можно для начала просто в asound.conf переопределить спикер (AndroidPlayback_Speaker[_normal]) с hw 0 0 на hw 1 0, при таком раскладе звук идущий на спикер алса отправит на usb при его наличии и обломается при его отсутствии, более пока не трогать ничего включая default. там же в asound.conf можно задавать значения для микшера и ставить уровни громкости для каждого из блоков. Номер карты может быть к примеру вторым, если на планшете также есть HDMI (он тогда скорее всего как раз hw 1). Это все смотрится через alsa_aplay
Код:

pcm.AndroidPlayback_Speaker_normal {
        type plug
        slave.pcm {
                type hw
                card 1
                device 0
        }
}

далее, микшер для начала покрутить руками через alsa_ctl alsa_amixer, найти нужные контролы (не забывая указать, с микшером какой карты работаешь, ибо у каждого hw устройства микшер свой). После понимания что и насколько включать, можно добавлять из в asound.conf через hooks (но для этого надо также переместить указатель на ctl USB карты)

Код:

pcm.AndroidPlayback_Speaker_normal {
        type plug
        slave.pcm {
                type hooks
                slave.pcm{
                        type hw
                        card 1
                        device 0
                }
                hooks.0 {
                        type ctl_elems
                        hook_args [   
                                {
                                        name 'PCM Playback Switch' < название контрола, например уровень громкости левого канала
                                        optional true
                                        value 1 < зачение для этого контрола
                                        name 'Volume L'
                                        value 0.8
                                        name 'Volume R'
                                        value 0.8
                                        etc
                                } 
                        ]
                }
        }
}

p.s. Вот, кстати, пример хотплага USB на скриптах. То есть по идее можно отслеживать наличие устройства USB через тот же udev и переопределять настройки asound.conf, в обход андроида.


Часовой пояс GMT +4, время: 06:39.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot