增加ota文件系统编译方法;(注意每次swupdate_make_recovery_img需要删除根目录和./lichee/linux下的.config和.config.old)

This commit is contained in:
lijunliang
2024-06-05 16:39:59 +08:00
parent 36028ad52e
commit 6d51adb4db
75 changed files with 11872 additions and 73 deletions

View File

@@ -0,0 +1,40 @@
#!/bin/sh
# remove
if [ "${ACTION}" == "remove" ]; then
MOUNTPOINT="$(grep -w "^/dev/${MDEV}" /proc/mounts | awk '{print $2}')"
[ -n "${MOUNTPOINT}" ] \
&& /bin/umount -l ${MOUNTPOINT} 2>/dev/null 1>/dev/null
exit 0
fi
# add
if [ "${ACTION}" == "add" ]; then
case ${MDEV} in
mmcblk[0-9])
[ -d "/sys/block/${MDEV}/${MDEV}p1" ] && exit 0
MOUNTPOINT=/mnt/SDCARD
;;
mmcblk[0-9]p[0-9])
MOUNTPOINT=/mnt/SDCARD
;;
sd[a-z])
[ -d "/sys/block/${MDEV}/${MDEV}1" ] && exit 0
MOUNTPOINT=/mnt/exUDISK
;;
sd[a-z][0-9])
MOUNTPOINT=/mnt/exUDISK
;;
*)
exit 0
;;
esac
for fstype in vfat ext4
do
[ "${fstype}" = "ext4" -a -x "/usr/sbin/e2fsck" ] \
&& e2fsck -p /dev/${MDEV} >/dev/null
/bin/mount -t ${fstype} -o utf8 /dev/${MDEV} ${MOUNTPOINT} && exit 0
done
[ ! -b "/dev/${MDEV}" -a -f "/sys/block/${MDEV%p*}/${MDEV}/uevent" ] \
&& echo add > /sys/block/${MDEV%p*}/${MDEV}/uevent
fi
exit 0

View File

@@ -0,0 +1,40 @@
#!/bin/sh
#
# pcba test
#
echo "start PCBA Test\n"
echo "============ pcba test ================"
export SCREEN_INFO='1280x800-32bpp'
export TSLIB_TSEVENTTYPE=H3600
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event2
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
/usr/bin/sample_ao -path /usr/bin/sample_ao_startup.conf
#/usr/bin/sample_ai -path /usr/bin/sample_ai_v851s_sc1721v.conf
#/usr/bin/sample_ao -path /usr/bin/sample_ao_v851s_sc1721v.conf
ifconfig wlan0 up
ifconfig wlan0 192.168.51.1
udhcpd /etc/udhcpd.conf &
wifi -o ap
/usr/bin/sample_rtsp -path /usr/bin/sample_rtsp_v851s_sc1721v.conf &
ts_test &

View File

@@ -0,0 +1,50 @@
#!/bin/sh
MODULES_DIR="/lib/modules/`uname -r`"
insmod $MODULES_DIR/configfs.ko
#insmod $MODULES_DIR/usb-common.ko
#insmod $MODULES_DIR/usbcore.ko
insmod $MODULES_DIR/sunxi_hci.ko
insmod $MODULES_DIR/ehci-hcd.ko
insmod $MODULES_DIR/ohci-hcd.ko
insmod $MODULES_DIR/udc-core.ko
insmod $MODULES_DIR/libcomposite.ko
insmod $MODULES_DIR/sunxi_usb_udc.ko
insmod $MODULES_DIR/usb_f_fs.ko
insmod $MODULES_DIR/usb_f_mass_storage.ko
insmod $MODULES_DIR/usb_f_hid.ko
insmod $MODULES_DIR/sunxi_usbc.ko
if [ -f /lib/modules/4.9.191/videobuf2-vmalloc.ko ];then
insmod $MODULES_DIR/videobuf2-vmalloc.ko
fi
if [ -f /lib/modules/4.9.191/usb_f_uvc.ko ];then
insmod $MODULES_DIR/usb_f_uvc.ko
fi
if [ -f /lib/modules/4.9.191/u_audio.ko ];then
insmod $MODULES_DIR/u_audio.ko
fi
if [ -f /lib/modules/4.9.191/usb_f_uac1.ko ];then
insmod $MODULES_DIR/usb_f_uac1.ko
fi
if [ -f /lib/modules/4.9.191/uvcvideo.ko ];then
insmod $MODULES_DIR/uvcvideo.ko
fi
if [ -f /lib/modules/4.9.191/snd-hwdep.ko ];then
insmod $MODULES_DIR/snd-hwdep.ko
fi
if [ -f /lib/modules/4.9.191/snd-rawmidi.ko ];then
insmod $MODULES_DIR/snd-rawmidi.ko
fi
if [ -f /lib/modules/4.9.191/snd-usbmidi-lib.ko ];then
insmod $MODULES_DIR/snd-usbmidi-lib.ko
fi
if [ -f /lib/modules/4.9.191/snd-usb-audio.ko ];then
insmod $MODULES_DIR/snd-usb-audio.ko
fi
cat /sys/devices/platform/soc/usbc0/usb_device
setusbconfig adb
adbd > /dev/null &

View File

@@ -0,0 +1,37 @@
#!/bin/sh
MODULES_DIR="/lib/modules/`uname -r`"
insmod $MODULES_DIR/configfs.ko
#insmod $MODULES_DIR/usb-common.ko
#insmod $MODULES_DIR/usbcore.ko
insmod $MODULES_DIR/sunxi_hci.ko
insmod $MODULES_DIR/ehci-hcd.ko
insmod $MODULES_DIR/ohci-hcd.ko
insmod $MODULES_DIR/udc-core.ko
insmod $MODULES_DIR/libcomposite.ko
insmod $MODULES_DIR/sunxi_usb_udc.ko
insmod $MODULES_DIR/usb_f_fs.ko
insmod $MODULES_DIR/usb_f_mass_storage.ko
insmod $MODULES_DIR/usb_f_hid.ko
insmod $MODULES_DIR/sunxi_usbc.ko
insmod $MODULES_DIR/scsi_mod.ko
insmod $MODULES_DIR/sd_mod.ko
insmod $MODULES_DIR/usb-storage.ko
insmod $MODULES_DIR/uas.ko
insmod $MODULES_DIR/ums-realtek.ko
insmod $MODULES_DIR/ums-datafab.ko
insmod $MODULES_DIR/ums-freecom.ko
insmod $MODULES_DIR/ums-isd200.ko
insmod $MODULES_DIR/ums-usbat.ko
insmod $MODULES_DIR/ums-sddr09.ko
insmod $MODULES_DIR/ums-sddr55.ko
insmod $MODULES_DIR/ums-jumpshot.ko
insmod $MODULES_DIR/ums-alauda.ko
insmod $MODULES_DIR/ums-karma.ko
insmod $MODULES_DIR/ums-cypress.ko
insmod $MODULES_DIR/ums-eneub6250.ko
cat /sys/devices/platform/soc/usbc0/usb_host

View File

@@ -0,0 +1,15 @@
########### paramter (ref to tulip_cedarx.conf)############
[parameter]
pcm_file_path = "/mnt/SDCARD/sample_ai_pcm.wav"
pcm_sample_rate = 44100
mic_num = 1 #1 or 2
pcm_channel_cnt = 2
pcm_bit_width = 16
pcm_frame_size = 1024
pcm_cap_duration = 30
pcm_ai_gain = 100
ans_en = 0
ans_mode = 3
agc_en = 0
agc_target_db = 0
agc_max_gain_db = 30

View File

@@ -0,0 +1,10 @@
########### paramter (ref to tulip_cedarx.conf)############
[parameter]
pcm_file_path = "/usr/share/startup.wav"
pcm_sample_rate = 44100
pcm_channel_cnt = 2
pcm_bit_width = 16
pcm_frame_size = 1024
ao_volume = 60
log_level = 0
ao_softvolume = 0 #[0,100]

View File

@@ -0,0 +1,10 @@
########### paramter (ref to tulip_cedarx.conf)############
[parameter]
pcm_file_path = "/mnt/SDCARD/sample_ai_pcm.wav"
pcm_sample_rate = 44100
pcm_channel_cnt = 2
pcm_bit_width = 16
pcm_frame_size = 1024
ao_volume = 100
log_level = 0
ao_softvolume = 0 #[0,100]

View File

@@ -0,0 +1,73 @@
########### paramter (ref to tulip_cedarx.conf)############
[parameter]
main_isp = 0
main_vipp = 4
main_src_width = 1280
main_src_height = 720
main_pixel_format = "aw_lbc_2_0x" #nv21,nv12,yu12,yv12;aw_lbc_2_5x,aw_lbc_2_0x,aw_lbc_1_5x,aw_lbc_1_0x
main_wdr_enable = 0
main_vi_buf_num = 3
main_src_frame_rate = 20 #fps
main_viChn = 0 #-1:disale main stream
main_venc_chn = 0 #-1:disale main stream
main_encode_type = "H.265"
main_encode_width = 1280 #1280x720->720p, 1920x1080->1080p, 2304x1296->3M, 2560×1440->2k, 3840x2160->4k, 7680x4320->8k
main_encode_height = 720
main_encode_frame_rate = 20 #fps
main_encode_bitrate = 1572864 #5M:5242880, 2M:2097152, 1.5M:1572864, 1M:1048576
main_file_path = #"/mnt/extsd/mainStream.raw" #if no path is specified, it will not be saved.
main_online_en = 0
main_online_share_buf_num = 2
main_encpp_enable = 1
sub_isp = 0
sub_vipp = 4
sub_src_width = 640
sub_src_height = 360
sub_pixel_format = "aw_lbc_2_0x" #nv21,nv12,yu12,yv12;aw_lbc_2_5x,aw_lbc_2_0x,aw_lbc_1_5x,aw_lbc_1_0x
sub_wdr_enable = 0
sub_vi_buf_num = 3
sub_src_frame_rate = 20 #fps
sub_vipp_crop_en = 1
sub_vipp_crop_rect_x = 0
sub_vipp_crop_rect_y = 0
sub_vipp_crop_rect_w = 1888
sub_vipp_crop_rect_h = 1072
sub_viChn = -1 #-1:disale sub stream
sub_venc_chn = -1 #-1:disale sub stream
sub_encode_type = "H.264"
sub_encode_width = 640 #1280x720->720p, 1920x1080->1080p, 2560×1440->2k, 3840x2160->4k, 7680x4320->8k
sub_encode_height = 360
sub_encode_frame_rate = 20 #fps
sub_encode_bitrate = 256000 #5M:5242880, 2M:2097152, 1M:1048576, 0.5M:512000
sub_file_path = #"/mnt/extsd/subStream.raw" #if no path is specified, it will not be saved.
sub_encpp_enable = 1
sub_lapse_viChn = -1 #-1:disale sub lapse stream
sub_lapse_venc_chn = -1 #-1:disale sub lapse stream
sub_lapse_encode_type = "H.264"
sub_lapse_encode_width = 640 #1280x720->720p, 1920x1080->1080p, 2560×1440->2k, 3840x2160->4k, 7680x4320->8k
sub_lapse_encode_height = 360
sub_lapse_encode_frame_rate = 20 #fps
sub_lapse_encode_bitrate = 256000 #5M:5242880, 2M:2097152, 1M:1048576, 0.5M:512000
sub_lapse_file_path = #"/mnt/extsd/subLapseStream.raw" #if no path is specified, it will not be saved.
sub_lapse_time = 1000000 #unit:us
sub_lapse_encpp_enable = 1
isp_ve_linkage_enable = 1
isp_ve_linkage_stream_channel = 0 #0:main stream, 1:sub stream, 2:sub lapse stream
wb_yuv_enable = 0
wb_yuv_buf_num = 20
wb_yuv_start_index = 0
wb_yuv_total_cnt = 100
wb_yuv_stream_channel = 0 #0:main stream, 1:sub stream, 2:sub lapse stream
wb_yuv_file_path = "/mnt/extsd/wb_yuv.yuv"
rtsp_net_type = 3 #RTSP Network type, 0: "lo", 1: "eth0", 2: "br0", 3: "wlan0"
test_duration = 0 #unit:s, 0:Infinite duration.

View File

@@ -0,0 +1,44 @@
########### paramter (ref to tulip_cedarx.conf)############
[parameter]
capture_width = 1920
capture_height = 1080
display_x = 0
display_y = 0
display_width = 1280
display_height = 800
layer_num = 0
isp_dev = 0
vipp_dev = 0
capture_width2 = 0
capture_height2 = 640
display_x2 = 0
display_y2 = 0
display_width2 = 0
display_height2 = 640
layer_num2 = 4
isp_dev2 = 0
vipp_dev2 = 4
capture_width3 = 0
capture_height3 = 360
display_x3 = 240
display_y3 = 320
display_width3 = 0
display_height3 = 320
layer_num3 = 5
isp_dev3 = 0
vipp_dev3 = 0
add_ui_layer = 0
ui_test_layer = 9
ui_display_width = 480
ui_display_height = 640
# disp_type is lcd, hdmi, cvbs
disp_type = "lcd"
# pic_format is yu12, yv12, nv21, nv12, nv21s
pic_format = nv21
frame_rate = 20
test_duration = 0 #unit:s

View File

@@ -0,0 +1,344 @@
#!/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_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/ /sys/kernel/config/usb_gadget/g1/configs/c.1/$mtp_name
if [ "x$mtp_ffs" = "xtrue" ]; then
MtpTools -f connect
sleep .500
fi
}
uvc_create_frame()
{
format=$1
name=$2
width=$3
height=$4
frameindex=$5
dir=streaming/$format/$name/${height}p
mkdir -p $dir
echo $width > $dir/wWidth
echo $height > $dir/wHeight
echo $(($width * $height * 2 )) > $dir/dwMaxVideoFrameBufferSize
#20,30fps
#cat <<EOF > $dir/dwFrameInterval
#500000
#333333
#EOF
#30fps
echo 333333 > $dir/dwFrameInterval
echo 333333 > $dir/dwDefaultFrameInterval
echo $(($width * $height * 2 * 30 * 8)) > $dir/dwMinBitRate
echo $(($width * $height * 2 * 30 * 8)) > $dir/dwMaxBitRate
echo $frameindex > $dir/bFrameIndex
}
enable_uvc()
{
cd /sys/kernel/config/usb_gadget/g1/functions
mkdir uvc.usb0
cd uvc.usb0
uvc_create_frame mjpeg m 1920 1080 1
uvc_create_frame mjpeg m 1280 720 2
uvc_create_frame mjpeg m 640 480 3
uvc_create_frame uncompressed u 320 240 1
uvc_create_frame h264 h 1920 1080 1
uvc_create_frame h264 h 1280 720 2
mkdir -p streaming/header/h
ln -s streaming/mjpeg/m/ streaming/header/h/
ln -s streaming/uncompressed/u/ streaming/header/h/
ln -s streaming/h264/h/ streaming/header/h/
ln -s streaming/header/h/ streaming/class/fs
ln -s streaming/header/h/ streaming/class/hs
mkdir -p control/header/h
ln -s control/header/h/ control/class/fs/
ln -s control/header/h/ control/class/ss/
#echo 3072 > streaming_maxpacket
ln -s /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/ /sys/kernel/config/usb_gadget/g1/configs/c.1/
}
udc_controller=`ls /sys/class/udc`
set_usb_function() {
# 1:function
# 2:idVendor
# 3:idProduct
#
[ -d /sys/kernel/config/usb_gadget ] || {
mount -t configfs none /sys/kernel/config
mkdir /sys/kernel/config/usb_gadget/g1
mkdir /sys/kernel/config/usb_gadget/g1/strings/0x409
echo "Allwinner Technology Inc." > /sys/kernel/config/usb_gadget/g1/strings/0x409/manufacturer
echo "Tina" > /sys/kernel/config/usb_gadget/g1/strings/0x409/product
}
[ -d /sys/kernel/config/usb_gadget/g1/configs/c.1 ] || {
mkdir /sys/kernel/config/usb_gadget/g1/configs/c.1
echo 0xc0 > /sys/kernel/config/usb_gadget/g1/configs/c.1/bmAttributes
echo 500 > /sys/kernel/config/usb_gadget/g1/configs/c.1/MaxPower
mkdir /sys/kernel/config/usb_gadget/g1/configs/c.1/strings/0x409
}
rm -f /sys/kernel/config/usb_gadget/g1/configs/c.1/ffs.adb
rm -f /sys/kernel/config/usb_gadget/g1/configs/c.1/ffs.mtp
rm -f /sys/kernel/config/usb_gadget/g1/configs/c.1/mtp.gs0
rm -f /sys/kernel/config/usb_gadget/g1/configs/c.1/f1
rm -f /sys/kernel/config/usb_gadget/g1/configs/c.1/rndis.usb0
rm -f /sys/kernel/config/usb_gadget/g1/configs/c.1/uac1.usb0
rm -f /sys/kernel/config/usb_gadget/g1/configs/c.1/accessory.usb0
rm -f /sys/kernel/config/usb_gadget/g1/configs/c.1/hid.usb0
rm -f /sys/kernel/config/usb_gadget/g1/configs/c.1/hid.usb1
rm -f /sys/kernel/config/usb_gadget/g1/configs/c.1/loopback.usb0
rm -f /sys/kernel/config/usb_gadget/g1/configs/c.1/gser.usb0
rm -f /sys/kernel/config/usb_gadget/g1/configs/c.1/printer.usb0
rm -f /sys/kernel/config/usb_gadget/g1/configs/c.1/uvc.usb0
rm -f /sys/kernel/config/usb_gadget/g1/configs/c.1/mass_storage.usb0
rm -rf /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/header/h/
rm -rf /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/class/fs
rm -rf /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/class/hs
rm -rf /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/control/class/fs/
rm -rf /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/control/class/ss/
rm -rf /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/m
rm -rf /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/mjpeg/
rm -rf /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/streaming/uncompressed/
echo $2 > /sys/kernel/config/usb_gadget/g1/idVendor
echo $3 > /sys/kernel/config/usb_gadget/g1/idProduct
if [ $1 == "none" ]; then
return
elif [ $1 == "mtp" ]; then
enable_mtp
elif [ $1 == "adb" ]; then
enable_adb
elif [ $1 == "mass_storage" ]; then
[ -d /sys/kernel/config/usb_gadget/g1/functions/mass_storage.usb0 ] || {
mkdir /sys/kernel/config/usb_gadget/g1/functions/mass_storage.usb0
echo Tina > /sys/kernel/config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/inquiry_string
}
ln -s /sys/kernel/config/usb_gadget/g1/functions/mass_storage.usb0/ /sys/kernel/config/usb_gadget/g1/configs/c.1/f1
#echo "/dev/by-name/UDISK" > /sys/kernel/config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/file
elif [ $1 == "uac1" ]; then
[ -d /sys/kernel/config/usb_gadget/g1/functions/uac1.usb0 ] || {
mkdir /sys/kernel/config/usb_gadget/g1/functions/uac1.usb0
echo 0x1 > /sys/kernel/config/usb_gadget/g1/functions/uac1.usb0/p_chmask
echo 0 > /sys/kernel/config/usb_gadget/g1/functions/uac1.usb0/c_chmask
echo 16000 > /sys/kernel/config/usb_gadget/g1/functions/uac1.usb0/p_srate
}
echo "Tina UAC1" > /sys/kernel/config/usb_gadget/g1/strings/0x409/product
ln -s /sys/kernel/config/usb_gadget/g1/functions/uac1.usb0/ /sys/kernel/config/usb_gadget/g1/configs/c.1/uac1.usb0
elif [ $1 == "uvc" ]; then
[ $4 == "bulk" ] && {
echo Y > /sys/module/usb_f_uvc/parameters/bulk_streaming_ep
}
echo 0xef > /sys/kernel/config/usb_gadget/g1/bDeviceClass
echo 0x02 > /sys/kernel/config/usb_gadget/g1/bDeviceSubClass
echo 0x01 > /sys/kernel/config/usb_gadget/g1/bDeviceProtocol
echo "Tina UVC" > /sys/kernel/config/usb_gadget/g1/strings/0x409/product
#echo 0x150 > /sys/kernel/config/usb_gadget/g1/functions/uvc.usb0/control/header/h/bcdUVC
enable_uvc
elif [ $1 == "uvc,uac1" ]; then
echo Y > /sys/module/usb_f_uvc/parameters/bulk_streaming_ep
echo 0xef > /sys/kernel/config/usb_gadget/g1/bDeviceClass
echo 0x02 > /sys/kernel/config/usb_gadget/g1/bDeviceSubClass
echo 0x01 > /sys/kernel/config/usb_gadget/g1/bDeviceProtocol
echo "Tina UVC" > /sys/kernel/config/usb_gadget/g1/strings/0x409/product
enable_uvc
[ -d /sys/kernel/config/usb_gadget/g1/functions/uac1.usb0 ] || {
mkdir /sys/kernel/config/usb_gadget/g1/functions/uac1.usb0
# enable PC capture only ISOC(IN)
echo 0x1 > /sys/kernel/config/usb_gadget/g1/functions/uac1.usb0/p_chmask
echo 0 > /sys/kernel/config/usb_gadget/g1/functions/uac1.usb0/c_chmask
echo 16000 > /sys/kernel/config/usb_gadget/g1/functions/uac1.usb0/p_srate
}
echo "Tina UVC UAC1" > /sys/kernel/config/usb_gadget/g1/strings/0x409/product
ln -s /sys/kernel/config/usb_gadget/g1/functions/uac1.usb0/ /sys/kernel/config/usb_gadget/g1/configs/c.1/uac1.usb0
elif [ $1 == "rndis" ]; then
mkdir /sys/kernel/config/usb_gadget/g1/functions/rndis.usb0
echo "Tina RNDIS" > /sys/kernel/config/usb_gadget/g1/strings/0x409/product
ln -s /sys/kernel/config/usb_gadget/g1/functions/rndis.usb0/ /sys/kernel/config/usb_gadget/g1/configs/c.1/rndis.usb0
elif [ $1 == "adb,rndis" ]; then
[ -d /sys/kernel/config/usb_gadget/g1/functions/rndis.usb0] || {
mkdir /sys/kernel/config/usb_gadget/g1/functions/rndis.usb0
}
ln -s /sys/kernel/config/usb_gadget/g1/functions/rndis.usb0/ /sys/kernel/config/usb_gadget/g1/configs/c.1/rndis.usb0
enable_adb
echo 0xef > /sys/kernel/config/usb_gadget/g1/bDeviceClass
echo 0x02 > /sys/kernel/config/usb_gadget/g1/bDeviceSubClass
echo 0x01 > /sys/kernel/config/usb_gadget/g1/bDeviceProtocol
echo "Tina ADB,RNDIS" > /sys/kernel/config/usb_gadget/g1/strings/0x409/product
elif [ $1 == "hid" ]; then
[ -d /sys/kernel/config/usb_gadget/g1/functions/hid.usb0 ] || {
mkdir /sys/kernel/config/usb_gadget/g1/functions/hid.usb0
}
echo 1 > /sys/kernel/config/usb_gadget/g1/functions/hid.usb0/protocol
echo 8 > /sys/kernel/config/usb_gadget/g1/functions/hid.usb0/report_length
echo -ne \\x05\\x01\\x09\\x06\\xa1\\x01\\x05\\x07\\x19\\xe0\\x29\\xe7\\x15\\x00\\x25\\x01\\x75\\x01\\x95\\x08\\x81\\x02\\x95\\x01\\x75\\x08\\x81\\x03\\x95\\x05\\x75\\x01\\x05\\x08\\x19\\x01\\x29\\x05\\x91\\x02\\x95\\x01\\x75\\x03\\x91\\x03\\x95\\x06\\x75\\x08\\x15\\x00\\x25\\x65\\x05\\x07\\x19\\x00\\x29\\x65\\x81\\x00\\xc0 > /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
echo "Tina HID" > /sys/kernel/config/usb_gadget/g1/strings/0x409/product
elif [ $1 == "ecm" ]; then
mkdir /sys/kernel/config/usb_gadget/g1/functions/ecm.usb0
echo "Tina ECM" > /sys/kernel/config/usb_gadget/g1/strings/0x409/product
ln -s /sys/kernel/config/usb_gadget/g1/functions/ecm.usb0/ /sys/kernel/config/usb_gadget/g1/configs/c.1/ecm.usb0
elif [ $1 == "adb,ecm" ]; then
[ -d /sys/kernel/config/usb_gadget/g1/functions/ecm.usb0] || {
mkdir /sys/kernel/config/usb_gadget/g1/functions/ecm.usb0
}
ln -s /sys/kernel/config/usb_gadget/g1/functions/ecm.usb0/ /sys/kernel/config/usb_gadget/g1/configs/c.1/ecm.usb0
enable_adb
echo 0xef > /sys/kernel/config/usb_gadget/g1/bDeviceClass
echo 0x02 > /sys/kernel/config/usb_gadget/g1/bDeviceSubClass
echo 0x01 > /sys/kernel/config/usb_gadget/g1/bDeviceProtocol
echo "Tina ADB,ECM" > /sys/kernel/config/usb_gadget/g1/strings/0x409/product
fi
echo $udc_controller > /sys/kernel/config/usb_gadget/g1/UDC
}
if [ $# -lt 1 ]; then
echo "Lack of arg!"
usage
exit
fi
# idVendor, idProduct only for test
if [ $1 == "none" ]; then
set_usb_function none 0x1f3a 0x1001
return
fi
if [ $1 == "adb" ]; then
set_usb_function adb 0x18d1 0xD002
return
fi
if [ $1 == "mtp" ]; then
set_usb_function mtp 0x045E 0x00C9
return
fi
if [ $1 == "uac1" ]; then
if [ $# == 3 ]; then
set_usb_function uac1 $2 $3
else
set_usb_function uac1 0x1d61 0x0101
fi
return
fi
if [ $1 == "mass_storage" ]; then
set_usb_function mass_storage 0x1f3a 0x1000
return
fi
if [ $1 == "uvc" ]; then
if [ $2 == "bulk" ]; then
set_usb_function uvc 0x09a1 0x0026 bulk
else
set_usb_function uvc 0x09a1 0x0026
fi
return
fi
if [ $1 == "uac1,uvc" -o $1 == "uvc,uac1" ]; then
#set_usb_function uvc,uac1 0x1943 0x2263
#set_usb_function uvc,uac1 0x09a1 0x0026
if [ $# == 3 ]; then
set_usb_function uvc,uac1 $2 $3
else
set_usb_function uvc,uac1 0x09a1 0x002A
fi
return
fi
if [ $1 == "rndis" ]; then
if [ $# == 3 ]; then
set_usb_function rndis $2 $3
else
set_usb_function rndis 0x0525 0xa4a2
fi
fi
if [ $1 == "adb,rndis" ]; then
if [ $# == 3 ]; then
set_usb_function adb,rndis $2 $3
else
set_usb_function adb,rndis 0x0525 0xa4a2
fi
fi
if [ $1 == "hid" ]; then
if [ $# == 3 ]; then
set_usb_function hid $2 $3
else
set_usb_function hid 0x0525 0xa4ac
fi
fi
if [ $1 == "ecm" ]; then
if [ $# == 3 ]; then
set_usb_function ecm $2 $3
else
set_usb_function ecm 0x0525 0xa4a2
fi
fi
if [ $1 == "adb,ecm" ]; then
if [ $# == 3 ]; then
set_usb_function adb,ecm $2 $3
else
set_usb_function adb,ecm 0x18d1 0xD002
fi
fi