openwrt 使用 usb 实现4G拨号上网功能

上班一年了,最近才觉得应该把学到的东西好好用博客展示出来,而不是排的整整齐齐的放在浏览器收藏夹里!也开始从头发一些博客,但是觉得手头上的工作,也应该及时总结,这篇文章是关于 openwrt 拨号上网的博客,具体关于openwrt的使用以后博客慢慢补吧。

废话不多说,进入主题!

本人使用的是MTK-7628的一块板子,因为需要,现在想通过usb外接上网卡的形式,实现4G拨号上网,并让内部的设备能向外互通。4G上网模块使用的是龙尚的U9300C,应该用的高通的基带,如果有读者和我类似的话,下面文章希望对大家有些帮助!接下来的内容可能需要一点openwrt使用的经验,如果不太懂的话我后续的博文会详细介绍的,我也是小白一个,现在就先看看吧!

修改内核USB驱动

  1. 访问下面位置,打开option.c文件
openwrt-sdk\build_dir\target-mipsel_24kec+dsp_uClibc-0.9.33.2\linux-ramips_mt7628\linux-3.10.14\drivers\usb\serial\option.c
  1. 搜索0x1c9e,下面增加定义
#define LONGSUNG_VENDOR_ID          0x1c9e

#define LONGSUNG_U9300_PRODUCT_ID   0x9b3c

#define LONGSUNG_U8300_PRODUCT_ID   0x9b05
  1. 修改数组

由于USB串口跟netdev都属于非标准CDC设备,需要防止NDIS口被USB串口驱动加载而导致无法正常加载NDIS口驱动。可以通过设置 interface 4 不加载 otpion 驱动

先在 option_ids[ ] 数组前面增加

static const struct option_blacklist_info longsung_u8300_blacklist = {    
	.reserved = BIT(4),
};

static const struct option_blacklist_info longsung_u9300_blacklist = {    
	.reserved = BIT(4),
};

再搜索0xea42,下面增加数组

. . . 
{ USB_DEVICE(LONGSUNG_VENDOR_ID, LONGSUNG_U8300_PRODUCT_ID),
	.driver_info = (kernel_ulong_t)&longsung_u8300_blacklist},
{ USB_DEVICE(LONGSUNG_VENDOR_ID, LONGSUNG_U9300_PRODUCT_ID),
	.driver_info = (kernel_ulong_t)&longsung_u9300_blacklist},
. . .

编译龙尚 Gobinet 驱动

下载驱动

访问Github下载Gobinet驱动,驱动地址:https://github.com/DiUS/sierra-gobi-drivers

git clone https://github.com/DiUS/sierra-gobi-drivers
创建应用

在 openwrt-sdk/package/ 目录下新建 gobinet目录存放程序, gobinet 目录中新建 src 目录用于存放源码,创建 Makefile文件描述相关配置,Makefile填入下面内容。

include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
 
PKG_NAME:=gobinet
PKG_RELEASE:=1
 
include $(INCLUDE_DIR)/package.mk
 
define KernelPackage/gobinet
	SUBMENU:=Other modules
	TITLE:=Support Module for gobinet
	DEPENDS:=+kmod-usb-core +kmod-usb-net
	FILES:=$(PKG_BUILD_DIR)/GobiNet.ko
	AUTOLOAD:=$(call AutoLoad,81,GobiNet)
endef
 
define KernelPackage/gobinet/description
	This is a gobinet drivers
endef
 
MAKE_OPTS:=ARCH="$(LINUX_KARCH)" \
	CROSS_COMPILE="$(TARGET_CROSS)" \
	SUBDIRS="$(PKG_BUILD_DIR)"
	
define Build/Prepare
	mkdir -p $(PKG_BUILD_DIR)/
	$(CP) -R ./src/* $(PKG_BUILD_DIR)/
endef
 
define Build/Compile
	$(MAKE) -C "$(LINUX_DIR)" $(MAKE_OPTS) modules
endef
 
$(eval $(call KernelPackage,gobinet))
复制源码

将 sierra-gobi-drivers\GobiNet\ 目录下的全部文件复制到 src 目录中去。

添加依赖

在 make menuconfig 中添加如下依赖

//查看USB设备的命令 
Base System
	-> busybox
		-> Linux System Utilities
			<*> lsusb
	// libpthread 应该默认支持了
	// libstdcpp c++可以选择加上
	
//USB相关模块
Kernel Modules
	-> USB Support
		<*> kmod-usb-acm
		
		<*> kmod-usb-net
		<*>   kmod-usb-net-cdc-eem
		<*>   kmod-usb-net-cdc-mbim
		<*>   kmod-usb-net-cdc-subset
		<*>   kmod-usb-net-qmi-wwan	
		<*>   kmod-usb-net-rndis
		
		<*> kmod-usb-ohci
		
		<*> kmod-usb-serial
		<*>   kmod-usb-serial-ark3116
		<*>   kmod-usb-serial-belkin
		<*>   kmod-usb-serial-ch341
		<*>   kmod-usb-serial-cp210x
		<*>   kmod-usb-serial-cypress-m8
		<*>   kmod-usb-serial-ftdi
		
		<*> kmod-usb-serial-option
		
		<*> kmod-usb-storage
		
		<*> kmod-usb-uhci
		<*> kmod-usb2
	
    //自己创建的驱动
	Other modules
    	<*> gobinet
编译

驱动应该算是弄好了,直接 make V=s 吧。

拨号上网

好久了,过了半年才来更新这篇文章,上一家公司已经离职了,写的交接文档忘了备份,最近心血来潮想把之前弄的 openwrt 总结一下,把做的东西概括一下,至少自己知道自己做了什么吧。

下面根据记忆,简单说一下吧,最后拨号上网是没问题了,还能发出WiFi,让连接设备上网。

检查 usb 设备

使用 lsusb 应该可以找到找到一个设备,注意一下这个物理接口,后面要配置 WAN 口要用到。

lsusb
配置一个新的 WAN 口

接下来在 openwrt 的网页上增加一个新的接口,模仿着已有的 WAN 口改就可以。

协议选择

在上面的 WAN 口中,好像选的 PPP 协议,貌似写的是 3G 的,实际出来 4G 也能用。

配置防火墙

在 openwrt 的网页上配置防火墙,主要是对我们新增的 WAN 口进行配置,同样模仿着这页的 WAN 口配置改就是,具体我也记不清了,应该很好理解,意思就是让 WAN 口的数据能够通过 WAN 口传递到 LAN 口去,而 WLAN 也是一样的。

串并转换

这部分是另一个同事做的了,好像通过 usb 端口得到的数据需要进行一次串并转换,好像写在龙尚那个驱动应用里面,具体网上找找吧。

重启

重启应该就生效了,好像要经过一次查找信号,查找到信号后再进行拨号,同事好像在龙尚那个应用里面也加了拨号的逻辑,具体是上面路由器网页配置生效的还是代码生效的我就不清楚了,这里提供一个思路吧!但是如果只是在代码里面配置了拨号,肯定是不能使用的,仍然需要按上面的步骤,在路由器的网页上配置,也算是我和同事的代码加起来才生效的。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值