I've been having a bit of a strange issue with the onboard ethernet on multiple Beaglebones after a recent update.
First off, I'm sure this isn't the earlier pullup-resistor ethernet issue. I have multiple boards ranging from A3 to A6, and the problem happens across all of them with this image after the update.
I'm trying to start a static IP configuration on boot without having to intervene on the command line...that part is key, as the end use will hopefully not require access to a serial console except for debugging. Right now I have my linux box acting as a local gateway for updates and testing.
Enabling the net-auto-wired service appears to bring up eth0 and set its IP, but attempts to ping between the laptop and beaglebone fail with "Destination Host Unreachable" from both ends. Ifplugd and netcfg by themselves don't really do any better.
On wireshark I can see ARP requests from both ends, and replies from my laptop if the beaglebone is doing the ping, but on the beaglebone I can't see anything incoming. All I can ping is myself.
Completely disabling all on-boot networking services results in the same issue if I try to bring the interface up and configure it manually....that is, until I reset the interface.
Output from uname-a:
Linux TIPR 3.2.32-4-ARCH #1 PREEMPT Mon Nov 5 03:18:39 UTC 2012 armv7l GNU/Linux
And now for the weirdness when I do this manually.
From a fresh boot, with all of the network services disabled, I can bring up eth0 and configure it:
$this->bbcode_second_pass_code('', '
[root@alarm ~]# ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 16436
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@alarm ~]# ip link set dev eth0 up
[root@alarm ~]# ip addr add 192.168.99.100/24 broadcast 192.168.99.255 dev eth0
[root@alarm ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.99.100 netmask 255.255.255.0 broadcast 192.168.99.255
inet6 fe80::d694:a1ff:fe93:1b14 prefixlen 64 scopeid 0x20<link>
ether d4:94:a1:93:1b:14 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@alarm ~]# ping 192.168.99.1
PING 192.168.99.1 (192.168.99.1) 56(84) bytes of data.
From 192.168.99.100 icmp_seq=1 Destination Host Unreachable
From 192.168.99.100 icmp_seq=2 Destination Host Unreachable
From 192.168.99.100 icmp_seq=3 Destination Host Unreachable
... etc ...
')
If I bring the interface down and then back up, it works.
$this->bbcode_second_pass_code('', '
[root@alarm ~]# ip link set dev eth0 down
[root@alarm ~]# ip link set dev eth0 up
PING 192.168.99.1 (192.168.99.1) 56(84) bytes of data.
64 bytes from 192.168.99.1: icmp_seq=1 ttl=64 time=0.794 ms
64 bytes from 192.168.99.1: icmp_seq=2 ttl=64 time=0.519 ms
64 bytes from 192.168.99.1: icmp_seq=3 ttl=64 time=0.519 ms
... etc ...
[root@alarm ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.99.100 netmask 255.255.255.0 broadcast 192.168.99.255
inet6 fe80::d694:a1ff:fe93:1b14 prefixlen 64 scopeid 0x20<link>
ether d4:94:a1:93:1b:14 txqueuelen 1000 (Ethernet)
RX packets 10 bytes 944 (944.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 34 bytes 2560 (2.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
')
dmesg doesn't give me any differing information between the first time bringing up the interface and the second...though note that the 10/Half speed is due to the hub I had between my laptop and the beaglebone during this particular test. I was able to get a full 100 without it.
$this->bbcode_second_pass_code('', '[ 55.825805] CPSW phy found : id is : 0x7c0f1
[ 55.826568] PHY 0:01 not found
[ 55.827667] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 59.823852] PHY: 0:00 - Link is Up - 10/Half
[ 59.824066] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 70.463226] eth0: no IPv6 routers present
[ 295.070678]
[ 295.070678] CPSW phy found : id is : 0x7c0f1
[ 295.071441] PHY 0:01 not found
[ 295.072296] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 297.063964] PHY: 0:00 - Link is Up - 10/Half
[ 297.064147] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[ 307.323242] eth0: no IPv6 routers present
')
While adding the toggle fix to the startup scripts does appear to work, knowing why this might be happening (and if there is an actual fix for it) would be very helpful.