Next Previous Contents

9. 设定你的调制解调器及串口

你应该确认你的调制解调器设定正确而且你知道它连接到哪个串口.

谨记:-

还要提醒你就是如果你有四个串口,标准 PC 上让 com1 与 com3 共享 IRQ4 且让 com2 与 com4 共享 IRQ3.

如果你有其它机装置和串口共享一个 IRQ 的话可能会有问题. 你必须确定你的调制解调器串口拥有它自己,唯一的一个 IRQ.许多现在的串口卡(与品质较佳的主机板上的串口)允许你将串口上的 IRQ 移开.

如果你在用 Linux 2.0.X 核心,你可以用 cat /proc/interrupts 检查使用中的 IRQ,你会看到像这样的输出结果


 0:    6766283   timer
 1:      91545   keyboard
 2:          0   cascade
 4:     156944 + serial
 7:     101764   WD8013
10:     134365 + BusLogic BT-958
13:          1   math error
15:    3671702 + serial

这里显示了一个串口在 IRQ4 (一个鼠标)与一个串口在 IRQ15. (也有一串口在 com2, IRQ3 与 com4 是在 IRQ14,但并未使用,没有显示出来).

请小心 - 如果你要调你的 IRQ 的话你要确实知道你在做些什么! 你不只需要打开你的计算机外壳,将接口卡拔下并调整 jumper,你还需要知道那个占用什么 IRQ. 以我的例子来说,这完全是以 SCSI 为主的 PC,因此我将主机板上的通常会占用 IRQ14 与 15 的 IDE 接口关掉.

你还需要注意如果你的 PC 还跑了其它的操作系统,更动 IRQ 的地址可能使那个操作系统启动不正常,或根本开不了机!

如果真的将串口移到了非标准的 IRQ,那么你需要告诉 Linux 每一个端口所用的 IRQ 地址. 这可以用 setserial 指令达成,而且最好将它放到 rc.local,或在 SysV 系统中由 rc.local 所调用的 rc.serial 里面成为开机过程的一部份. 以我上面所列的机器来说,用这样的指令


/bin/setserial -b /dev/ttyS2 IRQ 11
/bin/setserial -b /dev/ttyS3 IRQ 15

然而,如果你使用由 kerneld 行程所负责的动态载入串行模组,你不能像这样每次开机时设定一次 IRQ 後就把它忘了. 这是因为如果串行模组被移除,Linux 就会忘了这些特殊的设定.

因此,如果你以动态方式载入串行模组,你必须要在每入载入模组时重新设定 IRQ 才行.

9.1 串口与速度兼容性的注意事项

如果你使用高速(外接式)调制解调器(14,400 baud 或更高),你的串口速度必须能够处理这种调制解调器所产生的数据量,特在是当调制解调器在压缩数据时.

你的串口需要一种新型的 UART (Universal Asynchronous Receiver Transmitter),像是 16550(A). 如果你在使用一部旧的机器(或旧的串行卡),很可能串口上只有旧的 8250 UART,这在你使用高速调制解调器时可能会发生问题.

使用这个指令

setserial -a /dev/ttySx

让 Linux 回报你使用的 UART 类型.如果你没有 16550A 型的 UART,去买一块新的串行卡(不到 $50). 当你买一块新卡时,确定你能调整上面的 IRQ!

注意: 最早版本的 16550 UART 芯片上有瑕疵.这点很快就被发现了而且也发行了新版的芯片 - 16550A UART. 但仍有少部份有瑕疵的芯片流入了市面.虽然不太可能刚好就让你买到,但你还是应该看一下芯片类型是不是 16550A,特别是在一些较早期的串行卡上.

9.2 串口域名

以前,Linux 用 cuaX 表示拨出的串口名而 ttySx 表示拨入的域名.

自核心 2.0.X 之后这样的要求已经改变了,所以你应该可以用 ttySx 同时表示拨入及拨出的域名. 据我了解 cuaX 的装置域名在未来版本的核心中可能会取消.

9.3 配置你的调制解调器

为使用 PPP 你将得正确地配置你的调制解调器 - 要完成这件工作请阅读你的调制解调器使用手册! 大部分的调制解调器都有 PPP 所需求的的出厂缺省选项. 最基本的配置是:-

你应该要研究的其它设定(使用标准 Hayes 指令)是:

有一个站台提供你不断增加的调制解调器款式的设定,可能会对你有所帮助,在 Modem setup information

在你的计算机与调制解调器之间的调制解调器串行面接口如何运作也值得研究了解. 大部分现代的调制解调器都允许你以固定的速度使用串行接口,即使电话线路接口切换到最高的速度它跟远程调制解调器都能够处理.

这称为 split speed operation.如果你的调制解调器能支持这项功能,把调制解调器的串行接口锁定在它的最高速度(通常是 115,200 baud ,但对 14,400 调制解调器来说可能是 38,400 baud).

使用你的通讯软件(例如 minicom)找出关于你调制解调器的配置信息并且设为 PPP 所需的设定. 许多调制解调器会在 AT&V 指令的响应中回报它们目前的设定状况,但是你应该查看一下你的调制解调器使用手册.

如果你把设定全都弄乱了,那么你可以藉由发出 AT&F 指令回到稳定状态(通常可以) - 回到出厂设定. (在我遇过的大部分现代调制解调器中,出厂的设定包含所有使用 PPP 所需的设定 - 但是你应该做个检查).

一旦你找出了必要的设定字串就把它写下来.然后你必须做个决定: 你可以将这些设定值存在调制解调器上的非挥发性内存中这样可以用适当的 AT 指令就可叫出. 另一个做法是将这些正确的设定在 PPP 的拨号过程中传入.

如果你只从 Linux 下使用调制解调器连接到 ISP 服务器,最简单的做法就是将这些设定值存入调制解调器上的非挥发性内存(non-volatile RAM).

另一方面,如果你要还在其它的应用程序或操作系统上使用调制解调器,最保险的做法是在每次拨号时才将这些信息传入, 如此可以确保在每次拨号时调制解调器总是在正确的状态.(记下这些设定字串还有个好处就是在调制解调器遗失了内存的内容时,这确实可能发生).

9.4 串行流量控制注意事项

当数据在串行通讯线路上流动的时候,可能会发生数据到达的比计算机能处理的还要快这种情况(计算机可能忙著做其它的事 - 记得,Linux 是一个多使用者,多工的操作系统). 为了确保数据不会漏失(在缓冲区中的数据不会超载而因此漏失掉),需要某些控制数据流量的方法.

有两种方法可以在串行线路上达成这个目的:-

虽然后者用在终端机(文字)连结上可能很好,但是在 PPP 上的数据使用整个 8 bits 编码空间 - 而且在数据中的某个地方相当可能存在会被转成 control S 以及 control Q 的比特. 所以,如果调制解调器设成使用软件流量控制的话,那么传输很容易被扰乱!

对于使用 PPP 的高速连结(使用 8 bits 数据编码)来说硬件流量控制是很重要的,因此你必须使用硬件流量控制.

9.5 测试你的调制解调器的拨出功能

在你完成了串口与调制解调器的设定之时试著拨到你的 ISP 上看看能否连上以确定设定是否有误.

使用你的终端机通讯软件(像是 minicom),拨到你想使用 PPP 连线的那台 PPP 服务器.

(注意: 在这个阶段我们并不尝试建立 PPP 连线 - 只是要证实我们拥有正确的电话号码以及为了登录并且起动 PPP 而确实地找出服务器究竟传送给我们什么讯息).

在这个过程中,可以截取(记录到一个文件里)整个登录的过程或者是小心地(非常小心地)确实写下远程服务器所给你提示输入你的使用者域名以及密码的讯息(以及任何建立 PPP 连线需要下达的指令).

如果你的服务器使用 PAP,你可能不会看见登录的提示符号,而是(以文字表示的)连结通讯协议(看起来像是垃圾)出现在你的屏幕上.

一些警告:-

这最少值得拨号两次 - 某些服务器会在每次你登录时改变提示(例如依时间改变!). 你的 Linux 机器在每次你拨入的时候要能够辨认的两个主要的提示是:-

如果你必须发出某个指令来起动服务端的 PPP,那么你也需要找出一旦你登录之后服务器所给你输入指令以启动 PPP 的提示.

如果你的服务器自动起动 PPP 的话,一旦你登录完成,你将开始见到屏幕上出现垃圾 - 这是 PPP 服务端传送给你的机器以起动并且配置 PPP 连线的信息.

这看起来应该会是像这样的东西:-


~y}#.!}!}!} }8}!}$}%U}"}&} } } } }%}& ...}'}"}(}"} .~~y}

(而且它还会一直进来! )

在某些系统中 PPP 必须在服务端上明确地加以起动.这通常是因为该服务器被设定成允许使用相同使用者域名/密码配对来做 PPP 登录及一般使用接口(shell) 的登录. 如果是这样,一旦你登录就发出该指令.再一次,你将会见到 PPP 连线服务端起动的垃圾信息 - 所以现在你可以挂断了.

如果你没有在连上时立即在屏幕上看到这些垃圾(如果必要的话先登录并启动 PPP 服务器), 按下 Enter 试试能否启动 PPP 服务器...

这个时候,你就可以挂断你的调制解调器(通常是,快速地键入 +++ 一旦你的调制解调器响应 OK 然后接著下 ATHO 指令).

如果你不能使你的调制解调器运作的话,阅读你的调制解调器使用手册,你通讯软件的在线使用手册以及 Serial HOWTO! 一旦你解决该问题,继续进行前面所说的.


Next Previous Contents