5G模块的使用-FIBOCOM FX650
ubuntu 使用5G模块
拿到FIBOCOM FX650 的评估板接入ubuntu 20.04 的虚拟机中
编译option.c的驱动
option.ko的驱动需要修改,然后重新编译
从github中下载option.c
和usb-wwan.h
makefile 文件如下
obj-m := option.o
PWD := $(shell pwd)
OUTPUTDIR=/lib/modules/`uname -r`/kernel/drivers/usb/serial
ifeq ($(ARCH),)
ARCH := $(shell uname -m)
endif
ifeq ($(CROSS_COMPILE),)
CROSS_COMPILE :=
endif
ifeq ($(KDIR),)
KDIR := /lib/modules/$(shell uname -r)/build
endif
default:
ln -sf makefile Makefile
$(MAKE) ARCH=${ARCH} CROSS_COMPILE=${CROSS_COMPILE} -C $(KDIR) M=$(PWD) modules
install: default
rm -rf Makefile
rm -rf *.o *~ core .depend .*.cmd *.mod.c .tmp_versions Module.* modules.order
mkdir -p $(OUTPUTDIR)
cp -f option.ko $(OUTPUTDIR)
depmod
modprobe -r option
modprobe option
clean:
rm -rf Makefile
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module.* modules.order
修改option.c
static const struct usb_device_id option_ids[] = {
{ USB_DEVICE(0x2cb7, 0x0a04) ,
.driver_info = RSVD(0) | RSVD(1) | RSVD(5) }, // fibocom ecm
{ USB_DEVICE(0x2cb7, 0x0a05) ,
.driver_info = RSVD(0) | RSVD(1) | RSVD(6) }, // fibocom ncm
{ USB_DEVICE(0x2cb7, 0x0a06) ,
.driver_info = RSVD(0) | RSVD(1) | RSVD(6) }, // fibocom rndis
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) },
.......
}
把option.ck ,usb-wwan.h,makefile 放在同一目录 ,打开终端运行
make
生成option.ko
安装驱动
安装对应的驱动
export KVERSION=`uname -r`
sudo insmod /lib/modules/$KVERSION/kernel/drivers/usb/serial/usbserial.ko
sudo insmod /lib/modules/$KVERSION/kernel/drivers/usb/serial/usb_wwan.ko
sudo insmod option.ko #刚刚编译好的模块
usbserial.ko 与usb_wwan.ko 为操作系统的模块
使用
驱动安装后,需要等待几秒,会在/dev/下生成ttyUSB0-4 的节点,一般ttyUSB0对应的串口为发送AT指令的口。
执行如下脚本
#/bin/bash
MODULE_PORT=/dev/ttyUSB0
#check module USB port:
function checkModuleport(){
until [ -c $MODULE_PORT ]
do
echo -e "wait module port\r\n"
sleep 1
done
}
checkModuleport
echo -e "ATE0\r\n" > $MODULE_PORT
echo -e "AT+GTUSBMODE=35\r\n" > $MODULE_PORT
echo -e "AT+GTRAT?" > $MODULE_PORT
echo -e "AT+CGDCONT?" > $MODULE_PORT
echo -e "AT+COPS?" > $MODULE_PORT
#查询当前注册的运营商和制式,11、12、13是5G,7是4G、2是3G、0是2G
echo -e "AT+COPS?\r\n" > $MODULE_PORT
#释放上次拨号的IP,当没IP时报ERROR
echo -e "AT+GTRNDIS=0,1\r\n" > $MODULE_PORT
sleep 1
#ECM拨号,有IP时报错
echo -e "AT+GTRNDIS=1,1\r\n" > $MODULE_PORT
#配置Linux系统设备的路由
ifconfig usb0 up
udhcpc -i usb0
运行后可以上网。
可以ping www.baidu.com来验证是否可以连接外网(前提是有接SIM,sim可以上网)。
注意事项
执行脚本或者对/dev/ttyUSB0等节点进行操作时需要以root用户进行,仅仅修改chmod 777 /dev/ttyUSB0 或者chown 命令操作时会有问题。
arm板上使用5G模块
硬件环境的初始化
arm板上的5g,与ubuntu使用评估板不一样,一般都有独立电源控制,要先初始化电源或者GPIO
内核配置与使用
CONFIG_USB_NET_CDCETHER=y
CONFIG_USB_USBNET=y
CONFIG_USB_NET_RNDIS_HOST = y
编译好内核后与ubuntu 下一样,执行上述脚本,可以正常连网使用。
注意事项
echo -e “ATE0\r\n” > /dev/ttyUSB0 为关于回显的AT指令,如果cat /dev/ttyUSB0 一直返回ERROR的信息,要输入这条指令才能对其它指令进行操作。
同时注意些模块输入echo -e “ATE0\r\n” > /dev/ttyUSB0 后续如果有AT指令格式错误还是会一直报ERRO,所以建议在发AT指令前先执行此条指令。