USB gadget的简单实现

SB gadget的详细资料请自行搜索,这里简单引用:

仅为防止原文丢失,如果侵犯到原作者的权益,请联系本人删除。

【免责声明:本人所转载内容,均来自于网络,并不代表本人观点、立场,本人也不为其真实性负责】

原文地址:https://www.right.com.cn/forum/thread-317987-1-1.html,以下均为原文内容。

网卡模式:模拟为USB网卡
串口模式:模拟为串口,常用于物联网
文件模式:模拟为U盘

———–以上都是废话,下面是干货—–

以tplink wr703N为例,通过硬改将USB host模式改成USB device模式,从而实现USB gadget功能。

一。硬改电路。
短接R113

短接R3的引线到地

二。使用lede的源码编译固件,添加相应驱动(注意:eth、mass-storage、serial模式按需要选一)

make menuconfig
Kernel modules  --->
USB Support  --->
kmod-usb-chipidea
kmod-usb-gadget-eth
kmod-usb-gadget-mass-storage
kmod-usb-gadget-serial

注意:一定要去掉默认的USB host的关联驱动

三。刷机测试,论坛有刷机教程,请自行搜索。

刷机完成后用USB公对公线连接703N以及电脑,网线连接703N以及主路由。
ssh登陆上去,输入命令:

dd if=/dev/zero of=/tmp/A1.img bs=1M count=0 seek=1126400
insmod g_mass_storage.ko  file=/tmp/A1.img removable=1

(注:执行完这个命令之后,电脑上的windows会提示你发现新的可移动设备,同时会提示你要格式化设备。表示硬改完成。)

————-教程完毕—————

最后,提供一个文件模式的703N固件

有线网口为dhcp自动获取,无luci,集成cifs、nfs,账号root密码admin。
链接:https://pan.baidu.com/s/1JIlgLqYJN9AkOwBMSGFPiQ 密码:5vev
或者(解锁uboot)
链接:https://pan.baidu.com/s/1KqIO3_dn4bKV8KXYwlaefg 密码:f5xf

        1.挂载nas目录

        smaba

mount -t cifs //192.168.1.99/703n /mnt -o username=admin,password=123123

 (注://192.168.1.99/703n 这行改成你NAS的IP及共享目录。username=admin,password=123123 username=后面是用户名,password=后面是密码)

        nfs

mount -t nfs 192.168.1.246:/volume1/703n  /mnt -o nolock

  2.进入挂载目录

cd /mnt

        3.查看目录(注:为了确认挂载成功,NAS上最好有一个任意文件)

ls

        4.确认挂载成功后创建缓存的存储镜像

dd if=/dev/zero of=A1.img bs=1M count=0 seek=1126400

       5.加载已经创建好的镜像

insmod g_mass_storage.ko  file=/mnt/A1.img

        (注:执行完这个命令之后,电脑上的windows会提示你发现新的可移动设备,同时会提示你要格式化设备。建议用diskgenius分区格式化,http://www.diskgenius.cn/download.php

最后,修改/etc/rc.local实现开机自动运行命令。将下面的命令复制到 ‘exit 0’ 之前

sleep 30
mount -t cifs //192.168.1.99/703n /mnt -o username=admin,password=123123
insmod g_mass_storage.ko  file=/mnt/A1.img

—————网卡模式的固件——–
有线网卡为dhcp自动获取,无luci,wifi密码12345678,账号root密码admin。解锁uboot方便更换原厂uboot。

链接:https://pan.baidu.com/s/1VFhKE_E1TcIv9BVqqa16kQ 密码:kkai

修改/etc/config/network里面config interface ‘lan’的参数添加网卡usb0,如下:

option ifname 'eth0 usb0'