Ушел в ЛАС
Технический директор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
Социальные закладки