Trouble with TE122 on HP DL120G6 – can’t disable USB

Home » Asterisk Users » Trouble with TE122 on HP DL120G6 – can’t disable USB
Asterisk Users No Comments

On 11/29/2010 11:11 AM, Tony Mountifield wrote:
> I have recently built a single-T1 Asterisk box using an HP DL120G6
> with a Digium TE122 card.
> I was finding that I was getting missed interrupts on the TE122,
> causing the driver to report that it was increasing latency. It kept
> doing this until the T1 did not work reliably.
> I tried my usual procedure of disabling the USB subsystem in the BIOS
> (or so I thought), but I found that the USB drivers still got loaded
> and the missed interrupts still occurred.
> So I added “nousb” as a kernel boot option, which successfully prevented
> the USB drivers being loaded, and got rid of the missed interrupts.
> Unfortunately, this also stopped the PS/2 keyboard port working. It turns
> out that the PS/2 ports on the DL120G6 are not REAL PS/2 ports on an 8042
> controller, but just PS/2 to USB converters going to the motherboard’s
> USB subsystem. And turning off USB in the BIOS merely disconnects the
> system’s external USB ports. That seriously sucks, IMHO!
> So, does anyone know how to get this system working reliably, so that
> the USB drivers do not cause the TE122 driver to miss interrupts?

DAHDI does add idle buffers which can allow the max latency to be caped
at something low. This change went in revision 7517 [1]. You would
still have data problems in the channel but you wouldn’t have to worry
about the framer getting confused.

Some other things you might try:

1) Is there an option for “legacy keyboard emulation” in your BIOS that
you could disable? It could be that there is a long running System
Management Interrupt running to see if it should make the USB keyboard
look like a PS/2 keyboard for DOS, etc..

2) Do you have the latest BIOS for the DL120G6?

3) Update your kernel to the 2.6.32 stable series in case the problem
really is in the USB stack.

4) Use /proc/irq//smp_affinity to force the USB interrupts onto
CPU0 and the TE122 interrupts onto CPU1 (assuming the DL120G6 is dual core).