实现usb的MTP功能

发布于:2025-04-09 ⋅ 阅读:(37) ⋅ 点赞:(0)

前言:最终结果根据用户自主选择可实现host和device功能的切换。
效果展示:
当插入usb时设备会弹窗
在这里插入图片描述
当用户选择设备模式时pc端就会出现mtp设备盘符
在这里插入图片描述

实现mtp设备

ubuntu架构根文件系统通过uMTP-Responder实现usb的MTP功能

添加服务

/home/flynn/firfly_rootfs/lib/systemd/system/adbd.service

#start
[Unit]
Description= Adbd for linux
Before=rockchip.service

[Service]
Type=forking
ExecStart=/etc/init.d/adbd.sh start
ExecStop=/etc/init.d/adbd.sh stop
ExecReload=/etc/init.d/adbd.sh reload

[Install]
WantedBy=multi-user.target
#end

链接文件:/etc/systemd/system/multi*.want/adbd.service

添加脚本

/home/flynn/firfly_rootfs/etc/init.d/adbd.sh

#!/bin/bash -e
# setup configfs for adbd, usb mass storage and MTP....
MTP_EN=off

USB_ATTRIBUTE=0x409
USB_GROUP=rockchip
USB_SKELETON=b.1

CONFIGFS_DIR=/sys/kernel/config
USB_CONFIGFS_DIR=${CONFIGFS_DIR}/usb_gadget/${USB_GROUP}
USB_STRINGS_DIR=${USB_CONFIGFS_DIR}/strings/${USB_ATTRIBUTE}
USB_FUNCTIONS_DIR=${USB_CONFIGFS_DIR}/functions
USB_CONFIGS_DIR=${USB_CONFIGFS_DIR}/configs/${USB_SKELETON}

parameter_init()
{
   
	while read line
	do
		case "$line" in
			usb_mtp_en)
				MTP_EN=on
				make_config_string mtp
				;;
			
			usb_rndis_en)
               RNDIS_EN=on
               make_config_string rndis
               ;;
		esac
	done <<