网站建设有哪些方面,wordpress主页 摘要,旅游建设投资公司中网站,网业游戏大全五、USB行为控制
随身WIFI对外交互的接口只有WIFI和USB接口。如果要想接入其他硬件设备#xff0c;拓展USB接口至关重要#xff0c;对于USB接口的控制#xff0c;参考如下链接: openstick项目官方教程:控制usb行为 HandsomeMod/gc: A Simple Tool To Control Usb Gadget …五、USB行为控制
随身WIFI对外交互的接口只有WIFI和USB接口。如果要想接入其他硬件设备拓展USB接口至关重要对于USB接口的控制参考如下链接: openstick项目官方教程:控制usb行为 HandsomeMod/gc: A Simple Tool To Control Usb Gadget (github.com)
USB OTG是USB协议规范中的一部分它支持从设备和主设备之间的双向通信。所以说USB 接口有主从2个模式刷完openstick系统USB默认处于 Gadget(从)模式openstick作者开发了一个gc工具管理USB的Gadget 模式。
5.1 Gadget 模式
USB Gadget支持模拟多种设备的复合设备。虚拟复合设备可以在一个USB插槽中模拟多个USB设备并允许以不同功能的与USB主机进行通信。 USB Gadget默认配置了2种设备设备类型是ffs和rndis名称分别为adb和rndis.1。adb可以让我们调试或烧录镜像 rndis.1让我们可以通过USB 与随身WIFI进行网络通讯。原作者开发的gc工具用法如下 # 列出当前usb活动的devicegc -l# 加入一个串口设备# 有效的关键字为 serial ffs hid midi printer uvc mass rndis ecm acmgc -a serial# 删除指定串口设备 X 为列表中的对应的config名称gc -r serial.X# 清除所有的gadgetgc -c# 关闭gadgetgc -d# 开启gadgetgc -eUSB 作为从设备的玩法我并没有深入太久到此为止。
5.2 配置为主模式
如果想要真正把随身WIFI搞成一台电脑肯定是要把USB配置为主模式。
OpenStick没有usb-id脚只能手动将usb切换为主模式来插入u盘等设备你可以将以下语句加入 /usr/sbin/mobian-usb-gadget setup()的最开头来实现开机切换所有usb device功能将会失效。意味着无法通过USB进行SSH连接所以要保证随身WIFI可以连接外部网络可以无线SSH访问。我个人采用的方案就是随身WIFI连接WIFI网络将22端口反向代理到我的云服务器。通过我的云服务器ip地址(域名)SSH访问。
echo host /sys/kernel/debug/usb/ci_hdrc.0/role #gadget除此之外我们还需要在硬件上简单拓展一下 USB拓展坞需要买支持5V供电的我在淘宝买的。如果动手能力较强也可以选择使用Zy143L画的定制随身WIFI-USB拓展坞已经开源。
5.3 插入U盘
插入U盘后输入lsblk命令查看已有的块文件设备。可以看到刚插入的U盘的设备名称为sda仅有一个分区sda1。 创建一个目录来挂载新分区。使用mkdir /mnt/data命令在/mnt目录下创建一个名为data的目录。 将新分区挂载到指定的目录中。使用如下命令将/dev/sda1分区挂载到/mnt/data目录mount /dev/sda1 /mnt/data 使用df -Th命令将列出所有的挂载点以及文件系统的类型。可以看到我们刚刚挂载好的文件系统文件系统的类型是ntfs。 为了使每次U盘插入的时候都可以自动挂载我们需要修改配置文件。 nano /etc/fstab来编辑/etc/fstab文件。也可以使用其他编辑器如vi或vim在文件的最后添加一个新的行 /dev/sda1 /mnt/data ntfs defaults 0 2解释一下这个示例行 /dev/sda1是新设备文件的分区。/mnt/data是之前创建的目录。ntfs是文件系统类型如果您使用其他文件系统请相应更改此项。defaults是挂载选项。默认选项包含了一般的挂载参数如果您需要其他参数可以在此处添加。0是用于备份分区的标志默认为0即可。2是“在开机时自动挂载”选项将其设置为2。 ls /mnt/data 就可以查看U盘的内容啦
5.4 USB主模式自启动脚本
开机启动时自动将USB接口切换为主模式是相对危险的因为随身WIFI需要通过网络或者USB接口与外界通信。我刷的随身WIFI modem不可用只可以通过WIFI连接网络。当遇到以下情形时随身WIFI就砖了就需要重新9008刷备份包了。砖了一次
USB为主模式、modem不可用、WIFI意外连接失败
所以通过其他方式触发USB切换到主模式会更安全一点我想到了3个方式 手动启动缺点是很麻烦 按键启动随身WIFI上有一个按键但是我没有在sysfs找到按键的设备节点无法访问 网络状态变化时启动当随身WIFI连接上网络时启动
个人认为第三个方式最合适。随身WIFI默认的网络管理工具NetworkManager我们可以使用它来在 Linux 连接 WiFi 网络后自动执行特定的脚本。以下是具体步骤
在 /etc/NetworkManager/dispatcher.d/ 目录下创建脚本,命名为 USBctl.sh。
#!/bin/sh
echo wlan change with $1 $2
case $2 inup)echo WiFi Connected # 绿灯亮echovim default-on /sys/class/leds/green:internet/trigger# 切换为主模式echo host /sys/kernel/debug/usb/ci_hdrc.0/role;;down)echo WiFi Closed # 绿灯灭echo none /sys/class/leds/green:internet/trigger# 关闭主模式echo gadget /sys/kernel/debug/usb/ci_hdrc.0/role;;
esac修改文件执行权限。
chmod x /etc/NetworkManager/dispatcher.d/USBctl.sh编辑 NetworkManager 的配置文件 /etc/NetworkManager/NetworkManager.conf在 [main] 段中添加以下内容用于启用 dispatcher.d 目录中的脚本。
[main]
dispatcherdispatcher.d重新启动 NetworkManager 服务。
systemctl restart NetworkManager
# systemctl status NetworkManager-dispatcher.service # 打印日志用于调试现在当随身WIFI连接 WiFi 网络时脚本 /etc/NetworkManager/dispatcher.d/ifup-post-wifi.sh 中的命令将自动执行。即绿灯亮起USB设置为主模式。 NetworkManager-dispatcher(8) — Arch manual pages (archlinux.org) 用 NM-dispatcher 实现 WiFi 开关的自动控制 - sbw Blog