|
发表于 2022-9-17 15:22:22
5#
本帖最后由 wx__lQd79k 于 2022-9-17 15:43 编辑
我尝试使用下载firefly官方的文件系统,版本号为Ubuntu20.04-Minimal_RK3568_v2.11-55_20220427
结果`ifconfig -a` 下还是找不到 usb,说明。
判断脚本已经执行了 ln 的操作,因为软链已经生成了:
- root@firefly:/sys/kernel/config/usb_gadget/rockchip/configs/b.1# ll
- total 0
- drwxrwx--- 3 root root 0 Sep 17 07:40 ./
- drwxr-xr-x 3 root root 0 Sep 17 07:37 ../
- -rw-r--r-- 1 root root 4096 Sep 17 07:37 MaxPower
- -rw-r--r-- 1 root root 4096 Sep 17 07:40 bmAttributes
- lrwxrwxrwx 1 root root 0 Sep 17 07:37 rndis.gs0 -> ../../../../usb_gadget/rockchip/functions/rndis.gs0/
- drwxr-xr-x 3 root root 0 Sep 17 07:37 strings/
复制代码
但是 usb0 仍然没有显示在 `ifconfig -a` 下。
我的操作如下:
修改 /etc/inid.d/.usb_config:
- root@firefly:/etc/init.d# cat .usb_config
- usb_rndis_en
复制代码
修改 /etc/init.d/adbd.sh:
[code]root@firefly:/etc/init.d# cat adbd.sh
#!/bin/bash -e
### BEGIN INIT INFO
# Provides: adbd
# Required-Start:
# Required-Stop:
# Default-Start: S
# Default-Stop: 6
# Short-Description:
# Description: Linux ADB
### END INIT INFO
# setup configfs for adbd, usb mass storage and MTP....
UMS_EN=off
ADB_EN=off
MTP_EN=off
NTB_EN=off
ACM_EN=off
UAC1_EN=off
UAC2_EN=off
UVC_EN=off
RNDIS_EN=on
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}
make_config_string()
{
tmp=$CONFIG_STRING
if [ -n "$CONFIG_STRING" ]; then
CONFIG_STRING=${tmp}_${1}
else
CONFIG_STRING=$1
fi
}
parameter_init()
{
while read line
do
case "$line" in
usb_mtp_en)
MTP_EN=on
make_config_string mtp
;;
usb_adb_en)
ADB_EN=on
make_config_string adb
;;
usb_ums_en)
UMS_EN=on
make_config_string ums
;;
usb_ntb_en)
NTB_EN=on
make_config_string ntb
;;
usb_acm_en)
ACM_EN=on
make_config_string acm
;;
usb_uac1_en)
UAC1_EN=on
make_config_string uac1
;;
usb_uac2_en)
UAC2_EN=on
make_config_string uac2
;;
usb_uvc_en)
UVC_EN=on
make_config_string uvc
;;
usb_rndis_en)
RNDIS_EN=on
make_config_string rndis
;;
esac
done < $DIR/.usb_config
case "$CONFIG_STRING" in
ums)
PID=0x0000
;;
mtp)
PID=0x0001
;;
adb)
PID=0x0006
;;
mtp_adb | adb_mtp)
PID=0x0011
;;
ums_adb | adb_ums)
PID=0x0018
;;
acm)
PID=0x1005
;;
*)
PID=0x0019
esac
}
configfs_init()
{
mkdir -p ${USB_CONFIGFS_DIR} -m 0770
echo 0x2207 > ${USB_CONFIGFS_DIR}/idVendor
echo $PID > ${USB_CONFIGFS_DIR}/idProduct
mkdir -p ${USB_STRINGS_DIR} -m 0770
SERIAL=`cat /proc/cpuinfo | grep Serial | awk '{print $3}'`
if [ -z $SERIAL ];then
SERIAL=0123456789ABCDEF
fi
echo $SERIAL > ${USB_STRINGS_DIR}/serialnumber
echo "rockchip" > ${USB_STRINGS_DIR}/manufacturer
echo "rk3xxx" > ${USB_STRINGS_DIR}/product
mkdir -p ${USB_CONFIGS_DIR} -m 0770
mkdir -p ${USB_CONFIGS_DIR}/strings/${USB_ATTRIBUTE} -m 0770
echo 500 > ${USB_CONFIGS_DIR}/MaxPower
echo ${CONFIG_STRING} > ${USB_CONFIGS_DIR}/strings/${USB_ATTRIBUTE}/configuration
}
configure_uvc_resolution()
{
mkdir ${USB_FUNCTIONS_DIR}/uvc.gs6/streaming/mjpeg/m/$UVC_DISPLAY_H
echo $UVC_DISPLAY_W > ${USB_FUNCTIONS_DIR}/uvc.gs6/streaming/mjpeg/m/$UVC_DISPLAY_H/wWidth
echo $UVC_DISPLAY_H > ${USB_FUNCTIONS_DIR}/uvc.gs6/streaming/mjpeg/m/$UVC_DISPLAY_H/wHeight
echo 666666 > ${USB_FUNCTIONS_DIR}/uvc.gs6/streaming/mjpeg/m/$UVC_DISPLAY_H/dwDefaultFrameInterval
echo $((UVC_DISPLAY_W*UVC_DISPLAY_H*80)) > ${USB_FUNCTIONS_DIR}/uvc.gs6/streaming/mjpeg/m/$UVC_DISPLAY_H/dwMinBitRate
echo $((UVC_DISPLAY_W*UVC_DISPLAY_H*160)) > ${USB_FUNCTIONS_DIR}/uvc.gs6/streaming/mjpeg/m/$UVC_DISPLAY_H/dwMaxBitRate
echo $((UVC_DISPLAY_W*UVC_DISPLAY_H*2)) > ${USB_FUNCTIONS_DIR}/uvc.gs6/streaming/mjpeg/m/$UVC_DISPLAY_H/dwMaxVideoFrameBufferSize
echo -e "666666\n1000000\n2000000" > ${USB_FUNCTIONS_DIR}/uvc.gs6/streaming/mjpeg/m/$UVC_DISPLAY_H/dwFrameInterval
}
function_init()
{
# UAC must be first setup when multi function composite.
if [ $UAC1_EN = on ];then
if [ ! -e "${USB_FUNCTIONS_DIR}/uac1.gs0" ] ;
then
mkdir ${USB_FUNCTIONS_DIR}/uac1.gs0
ln -s ${USB_FUNCTIONS_DIR}/uac1.gs0 ${USB_CONFIGS_DIR}/uac1.gs0
fi
fi
if [ $UAC2_EN = on ];then
if [ ! -e "${USB_FUNCTIONS_DIR}/uac2.gs0" ] ;
then
mkdir ${USB_FUNCTIONS_DIR}/uac2.gs0
ln -s ${USB_FUNCTIONS_DIR}/uac2.gs0 ${USB_CONFIGS_DIR}/uac2.gs0
fi
fi
if [ $UMS_EN = on ];then
if [ ! -e "${USB_FUNCTIONS_DIR}/mass_storage.0" ] ;
then
mkdir -p ${USB_FUNCTIONS_DIR}/mass_storage.0
echo /dev/disk/by-partlabel/userdata > ${USB_FUNCTIONS_DIR}/mass_storage.0/lun.0/file
ln -s ${USB_FUNCTIONS_DIR}/mass_storage.0 ${USB_CONFIGS_DIR}/mass_storage.0
fi
f |
|