Я пытался получить IP через USB, работающий на Raspberry Pi 4 с 2 ГБ памяти. usbnet отлично работает с Raspbian на той же аппаратной настройке
usrcfg.txt (отсутствие dr_mode = периферийное устройство, похоже, не имеет значения)
dtoverlay=dwc2,dr_mode=peripheral
nobtcmd.txt:
net.ifnames=0 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=LABEL=writable rootfstype=ext4 elevator=deadline rootwait modules-load=dwc2,g_ether fixrtc
root@ubuntu:/boot/firmware# ip a show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group defa
ult qlen 1000
link/ether dc:a6:32:02:a2:77 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.132/24 brd 192.168.1.255 scope global dynamic eth0
valid_lft 85802sec preferred_lft 85802sec
inet6 fe80::dea6:32ff:fe02:a277/64 scope link
valid_lft forever preferred_lft forever
root@ubuntu:/boot/firmware# ip a show usb0
Device "usb0" does not exist.
root@ubuntu:/boot/firmware# lsmod | grep g_ether
g_ether 16384 0
usb_f_rndis 45056 1 g_ether
u_ether 32768 2 usb_f_rndis,g_ether
libcomposite 77824 2 usb_f_rndis,g_ether
root@ubuntu:/boot/firmware#
Я думаю, что это ключ к разгадке проблемы :
[ 9.117963] udc-core: couldn't find an available UDC - added [g_ether] to list
Проблема в том, что это не включено в конфиг ядра. Ядро необходимо пересобрать после установки CONFIG_USB_DWC2_DUAL_ROLE и CONFIG_USB_OTG.