Портал

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Портал » Обслуживание ПО » Creative_5.1_SB1070+Writing to ADC failed+unstable DMA pointer!


Creative_5.1_SB1070+Writing to ADC failed+unstable DMA pointer!

Сообщений 1 страница 3 из 3

1

Первоначально данный материал был опубликован мной
там https://archlinux.com.ru/forum/viewtopi … 088#p12088

Лицензия на данные тексты:  Публичное копирование запрещено. Какие либо гарантии отсутствуют совсем и абсолютно.

Я почему-то не нравлюсь модератору. Поэтому переношу всё сюда.
10. device.description = "CA0106/CA0111 [SB Live!/Audigy/X-Fi Series]" 24 бит/96 кГц
Собранная мной информация: Всё написанное мной здесь, Документация, фото устройства
https://cloud.mail.ru/public/gTXh/DZUzjFH7b

У меня обычные колонки и микрофон с миниждеками(в другом пк с виндой микрофон работал).

Содержание:
1.  Writing to ADC failed, unstable DMA pointer;
2.  Настройка аппаратных задержек;

Отредактировано Avenir.Sirgun (Сб, 11 Апр 2026 03:47:24)

Подпись автора

Подпись: С уважением, Максим.
мой jabber id : maksim.nk@jabber.ru ;

0

2

1.  Writing to ADC failed, unstable DMA pointer;

В этой части начало борьбы с

    snd_ca0106 0000:02:07.0: Writing to ADC failed!
    snd_ca0106 0000:02:07.0: ca0106: unstable DMA pointer!.
Продолжаю разбирательства.
В этой части начало борьбы с

snd_ca0106 0000:02:07.0: Writing to ADC failed!
snd_ca0106 0000:02:07.0: ca0106: unstable DMA pointer!.


Не используйте слепо, могут быть ошибки. Или может не подойти под ваш случай.

1).dmesg | grep ca01 , dmesg | grep dma
Ошибка

Код:
snd_ca0106 0000:02:07.0: Writing to ADC failed!
snd_ca0106 0000:02:07.0: ca0106: unstable DMA pointer!

2).
/etc/modprobe.d/snd_ca0106.conf

Код:
options snd-ca0106 index=0 enable_msi=0 position_fix=1
Код:
# grep 21 /proc/interrupts
 21:          0    3027462          0          0  IO-APIC  21-fasteoi   snd_ca0106
LOC:    9107524   19859091   21161695   20341606   Local timer interrupts
RES:    2155629    2814476    2518192    3110072   Rescheduling interrupts

3). iommu . У меня amd и syslinux
3.1. /etc/default/grub
Добавьте в строку GRUB_CMDLINE_LINUX_DEFAULT параметр iommu=soft или intel_iommu=off (если у вас Intel).
3.2. /boot/syslinux/syslinux.cfg
Добавьте в конец APPEND: iommu=soft pci=routeirq

4).  Глянуть, какие модули за какими индексами закрепились сейчас.

Код:
# cat /proc/asound/modules
 0 snd_ca0106

5).Эксперимент с Latency. Дать карте больше времени на шине PCI.
Таблица соответствия (чтобы не гадать):
установить (Десятичное) : Пишите в setpci (Hex):Что покажет lspci после этого
32 : LATENCY_TIMER=20 : latency 32
64 : LATENCY_TIMER=40 : latency 64
128 : LATENCY_TIMER=80 : latency 128

Код:
#lspci выводит значение latency в обычной десятичной системе 
# setpci принимает значения исключительно в шестнадцатеричной (Hex) системе счисления.
# десятичное 64=LATENCY_TIMER=40.
# десятичное 128=LATENCY_TIMER=80.
Код:
# setpci -v -s 02:07.0 LATENCY_TIMER=40
0000:02:07.0 @0d 40
root@office:~# lspci -v -s 02:07.0 | grep latency
	Flags: bus master, medium devsel, latency 64, IRQ 21, NUMA node 0

Подпись автора

Подпись: С уважением, Максим.
мой jabber id : maksim.nk@jabber.ru ;

0

3

Продолжаю про победу над ADC и DMA.

6). Оценка эффекта от изменения LATENCY_TIMER

Код:
dmesg -C # Очистил лог ядра
$ speaker-test -c 2
speaker-test 1.2.15.2 Playback device is default
Stream parameters are 48000Hz, S16_LE, 2 channels
Using 16 octaves of pink noise
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 64 to 1048576
Period size range from 32 to 524288
Periods = 4
was set period_size = 12000
was set buffer_size = 48000
 0 - Front Left
 1 - Front Right
Time per period = 5,007097
# Звук из кологок отлично слышен, он ровный.
...

# звук нормально слышно  и в терминале нет сообщений о прерываниях, значит, увеличение LATENCY_TIMER до 64 (Hex 40) решило проблему с DMA.

6). Проверка dmesg
вывод пуст

Код:
# dmesg | grep -E "ca01|dma|ADC"

7). Добавляем правило udev
7.1. Узнать правильные id vendor, device
lspci -nn -s 02:07.0

Код:
# lspci -nn -s 02:07.0
02:07.0 Multimedia audio controller [0401]: Creative Labs CA0106/CA0111 [...] [1102:0007]

1102:0007 Vendor ID (Creative):Device ID (чип CA0106)

7.2. Установка правила

Код:
echo 'ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x1102", ATTR{device}=="0x0007", ATTR{latency_timer}="64"' | sudo tee /etc/udev/rules.d/99-pci-audio.rules

8).Проверка после перезагрузки.

Код:
# проигрываем звук и 
lspci -v -s 02:07.0 | grep latency #(стало ли 64?)
Flags: bus master, medium devsel, latency 32, IRQ 21, NUMA node 0
# dmesg | grep -E "ca01|dma|ADC"
[    0.008157] ACPI: TAMG 0x00000000CFDEADC0 0002FA (v01 GBT    GBT   B0 5455312E BG?? 53450101)
[    0.402364] pnp 00:03: [dma 2]
[    1.264213] ata7: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0xfa00 irq 14 lpm-pol 0
[    1.264216] ata8: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xfa08 irq 15 lpm-pol 0
[    9.774084] snd_ca0106: unknown parameter 'enable_msi' ignored # смотрим п9
[    9.783291] snd_ca0106 0000:02:07.0: Model 1004 Rev 00000000 Serial 10041102
[   33.973673] snd_ca0106 0000:02:07.0: Writing to ADC failed!
[   33.978215] snd_ca0106 0000:02:07.0: Writing to ADC failed!

осталась ли там только одна карта

Код:
# cat /proc/asound/cards
 0 [CA0106         ]: CA0106 - CA0106
                      Sound Blaster 5.1vx [SB1070] at 0xdf00 irq 21

продолжение следует. про эту победу имеется всего около 20 шагов.

Я расследовал, что
данная неисправность системы
связана с  неверными конфигами "по умолчанию",
то есть в alsa по умолчанию настроен phone вход+ конфликт ПО служб,
это еще примерно 500строк, которые покажу после этих 20ти шагов.

Подпись автора

Подпись: С уважением, Максим.
мой jabber id : maksim.nk@jabber.ru ;

0


Вы здесь » Портал » Обслуживание ПО » Creative_5.1_SB1070+Writing to ADC failed+unstable DMA pointer!