上班一年了,最近才觉得应该把学到的东西好好用博客展示出来,而不是排的整整齐齐的放在浏览器收藏夹里!也开始从头发一些博客,但是觉得手头上的工作,也应该及时总结,这篇文章是关于 openwrt 拨号上网的博客,具体关于openwrt的使用以后博客慢慢补吧。
废话不多说,进入主题!
本人使用的是MTK-7628的一块板子,因为需要,现在想通过usb外接上网卡的形式,实现4G拨号上网,并让内部的设备能向外互通。4G上网模块使用的是龙尚的U9300C,应该用的高通的基带,如果有读者和我类似的话,下面文章希望对大家有些帮助!接下来的内容可能需要一点openwrt使用的经验,如果不太懂的话我后续的博文会详细介绍的,我也是小白一个,现在就先看看吧!
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
#define LONGSUNG_VENDOR_ID 0x1c9e
#define LONGSUNG_U9300_PRODUCT_ID 0x9b3c
#define LONGSUNG_U8300_PRODUCT_ID 0x9b05
由于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},
. . .
访问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 吧。
拨号上网正在研究,后续更新。