use CDC-NCM instead of RNDIS

Ref:
66f41db1eb

Signed-off-by: carbon <carbon@milkv.io>
This commit is contained in:
carbon
2024-06-21 20:06:29 +08:00
parent 327fa0d8f7
commit ec65347235
6 changed files with 132 additions and 3 deletions

View File

@ -5,12 +5,14 @@ MSC_PID=0x1008
RNDIS_PID=0x1009 RNDIS_PID=0x1009
UVC_PID=0x100A UVC_PID=0x100A
UAC_PID=0x100B UAC_PID=0x100B
NCM_PID=0x100C
ADB_VID=0x18D1 ADB_VID=0x18D1
ADB_PID=0x4EE0 ADB_PID=0x4EE0
ADB_PID_M1=0x4EE2 ADB_PID_M1=0x4EE2
ADB_PID_M2=0x4EE4 ADB_PID_M2=0x4EE4
MANUFACTURER="Cvitek" MANUFACTURER="Cvitek"
PRODUCT="USB Com Port" PRODUCT="USB Com Port"
PRODUCT_NCM="NCM"
PRODUCT_RNDIS="RNDIS" PRODUCT_RNDIS="RNDIS"
PRODUCT_UVC="UVC" PRODUCT_UVC="UVC"
PRODUCT_UAC="UAC" PRODUCT_UAC="UAC"
@ -39,6 +41,11 @@ case "$2" in
cvg) cvg)
CLASS=cvg CLASS=cvg
;; ;;
ncm)
CLASS=ncm
PID=$NCM_PID
PRODUCT=$PRODUCT_NCM
;;
rndis) rndis)
CLASS=rndis CLASS=rndis
PID=$RNDIS_PID PID=$RNDIS_PID
@ -62,7 +69,7 @@ case "$2" in
;; ;;
*) *)
if [ "$1" = "probe" ] ; then if [ "$1" = "probe" ] ; then
echo "Usage: $0 probe {acm|msc|cvg|rndis|uvc|uac1|adb}" echo "Usage: $0 probe {acm|msc|cvg|ncm|rndis|uvc|uac1|adb}"
exit 1 exit 1
fi fi
esac esac
@ -86,6 +93,11 @@ res_check() {
EP_IN=$(($EP_IN+$TMP_NUM)) EP_IN=$(($EP_IN+$TMP_NUM))
EP_OUT=$(($EP_OUT+$TMP_NUM)) EP_OUT=$(($EP_OUT+$TMP_NUM))
INTF_NUM=$(($INTF_NUM+$TMP_NUM)) INTF_NUM=$(($INTF_NUM+$TMP_NUM))
TMP_NUM=$(find $CVI_GADGET/functions/ -name "ncm*" | wc -l)
TMP_NUM=$(($TMP_NUM * 2))
EP_IN=$(($EP_IN+$TMP_NUM))
EP_OUT=$(($EP_OUT+$TMP_NUM))
INTF_NUM=$(($INTF_NUM+$TMP_NUM))
TMP_NUM=$(find $CVI_GADGET/functions/ -name "rndis*" | wc -l) TMP_NUM=$(find $CVI_GADGET/functions/ -name "rndis*" | wc -l)
EP_OUT=$(($EP_OUT+$TMP_NUM)) EP_OUT=$(($EP_OUT+$TMP_NUM))
TMP_NUM=$(($TMP_NUM * 2)) TMP_NUM=$(($TMP_NUM * 2))
@ -117,6 +129,10 @@ res_check() {
EP_IN=$(($EP_IN+1)) EP_IN=$(($EP_IN+1))
EP_OUT=$(($EP_OUT+1)) EP_OUT=$(($EP_OUT+1))
fi fi
if [ "$CLASS" = "ncm" ] ; then
EP_IN=$(($EP_IN+1))
EP_OUT=$(($EP_OUT+1))
fi
if [ "$CLASS" = "rndis" ] ; then if [ "$CLASS" = "rndis" ] ; then
EP_IN=$(($EP_IN+2)) EP_IN=$(($EP_IN+2))
EP_OUT=$(($EP_OUT+1)) EP_OUT=$(($EP_OUT+1))
@ -197,6 +213,9 @@ probe() {
if [ "$CLASS" = "mass_storage" ] ; then if [ "$CLASS" = "mass_storage" ] ; then
echo $MSC_FILE >$CVI_GADGET/functions/$CLASS.usb$FUNC_NUM/lun.0/file echo $MSC_FILE >$CVI_GADGET/functions/$CLASS.usb$FUNC_NUM/lun.0/file
fi fi
if [ "$CLASS" = "ncm" ] ; then
ln -s $CVI_FUNC/ncm.usb$FUNC_NUM $CVI_GADGET/configs/c.1
fi
if [ "$CLASS" = "rndis" ] ; then if [ "$CLASS" = "rndis" ] ; then
#OS STRING #OS STRING
echo 1 >$CVI_GADGET/os_desc/use echo 1 >$CVI_GADGET/os_desc/use
@ -284,7 +303,7 @@ case "$1" in
ls /sys/class/udc/ >$CVI_GADGET/UDC ls /sys/class/udc/ >$CVI_GADGET/UDC
;; ;;
*) *)
echo "Usage: $0 probe {acm|msc|cvg|uvc|uac1} {file (msc)}" echo "Usage: $0 probe {acm|msc|cvg|ncm|uvc|uac1} {file (msc)}"
echo "Usage: $0 start" echo "Usage: $0 start"
echo "Usage: $0 stop" echo "Usage: $0 stop"
exit 1 exit 1

View File

@ -1 +1 @@
usb-rndis.sh usb-ncm.sh

View File

@ -0,0 +1,15 @@
#!/bin/sh
/etc/uhubon.sh device >> /tmp/ncm.log 2>&1
/etc/run_usb.sh probe ncm >> /tmp/ncm.log 2>&1
/etc/run_usb.sh start ncm >> /tmp/ncm.log 2>&1
sleep 0.5
ifconfig usb0 192.168.42.1
count=`ps | grep dnsmasq | grep -v grep | wc -l`
if [ ${count} -lt 1 ] ;then
echo "/etc/init.d/S80dnsmasq start" >> /tmp/ncm.log 2>&1
/etc/init.d/S80dnsmasq start >> /tmp/ncm.log 2>&1
fi

View File

@ -0,0 +1,15 @@
#!/bin/sh
/etc/uhubon.sh device >> /tmp/ncm.log 2>&1
/etc/run_usb.sh probe ncm >> /tmp/ncm.log 2>&1
/etc/run_usb.sh start ncm >> /tmp/ncm.log 2>&1
sleep 0.5
ifconfig usb0 192.168.42.1
count=`ps | grep dnsmasq | grep -v grep | wc -l`
if [ ${count} -lt 1 ] ;then
echo "/etc/init.d/S80dnsmasq start" >> /tmp/ncm.log 2>&1
/etc/init.d/S80dnsmasq start >> /tmp/ncm.log 2>&1
fi

View File

@ -0,0 +1,40 @@
#!/bin/sh
usb_en=453
usb_select=510
function set_gpio()
{
local gpio_num=$1
local gpio_val=$2
local gpio_path="/sys/class/gpio/gpio${gpio_num}"
if test -d ${gpio_path}; then
echo "GPIO ${gpio_num} already exported" >> /tmp/ncm.log 2>&1
else
echo ${gpio_num} > /sys/class/gpio/export
fi
echo out > ${gpio_path}/direction
sleep 0.1
echo ${gpio_val} > ${gpio_path}/value
}
set_gpio ${usb_en} 0
sleep 0.5
set_gpio ${usb_select} 0
sleep 0.5
/etc/uhubon.sh device >> /tmp/ncm.log 2>&1
/etc/run_usb.sh probe ncm >> /tmp/ncm.log 2>&1
/etc/run_usb.sh start ncm >> /tmp/ncm.log 2>&1
sleep 0.5
ifconfig usb0 192.168.42.1
count=`ps | grep dnsmasq | grep -v grep | wc -l`
if [ ${count} -lt 1 ] ;then
echo "/etc/init.d/S80dnsmasq start" >> /tmp/ncm.log 2>&1
/etc/init.d/S80dnsmasq start >> /tmp/ncm.log 2>&1
fi

View File

@ -0,0 +1,40 @@
#!/bin/sh
usb_en=453
usb_select=510
function set_gpio()
{
local gpio_num=$1
local gpio_val=$2
local gpio_path="/sys/class/gpio/gpio${gpio_num}"
if test -d ${gpio_path}; then
echo "GPIO ${gpio_num} already exported" >> /tmp/ncm.log 2>&1
else
echo ${gpio_num} > /sys/class/gpio/export
fi
echo out > ${gpio_path}/direction
sleep 0.1
echo ${gpio_val} > ${gpio_path}/value
}
set_gpio ${usb_en} 0
sleep 0.5
set_gpio ${usb_select} 0
sleep 0.5
/etc/uhubon.sh device >> /tmp/ncm.log 2>&1
/etc/run_usb.sh probe ncm >> /tmp/ncm.log 2>&1
/etc/run_usb.sh start ncm >> /tmp/ncm.log 2>&1
sleep 0.5
ifconfig usb0 192.168.42.1
count=`ps | grep dnsmasq | grep -v grep | wc -l`
if [ ${count} -lt 1 ] ;then
echo "/etc/init.d/S80dnsmasq start" >> /tmp/ncm.log 2>&1
/etc/init.d/S80dnsmasq start >> /tmp/ncm.log 2>&1
fi