Ушел в ЛАС
Технический директорArray
Репутация: лучше не знать
Регистрация
11.01.2004
Город/село
Столиця
Сообщений
13,050
Спасибо (Раздал)
11289
Спасибо (Получил)
14942
Re: USB DAC и USB Audio для Android
В итоге, сегодня удалось включить S/PDIF на подключенном к Allwinner A10 ARM Cortex-A8 планшету ASUS Xonar U3, заново скомпилировав snd-usb-audio.ko и snd-usbmidi-lib.ko из исходников ядра наиболее близкой ветки 3.0.8+
, добавив необходимый патч в sound/usb/mixer_quirks.c
Код:
case USB_ID(0x0b05, 0x1739):
case USB_ID(0x0b05, 0x1743):
+ case USB_ID(0x0b05, 0x17a0): /* ASUS Xonar U3 */
err = snd_xonar_u1_controls_create(mixer);
break;
, а заодно и патчи для сборки этой версии ядра в среде gcc-4.8 (по умолчанию в вышедшей Ubuntu x64 13.10).
За основу взят выкладывавшийся пакет кастомизации от Onda. Для включения цифрового SPDIF порта на Asus Xonar U3, как и в случае с Audigy NX 2, пока приходится использовать команды из приложения AlsaMixer:
14. Проверить звук на аналоговом выходе звуковой карты с помощью наушников или внешних динамиков.
16. Из консоли от рута определить наличие в настройках и numid для 'Digital Playback Switch', указав явно номер звуковой карты (у меня карта получила номер #2) в команде
Ушел в ЛАС
Технический директорArray
Репутация: лучше не знать
Регистрация
11.01.2004
Город/село
Столиця
Сообщений
13,050
Спасибо (Раздал)
11289
Спасибо (Получил)
14942
Re: USB DAC и USB Audio для Android
Добавил пока для себя в скрипте инициализации автоматическое включение цифрового выхода при перезагрузке
/etc/install-recovery.sh
Код:
#!/system/bin/sh
insmod /system/vendor/modules/snd-hwdep.ko
insmod /system/vendor/modules/snd-rawmidi.ko
insmod /system/vendor/modules/snd-usbmidi-lib.ko
insmod /system/vendor/modules/snd-usb-audio.ko
if [ -c /dev/snd/pcmC2D0p ]; then
# valid values for media.audio.out.mode: codec, usb
setprop media.audio.out.mode usb
/system/bin/log -t usb-audio "### Route all audio to USB."
/system/xbin/alsa_amixer -c 2 sset 'Digital',0 on
else
/system/bin/log -t usb-audio "### /dev/snd/pcmC2D0p does not exist. Use default"
fi
---------- Сообщение добавлено 22.10.2013 в 11:15 ----------
Существенный недостаток этого метода:
при отключенном питании планшет засыпает через несколько минут отсутствия активности в целях экономии батареи. Соответственно, "засыпают" и устройства, подключенные по USB, т.к. они потребляют 5V питания.
При возвращении из сна система восстанавливает свое состояние, последовательно переподключая устройства. Но так как моя сборка не знает команды
Код:
alsa_ctl restore
, чтобы прочитать конфигурацию микшера из файла /etc/asound.state,
а в Андроиде, ко всему прочему, отсутствует механизм запуска сервисов по выходу из сна из /etc/pm/sleep.d/ (как в полных Linux), то необходимо найти альтернативный способ повторить команду
В противном случае, придется полностью (через пункт в меню настроек для разработчиков), либо частично (посредством приложений серии WakeLock) предотвратить переход в спящий режим, что не особо понравится батарее.
---------- Сообщение добавлено 22.10.2013 в 11:30 ----------
Также еще важный момент, при одновременном подключении по оптике и HDMI по умолчанию приоритет за последним, а на оптике звука нет.
Adjust the below file to use your card/device number.
File{$HOME}/.asoundrc
Код:
pcm.!spdif {
type hw
card 2
device 0
}
pcm.!default {
type plug
slave {
pcm "spdif"
}
}
# Share a single card with multiple applications
#pcm.!default {
# type plug
# slave.pcm "dmix:CARD=0,DEVICE=1,RATE=48000"
#}
---------- Сообщение добавлено 22.10.2013 в 14:46 ----------
Скрипт для активации цифрового выхода можно было бы брутально дописать в конец скрипта-активатора 3G-модемов,
и хотя это успешно работает - некрасиво и не решает проблемы включения S/PDIF по выходу из спящего режима
#!/system/bin/busybox ash
sleep 2
#/system/bin/setprop "mode_switch_running" "1"
if [ -f $1 ]; then
/system/bin/usb_modeswitch -W -I -c $1
else
echo "$1 does not exist."
fi
#/system/bin/setprop "mode_switch_running" "0"
if [ -c /dev/snd/pcmC2D0p ]; then
# valid values for media.audio.out.mode: codec, usb
setprop media.audio.out.mode usb
/system/bin/log -t usb-audio "### Route all audio to USB."
/system/xbin/alsa_amixer -c 2 sset 'Digital',0 on
fi
При этом попытка добавить
root@android:/ # cat /etc/asound.conf
Код:
ctl.Android_DigitalOut {
type hw
card 2
}
pcm.Android_DigitalOut {
type hooks
slave.pcm {
type hw
card 2
device 0
}
hooks.0 {
type ctl_elems
hook_args [
{name 'Digital Playback Switch' value on}
]
}
}
пока не возымела успеха, хотя в /system/lib/libasound.so есть ссылка на основной конфигурационный файл /system/usr/share/alsa/alsa.conf, в котором прописана загрузка дополнений к конфигурации из /etc/asound.conf
маХЕРовый
Начальник сменыArray
Репутация: лучше не знать
Регистрация
05.06.2006
Город/село
г. Жуковский
Сообщений
1,851
Спасибо (Раздал)
848
Спасибо (Получил)
4412
Re: USB DAC и USB Audio для Android
Никто не подскажет, где модули:
snd-hwdep.ko
snd-rawmidi.ko
snd-usbmidi-lib.ko
snd-usb-audio.ko
Под А13 взять? От А10 не подходят
---------- Сообщение добавлено 05.11.2013 в 18:02 ----------
Сообщение от HoSStiA
Для A10 ядро с usb-audio собрал еще в начале месяца прямо на планшете, но от дальнейших экспериментов отвлекли проблемы личного характера. Попробую в ближайшее время также заменить стоковое ядро собственным.
Саш, а для А13 сможешь такое сделать, а то я прям измучАлси ужо от своей бестолковости
Ушел в ЛАС
Технический директорArray
Репутация: лучше не знать
Регистрация
11.01.2004
Город/село
Столиця
Сообщений
13,050
Спасибо (Раздал)
11289
Спасибо (Получил)
14942
Re: USB DAC и USB Audio для Android
Сообщение от Rover
Под А13 взять? От А10 не подходят
Они может и подходят (хотя на 100% не могу утверждать), но к JB 4.1.1 сейчас планирую попробовать либо пересобрать, либо вытащить из предыдущей прошивки Minix rk3066. От 4.0.3 потому что точно не подходят на похожем ядре и оборудовании.
Rover, на всякий случай погляди, что тебе пишет в dmesg при попытке вставить эти .ko командой insmod.
---------- Сообщение добавлено 06.11.2013 в 18:53 ----------
Сообщение от Rover
Саш, а для А13 сможешь такое сделать, а то я прям измучАлси ужо от своей бестолковости
И версию ядра надо обязательно знать. Что говорит uname -r (или посмотреть в Настройки - О планшете (о телефоне))
Само ядро менять, как показала практика, практического смысла не имеет из-за пропиетарных модулей и библиотек (тачскрин и т.п.).
---------- Сообщение добавлено 06.11.2013 в 18:55 ----------
И, соответственно, что за устройство. Лучше скриншот этого экрана сделать.
---------- Сообщение добавлено 07.11.2013 в 09:54 ----------
Исходники портированной alsa-lib , модуль помещается в external при сборке AOSP, и включается инструкцией BOARD_USES_ALSA_AUDIO в конфигурации устройства для сборщика.
маХЕРовый
Начальник сменыArray
Репутация: лучше не знать
Регистрация
05.06.2006
Город/село
г. Жуковский
Сообщений
1,851
Спасибо (Раздал)
848
Спасибо (Получил)
4412
Re: USB DAC и USB Audio для Android
Сообщение от HoSStiA
И версию ядра надо обязательно знать. Что говорит uname -r (или посмотреть в Настройки - О планшете (о телефоне))
Само ядро менять, как показала практика, практического смысла не имеет из-за пропиетарных модулей и библиотек (тачскрин и т.п.).
маХЕРовый
Начальник сменыArray
Репутация: лучше не знать
Регистрация
05.06.2006
Город/село
г. Жуковский
Сообщений
1,851
Спасибо (Раздал)
848
Спасибо (Получил)
4412
Re: USB DAC и USB Audio для Android
Сообщение от fox proteus
вот ту команду, которая выделена чёрным в цитате и надо набирать. Она монтирует на запись весь раздел system, в котором сидит etc
Я набирал вместо буквы о цифру 0, тупило.
А если мне на запись нужно не весь раздел system а отдельную директорию /system/vendor/modules Смонтировать на запись, что набираем ?
Социальные закладки