diff --git a/device/generic/br_overlay/common/etc/run_usb.sh b/device/generic/br_overlay/common/etc/run_usb.sh index 760c70284..91e1f5cd0 100755 --- a/device/generic/br_overlay/common/etc/run_usb.sh +++ b/device/generic/br_overlay/common/etc/run_usb.sh @@ -5,12 +5,14 @@ MSC_PID=0x1008 RNDIS_PID=0x1009 UVC_PID=0x100A UAC_PID=0x100B +NCM_PID=0x100C ADB_VID=0x18D1 ADB_PID=0x4EE0 ADB_PID_M1=0x4EE2 ADB_PID_M2=0x4EE4 MANUFACTURER="Cvitek" PRODUCT="USB Com Port" +PRODUCT_NCM="NCM" PRODUCT_RNDIS="RNDIS" PRODUCT_UVC="UVC" PRODUCT_UAC="UAC" @@ -39,6 +41,11 @@ case "$2" in cvg) CLASS=cvg ;; + ncm) + CLASS=ncm + PID=$NCM_PID + PRODUCT=$PRODUCT_NCM + ;; rndis) CLASS=rndis PID=$RNDIS_PID @@ -62,7 +69,7 @@ case "$2" in ;; *) 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 fi esac @@ -86,6 +93,11 @@ res_check() { 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 "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) EP_OUT=$(($EP_OUT+$TMP_NUM)) TMP_NUM=$(($TMP_NUM * 2)) @@ -117,6 +129,10 @@ res_check() { EP_IN=$(($EP_IN+1)) EP_OUT=$(($EP_OUT+1)) fi + if [ "$CLASS" = "ncm" ] ; then + EP_IN=$(($EP_IN+1)) + EP_OUT=$(($EP_OUT+1)) + fi if [ "$CLASS" = "rndis" ] ; then EP_IN=$(($EP_IN+2)) EP_OUT=$(($EP_OUT+1)) @@ -197,6 +213,9 @@ probe() { if [ "$CLASS" = "mass_storage" ] ; then echo $MSC_FILE >$CVI_GADGET/functions/$CLASS.usb$FUNC_NUM/lun.0/file fi + if [ "$CLASS" = "ncm" ] ; then + ln -s $CVI_FUNC/ncm.usb$FUNC_NUM $CVI_GADGET/configs/c.1 + fi if [ "$CLASS" = "rndis" ] ; then #OS STRING echo 1 >$CVI_GADGET/os_desc/use @@ -284,7 +303,7 @@ case "$1" in 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 stop" exit 1 diff --git a/device/generic/rootfs_overlay/common/mnt/system/usb.sh b/device/generic/rootfs_overlay/common/mnt/system/usb.sh index 3827f5be8..f947e921e 120000 --- a/device/generic/rootfs_overlay/common/mnt/system/usb.sh +++ b/device/generic/rootfs_overlay/common/mnt/system/usb.sh @@ -1 +1 @@ -usb-rndis.sh \ No newline at end of file +usb-ncm.sh \ No newline at end of file diff --git a/device/milkv-duo256m-glibc-arm64-sd/overlay/mnt/system/usb-ncm.sh b/device/milkv-duo256m-glibc-arm64-sd/overlay/mnt/system/usb-ncm.sh new file mode 100755 index 000000000..ec5be6625 --- /dev/null +++ b/device/milkv-duo256m-glibc-arm64-sd/overlay/mnt/system/usb-ncm.sh @@ -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 + diff --git a/device/milkv-duo256m-musl-riscv64-sd/overlay/mnt/system/usb-ncm.sh b/device/milkv-duo256m-musl-riscv64-sd/overlay/mnt/system/usb-ncm.sh new file mode 100755 index 000000000..ec5be6625 --- /dev/null +++ b/device/milkv-duo256m-musl-riscv64-sd/overlay/mnt/system/usb-ncm.sh @@ -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 + diff --git a/device/milkv-duos-glibc-arm64-sd/overlay/mnt/system/usb-ncm.sh b/device/milkv-duos-glibc-arm64-sd/overlay/mnt/system/usb-ncm.sh new file mode 100755 index 000000000..bf9193936 --- /dev/null +++ b/device/milkv-duos-glibc-arm64-sd/overlay/mnt/system/usb-ncm.sh @@ -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 + diff --git a/device/milkv-duos-musl-riscv64-sd/overlay/mnt/system/usb-ncm.sh b/device/milkv-duos-musl-riscv64-sd/overlay/mnt/system/usb-ncm.sh new file mode 100755 index 000000000..bf9193936 --- /dev/null +++ b/device/milkv-duos-musl-riscv64-sd/overlay/mnt/system/usb-ncm.sh @@ -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 +