资本掌控下的Asterisk虽然继续履行开源社区的承诺,但实际上小手还是会四处乱摸,比如对于Asterisk硬件驱动DAHDI,就做了些隐蔽的小动作。
DAHDI
DAHDI 全称是 Digium Asterisk Hardware Device Interface。
DAHDI 2.0版本发布于2008年。 之前它叫做Zaptel,是在这一年才改名,所以DAHDI初始版本就是2.0 , 实际上就是Zaptel 1.4。
自2008年发布2.0版本之后,一直都稳定,向下兼容性也很好,甚至zaptel都还在里面。2018年无厘头地发布了3.0版本就大幅删改了一些用了十几年的经典驱动,之后2019年的3.1版本,2022年的3.2版本, 2023年的3.3版本都延续了3.x版本的结构。
TDM410
TDM410是畅销很多年的经典型号,至今都还是。
今天我们看看,怎么让DAHDI继续支持深简TDM410P等经典语音卡。
TDM410系列模拟电话语音卡(TDM410P, TDM410E,TDM800E)等,采用的是wctdm24xxp驱动,这个驱动,在DAHDI 3.0以及更新版本里,仍然是保留的。而且使用dahdi_hardware工具,也是能看到语音卡的:
dahdi_hardware pci:0000:02:06.0 wctdm24xxp- d161:8005 Wildcard TDM410P
但是使用dahdi_scan
,是扫描不到信息的。当然,使用dahdi_genconf
也是生成不了任何配置信息的。
base.c
我们常常建议资深的工程师,还是用之前的DAHDI 2.x的驱动。硬件的发展其实没有那么快,尤其是嵌入在计算机内部的语音卡。您可以想想看,电脑的PCI-E插槽,已经有多少年没有更新换代了?
但是 很多文档里,包括我们自己,为了省事,都是用的最新的驱动版本,即所谓的 current.tar.gz ,所以,还是有必要讲讲如何在3.x下面恢复对TDM410的支持。
这个恢复只需要恢复一点点被删除的标识代码就行了,对于整个驱动、系统的稳定性是没有影响的。
首先我们找到文件: linux/drivers/dahdi/wctdm24xxp/base.c ,在比较靠后的位置,6035行,能看到下面这个PCI设备表:
static DEFINE_PCI_DEVICE_TABLE(wctdm_pci_tbl) = {
{ 0xd161, 0x2400, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (unsigned long) &wctdm2400 },
{ 0xd161, 0x8003, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (unsigned long) &wcaex2400 },
{ 0xd161, 0x8007, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (unsigned long) &wcha80000 },
{ 0xd161, 0x8008, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (unsigned long) &wchb80000 },
{ 0 }
};
修改成如下:
static DEFINE_PCI_DEVICE_TABLE(wctdm_pci_tbl) = {
{ 0xd161, 0x2400, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (unsigned long) &wctdm2400 },
{ 0xd161, 0x0800, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (unsigned long) &wctdm800 },
{ 0xd161, 0x8002, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (unsigned long) &wcaex800 },
{ 0xd161, 0x8003, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (unsigned long) &wcaex2400 },
{ 0xd161, 0x8005, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (unsigned long) &wctdm410 },
{ 0xd161, 0x8006, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (unsigned long) &wcaex410 },
{ 0xd161, 0x8007, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (unsigned long) &wcha80000 },
{ 0xd161, 0x8008, PCI_ANY_ID, PCI_ANY_ID, 0, 0, (unsigned long) &wchb80000 },
{ 0 }
};
然后按照正常的步骤进行编译安装就行了。
如果不想麻烦改代码,也可以直接下载更改好的dahdi包。看本文开头的下载连接。
什么是电话语音卡
电话语音卡是一种电脑配件,通过PCI接口,插到电脑里面,类似于显卡/声卡/网卡/阵列卡一样,为电脑提供电话线路的接入和控制功能。
根据电信接口类型可以分为数字中继语音卡,模拟电话语音卡等。
根据计算机接口类型可以分为PCI语音卡,PCI-E接口语音卡,minipcie接口卡,Compact PCI语音卡等。
根据功能,又可以分为语音卡,录音卡,信令采集卡等等。
下面有一个视频,可以有助于您了解什么是模拟电话语音卡,以及TDM410E模拟电话语音卡的介绍。
一张图看懂模拟电话语音卡TDM410