Jan*_*nen 7 modem 3g raspbian huawei lte
我有一个在 Raspberry Pi 2+ 上运行的基于 Linux 的操作系统(Rasbian),它使用华为 E3372s 4G/LTE USB 记忆棒进行互联网连接。
我所有的出站连接都运行良好(使用 usb_modeswitch-ruling 和 Udev/rules.d 更改了华为 USB 模式),但我无法接收到任何类型的 Raspi 入站连接。传入只是不工作。
我无法接收任何数据包或连接,我使用 Raspbian 包分发提供的工具实时跟踪和从日志中跟踪这些数据包或连接。
我已经与我的 4G ISP 确认,允许双向流量的扩展服务已启用、重置和他们的很多知识,到我的 3G/4G 订阅,从他们的一端完美运行,但我无法接收任何数据包拉斯皮。
华为 E3372s(与大多数使用类似拨号的旧棒不同wvdial
)使用CDC_ETH驱动系统,它为系统(在本例中为 ETH1)创建了一个类似以太网的设备,并且在这种情况下应该可以完美地工作。
我已经清除、重新创建、测试、修改、重新清除并再次使用 IPTables 完成所有需要的任务,多次检查、修改和测试路由,并确认没有已知的阻止系统阻止通过华为 USB 记忆棒连接,但我的系统甚至无法接收到 Ping,尽管有功能齐全的服务正在运行。
我还检查了更简单和直接的区域,例如主机允许/拒绝规则,但对它们并不走运。它也不是 APN 名称,因为华为内部配置的所有设置都已使用其 Web 界面正确设置。
但是,我在随机论坛中偶尔遇到过,华为 CDC_ETH 解决方案在处理与其驱动程序的传入连接时可能存在缺陷。
如果您有使用 CDC_ETH 的华为 E3372s或相关 3G/4G USB 产品的Debian/Rasbian/Linux 传入连接问题的经验并找到解决此问题的方法
您不需要固件更新,但您确实需要一个模式开关(您已找到)和一个拨号器(您尚未找到)。以下配置文件取自NVDC Stuff Networking、Virtualization 和 Data Center Stuff,可能开箱即用。如果不将每个都用作模板并进行调整,直到它开始工作:
/etc/usb_modeswitch.conf
DefaultVendor=0x12d1
DefaultProduct=0x14fe
TargetVendor= 0x12d1
TargetProduct= 0x1506
MessageContent="55534243123456780000000000000011062000000100000000000000000000"
Run Code Online (Sandbox Code Playgroud)
/etc/wvdial.conf
[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0
Init3 = AT+CGDCONT=1,"IP","internet.t-mobile.cz"
Stupid Mode = 1
ISDN = 0
Modem Type = Analog Modem
New PPPD = yes
Phone = *99***#
Modem = /dev/gsmmodem
Username = { }
Password = { }
Baud = 9600
Run Code Online (Sandbox Code Playgroud)
/dev/gsmmodem
到的链接/dev/ttyUSB2
,即调制解调器。拨打外面的世界。请注意,您必须每次都这样做:
wvdial >/dev/null 2>&1 &
Run Code Online (Sandbox Code Playgroud)将以下内容添加到系统的本地启动脚本区域:
MODEM_STORAGE="12d1:14fe"
MODEM_MODEM="12d1:1506"
# 0 = storage, 1= modem
MODEM_MODE=0
check_modem_mode () {
echo -n "Checking modem presence... "
lsusb | grep --quiet "$MODEM_STORAGE"
if [ $? -eq 0 ]; then
MODEM_MODE=0
echo "OK: modem in mass storage mode"
else
lsusb | grep --quiet "$MODEM_MODEM"
if [ $? -eq 0 ]; then
MODEM_MODE=1
echo "OK: modem in modem mode"
else
echo "ERROR: modem not found"
exit 1
fi
fi
}
set_modem_mode () {
while [ $MODEM_MODE -eq 0 ]
do
echo -n "Setting modem mode... "
usb_modeswitch -s 15 -I -H -c /etc/usb_modeswitch.conf >/dev/null 2>&1
lsusb | grep --quiet "$MODEM_MODEM"
if [ $? -eq 0 ]; then
MODEM_MODE=1
echo "OK"
else
echo "FAILED"
fi
done
}
Run Code Online (Sandbox Code Playgroud)正如我在上一篇文章中解释的那样,GSM 调制解调器总是有两个或更多部分,在这个模型的情况下是 3 个部分。
子弹 1 和 2 是通过etc/modeswitch.conf
配置文件控制的。12d1
是供应商 MAC 地址,可以这么说。使用本地脚本创建 MAC 地址的其余部分。 12:D1:14:FE
,最终成为存储设备,12:D1:15:06
最终成为调制解调器。如果不使用本地脚本问题usb_modeswitch -s 15 -I -H -c /etc/usb_modeswitch.conf
注意:默认情况下,即没有模式开关,Linux 只能看到存储设备,这就是为什么 OP 无法看到或使用 PPP 拨号器或无线设备的原因。
使用模式开关打开调制解调器后,wvdial或其众多替代品之一将控制对外部世界的访问。调制解调器处于调制解调器模式时,您最终将看到类似于以下内容的输出:
wwan0 Link encap:Ethernet HWaddr 58:2c:80:13:93:13
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
ppp0 Link encap:Point-to-Point Protocol
inet addr:10.83.249.176 P-t-P:10.64.64.64 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:4265 errors:0 dropped:0 overruns:0 frame:0
TX packets:6699 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:506706 (494.8 KiB) TX bytes:600991 (586.9 KiB)
Run Code Online (Sandbox Code Playgroud)
发行时 ifconfig
归档时间: |
|
查看次数: |
13474 次 |
最近记录: |