diff --git a/main/postmarketos-initramfs/APKBUILD b/main/postmarketos-initramfs/APKBUILD index 7f5bddcd9..e245c4b3a 100644 --- a/main/postmarketos-initramfs/APKBUILD +++ b/main/postmarketos-initramfs/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: Oliver Smith # Co-Maintainer: Clayton Craft pkgname=postmarketos-initramfs -pkgver=2.4.0 +pkgver=2.5.0 pkgrel=0 pkgdesc="Base files for the postmarketOS initramfs / initramfs-extra" url="https://postmarketos.org" @@ -88,7 +88,7 @@ sha512sums=" ab41b45b0613f25a61114ed8c8b92bc53c60838f6e2e0ba18c76e5369b2984e6023a0661887692673aca3f647f268c468a468f6b1ac424cfee609017a89481dd 00-initramfs-base.files 8a4adad3785af474b36a09a05f6a3b2c4b4f43aac331a53b903abfa51ea12be1e3d1d807b7a6e66a1346815f3b0044daf8cd62e21e2dc75d2db13ee265a72985 00-initramfs-extra-base.files 4bfcb41b2d5ccd577a6203a9479e5bdf056064d20f02f9120f1a074c7c280c0231cf380ed6be7c80733ed4ae101385c14f123a8a41780bbb7d0851387cd9c613 init.sh -58ee2b36b858c9c70fabbcb9a12a754afc97e6dfe09ddb7a2ec02c6fb593cc40677ae7049ba5ffda7797cba20e4d35f0d320c5fb4d3072cdbdf172cce6665bb0 init_functions.sh +87602909fa9f233385528e41e5395cce076a4d22df858b56b333457815c6978f1b9ca918f0c9ec56f4424ed6c2624d0c6054eaf6e687d60175952cc35c010098 init_functions.sh ba3275a9af788c7c782322a22a0f144d5e50e3498ea6886486a29331f23ae89cd32d500a3635cfa7cab369afba92edc18aeca64ccbf0cd589061cce23d15b46c unudhcpd.conf 675e7d5bee39b2df7d322117f8dcaccc274d61beaf4d50ead19bbf2109446d64b1c0aa0c5b4f9846eb6c1c403418f28f6364eff4537ba41120fbfcbc484b7da7 mdev.conf " diff --git a/main/postmarketos-initramfs/init_functions.sh b/main/postmarketos-initramfs/init_functions.sh index 6e6cbc9f0..14b168b7c 100644 --- a/main/postmarketos-initramfs/init_functions.sh +++ b/main/postmarketos-initramfs/init_functions.sh @@ -570,17 +570,19 @@ setup_usb_network_android() { setup_usb_configfs_udc() { # Check if there's an USB Device Controller - local _udc_dev - _udc_dev=$(ls /sys/class/udc) + local _udc_dev="${deviceinfo_usb_network_udc:-}" if [ -z "$_udc_dev" ]; then - echo " No USB Device Controller available" - return + _udc_dev=$(ls /sys/class/udc) + if [ -z "$_udc_dev" ]; then + echo " No USB Device Controller available" + return + fi fi # Remove any existing UDC to avoid "write error: Resource busy" when setting UDC again echo "" > /config/usb_gadget/g1/UDC || echo " Couldn't write to clear UDC" # Link the gadget instance to an USB Device Controller. This activates the gadget. - # See also: https://github.com/postmarketOS/pmbootstrap/issues/338 + # See also: https://gitlab.com/postmarketOS/pmbootstrap/issues/338 echo "$_udc_dev" > /config/usb_gadget/g1/UDC || echo " Couldn't write new UDC" } @@ -672,17 +674,26 @@ start_unudhcpd() { local host_ip="${unudhcpd_host_ip:-172.16.42.1}" local client_ip="${unudhcpd_client_ip:-172.16.42.2}" echo "Starting unudhcpd with server ip $host_ip, client ip: $client_ip" + # Get usb interface - INTERFACE="" - ifconfig rndis0 "$host_ip" 2>/dev/null && INTERFACE=rndis0 - if [ -z $INTERFACE ]; then - ifconfig usb0 "$host_ip" 2>/dev/null && INTERFACE=usb0 - fi - if [ -z $INTERFACE ]; then - ifconfig eth0 "$host_ip" 2>/dev/null && INTERFACE=eth0 + usb_network_function="${deviceinfo_usb_network_function:-ncm.usb0}" + usb_network_function_fallback="rndis.usb0" + INTERFACE="$( + cat "/config/usb_gadget/g1/functions/$usb_network_function/ifname" 2>/dev/null || + cat "/config/usb_gadget/g1/functions/$usb_network_function_fallback/ifname" 2>/dev/null || + echo '' + )" + if [ -n "$INTERFACE" ]; then + ifconfig "$INTERFACE" "$host_ip" + elif ifconfig rndis0 "$host_ip" 2>/dev/null; then + INTERFACE=rndis0 + elif ifconfig usb0 "$host_ip" 2>/dev/null; then + INTERFACE=usb0 + elif ifconfig eth0 "$host_ip" 2>/dev/null; then + INTERFACE=eth0 fi - if [ -z $INTERFACE ]; then + if [ -z "$INTERFACE" ]; then echo " Could not find an interface to run a dhcp server on" echo " Interfaces:" ip link