#!/bin/bash
# 检查参数个数
if [ "$#" -lt 1 ]; then
echo "用法: $0 <设备文件名1> [<设备文件名2> ... <设备文件名N>]"
exit 1
fi
# 切换到 USB Gadget 配置目录
cd /sys/kernel/config/usb_gadget/g1/ || exit
# 判断 UDC 是否启用,如果启用了,则先关闭 UDC
if [ -e UDC ] && [ "$(cat UDC)" != "" ]; then
echo "UDC 已启用,正在关闭..."
echo "" > UDC
fi
# 获取现有的最大计数器值
MAX_COUNTER=-1
for DIR in functions/mass_storage.usb*; do
if [ -d "$DIR" ]; then
DIR_COUNTER=${DIR##*usb}
if [ "$DIR_COUNTER" -gt "$MAX_COUNTER" ]; then
MAX_COUNTER=$DIR_COUNTER
fi
fi
done
COUNTER=$((MAX_COUNTER + 1))
# 处理每个设备文件
for DEVICE_FILE in "$@"; do
# 检查设备文件路径是否存在
if [ ! -e "$DEVICE_FILE" ]; then
echo "错误:设备文件路径不存在: $DEVICE_FILE"
exit 1
fi
# 创建 USB 大容量存储设备功能
FUNCTION_NAME="mass_storage.usb${COUNTER}"
mkdir -p "functions/$FUNCTION_NAME"
echo "$DEVICE_FILE" > "functions/$FUNCTION_NAME/lun.0/file"
# 映射到配置 configs/c.1
ln -s "functions/$FUNCTION_NAME" "configs/c.1/"
# 增加计数器
COUNTER=$((COUNTER + 1))
done
# 启用 UDC
echo fcc00000.dwc3 > UDC
echo "USB Gadget 配置完成。"
usb gadget 批量映射
最新推荐文章于 2024-07-25 23:52:03 发布