Use NCM instead of RNDIS for USB ethernet gadget

This commit is contained in:
Takumi Sueda
2026-03-20 00:49:46 +09:00
parent 805f0daebd
commit f3f5eee21b
6 changed files with 41 additions and 37 deletions

View File

@@ -6,5 +6,5 @@ SRC=$1
DST=$2
install -g root -o root -m 0644 $SRC/lib/systemd/system/boot.mount $DST/lib/systemd/system/boot.mount
install -g root -o root -m 0644 $SRC/lib/systemd/system/rndis_gadget.service $DST/lib/systemd/system/rndis_gadget.service
install -g root -o root -m 0755 $SRC/usr/bin/enable_rndis_gadget $DST/usr/bin/enable_rndis_gadget
install -g root -o root -m 0644 $SRC/lib/systemd/system/ethernet_gadget.service $DST/lib/systemd/system/ethernet_gadget.service
install -g root -o root -m 0755 $SRC/usr/bin/enable_ethernet_gadget $DST/usr/bin/enable_ethernet_gadget

View File

@@ -0,0 +1,9 @@
[Unit]
Description=Enable Ethernet USB Gadget
[Service]
Type=oneshot
ExecStart=/usr/bin/enable_ethernet_gadget
[Install]
WantedBy=multi-user.target

View File

@@ -1,9 +0,0 @@
[Unit]
Description=Enable RNDIS USB Gadget
[Service]
Type=oneshot
ExecStart=/usr/bin/enable_rndis_gadget
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,29 @@
#!/bin/sh
g=/sys/kernel/config/usb_gadget/eth
mkdir ${g}
echo "0x0200" > ${g}/bcdUSB
echo "0x0200" > ${g}/bcdDevice
mkdir -p ${g}/strings/0x409
echo "0123456789" > ${g}/strings/0x409/serialnumber
echo "SHARP" > ${g}/strings/0x409/manufacturer
echo "Brain" > ${g}/strings/0x409/product
mkdir -p ${g}/configs/c.1/strings/0x409
echo "NCM Config" > ${g}/configs/c.1/strings/0x409/configuration
echo 250 > ${g}/configs/c.1/MaxPower
mkdir ${g}/functions/ncm.usb0
echo "8a:15:8b:44:3a:02" > ${g}/functions/ncm.usb0/dev_addr
echo "8a:15:8b:44:3a:01" > ${g}/functions/ncm.usb0/host_addr
ln -s ${g}/functions/ncm.usb0 ${g}/configs/c.1/
echo "ci_hdrc.0" > ${g}/UDC
sleep 1
ifconfig usb0 up
dhclient

View File

@@ -1,25 +0,0 @@
#!/bin/sh
g=/sys/kernel/config/usb_gadget/eth
mkdir ${g}
echo "0x3066" > ${g}/bcdDevice
echo "1" > ${g}/os_desc/use
echo "0xcd" > ${g}/os_desc/b_vendor_code
echo "MSFT100" > ${g}/os_desc/qw_sign
mkdir ${g}/functions/rndis.rn0
echo "RNDIS" > ${g}/functions/rndis.rn0/os_desc/interface.rndis/compatible_id
echo "5162001" > ${g}/functions/rndis.rn0/os_desc/interface.rndis/sub_compatible_id
echo "8a:15:8b:44:3a:02" > ${g}/functions/rndis.rn0/dev_addr
echo "8a:15:8b:44:3a:01" > ${g}/functions/rndis.rn0/host_addr
mkdir ${g}/configs/c.1
ln -s ${g}/functions/rndis.rn0 ${g}/configs/c.1/
echo "ci_hdrc.0" > ${g}/UDC
sleep 1
ifconfig usb0 up
dhclient

View File

@@ -139,7 +139,7 @@ EOF
systemctl enable boot.mount
# Enable RNDIS gadget
systemctl enable rndis_gadget
systemctl enable ethernet_gadget
# Get wild
cat <<EOF > /etc/apt/sources.list