在openwrt上实现用手机进行3G拨号

背景:笔者在研究 Wifi 机器人时,实现了通过 wifi 控制机器人后觉得不过瘾,想试试远距离控制,听说可以用 openwrt 进行 3G 拨号,获取到公网 IP 后,用其他客户端(手机、电脑等)连接 openwrt ,实现远程控制机器人,搜索论坛发现成功案例较少,手头又没有 3G 无线网卡,但家人淘汰不用的电信智能机有好几个,网上搜索手机当 Modem 用的案例很多,笔者大胆尝试了下,果真成功了,分享下经验:

1. 为何要用手机实现拨号?
1) 普通的 3G 无线网卡 200-300 元,但运营商的定制机很便宜
2) 手机自带电池,比无线网卡续航能力强。


2. 需要安装的库
以最基本的 openwrt 为例,需要安装如下库:
opkg install kmod-usb-core kmod-usb-ohci kmod-usb-serial libusb kmod-usb-acm chat comgt usb-modeswitch usb-modeswitch-data
建议是在 openwrt 已经通过某种方式联网的情况下用 opkg install 命令安装,如果不能联网,可以采用如下方法下载 ipk 进行安装。
1) 进入系统 - 》软件包 - 》配置菜单

 2)  浏览器打开src/gz后面跟的网址,每个路由器都不太一样
 3 )下载对应的 ipk 文件,通过 WINCP 软件,或者 samba 共享方式上传到路由器的 flash 中,然后通过 opkg install 命令 安装。


3. 如何识别手机的网卡型号
1) 把手机用 USB 连接电脑,安装好驱动后,设备管理器找调制解调器 ,没有的话,手机连上 USB 后,观察手机是否弹出一个菜单,里面有切换手机工作模式的选项(三星的手机基本是这样的)
2) 在设备管理器中选择新增的调制解调器,右键、属性、详细信息,下拉栏中选择“设备范例  ID ”。
3) 笔者用的华为 C8810 ,显示内容是“USB\VID_12D1& ID_1035&MI_00\7&B16E7B9&0&0000”,记录下VID、 PID 后面的两个 16 进制数字,笔者的是 12D1,1035


4. 配置 Openwrt ,实现手机当成 Modem 拨号
    1 Vim /etc/usb_modeswitch.conf,加入如下内容
        DefaultVendor= 0x12d1;
        DefaultProduct= 0x1035
        # choose one of these:
       DetachStorageOnly=0
       HuaweiMode=1

  经过试验上述步骤不是必须,但修改后手机被识别为 USB 网卡的成功率高了。建议不经常换网卡的同学都修改。
        DefaultVendor和DefaultProduct就是上述步骤中的VID、 PID
    2 )进入目录/etc/usb_modeswitch.d,这个目录中有很多以VID ID 命名的文件,涵盖了所有已经识别的网卡,如果没有与自己网卡对应的文件,就新增,否则就修改。把上述内容添加到与网卡对应的文件中,我的手机对应的文件为12d1:1035,文件内容与usb_modeswitch.conf中的一致。
    3 )如下这一步非常关键,把网卡加入 usb 设备列表中
          vim /etc/modules.d/60-usb-serial
usbserial vendor=0x12d1 product=0x1035 # Huawei mobile
      修改后重启路由器,运行 ls /dev ,  应该可以看到 tty/USB0 tty/USB1 两个设备(也许还有 tty/USB2 tty/USB3 ),如果没有,肯定是上述配置有问题。
     4 )按照下图配置 wan 口的参数,因为笔者用的是电信卡,所以服务类型选 CDMA/EVDO
APN ctnet 用户名:ctnet@mycdma.cn  密码 :vnet.mobi , 设置完毕后保存设置。


5 )如果用的联通(包括移动手机,但不包括 TD 手机),需要进行如下设置
进入 /etc/chatscripts/ 修改 3g.net
ABORT   BUSY
ABORT   'NO CARRIER'
ABORT   ERROR
REPORT  CONNECT
TIMEOUT 10
""      "AT&F"
OK      "ATE1"
OK      'AT+CGDCONT=1,"IP","3gnet"'
SAY     "Calling UMTS/GPRS"
TIMEOUT 30
OK      "ATD*99#"
CONNECT ' '

    然后进入 wan 设置中,把服务类型改为 UMTS/GPRS


 备注:联通的手机接入点为“ 3gnet ”,移动的为“ cmnet ”。
5. 验证过程
1) 手机插入 CDMA 卡,开机,开启数据业务,正常打开一个网页,确认 3g 业务正常。
2) 手机通过 USB 线连接 openwrt (笔者的是 HG255D 刷机成 openwrt ),按照上图中,调制解调器节点选 tty/USB0 ,然后点保存配置(第一次点保存配置,后续可以在如下界面点连接按钮),耐心等一会,这时观察手机的信号区,数据业务的箭头就消失了(因为手机会切换到 Modem 模式),路由器获取到 IP ,电脑就可以正常上网了。



20120905版4M固件: 1. 720N固件,基于703N修改。TP-Link原厂固件请刷factory,已经是OpenWrt了就刷sysupgrade。 且刷此固件后可直刷OpenWrt 703N、OpenWrt 720N、TP-Link 703N、TP-Link 720N固件,不用改固件头。 2. 4M固件,当然8M的flash也可以刷。 3. 支持MentoHUST(锐捷认证)、3G、NAS(仅支持ext4,不支持ntfs)、共享手机网络、MWAN2负载均衡、打印服务器、 远程唤醒、8187 3070、瑞银网卡,剩余200多K空间,具体见截图。 因试过4M空间集成脱机、NAS等有难度,故不再出4M的脱机固件,请用extroot扩展后自行安装。 4. MentoHUST没有条件测试,如不能自动获取IP,请把Web界面的DHCP script的值由“udhcpc -i”改成“udhcpc -renew”试试。 5. 关于extroot(既用U盘引导系统),没想到现在这么简单了。 简单说下:先把U盘在电脑里格式化成ext3或ext4。插上U盘,命令行运行blkid得到U盘的UUID值,复制到管理界面的相应UUID, 挂载选项“rw,sync”删掉后面的umask=000。然后勾上extroot和启用,文件系统选对应的ext3或ext4,保存应用OK。 重启下,看看剩余空间大了没,呵呵。 (umask=000只是为了让samba可写而加的参数。挂载USB存储设备时,如果不用samba请删之。) 6. 按住reset键30秒后led闪烁,60秒之前松开reset键则恢复出厂设置。 7. LAN/WAN两个网口正常。 8. 默认开启WiFi,无密码。 9. 支持模式切换开关,定义如下: AP: 开启共享手机网络、开启无线 3G: 关闭共享手机网络、开启无线 Router:关闭共享手机网络、关闭无线 10.解释下共享手机网络,OpenWrt官方称为USB Tethering,指openwrt路由器通过USB连接智能手机, 而智能手机的网络共享给openwrt使用。 目前固件只支持Android系统共享网络功能,而支持iPhone需要集成的软件太多,空间有限,如果出8M固件 再考虑吧。 Android本来就支持WiFi热点,可能有点画蛇添足吧,呵呵。我是偶然发现openwrt还支持这个功能, 所以就研究了下,也许在某些情况下这个功能还是有用的吧。 使用方法: a. 路由器模式开关切换至AP位置。 b. 用USB线连接路由器与手机。 c. 手机USB连接管理里面,选择 除了“内存卡读取”的其他模式,比如:选择“仅充电”; 然后在“设置”--“系统”里面找到“共享手机网络”,开启“USB绑定”就好了。 回到openwrt界面,会发现有个usb0的接口,已经自动获取了IP,这样openwrt就能使用手机 的网络了。 11.关于MWAN2负载均衡,效率还不错,还支持基于session的负载均衡,使用方法见/etc/config/mwan2里面的注释。 mwan2的作者新出了mwan3,有兴趣可以去看看:https://forum.openwrt.org/viewtopic.php?id=39052 12.703n可刷本固件,但是刷完后lan口不能用。需先用无线连接,然后编辑/etc/config/network , 删除其中wan口配置,把lan的eth0改成eth1后,lan就可以用了。 如703n原厂固件web界面请刷factory,且需要先把固件标识改成07030101才能刷。 13.再说下打印服务器,没有测试,不知道这个版本能不能用,但20120803版有人试过可用,有需求请自行下载。trunk就是不稳定啊, 没办法~~ 14.刷机有风险,变砖本人概不负责。 吐糟一下,如3G有掉线问题,请看日志中是否出现“No response to 5 echo-requests”。 而解决这个问题,除了降低无线功率或者干脆关闭无线外,我是没找到其他更好的办法(可能和3G网卡有关)。 曾经尝试过换电源增强供电、用带外接电源的usb-hub,包括尝试TP-LINK原厂固件也一样掉线。还有修改/etc/ppp/options里 的lcp-echo-interval,把值改大点后是不掉线了,但是3G其实已经断流了,没什么意义。我用MU350网卡试过FW300R、FWR171-3G 还有720N这几个路由都是这样。不知道是TP-Link设计问题,还是td-scdma这种垃圾芯片功率过高的问题,或者Atheros芯片 的设计缺陷? 百撕不得骑姐啊!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值