Networking with IceBoards

IceBoards are booted and configured under the control of their ARM processors, which run a fairly stock Linux kernel (Texas Instruments’ fork of Linux 2.6.37). Boards are largely self-configuring; the major external requirement is the assignment of DHCP addresses.

DHCP Configuration

If you’re running Debian or Ubuntu, you can install a DHCP server as follows:

$ sudo apt-get install isc-dhcp-server

The server is configured via /etc/dhcp/dhcpd.conf. Configuration varies slightly with your dhcpd version; a bare-bones version for version 4.3.1 is as follows:

#
# Sample configuration file for ISC dhcpd for Debian
#
# Attention: If /etc/ltsp/dhcpd.conf exists, that will be used as
# configuration file instead of this file.

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;

shared-network 200-250{
 subnet 192.168.1.0 netmask 255.255.255.0 {
   option routers 192.168.1.47;
 }
 pool {
  range 192.168.1.200 192.168.1.250;
  allow unknown-clients;
 }
}

You will also likely have to modify /etc/defaults/isc-dhcp-server to instruct your server which Etheret ports to use.

Once your DHCP server is configured, you may restart it as follows:

$ sudo /etc/init.d/isc-dhcp-server restart

If your configuration is invalid, you should see an indication of failure. On success, DHCP activity will be logged to syslog. A successful DHCP transaction looks like the following:

Nov 17 13:57:52 fromme dhcpd: DHCPDISCOVER from 84:7e:40:6f:5c:72 via eth0
Nov 17 13:57:52 fromme dhcpd: DHCPOFFER on 192.168.1.3 to 84:7e:40:6f:5c:72 via eth0
Nov 17 13:57:52 fromme dhcpd: DHCPREQUEST for 192.168.1.3 (192.168.1.1) from 84:7e:40:6f:5c:72 via eth0
Nov 17 13:57:52 fromme dhcpd: DHCPACK on 192.168.1.3 to 84:7e:40:6f:5c:72 via eth0

Multicasting Configuration

Data is streamed from the IceBoards over a multicast socket. Unlike Virtex-4 deployments, this means any receiving PCs need to be configured to catch multicast data.

If you can see network lights blinking, but can’t receive any data via McGill’s parser program, try the following:

$ sudo route add -net 224.0.0.0 netmask 240.0.0.0 eth0

On OS X:

$ sudo route -nv add -net 224.0.0.0 -interface en0

Then, try:

$ /path/to/pydfmux/firmware/mcgill/x86_64/parser -t

If the parser receives data, it will dump it to the screen. (You will need to run the “route” command prior to launching the parser, or it will not begin receiving data.)

The “route” command does not persist. If you reboot (or if your network configuration changes), you will need to run it again. Tools like network-manager can usually be configured to include routes automatically.