linux设备如何通过USB网络共享与手机通信(包含安卓手机以及iphone)
2016-12-07 13:38
4619 查看
公司做的无人机(开发板用的是高通的9342 wifi平台,linux 内核为2.6.31)需要跟手机通讯,要求通信稳定延时低,是通过USB网络共享实现的。
bug记录
插拔usb线,因为mac地址变化手机连接上遥控器但连不上飞机的bug,改了9342驱动 extap部分。
ipheth.ko为虚拟的USB网卡驱动。
usbmuxd用于对usb配置,配置完后生成正确的usb厂商ID,设备ID等。
pair是握手程序
设备端iphone USB共享流程: iphone手机通过USB线连接到设备->usbmuxd运行,生成USB厂商ID、设备ID->内核扫描调用ipheth驱动模块,生成eth0网口->pair运行,握手通信->dhcp客户端运行,设备端可通过DHCP拿到172.20.10.x网段的IP。共享完成,在设备端可ping通iphone手机(172.20.10.1)
bug记录
1.USB线连接好iphone和9342板子后,需要在iphone的usb网络共享功能,先关闭再打开,才能ping通
修改pair程序解决
2. USB网络共享+wifi,用chariot做性能测试,运行几秒后提示队列超时(dev_wathchdog:queue eth0 time out...)
驱动bug,临界区未加锁被wifi中断打乱执行顺序,修改ipheth.c解决
与安卓手机共享USB网络
直接在板子linux内核开启rndis和usb相关选项即可。bug记录
插拔usb线,因为mac地址变化手机连接上遥控器但连不上飞机的bug,改了9342驱动 extap部分。
与iphone手机共享USB网络
除了修改内核配置(内核添加netlink socket等),还需要移植苹果的一套开源程序和驱动,包含usbmuxd/pair两个应用程序及依赖的十多个库,底层USB驱动模块ipheth.ko。ipheth.ko为虚拟的USB网卡驱动。
usbmuxd用于对usb配置,配置完后生成正确的usb厂商ID,设备ID等。
pair是握手程序
设备端iphone USB共享流程: iphone手机通过USB线连接到设备->usbmuxd运行,生成USB厂商ID、设备ID->内核扫描调用ipheth驱动模块,生成eth0网口->pair运行,握手通信->dhcp客户端运行,设备端可通过DHCP拿到172.20.10.x网段的IP。共享完成,在设备端可ping通iphone手机(172.20.10.1)
bug记录
1.USB线连接好iphone和9342板子后,需要在iphone的usb网络共享功能,先关闭再打开,才能ping通
修改pair程序解决
2. USB网络共享+wifi,用chariot做性能测试,运行几秒后提示队列超时(dev_wathchdog:queue eth0 time out...)
驱动bug,临界区未加锁被wifi中断打乱执行顺序,修改ipheth.c解决
调试环境搭建
板子做host,手机做device,但板子的usb没有供电,所以中间加了个usb hub来解决供电的问题相关文章推荐
- Android手机如何通过USB共享网络给Mac?
- 安卓手机通过USB共享PC的宽带网络上网
- 如何将手机wifi网络通过USB共享给电脑使用
- 〖Linux〗通过USB连接,共享Linux上的网络,使用Android手机上网。
- Android手机如何通过USB共享网络给Mac?
- Linux下完美驱动HTC Android手机的Internet传输(通过USB共享电脑网络)
- Linux环境下网络共享USB设备服务配置
- 如何在linux系统下挂接(mount)光盘镜像文件、移动硬盘、U盘以及Windows网络共享和UNIX
- android 手机通过 usb 共享电脑网络
- Android手机通过USB共享电脑网络
- 安卓手机USB共享网络给PC上网
- Linux 上操作 与BBBlack通过USB 共享网络
- Linux 通过USB使用手机网络
- Android手机利用USB共享网络通过Ubuntu连接网络
- Android手机通过USB网络共享限速
- 如何在Linux下利用Libusb与HID USB设备通信!
- Linux如何通过连接RS232转串口设备:USB-CAN或雷达
- 安卓手机USB共享网络步骤
- 手机或pad通过usb共享网络给电脑