summaryrefslogtreecommitdiff
path: root/recipes-core/usb-rndis
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2012-12-07 16:41:13 +0100
committerMax Krummenacher <max.krummenacher@toradex.com>2012-12-07 16:41:13 +0100
commit8620d5f60113438cdece64566e34e105486b2688 (patch)
tree6fb3223db8e18c19471865a8e0e071cb9bf8e516 /recipes-core/usb-rndis
parent16383f57fbb972a2587bfe156a27fd3eb112a087 (diff)
usb-rndis: make sure the interface is up when a host connects
Diffstat (limited to 'recipes-core/usb-rndis')
-rw-r--r--recipes-core/usb-rndis/files/busybox-dhcpd.service12
-rw-r--r--recipes-core/usb-rndis/files/start-rndis.sh19
-rw-r--r--recipes-core/usb-rndis/files/udhcpd-usb-rndis.conf (renamed from recipes-core/usb-rndis/files/udhcpd.conf)0
-rw-r--r--recipes-core/usb-rndis/files/usb-rndis.rules2
-rw-r--r--recipes-core/usb-rndis/files/usb-rndis.service7
-rw-r--r--recipes-core/usb-rndis/usb-rndis-systemd.bb15
6 files changed, 26 insertions, 29 deletions
diff --git a/recipes-core/usb-rndis/files/busybox-dhcpd.service b/recipes-core/usb-rndis/files/busybox-dhcpd.service
deleted file mode 100644
index 5bcaecb..0000000
--- a/recipes-core/usb-rndis/files/busybox-dhcpd.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=Dynamic Host Configuration Protocol (DHCP), busybox provided
-After=syslog.target
-After=network.target
-
-[Service]
-Type=forking
-ExecStart=/usr/sbin/udhcpd
-
-[Install]
-WantedBy=basic.target
-Alias=dhcpd.service
diff --git a/recipes-core/usb-rndis/files/start-rndis.sh b/recipes-core/usb-rndis/files/start-rndis.sh
index 3548722..a3b4e00 100644
--- a/recipes-core/usb-rndis/files/start-rndis.sh
+++ b/recipes-core/usb-rndis/files/start-rndis.sh
@@ -1,8 +1,15 @@
#!/bin/sh
-
# configures the usb gadget to provide rnidis,
-# sets the IP addr of the newly created interface
-echo 0 > /sys/class/android_usb/android0/enable
-echo rndis > /sys/class/android_usb/android0/functions
-echo 1 > /sys/class/android_usb/android0/enable
-ifconfig rndis0 192.168.11.2
+case "$1" in
+ start)
+ echo 0 > /sys/class/android_usb/android0/enable
+ echo rndis > /sys/class/android_usb/android0/functions
+ echo 1 > /sys/class/android_usb/android0/enable
+ ;;
+
+ stop)
+ echo 0 > /sys/class/android_usb/android0/enable
+ ;;
+esac
+
+exit 0
diff --git a/recipes-core/usb-rndis/files/udhcpd.conf b/recipes-core/usb-rndis/files/udhcpd-usb-rndis.conf
index 62a016a..62a016a 100644
--- a/recipes-core/usb-rndis/files/udhcpd.conf
+++ b/recipes-core/usb-rndis/files/udhcpd-usb-rndis.conf
diff --git a/recipes-core/usb-rndis/files/usb-rndis.rules b/recipes-core/usb-rndis/files/usb-rndis.rules
new file mode 100644
index 0000000..938e46d
--- /dev/null
+++ b/recipes-core/usb-rndis/files/usb-rndis.rules
@@ -0,0 +1,2 @@
+#when a host connects over rndis, give the rnids0 NIC a IP address and up it
+SUBSYSTEM=="android_usb", ATTR{state}=="CONFIGURED", RUN+="/bin/sh -c '/sbin/ifconfig rndis0 192.168.11.2/24 ; /usr/sbin/udhcpd -S /etc/udhcpd-usb-rndis.conf' "
diff --git a/recipes-core/usb-rndis/files/usb-rndis.service b/recipes-core/usb-rndis/files/usb-rndis.service
index 5166082..6592ad7 100644
--- a/recipes-core/usb-rndis/files/usb-rndis.service
+++ b/recipes-core/usb-rndis/files/usb-rndis.service
@@ -1,15 +1,14 @@
+#also consult /etc/udev/ruldes.d/usb-rndis.rules
[Unit]
Description=Set the USB gadget to RNDIS
Documentation=http://permalink.gmane.org/gmane.linux.usb.general/56244
DefaultDependencies=no
-After=dhcpd.service
-Wants=dhcpd.service
[Service]
Type=oneshot
RemainAfterExit=yes
-ExecStart=/usr/bin/start-rndis.sh
-ExecStop=echo 0 > /sys/class/android_usb/android0/enable
+ExecStart=/usr/bin/start-rndis.sh start
+ExecStop=/usr/bin/start-rndis.sh stop
[Install]
WantedBy=basic.target
diff --git a/recipes-core/usb-rndis/usb-rndis-systemd.bb b/recipes-core/usb-rndis/usb-rndis-systemd.bb
index 47bf921..b2cc2ce 100644
--- a/recipes-core/usb-rndis/usb-rndis-systemd.bb
+++ b/recipes-core/usb-rndis/usb-rndis-systemd.bb
@@ -1,7 +1,7 @@
SECTION = "network"
DESCRIPTION = "RNDIS usb client configuration and startup"
RDEPENDS_${PN} = ""
-# The license is meant for this recipe and the files it installes.
+# The license is meant for this recipe and the files it installs.
# RNDIS is part of the kernel, udhcpd is part of busybox
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58"
@@ -15,16 +15,17 @@ inherit allarch systemd
SRC_URI = " \
file://start-rndis.sh \
file://usb-rndis.service \
- file://busybox-dhcpd.service \
- file://udhcpd.conf "
+ file://usb-rndis.rules \
+ file://udhcpd-usb-rndis.conf "
do_install() {
- install -d ${D}/${sysconfdir} ${D}/${bindir}
- install -m 0755 ${WORKDIR}/start-rndis.sh ${D}/${bindir}
- install -m 0644 ${WORKDIR}/udhcpd.conf ${D}/${sysconfdir}/
+ install -d ${D}/${sysconfdir}/udev/rules.d ${D}/${bindir}
+ install -m 0755 ${WORKDIR}/start-rndis.sh ${D}/${bindir}/
+ install -m 0644 ${WORKDIR}/usb-rndis.rules ${D}/${sysconfdir}/udev/rules.d/
+ install -m 0644 ${WORKDIR}/udhcpd-usb-rndis.conf ${D}/${sysconfdir}/
}
NATIVE_SYSTEMD_SUPPORT = "1"
SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE_${PN} = "usb-rndis.service busybox-dhcpd.service "
+SYSTEMD_SERVICE_${PN} = "usb-rndis.service"