前言:最终结果根据用户自主选择可实现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 <<