您的位置:首页 > 其它

移植usb-modeswitch-2.4.0到RT5350/MT7620原厂SDK

2016-07-31 16:11 417 查看
由于编译usb-modeswitch-2.4.0需要用到新的libusb,所以要先移植 libusb-1.0.20, 可参见以前的信息。
http://blog.csdn.net/junglefly/article/details/52078053
首先去http://www.draisberghof.de/usb_modeswitch/ 下载 usb-modeswitch-2.4.0.tar.bz2  解压到"source/user"中

一)修改 "source/config/config.in"

以便在make menuconfig 时可以选择编译usb-modeswitch-2.4.0

bool '3G connection (usb_modeswitch, comgt, pppd, sdparm, and dial-up scripts)' CONFIG_USER_3G

if [ "$CONFIG_USER_3G" = "y" ]; then
define_bool CONFIG_RT2880_SCRIPTS y
define_bool CONFIG_USER_PPPD y
define_bool CONFIG_USER_COMGT y
define_bool CONFIG_USER_USBMODESWITCH_240 y
define_bool CONFIG_USER_SDPARM y

fi

bool 'usb_modeswitch' CONFIG_USER_USBMODESWITCH

if [ "$CONFIG_USER_USBMODESWITCH" = "y" ]; then
define_bool CONFIG_LIB_USB0112_FORCE y

fi

bool 'usb_modeswitch_2.4.0' CONFIG_USER_USBMODESWITCH_240

if [ "$CONFIG_USER_USBMODESWITCH_240" = "y" ]; then
define_bool CONFIG_LIB_USB1020_FORCE y

fi

二)修改"source/user/Makefile"增加usb-modeswitch-2.4.0 目录

dir_$(CONFIG_USER_USBMODESWITCH)    += usb_modeswitch-0.9.5

dir_$(CONFIG_USER_USBMODESWITCH_240)        += usb-modeswitch-2.4.0

三)usb-modeswitch-2.4.0的makefile修改如下所示

LIBDIR = $(ROOTDIR)/lib/libusb-1.0.20

CFLAGS += -I$(LIBDIR)/libusb 

LDLIBS += -lusb -lpthread

EXEC = usb_modeswitch

SRCS = usb_modeswitch.c

$(EXEC): $(SRCS)
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -L$(LIBDIR) $(LDFLAGS) -o $@ $^ $(LDLIBS)

romfs:
$(ROMFSINST) /bin/$(EXEC)
$(ROMFSINST) conf /etc_ro/usb

clean:
-rm -f $(EXEC) *.o

在另外下载的usb-modeswitch-data
 配置放置到conf目录中,

编译后在板子的/etc_ro/usb目录中就会找到对应的usb_modeswitch切换dongle模式需要的配置文件

四)注:

usb-modeswitch-2.4.0配合 libusb-1.0.20时,在MT7620的板子上遇到过usb-modeswitch切换模式时卡死,命令一直不返回。例如novatel USB620L,跟踪后发现libusb中libusb_try_lock_event函数中

r = usbi_mutex_trylock(&ctx->events_lock);

调用一直拿不到锁,具体原因还未找到。 可能的一个解决办法是,将它修改为

r = usbi_mutex_lock(&ctx->events_lock);

 同时:usbi_mutex_init_recursive(&ctx->events_lock);  修改为 usbi_mutex_init(&ctx->events_lock);

修改后,novatel USB620L, HUAWEI EC3372-871测试可以使用usb-modeswitch-2.4.0正确切换到modem工作模式。  

不过将trylock修改为lock,理论上可能会出现问题,修改需谨慎。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息