linux通过configfs方式开启uvc、uac、adb等功能

该脚本主要用于配置Linux系统下的USB设备模式,支持切换到UVC(USB视频类)功能、ADB(Android调试桥)功能和MTP(媒体传输协议)功能。通过创建和链接不同的设备功能目录,设置相应的参数,实现USB设备在不同模式间的切换,如键盘(HID)、MTP文件传输、ADB调试等。
摘要由CSDN通过智能技术生成

setusbconfig uvc:开启uvc功能。

切换到usb device模式:
cat /sys/devices/platform/soc/usbc0/usb_device
#!/bin/sh

name=`basename $0`

usage() {
  echo "$name Usage:"
  echo ""
  echo "$name [function]"
  echo "function: mtp,     support MTP function"
  echo "          adb,     support adb function"
  echo "          uvc,     support uvc function"
  echo "          uvc,uac1 support uvc and uac1 function"
  echo "example:"
  echo "$name uvc"
  echo ""
}

enable_hid() {
    #keyboard
    mkdir -p /sys/kernel/config/usb_gadget/g1/functions/hid.usb0
    echo 2 > /sys/kernel/config/usb_gadget/g1/functions/hid.usb0/protocol
    echo 1 > /sys/kernel/config/usb_gadget/g1/functions/hid.usb0/subclass
    echo 3 > /sys/kernel/config/usb_gadget/g1/functions/hid.usb0/report_length
    # '05 01 09 02 a1 01 09 01 a1 00 05 09 19 01 29 03 15 00 25 01 95 03 75 01 81 02 95 01 75 05 81 03 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 c0 c0'
    cat ./report_desc.bin > /sys/kernel/config/usb_gadget/g1/functions/hid.usb0/report_desc
    ln -s /sys/kernel/config/usb_gadget/g1/functions/hid.usb0 /sys/kernel/config/usb_gadget/g1/configs/c.1/hid.usb0
}

enable_adb() {
    [ -d /sys/kernel/config/usb_gadget/g1/functions/ffs.adb ] || {
        mkdir /sys/kernel/config/usb_gadget/g1/functions/ffs.adb
    }
    echo "Tina ADB" > /sys/kernel/config/usb_gadget/g1/strings/0x409/product
    ln -s /sys/kernel/config/usb_gadget/g1/functions/ffs.adb/ /sys/kernel/config/usb_gadget/g1/configs/c.1/ffs.adb

    [ -d /dev/usb-ffs/adb ] || {
        mkdir -p /dev/usb-ffs
        mkdir /dev/usb-ffs/adb
        mount -o uid=2000,gid=2000 -t functionfs adb /dev/usb-ffs/adb/
    }
}

enable_mtp() {
    mtp_name=mtp.gs0
    mtp_ffs=false
    kv=`uname -r`
    kv=${kv:0:1}
    if [ "x$kv" = "x5" ]; then
        mtp_ffs=true
        mtp_name=ffs.mtp
    fi
    [ -d /sys/kernel/config/usb_gadget/g1/functions/$mtp_name ] || {
        mkdir /sys/kernel/config/usb_gadget/g1/functions/$mtp_name
    }
    if [ "x$mtp_ffs" = "xtrue" ]; then
        [ -d /dev/usb-ffs/mtp ] || {
            mkdir -p /dev/usb-ffs
            mkdir /dev/usb-ffs/mtp
            mount  -o rmode=0770,fmode=0660,uid=1024,gid=1024,no_disconnect=1 -t functionfs mtp /dev/usb-ffs/mtp/
        }
    fi
    echo "Tina MTP" > /sys/kernel/config/usb_gadget/g1/strings/0x409/product
    echo 1 > /sys/kernel/config/usb_gadget/g1/os_desc/use
    ln -s /sys/kernel/config/usb_gadget/g1/functions/$mtp_name/
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值