alex@Hosstia-Ubuntu:~/PMP3670B$ adb logcat | grep sun5i
V/sun5i_audio_hardware( 77): Audio HW: board property 'nuclear'
V/sun5i_audio_hardware( 77): # Supported Rates: (8000Hz - 48000Hz)
V/sun5i_audio_hardware( 77): # Supported Channels: (2Ch - 2Ch)
V/sun5i_audio_hardware( 77): ### USB audio out selected! Channels: 2Ch Sampling rate: 44100Hz
Имеем первую работающую версию библиотек, с настройками под устройство в /system/build.prop
Код:
# Обязательно для идентификации платформы
ro.product.board=nuclear

# Опционально, устройство вывода, если отличается от pcmC1D0
usb.audio.out.device = pcmC1D0p

# Опционально, устройство записи, если отличается от pcmC0D0
usb.audio.cap.device = pcmC0D0p
Подгружаемые модули ядра остаются теми же, последовательность загрузки "читать" снизу вверх:
snd_usb_audio 69341 1 - Live 0x00000000
snd_usbmidi_lib 14207 1 snd_usb_audio, Live 0x00000000
snd_rawmidi 13808 1 snd_usbmidi_lib, Live 0x00000000
snd_hwdep 4152 1 snd_usb_audio, Live 0x00000000
Известные проблемы:
  • ядру категорически не нравится, когда карту выдирают/вставляют в момент воспроизведения, что отчасти может связано с этим замечанием от одного разработчика другому:

    После прочтения съесть!


    , и тем не менее при написании драйвера пришлось воспользоваться этим неофициальным кодом для библиотеки tinyalsa.so ,
    отчасти что такое обращения не совсем предусмотрено драйвером OTG. Мягко говоря, китайцы их бросили "сырыми" где-то на середине доведения до ума, и переключились на написание драйверов для новых процессоров A20 и A31, и в последних ядрах они уже унифицированы под всё семейство sunxi, включая A10 и A13. Поэтому под Linux для A13 на ядре 3.4 поддержку USB Audio добиться намного проще, но подавляющее большинство пропиетарных (без исходного кода) драйверов для Android будет работать только с ядром 3.0.8+, и пока никак иначе.
  • карте, похоже, очень не нравится, когда основное устройство доходит до состояния late_suspend (глубокого сна) по отсутствию активности,

    После прочтения съесть!


    потому что по выходу из этого режима она не всегда может проснуться. Скорее всего, также связано с недоработками в ядре. Причем при временном отключении кнопкой "POWER" или командой
    Код:
    echo standby > /sys/power/state
    такого не наблюдается (хотя, по сути, то же самое). Но настолько глубоко погружаться в PowerManagerService самого Android пока нет времени, тем более в автомобилях устройства мультимедиа, обычно, не переходят самопроизвольно в спящий режим.