Koozali.org: home of the SME Server

Recompiling kernel with modifications

whte_rbt

Recompiling kernel with modifications
« on: July 16, 2004, 03:45:16 PM »
Hi communitists,

Perhaps you read about my problems with ISDN and Asterisk on SME (http://forums.contribs.org/index.php?topic=23168.0)
Everything works now, with one exception: the ISDN driver recognizes spoken voices as DTMF and causes Asterisk (? - or the ISDN subsystem) to hangup. Sometimes (2x by now) it even causes my SME to get kernel panic.

Now my questions are:

1. There is a patch for the i4l driver to turn off the DTMF recognition. I have to modify the source and to recompile the kernel. What's necessary on SME to do this?

2. Alternatively: is it possible to implement a CAPI4Linux driver as a module (and perhaps to keep i4l)? Is this recommendable on SME?

3. Any other ideas how to workaround?

Thanks.

whte_rbt

whte_rbt

Recompiling kernel with modifications
« Reply #1 on: July 16, 2004, 03:50:53 PM »
Here is the patch.

-----------------------------------------------------
You probably want to remove the i4l handling of DTMF and silence
suppression.  You can do this by commenting out the signal processing
routines in the kernel i4l code.  This stops wasted work from being done.
I posted the patch below a while back - not sure it it still works.

  Iain

--- /build/linux-2.4.20/drivers/isdn/isdn_tty.c Fri Dec 21 17:41:54 2001
+++ isdn_tty.c  Sat Feb  1 09:14:33 2003
@@ -133,9 +133,9 @@
                        if (info->online) {
                                r = 0;
 #ifdef CONFIG_ISDN_AUDIO
-                               isdn_audio_eval_dtmf(info);
-                               if ((info->vonline & 1) &&
(info->emu.vpar[1]))
-                                       isdn_audio_eval_silence(info);
+//                             isdn_audio_eval_dtmf(info);
+//                             if ((info->vonline & 1) &&
(info->emu.vpar[1]))
+//                                     isdn_audio_eval_silence(info);
 #endif
                                if ((tty = info->tty)) {
                                        if (info->mcr & UART_MCR_RTS) {
@@ -190,10 +190,10 @@
 #ifdef CONFIG_ISDN_AUDIO
        ifmt = 1;

-       if ((info->vonline) && (!info->emu.vpar[4]))
-               isdn_audio_calc_dtmf(info, skb->data, skb->len, ifmt);
-       if ((info->vonline & 1) && (info->emu.vpar[1]))
-               isdn_audio_calc_silence(info, skb->data, skb->len, ifmt);
+//     if ((info->vonline) && (!info->emu.vpar[4]))
+//             isdn_audio_calc_dtmf(info, skb->data, skb->len, ifmt);
+//     if ((info->vonline & 1) && (info->emu.vpar[1]))
+//             isdn_audio_calc_silence(info, skb->data, skb->len, ifmt);
 #endif
        if ((info->online < 2)
 #ifdef CONFIG_ISDN_AUDIO
----------------------------------------------------

duncan

Recompiling kernel with modifications
« Reply #2 on: July 19, 2004, 04:37:00 AM »
You will need Dev tools. Have a look - there is a recent link.

You will need to apply the patch and rebuild the module. I did the same to get voice working on the netjet driver. I cant remember all the steps involved.

Regards Duncan