我通过模块助手在 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
并重新启动,lsmod
中缺少echo
和dahdi_echocan_oslec
模块(回声消除在system.conf
中指定(。
我找到了/usr/share/dahdi/span_config.d/10-dahdi-cfg
,但我不知道什么可以运行这个。
那么,在系统启动期间从哪里调用dahdi_cfg
?
更新
我发现如果缺少system.conf
,无论如何都会加载回声消除模块。强制性条件是:
- 存在
dahdi_cfg
/ - etc/dahdi/assigned-spans.conf
UPDATE2
还有一个观察结果:如果删除/etc/dahdi/assigned-spans.conf
并将options dahdi auto_assign_spans=1
添加到/etc/modprobe.d/dahdi.conf,则不会加载回声消除模块(system.conf 仍然被删除(。所以似乎auto_assign_spans=1
不起作用。
任何人都可以在我的回答中回答新问题吗?
首先,让我们处理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调用。出于同样的原因,它什么也没做。
这是有趣的部分:如果使用auto_assign_spans=1
,则不会调用dahdi_cfg
。这是一个错误吗?
------------------------------
相反,如果不使用auto_assign_spans=1
,则dahdi_cfg
由dahdi_span_config
调用。
这有点令人困惑。如果使用auto_assign_spans=1
,为什么禁止运行dahdi_cfg
?如果我们只有一张卡,这是完全可以接受的。auto_assign_spans=1
甚至记录在dahdi-tools README中作为此类场景的用例:
正常(模块中 auto_assign_spans=1 dahdi,这是默认值(,当发现并加载设备时, 它向 DAHDI 核心注册,其跨度自动变为 可用。但是,如果您有多个设备,则可能是 有兴趣为它们设置明确的跨度和通道编号。
手动将dahdi_cfg
添加到dahdi_span_config
是否安全?
顺便说一句,system.conf
甚至不需要创建 - 如果它不存在,它是动态生成的,但同样,只有在不使用auto_assign_spans=1
时才动态生成。 如果以某种方式纠正了此缺陷,则配置DAHDI唯一需要的就是
echo options dahdi auto_assign_spans=1 >/etc/modprobe.d/dahdi.conf
使用以下补丁进行/lib/udev/rules.d/60-dahdi.rules
:
+SUBSYSTEM=="dahdi_spans", RUN+="/usr/sbin/dahdi_cfg"
LABEL="dahdi_add_end"