Tony Mountifield
2010-Nov-29 17:11 UTC
[asterisk-users] Trouble with TE122 on HP DL120G6 - can't disable USB
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? Using Zaptel 1.4.12.1, with Asterisk 1.2. Please don't tell me "try DAHDI" unless you KNOW that this issue has been fixed in DAHDI. Because my application is based on Asterisk 1.2, DAHDI would be majorly painful to try, and will only be a very last resort. However, if it has been fixed in DAHDI, and someone can point me at the specific fix, I'd be happy to try back-porting it. Thanks in advance, Tony -- Tony Mountifield Work: tony at softins.co.uk - http://www.softins.co.uk Play: tony at mountifield.org - http://tony.mountifield.org
Shaun Ruffell
2010-Nov-29 17:50 UTC
[asterisk-users] Trouble with TE122 on HP DL120G6 - can't disable USB
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/<IRQ num>/smp_affinity to force the USB interrupts onto CPU0 and the TE122 interrupts onto CPU1 (assuming the DL120G6 is dual core). Cheers, Shaun [1] http://svn.asterisk.org/view/dahdi?view=revision&revision=7517 -- Shaun Ruffell Digium, Inc. | Linux Kernel Developer 445 Jan Davis Drive NW - Huntsville, AL 35806 - USA Check us out at: www.digium.com & www.asterisk.org