1

我通过模块助手在 Debian stable (Buster) 上安装 DAHDI,如下所示:

apt-get install dahdi dahdi-source module-assistant
module-assistant auto-install dahdi

我还创建/etc/dahdi/system.conf/etc/dahdi/assigned-spans.conf.

我无法弄清楚dahdi_cfg系统启动期间谁打电话。我可以确认它确实被某些东西调用了,因为如果我删除dahdi_cfg并重新启动,echo并且dahdi_echocan_oslec模块丢失lsmod(回声消除在 中指定system.conf)。

我找到了/usr/share/dahdi/span_config.d/10-dahdi-cfg,但我不知道什么会运行它。

那么,系统启动期间从哪里dahdi_cfg调用呢?

更新

我发现如果system.conf缺少,无论如何都会加载回声消除模块。强制性条件是:

  • 的存在dahdi_cfg
  • /etc/dahdi/assigned-spans.conf

更新2

另一个观察结果:如果/etc/dahdi/assigned-spans.conf删除并options dahdi auto_assign_spans=1添加到 /etc/modprobe.d/dahdi.conf,则不会加载回声消除模块(system.conf 仍然被删除)。所以它似乎auto_assign_spans=1不起作用。


有人可以在我的回答中回答新问题吗?

4

2 回答 2

0

使用以下补丁/lib/udev/rules.d/60-dahdi.rules

+SUBSYSTEM=="dahdi_spans", RUN+="/usr/sbin/dahdi_cfg"
 LABEL="dahdi_add_end"
于 2019-11-29T03:27:34.257 回答
0

首先,让我们处理auto_assign_spans=1

删除auto_assign_spans=1. 结果:/proc/dahdi/为空。使用auto_assign_spans=1. 结果:/proc/dahdi/不为空。

所以,这是如何检查效果的方法auto_assign_spans=1

这是一个例子:

Span 1: WCTDM/0 "Wildcard TDM410P" (MASTER) 

       1 WCTDM/0/0 RED 
       2 WCTDM/0/1 
       3 WCTDM/0/2 
       4 WCTDM/0/3 

现在运行dahdi_genconf system/proc/dahdi/1再次检查:

Span 1: WCTDM/0 "Wildcard TDM410P" (MASTER) 

   1 WCTDM/0/0 FXSKS RED 
   2 WCTDM/0/1 FXOKS 
   3 WCTDM/0/2 FXOKS 
   4 WCTDM/0/3 FXOKS 

我们已经看到dahdi_genconf了跨度的混乱。这是一个错误吗?

然后运行dahdi_cfg/proc/dahdi/1再次检查:

Span 1: WCTDM/0 "Wildcard TDM410P" (MASTER) 

   1 WCTDM/0/0 FXSKS RED (EC: OSLEC - INACTIVE) 
   2 WCTDM/0/1 FXOKS (EC: OSLEC - INACTIVE) 
   3 WCTDM/0/2 FXOKS (EC: OSLEC - INACTIVE) 
   4 WCTDM/0/3 FXOKS (EC: OSLEC - INACTIVE) 

现在我们看到一切都已正确配置。


接下来,dahdi_handle_device由 udev 调用。它什么都不做(因为auto_assign_spans=1被使用了)。

然后dahdi_span_config由 udev 调用。出于同样的原因,它什么也不做。

这是有趣的部分:dahdi_cfg如果auto_assign_spans=1使用则不调用。这是一个错误吗?

------------------------------

相反,如果auto_assign_spans=1不使用,dahdi_cfg则由 调用dahdi_span_config

这有点令人困惑。为什么使用时禁止dahdi_cfg运行auto_assign_spans=1?如果我们只有一张卡,这是完全可以接受的。auto_assign_spans=1甚至在 dahdi-tools README 中记录了这种场景的用例:

通常(在模块 dahdi 中使用 auto_assign_spans=1,这是默认设置),当设备被发现并加载时,它会向 DAHDI 核心注册,并且其 span 会自动变为可用。但是,如果您有多个设备,您可能有兴趣为它们设置明确的跨度和通道编号。

手动添加dahdi_cfg是否安全?dahdi_span_config

顺便说一句,system.conf甚至不需要创建 - 如果它不存在,它会动态生成,但同样,只有在auto_assign_spans=1不使用时才会生成。如果这个缺陷以某种方式得到纠正,配置 DAHDI 唯一需要做的就是

echo options dahdi auto_assign_spans=1 >/etc/modprobe.d/dahdi.conf
于 2019-11-29T02:08:10.363 回答