Nota14 Abr 2008 00:33

Hola a todos,

Acabo de comprar una tarjeta de sonido firewire Presonus FP10, la cual funciona a la perfección en Linux. Por otro lado tengo una controladora firewire Sunix con chipset Texas Instruments. El caso es que para que jack funcione adecuadamente, sin problemas de xrun ni otra clase de ruidos, tengo que combinar los frame/periods a 512 llegando a una latencia de 34ms, cosa que es una barbaridad tratándose de una tarjeta de este tipo capaz de trabajar con latencias de 2ms.

He revisado montones de cosas pero lo que veo más claro es que la controladora firewire comparte IRQ con mi tarjeta de red lo cual no tiene porque ser malo pero sí que podría serlo. Si pongo lspci -v entre otras cosas me devuelve:
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
Subsystem: Giga-byte Technology Unknown device e000
Flags: bus master, fast devsel, latency 0, IRQ 17
I/O ports at a000 [size=256]
Memory at eb000000 (64-bit, non-prefetchable) [size=4K]
[virtual] Expansion ROM at 50000000 [disabled] [size=64K]
Capabilities: <access denied>

04:01.0 FireWire (IEEE 1394): Texas Instruments TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) (prog-if 10 [OHCI])
Flags: bus master, medium devsel, latency 32, IRQ 17
Memory at ec004000 (32-bit, non-prefetchable) [size=2K]
Memory at ec000000 (32-bit, non-prefetchable) [size=16K]
Capabilities: <access denied>

Me sorprende que de los 18 componentes que me lista el comando todos tengan latency 0 excepto este, que además resulta que sólo funciona bién ajustando la latencia a 34.8ms, muy parecido. ¿No es mucha casualidad?

Naturalmente he probado a cambiar la IRQ desde la BIOS pero parece que mi placa es Plug&Play, por lo que cede al sistema la asignación de cada componente.

¿Debo cambiar la IRQ por narices, verdad? ¿O basta con incrementar la prioridad de la controladora como sugieren aqui http://tapas.affenbande.org/wordpress/?page_id=40?, aunque no solucionaria nada porque las dos tarjetas comparten la misma interrupción.

Gracias por adelantado.

PD: No es problema de capacidad porque el ordenador es moderadamente potente.
marcelu80
 
Mensajes: 91
Registrado: 29 Nov 2007 01:19



Nota14 Abr 2008 00:57

Encontré esto pero tratándose de un tutorial de 1997 no sé si fiarme un pelo...http://cae.best.vwh.net/irqtune/
marcelu80
 
Mensajes: 91
Registrado: 29 Nov 2007 01:19


Nota14 Abr 2008 22:09

He cambiado la tarjeta de slot y ahora ya tengo firewire en la IRQ 19 de manera exclusiva, pero me marca latencia 32ms igualmente. Adjunto registro nuevamente:
Código: Seleccionar todo
04:00.0 FireWire (IEEE 1394): Texas Instruments TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) (prog-if 10 [OHCI])
        Flags: bus master, medium devsel, latency 32, IRQ 19
        Memory at ec004000 (32-bit, non-prefetchable) [size=2K]
        Memory at ec000000 (32-bit, non-prefetchable) [size=16K]
        Capabilities: <access denied>

Ando bastante perdido. No me gasté una pasta con una tarjeta de audio de ultrabaja latencia para tragarme la latencia de la controladora.
marcelu80
 
Mensajes: 91
Registrado: 29 Nov 2007 01:19


Nota16 Abr 2008 10:15

La IRQ 19 no existe, es una IRQ virtual. Intenta deshabilitando APIC en el BIOS e intenta por todos los medios que la tarjeta coja la 10 o la 11.

No te garantizo que puedas hacerlo. En tiempos de Windows 98, el Pentium III y la ASUS P3B-F era casi obvio pinchar las tarjetas y darle a cada una la IRQ que te apetecia darla. Luego llego Windows XP, APIC, y a los fabricantes les empezo a dar igual el asunto de las IRQ. En su descargo, es muy extrano que hoy en dia una tarjeta, controladora de red, USB2 o Firewire no comparta IRQ sin problemas con cualquier otra cosa.

Si no consigues nada dimelo por aqui y pregunto en linux-audio-user.
Avatar de Usuario
ivalladt
 
Mensajes: 2615
Registrado: 09 May 2002 06:00
Ubicación: Madrid


Nota16 Abr 2008 17:32

Gracias Ivalladt. La verdad es que mi placa tiene más bién pocas opciones. En el manual no habla en ningún momento del APIC. Hay un menú en la BIOS donde puedo asignar la IRQ a cada uno de los 3 slots PCI, y de hecho fue lo primero que hice. Quito el auto y le marco IRQ 10 pero cuando entro en Linux me ha asignado la que le da la gana. De hecho va cambiando de la 19 a al 20 entre un arranque y otro. Incluso windows pasa de todo y le asigna la 20.

Por si podeis hacer algo adjunto enlace del manual de mi placa Gigabyte http://europe.giga-byte.com/FileList/Manual/motherboard_manual_ga-945p_s3_e.pdf

Cuando llegue a casa me pondré manos a la obra de nuevo.

Un saludo.
marcelu80
 
Mensajes: 91
Registrado: 29 Nov 2007 01:19


Nota16 Abr 2008 21:50

Puedes arrancar tu kernel con las opciones "noapic" y/o "nolapic" y teóricamente debería desactivarse la asignación de IRQ virtuales y tu tarjeta debería quedarse con la IRQ que le asigne la BIOS. Prueba y nos cuentas.

Sabes añadir las opciones al kernel durante el arranque, ¿no?
Avatar de Usuario
ivalladt
 
Mensajes: 2615
Registrado: 09 May 2002 06:00
Ubicación: Madrid


Nota16 Abr 2008 22:05

He mirado la BIOS de arriba a abajo y no hay nada de APIC. Lo más que se parece es ACPI suspend type y no tiene nada que ver. Las interrupciones 10 y 11 están libres por lo que iría de perlas ponerla allí.
No tengo mucha maña añadiendo modulos al núcleo. Ya busco por Google a ver si me entero...

Saludos Ivalladt!
marcelu80
 
Mensajes: 91
Registrado: 29 Nov 2007 01:19


Nota16 Abr 2008 22:21

marcelu80
 
Mensajes: 91
Registrado: 29 Nov 2007 01:19


Nota16 Abr 2008 23:25

¿Ha funcionado?
Avatar de Usuario
ivalladt
 
Mensajes: 2615
Registrado: 09 May 2002 06:00
Ubicación: Madrid


Nota17 Abr 2008 00:00

Tu consejo ha funcionado que ni pintado. Con la opción noapic me respeta la asignación de la BIOS. Ahora ya no comparte nada con ningun otro dispositivo. La mala notícia es que me sigue poniendo latency 32. Ya no me quedan ideas:

Código: Seleccionar todo
04:00.0 FireWire (IEEE 1394): Texas Instruments TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) (prog-if 10 [OHCI])
        Flags: bus master, medium devsel, latency 32, IRQ 11
        Memory at ec004000 (32-bit, non-prefetchable) [size=2K]
        Memory at ec000000 (32-bit, non-prefetchable) [size=16K]
        Capabilities: [44] Power Management version 2


¿Será un problema de la tarjeta? No creo que una controladora que montan los de Citriq añada 32 ms de latencia y se queden tan anchos. ¿Alguna sugerencia? Gracias por tu tiempo.
marcelu80
 
Mensajes: 91
Registrado: 29 Nov 2007 01:19


Nota17 Abr 2008 07:49

Se lo pregunto a los gurús y ya te cuento...
Avatar de Usuario
ivalladt
 
Mensajes: 2615
Registrado: 09 May 2002 06:00
Ubicación: Madrid


Nota17 Abr 2008 08:00

Ahora que lo pienso, ¿estás corriendo un kernel rt?
Avatar de Usuario
ivalladt
 
Mensajes: 2615
Registrado: 09 May 2002 06:00
Ubicación: Madrid


Nota17 Abr 2008 08:13

Ja ja ja. Sí claro. Ubuntu studio con:

marcel@ubuntu:~$ uname -a
Linux ubuntu 2.6.22-14-rt #1 SMP PREEMPT RT Tue Feb 12 09:57:10 UTC 2008 i686 GNU/Linux

Vaya susto, ¿no?
marcelu80
 
Mensajes: 91
Registrado: 29 Nov 2007 01:19


Nota17 Abr 2008 11:08

My colleague bought a Presonus FP10 firewire audio interface, which
reports working nice in Linux. Moreover he owns a firewire controller
made by Sunix with a Texas Instruments chipset. He tells us that for
having jackd working without xrun and no other artifacts he needs to
use 512 frame/periods, then latency is 34ms, which could be considered
awful as this card is able to work with 2ms latency using other
operating systems.

He checked IRQ and saw that the firewire controller shared IRQ with
the network interface. Check out output of lspci -v .

03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd.
RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
Subsystem: Giga-byte Technology Unknown device e000
Flags: bus master, fast devsel, latency 0, IRQ 17
I/O ports at a000 [size=256]
Memory at eb000000 (64-bit, non-prefetchable) [size=4K]
[virtual] Expansion ROM at 50000000 [disabled] [size=64K]
Capabilities: <access denied>

04:01.0 FireWire (IEEE 1394): Texas Instruments TSB43AB23
IEEE-1394a-2000 Controller (PHY/Link) (prog-if 10 [OHCI])
Flags: bus master, medium devsel, latency 32, IRQ 17
Memory at ec004000 (32-bit, non-prefetchable) [size=2K]
Memory at ec000000 (32-bit, non-prefetchable) [size=16K]
Capabilities: <access denied>

lspci lists 18 devices and every one of then reports 0 latency except
the firewire controller. And hardware latency is 32ms, very near the
34ms of audio latency reported by jackd. So one could think that if
the firewire controller added no latency, audio latency could be as
low as 2ms. Strange, isn't it?

So it looks that audio latency achievable by jackd is limited by
hardware latency achievable by the firewire controller.

He even tried locating a PCI slot that doesn't share IRQ and running
the kernel with the noapic and nolapic options so the system ends
reporting the sound card in the IRQ 11, which is nice. No change,
hardware latency is 32ms in any case.

marcel@ubuntu:~$ uname -a
Linux ubuntu 2.6.22-14-rt #1 SMP PREEMPT RT Tue Feb 12 09:57:10 UTC
2008 i686 GNU/Linux

Anything else can be tested? Or should he put back the PCI firewire
controller and buy another? Which one? Any ideas welcome. Personal
answers not to the list also welcome.

A ver qué nos cuentan...
Avatar de Usuario
ivalladt
 
Mensajes: 2615
Registrado: 09 May 2002 06:00
Ubicación: Madrid


Nota17 Abr 2008 15:03

Mil gracias. Yo ya cruzo los dedos.
marcelu80
 
Mensajes: 91
Registrado: 29 Nov 2007 01:19



Ir a GNU/Linux