mirror of
https://github.com/sipeed/LicheeRV-Nano-Build.git
synced 2026-09-10 20:59:59 -05:00
support gadget ncm and rndis at the same time
This commit is contained in:
@@ -61,7 +61,7 @@ then
|
||||
then
|
||||
cat /boot/usb.serialnumber > strings/0x409/serialnumber
|
||||
else
|
||||
echo '20240808' > strings/0x409/serialnumber
|
||||
cat /device_key > strings/0x409/serialnumber
|
||||
fi
|
||||
if [ -e /boot/usb.manufacturer ]
|
||||
then
|
||||
@@ -82,23 +82,6 @@ then
|
||||
rm -rf configs/c.1/acm.GS0
|
||||
ln -s functions/acm.GS0 configs/c.1/
|
||||
fi
|
||||
if [ -e /boot/usb.ncm0 ]
|
||||
then
|
||||
mkdir -p functions/ncm.usb0
|
||||
rm -rf configs/c.1/ncm.usb0
|
||||
ln -s functions/ncm.usb0 configs/c.1/
|
||||
echo 02 > functions/rndis.usb0/class
|
||||
echo 0d > functions/rndis.usb0/subclass
|
||||
echo 00 > functions/rndis.usb0/protocol
|
||||
elif [ -e /boot/usb.rndis0 ]
|
||||
then
|
||||
mkdir -p functions/rndis.usb0
|
||||
rm -rf configs/c.1/rndis.usb0
|
||||
ln -s functions/rndis.usb0 configs/c.1/
|
||||
echo e0 > functions/rndis.usb0/class
|
||||
echo 01 > functions/rndis.usb0/subclass
|
||||
echo 03 > functions/rndis.usb0/protocol
|
||||
fi
|
||||
|
||||
if [ -e /boot/usb.disk0 ]
|
||||
then
|
||||
@@ -124,6 +107,24 @@ then
|
||||
cat /boot/usb.disk0 > functions/mass_storage.disk0/lun.0/file
|
||||
fi
|
||||
fi
|
||||
|
||||
# rndis
|
||||
if [ -e /boot/usb.rndis ]
|
||||
then
|
||||
mkdir -p functions/rndis.usb0
|
||||
ln -s functions/rndis.usb0 configs/c.1/
|
||||
echo e0 > functions/rndis.usb0/class
|
||||
echo 01 > functions/rndis.usb0/subclass
|
||||
echo 03 > functions/rndis.usb0/protocol
|
||||
fi
|
||||
|
||||
# ncm
|
||||
if [ -e /boot/usb.ncm ]
|
||||
then
|
||||
mkdir -p functions/ncm.usb0
|
||||
ln -s functions/ncm.usb0 configs/c.1/
|
||||
fi
|
||||
|
||||
ls /sys/class/udc/ | cat > UDC
|
||||
echo device > /proc/cviusb/otg_role
|
||||
fi
|
||||
@@ -131,6 +132,19 @@ fi
|
||||
|
||||
if [ "$1" = "stop" ]
|
||||
then
|
||||
# rndis
|
||||
if [ -e /sys/kernel/config/usb_gadget/g0/configs/c.1/rndis.usb0 ]
|
||||
then
|
||||
unlink /sys/kernel/config/usb_gadget/g0/configs/c.1/rndis.usb0
|
||||
rmdir /sys/kernel/config/usb_gadget/g0/functions/rndis.usb0
|
||||
fi
|
||||
|
||||
# ncm
|
||||
if [ -e /sys/kernel/config/usb_gadget/g0/configs/c.1/ncm.usb0 ]
|
||||
then
|
||||
unlink /sys/kernel/config/usb_gadget/g0/configs/c.1/ncm.usb0
|
||||
rmdir /sys/kernel/config/usb_gadget/g0/functions/ncm.usb0
|
||||
fi
|
||||
echo '' > /sys/kernel/config/usb_gadget/g0/UDC
|
||||
echo host > /proc/cviusb/otg_role
|
||||
fi
|
||||
|
||||
@@ -45,32 +45,4 @@ then
|
||||
ip link set eth0 address ${new_ethmac}
|
||||
ifconfig eth0 up
|
||||
echo "ethernet mac address: ${new_ethmac}"
|
||||
|
||||
if [ -e /boot/usb.ncm0 ]
|
||||
then
|
||||
if [ -e /boot/usb.ncm0.mac ]
|
||||
then
|
||||
new_mac=$(cat /boot/usb.ncm0.mac)
|
||||
else
|
||||
new_mac=$(hex2mac 48da356e$(sha512sum /sys/class/cvi-base/base_uid | head -c 4))
|
||||
fi
|
||||
ifconfig usb0 down
|
||||
ip link set usb0 address ${new_mac}
|
||||
ifconfig usb0 up
|
||||
echo "ncm mac address: ${new_mac}"
|
||||
fi
|
||||
|
||||
if [ -e /boot/usb.rndis0 ]
|
||||
then
|
||||
if [ -e /boot/usb.rndis0.mac ]
|
||||
then
|
||||
new_rndismac=$(cat /boot/usb.rndis0.mac)
|
||||
else
|
||||
new_rndismac=$(hex2mac 48da356e$(sha512sum /sys/class/cvi-base/base_uid | head -c 4))
|
||||
fi
|
||||
ifconfig usb0 down
|
||||
ip link set usb0 address ${new_rndismac}
|
||||
ifconfig usb0 up
|
||||
echo "rndis mac address: ${new_rndismac}"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
. /etc/profile
|
||||
|
||||
gen_udhcpd_conf() {
|
||||
interface=${1}
|
||||
ipv4_prefix=${2}
|
||||
echo "start ${ipv4_prefix}.100"
|
||||
echo "end ${ipv4_prefix}.200"
|
||||
echo "interface ${interface}"
|
||||
echo "pidfile /var/run/udhcpd.${interface}.pid"
|
||||
echo "lease_file /var/lib/misc/udhcpd.${interface}.leases"
|
||||
echo "option subnet 255.255.255.0"
|
||||
echo "option lease 864000"
|
||||
}
|
||||
|
||||
start() {
|
||||
if [ -e /boot/usb.rndis0 ]
|
||||
then
|
||||
printf "start usb rndis: "
|
||||
if [ ! -e /boot/rndis.nodhcpd ]
|
||||
then
|
||||
if [ -e /boot/rndis.ipv4_prefix ]
|
||||
then
|
||||
ipv4_prefix=`cat /boot/rndis.ipv4_prefix`
|
||||
else
|
||||
id2=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 2))
|
||||
id3=$(printf "%d" 0x$(sha512sum /sys/class/cvi-base/base_uid | head -c 4 | tail -c 2))
|
||||
if [ "$id2" = "$id3" ]
|
||||
then
|
||||
id2=$((id2 + 1))
|
||||
fi
|
||||
if [ "$id2" -ge 255 ]
|
||||
then
|
||||
id2=253
|
||||
fi
|
||||
if [ "$id3" -ge 255 ]
|
||||
then
|
||||
id3=254
|
||||
fi
|
||||
ipv4_prefix=10.$id2.$id3
|
||||
fi
|
||||
gen_udhcpd_conf usb0 "${ipv4_prefix}" > /etc/udhcpd.usb0.conf
|
||||
ip addr add $ipv4_prefix.1/24 dev usb0
|
||||
udhcpd -S /etc/udhcpd.usb0.conf
|
||||
fi
|
||||
echo "ok"
|
||||
fi
|
||||
}
|
||||
|
||||
stop() {
|
||||
kill `cat /var/run/udhcpd.usb0.pid`
|
||||
rm /var/run/udhcpd.usb0.pid
|
||||
}
|
||||
|
||||
restart() {
|
||||
start
|
||||
stop
|
||||
}
|
||||
|
||||
if [ "${1}" = "start" ]
|
||||
then
|
||||
start
|
||||
elif [ "${1}" = "stop" ]
|
||||
then
|
||||
stop
|
||||
elif [ "${1}" = "restart" ]
|
||||
then
|
||||
restart
|
||||
fi
|
||||
Reference in New Issue
Block a user