I am creating a USB gadget with Yocto, which loads the gadget kernel modules and is recognized by my host as a network interface (usb0
). On the gadget, I have connman
installed and running. I am using the default configuration (no /etc/connman/main.conf
), though I have tried to manually enable the gadget in /var/lib/connman/settings
:
~# cat /var/lib/connman/settings
[global]
OfflineMode=false
[Gadget]
Enable=true
Tethering=true
However, when I try to get an IP from the host (with e.g. dhcpcd usb0
), it does not seem to find a DHCP server, and I get an IPv4LL instead. The journalctl of my host looks like this:
avahi-daemon[812]: Registering new address record>
dhcpcd[875]: usb0: soliciting an IPv6 router
dhcpcd[875]: usb0: soliciting a DHCP lease
dhcpcd[875]: usb0: probing for an IPv4LL address
dhcpcd[875]: usb0: using IPv4LL address 169.254.1>
avahi-daemon[812]: Joining mDNS multicast group o>
avahi-daemon[812]: New relevant interface usb0.IP>
dhcpcd[875]: usb0: adding route to 169.254.0.0/16
avahi-daemon[812]: Registering new address record>
dhcpcd[875]: usb0: no IPv6 Routers available
Note that on the gadget, I created a service profile to give an IP to the usb0
interface, which gets:
3: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP8000> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 66:7e:25:f1:3d:cf brd ff:ff:ff:ff:ff:ff
inet 10.42.0.2/24 brd 10.42.0.255 scope global usb0
valid_lft forever preferred_lft forever
inet6 fe80::647e:25ff:fef1:3dcf/64 scope link
valid_lft forever preferred_lft forever
This is the service config:
[service_gadget]
Type = gadget
IPv4 = 10.42.0.2/255.255.255.0/10.42.0.1
What could I be missing for Connman to start a DHCP server and successfully assign an IP to the host usb0
interface when it asks for one?