summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2015-03-10 16:21:19 +0100
committerStefan Agner <stefan.agner@toradex.com>2015-03-10 16:26:24 +0100
commit5ee8851ace245058551885dddb23a3820f6c2bea (patch)
tree8f1a7bcbcb0345e2724756dcf57b482ac6060a91
parent0891eabdad215a5504b96cf3af0ba0abd7c358e6 (diff)
usb-rndis: fix various issues with dhcpd service for RNDIS
- Make sure leases file is not persistent (in /var/run now) This allows to serve the same IP to the generated (and hence different IP addresses) - Start RNDIS service after the network.target - Tegra: Add extra service for udhcpd. When running dhcpd directly from udev, the daemon will be killed after a while
-rw-r--r--recipes-core/usb-rndis/files/tegra/udhcpd-usb-rndis.conf4
-rw-r--r--recipes-core/usb-rndis/files/tegra/usb-rndis-udhcpd.service9
-rw-r--r--recipes-core/usb-rndis/files/tegra/usb-rndis.rules2
-rw-r--r--recipes-core/usb-rndis/files/udhcpd-usb-rndis.conf4
-rw-r--r--recipes-core/usb-rndis/files/usb-rndis.service2
-rw-r--r--recipes-core/usb-rndis/usb-rndis-systemd.bb8
-rw-r--r--recipes/images/trdx-extra.inc1
7 files changed, 24 insertions, 6 deletions
diff --git a/recipes-core/usb-rndis/files/tegra/udhcpd-usb-rndis.conf b/recipes-core/usb-rndis/files/tegra/udhcpd-usb-rndis.conf
index 117b940..bf69097 100644
--- a/recipes-core/usb-rndis/files/tegra/udhcpd-usb-rndis.conf
+++ b/recipes-core/usb-rndis/files/tegra/udhcpd-usb-rndis.conf
@@ -33,7 +33,9 @@ max_leases 1
#pidfile /var/run/udhcpd.pid
# The location of the leases file
-#lease_file /var/lib/misc/udhcpd.leases
+# As we want to service a point to point connection over USB:
+# do not use a persistent file
+lease_file /var/run/udhcpd-rndis.leases
# The time period at which udhcpd will write out leases file.
# If this is 0, udhcpd will never automatically write leases file.
diff --git a/recipes-core/usb-rndis/files/tegra/usb-rndis-udhcpd.service b/recipes-core/usb-rndis/files/tegra/usb-rndis-udhcpd.service
new file mode 100644
index 0000000..3762198
--- /dev/null
+++ b/recipes-core/usb-rndis/files/tegra/usb-rndis-udhcpd.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=dhcp deamon for rndis NIC, meant to be started from udev rule
+
+[Service]
+ExecStart=/usr/sbin/udhcpd -fS /etc/udhcpd-usb-rndis.conf
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/recipes-core/usb-rndis/files/tegra/usb-rndis.rules b/recipes-core/usb-rndis/files/tegra/usb-rndis.rules
index 9cfc918..1f3475e 100644
--- a/recipes-core/usb-rndis/files/tegra/usb-rndis.rules
+++ b/recipes-core/usb-rndis/files/tegra/usb-rndis.rules
@@ -1,2 +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/ip address add 192.168.11.2/24 dev rndis0; /sbin/ip link set rndis0 up ; /usr/sbin/udhcpd -S /etc/udhcpd-usb-rndis.conf' "
+SUBSYSTEM=="android_usb", ATTR{state}=="CONFIGURED", RUN+="/bin/sh -c '/sbin/ip address add 192.168.11.2/24 dev rndis0; /sbin/ip link set rndis0 up' ",TAG+="systemd",ENV{SYSTEMD_WANTS}="usb-rndis-udhcpd.service"
diff --git a/recipes-core/usb-rndis/files/udhcpd-usb-rndis.conf b/recipes-core/usb-rndis/files/udhcpd-usb-rndis.conf
index acb14b2..ea0c0ea 100644
--- a/recipes-core/usb-rndis/files/udhcpd-usb-rndis.conf
+++ b/recipes-core/usb-rndis/files/udhcpd-usb-rndis.conf
@@ -33,7 +33,9 @@ max_leases 1
#pidfile /var/run/udhcpd.pid
# The location of the leases file
-#lease_file /var/lib/misc/udhcpd.leases
+# As we want to service a point to point connection over USB:
+# do not use a persistent file
+lease_file /var/run/udhcpd-rndis.leases
# The time period at which udhcpd will write out leases file.
# If this is 0, udhcpd will never automatically write leases file.
diff --git a/recipes-core/usb-rndis/files/usb-rndis.service b/recipes-core/usb-rndis/files/usb-rndis.service
index d586abc..c302d70 100644
--- a/recipes-core/usb-rndis/files/usb-rndis.service
+++ b/recipes-core/usb-rndis/files/usb-rndis.service
@@ -3,7 +3,7 @@
Description=Load/Configure the kernel driver providing the RNDIS gadget
Documentation=http://www.linux-usb.org/gadget/ http://permalink.gmane.org/gmane.linux.usb.general/56244
DefaultDependencies=no
-After=basic.target
+After=network.target
[Service]
Type=oneshot
diff --git a/recipes-core/usb-rndis/usb-rndis-systemd.bb b/recipes-core/usb-rndis/usb-rndis-systemd.bb
index 5e6a728..d229123 100644
--- a/recipes-core/usb-rndis/usb-rndis-systemd.bb
+++ b/recipes-core/usb-rndis/usb-rndis-systemd.bb
@@ -1,5 +1,5 @@
SECTION = "network"
-DESCRIPTION = "RNDIS usb client configuration and startup"
+SUMMARY = "RNDIS usb client configuration and startup"
RDEPENDS_${PN} = ""
# The license is meant for this recipe and the files it installs.
# RNDIS is part of the kernel, udhcpd is part of busybox
@@ -31,6 +31,7 @@ SRC_URI = " \
SRC_URI_tegra = " \
${SRC_URI_COMMON} \
file://usb-rndis.rules \
+ file://usb-rndis-udhcpd.service \
"
do_install() {
@@ -45,10 +46,13 @@ do_install() {
do_install_append_tegra() {
install -d ${D}/${sysconfdir}/udev/rules.d
install -m 0644 ${WORKDIR}/usb-rndis.rules ${D}/${sysconfdir}/udev/rules.d
+ install -m 0644 ${WORKDIR}/usb-rndis-udhcpd.service ${D}${systemd_unitdir}/system
}
+FILES_${PN} += "${systemd_unitdir}/system"
+
NATIVE_SYSTEMD_SUPPORT = "1"
SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE_${PN} = "usb-rndis.service"
-SYSTEMD_AUTO_ENABLE = "disable"
+SYSTEMD_AUTO_ENABLE_mx6 = "disable"
diff --git a/recipes/images/trdx-extra.inc b/recipes/images/trdx-extra.inc
index 1165f5a..df060e6 100644
--- a/recipes/images/trdx-extra.inc
+++ b/recipes/images/trdx-extra.inc
@@ -110,6 +110,7 @@ IMAGE_INSTALL_MACHINE_colibri-imx6 = " \
IMAGE_INSTALL_MACHINE_colibri-vf = " \
u-boot-toradex-fsl-fw-utils \
+ usb-rndis-systemd \
gpioconfig \
ptpd \
iproute2 \