移植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,理论上可能会出现问题,修改需谨慎。
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,理论上可能会出现问题,修改需谨慎。
相关文章推荐
- ppp 及 usb_modeswitch 等工具移植说明
- usb_modeswitch移植
- usb_modeswitch移植
- Android——4.2 - 3G移植之路之usb-modeswitch (二)
- Android——4.2 - 3G移植之路之usb-modeswitch (二)
- 明远智睿IMX6Q Android4.4.2移植USBWIFI(RTL8188EUS)
- 基于S3C2440的Linux-3.6.6移植——基于UVC的USB摄像头移植及视频显示
- usb_modeswitch
- USB驱动移植心得
- WL-167G、R73/RT2571F 、USB 网卡驱动 和 wireless_tools移植和测试
- 嵌入式平台USB驱动程序移植(zc0301p 摄像头)
- ESP8266_RTOS_SDK学习笔记之 FreeRTOS移植浅析
- 嵌入式Linux USB WIFI驱动的移植
- 【转】Linux2.6内核usb gadget驱动移植
- omap下移植usb wifi小结
- usb触摸屏驱动移植
- 将RT2070USBwifi移植到android2.3…
- 基于S3C2440的Linux-3.6.6移植——基于UVC的USB摄像头移植及视频显示
- linux-2.6.35内核移植—USB驱动的添加
- usb_modeswitch 中文README