请问一些Luckfox Pico Pro Max使用sd卡启动,如何移植umptrd,
#!/bin/sh
set -e
LOG=/tmp/usb_mtp_adb.log
exec > >(tee -a $LOG) 2>&1
echo "=== USB MTP + ADB FunctionFS Gadget ==="
# Configfs base
CFGFS=/sys/kernel/config
GADGET=g1
USB_VID=0x2207
USB_PID=0x0011
# Paths
G=${CFGFS}/usb_gadget/${GADGET}
ADB_FFS=/dev/usb-ffs/adb
MTP_FFS=/dev/usb-ffs/mtp
UMTPD=/mnt/umtprd
# Clean existing
echo "Cleaning previous gadget (if exists)"
if [ -d $G ]; then
echo none > $G/UDC || true
sleep 1
rm -rf $G
fi
# Mount configfs
mount | grep -q configfs || {
echo "Mounting configfs..."
mount -t configfs none $CFGFS
}
# Create gadget
echo "Creating gadget"
mkdir -p $G
echo $USB_VID > $G/idVendor
echo $USB_PID > $G/idProduct
echo 0x0200 > $G/bcdUSB
echo 0x0100 > $G/bcdDevice
# Strings
mkdir -p $G/strings/0x409
echo "1234567890ABCDEF" > $G/strings/0x409/serialnumber
echo "rockchip" > $G/strings/0x409/manufacturer
echo "MTP+ADB Gadget" > $G/strings/0x409/product
# Create config
mkdir -p $G/configs/c.1
mkdir -p $G/configs/c.1/strings/0x409
echo "MTP+ADB config" > $G/configs/c.1/strings/0x409/configuration
echo 250 > $G/configs/c.1/MaxPower
# Create FunctionFS functions
echo "Setting up FunctionFS functions"
mkdir -p $G/functions/ffs.adb
mkdir -p $G/functions/ffs.mtp
# Link
ln -s $G/functions/ffs.adb $G/configs/c.1/
ln -s $G/functions/ffs.mtp $G/configs/c.1/
# Ensure ffs dirs exist
mkdir -p /dev/usb-ffs
mkdir -p $ADB_FFS
mkdir -p $MTP_FFS
# Mount FunctionFS
echo "Mounting FunctionFS for adb and mtp"
mount -t functionfs adb $ADB_FFS || true
mount -t functionfs mtp $MTP_FFS || true
# Start daemons
echo "Starting adbd..."
if ! command -v adbd >/dev/null; then
echo "WARNING: adbd not found!"
else
adbd &
fi
echo "Starting uMTP-Responder..."
if [ ! -x "$UMTPD" ]; then
echo "ERROR: uMTP-Responder binary not found at $UMTPD"
exit 1
fi
$UMTPD &
sleep 1
# Bind UDC
UDC=$(ls /sys/class/udc | head -n1)
echo "Binding UDC: $UDC"
echo $UDC > $G/UDC
echo "=== USB MTP+ADB ready ==="
以上是我的脚本配置,开启了adb,但是电脑不显示mtp设备。
Luckfox Pico Pro Max如何使用sd卡镜像使用umtprd?
您好,USB 在设备模式下模拟高速设备(UVC UAC UMS MTP)的时候会占用高速节点, 相关细节请自行查阅资料或源码,ADB和 MTP 可能因为节点冲突无法同时使用
开启 MTP 功能 示例操作如下:
1 SDK 下执行 ./build.sh buildrootconfig ,打开 BR2_PACKAGE_UMTPRD
2 重新打包 rootfs.img 并烧录
3 进入系统将默认配置 gadgetfs 的启动脚本 S50usbdevice S99usb0config删除或者移出 /etc/init.d 目录
4 重启
5 构建 umtprd 配置文件
/etc/umtprd/umtprd.conf
6 配置 gadgetfs
7 启动 umtprd
8 启动 UDC
开启 MTP 功能 示例操作如下:
1 SDK 下执行 ./build.sh buildrootconfig ,打开 BR2_PACKAGE_UMTPRD
2 重新打包 rootfs.img 并烧录
3 进入系统将默认配置 gadgetfs 的启动脚本 S50usbdevice S99usb0config删除或者移出 /etc/init.d 目录
4 重启
5 构建 umtprd 配置文件
Code: Select all
mkdir -p /etc/umtprd
vi /etc/umtprd/umtprd.conf
Code: Select all
loop_on_disconnect 1
#将 /userdata 设置为共享目录
storage "/userdata" "share folder" "rw"
manufacturer "MyCompany"
product "MyMTP"
serial "01234567"
firmware_version "Rev A"
interface "MTP"
usb_vendor_id 0x1D6B # Linux Foundation
usb_product_id 0x0100 # PTP Gadget
usb_class 0x6 # Image
usb_subclass 0x1 # Still Imaging device
usb_protocol 0x1 #
usb_dev_version 0x3008
usb_functionfs_mode 0x1
usb_dev_path "/dev/ffs-mtp/ep0"
usb_epin_path "/dev/ffs-mtp/ep1"
usb_epout_path "/dev/ffs-mtp/ep2"
usb_epint_path "/dev/ffs-mtp/ep3"
usb_max_packet_size 0x200
Code: Select all
mount -t configfs none /sys/kernel/config
cd /sys/kernel/config/usb_gadget
mkdir g1
cd g1
echo 0x1d6b > idVendor
echo 0x0100 > idProduct
mkdir strings/0x409
echo "01234567" > strings/0x409/serialnumber
echo "MyCompany" > strings/0x409/manufacturer
echo "MyMTP" > strings/0x409/product
mkdir configs/c.1
mkdir functions/ffs.mtp
ln -s functions/ffs.mtp configs/c.1
mkdir -p /dev/ffs-mtp
mount -t functionfs mtp /dev/ffs-mtp
Code: Select all
umtprd &
Code: Select all
ls /sys/class/udc/ > /sys/kernel/config/usb_gadget/g1/UDC

