Connecting multiple BBB to a PC using USB

Hi,
I’m trying to connect multiple BBBs to a single PC using USB connections and I’m not sure how to get it working. When I plug multiple BBBs to a PC, they all show up as external drives (OK) and each of them shows up as a RNDIS network adapter (OK). However, RNDIS of the BBB that was plugged in second does not get proper IP address (not OK!!!). So, I’m unable to communicate with my application that is running in BBB.

We are planing to design an embedded controller based on AM335x/BBB and being able to connect multiple of them to a single PC is a requirement.

Any help would be appreciated.

Thank you.

Brian

Brian:
I think I’ve found an answer. The BBB uses systemd to get the user space processes going at boot time. Look in /lib/systemd/system it see the various services that can be started. The one of interest is /lib/systemd/system/udhcpd.service. This starts the dhcp server that assigns the IP address to the host. Looking inside you see

[Unit]
Description=DHCP server for USB0 network gadget
After=dev-usb0.device
Conflicts=storage-gadget-init.service

[Service]
ExecStart=/usr/sbin/udhcpd -f -S /etc/udhcpd.conf
ExecStop=/bin/kill -TERM $MAINPID
KillSignal=SIGINT

[Install]
WantedBy=gether.target

It looks like /etc/udhcpd.conf is what configures the server. In it we find:

start 192.168.7.1
end 192.168.7.1
interface usb0
max_leases 1
option subnet 255.255.255.252

On your second bone try editing this file to use a different range of addresses. That will assign your host a different number. To give your beagle a different number, look near the bottom of /usr/bin/g-ether-load.sh. I think that’s where your BBB is assigned a number.

I haven’t tested this. Let me know if it works.

–Mark

Mark,
I followed your suggestion and, eventually, was able to get 2 BBB connected and working on a single PC. In addition to /etc/udhcpd.conf, I needed to edit /usr/bin/g-ether-load.sh and /etc/udev/rules.d/udhcpd.rules However, I need more automated way to accomplish this task, since we can’t expect our end users to log into our product and change the settings…

Thanks for your help.

Brian

Hi
Mark's Recipe might work, but IMHO you have to use a different subnet
for each BBB.
eg:
BBB1 192.168.101.2 and USB1 on the PC 192.168.101.1
BBB2 192.168.102.2 and USB2 on the PC 192.168.102.1
BBB3 192.168.103.2 and USB3 on the PC 192.168.103.1
etc...
And the you have add to route rules between all these subnets.....

But - Ethernet might be much easier. If you assign each BBB a fixed IP
on eth0, then you can combine almost unlimited BBB's like in a server
farm. The only con is that you need two cables for every BBB, 5V and
eth.

Hi Dieter,
I did use different subnet (192.168.7.x and 192.168.8.x) by modifying /etc/udhcpd.conf, /usr/bin/g-ether-load.sh and /etc/udev/rules.d/udhcpd.rules and got them to work. Since I don’t need those BBBs to talk to each other, I don’t need to worry about adding routes or bridging those nets. It would be nice if the DHCP stuff was running on the PC so that I don’t have to change settings in each BBB that I want to use in on a single PC…

Does any one know how to make BBB with Angstrom work as a generic Bulk Device Class USB device? Any pointers would be appreciated.

Thank you

Brian