我正在尝试让 GPRS 调制解调器在 Linux 下工作。对于某些 ISP,它工作正常,但对于其中一个 ISP,启动 pppd 后进程立即卡住。
日志如下所示:
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: AT
AT
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
OK
--> Sending: AT+CGDCONT=1,"IP","internet.beeline.kz"
AT+CGDCONT=1,"IP","internet.beeline.kz"
OK
--> Modem initialized.
--> Sending: ATD*99***1#
--> Waiting for carrier.
ATD*99***1#
CONNECT
~[7f]}#@!}!}#} }9}"}&} }*} } }'}"}(}"}%}&[10]FG"}#}%B#}%[08][~
--> Carrier detected. Waiting for prompt.
~[7f]}#@!}!}#} }9}"}&} }*} } }'}"}(}"}%}&[10]FG"}#}%B#}%[08][~
--> PPP negotiation detected.
--> Starting pppd at Wed Nov 19 03:05:44 2014
--> Pid of pppd: 17354
它卡在了这一点上,没有做任何其他事情。甚至没有超时连接。关于如何调试此问题,有什么想法吗?
更新:
尝试将调试添加到 /etc/ppp/peers/wvdial、/etc/ppp/peers/wvdial-pipe;在 /etc/ppp/options 中取消注释它。syslog 仍然只包含连接已建立的消息,没有其他内容。
还检查了 ifconfig,ppp0 接口没有出现在那里。
答案1
我无法使用 wvdial 解决我的问题。
但是,我直接使用 pppd 建立连接并且工作正常。
如果有人需要,我会发布有关如何操作的简要说明。
首先,创建文件 /etc/ppp/peers/{peername},内容如下:
/dev/{port device}
connect '/usr/sbin/chat -v -f /etc/chatscripts/gprs -T {APN}'
defaultroute
usepeerdns
unit {ppp interface number}
persist
chap-interval 60
ipparam {peername}
user "{login}"
nopcomp
novjccomp
nobsdcomp
nodeflate
noaccomp
lcp-echo-interval 2
lcp-echo-failure 3
noipdefault
其次,在 /etc/ppp/pap-secrets 和 /etc/ppp/chap-secrets 中添加以下行:
"{login}" {peername} "{password}"
可以使用命令“pon {peername}”建立连接,并使用命令“poff”关闭连接。
您需要将 {peername} 替换为您想要用来标识此连接的任何字符串;将 {port device} 替换为您的串行端口的设备名称(对于 COM 端口,替换为 ttyS0、ttyS1...;对于 USB 调制解调器,替换为 ttyUSB0、ttyUSB1...);将 {login} 和 {password} 替换为您的 ISP 使用的登录名和密码;将 {APN} 替换为您的 ISP 的 APN。您还可以选择任何 {ppp 接口号}。例如,100 表示您的 ppp 接口名为“ppp100”。
答案2
连接已打开(您看到的奇怪字符是 PPPD 正在尝试协商)。似乎对方正在尝试,但您的连接上缺少了一些东西。
尝试将“调试”作为 pppd 的一个选项,以便您可以详细了解正在发生的事情。这通常在/etc/ppp/peers/<对等体名称>(其中,在您的情况下 <PEERNAME> 可能是 wvdial)只需在里面放一行调试内容。