Posted on 2013-07-08 08:00:00
Tags: FreeBSD, ARM, Networking
Recently I have obtained two Raspberry Pi units, just to see what can be done with them. So far I'm impressed, this little device is pretty powerful with regarding to video. Being a network guy, this doesn't interests me very much. But as a replacement of a 150 dollar Serial-over-TCP unit it would be very handy to get a serial console on devices it is required for.
First thing, this device runs with an ARM processor, something I haven't played with before on system administration level. First I had to build a FreeBSD ARM based kernel and world and that failed dramatically on my FreeBSD 9.1 i386 based machines. So VirtualBox to the rescue, and on an 64 bit machine it compiled a 10-Current world. My first cross-build was successful!
This disk for the Raspberry Pi is just a flash card, so I had to build an boot image (that was easy), download it to the host of the VirtualBox service (that was easy) and tell somehow OSX to not mount the disk anymore but also to keep it available for me to use dd on. That was tricky, but nothing Google couldn't tell me.
Then the final moment: Boot the Raspberry Pi with FreeBSD and... It worked. How undramatic. Ping the router, ping something on the Internet. All fine.
Except that the RTT for the ICMP packets didn't make sense:
64 bytes from 192.168.123.231: icmp_seq=22 ttl=64 time=1.321 ms 64 bytes from 192.168.123.231: icmp_seq=23 ttl=64 time=10.312 ms 64 bytes from 192.168.123.231: icmp_seq=24 ttl=64 time=9.328 ms 64 bytes from 192.168.123.231: icmp_seq=25 ttl=64 time=8.335 ms 64 bytes from 192.168.123.231: icmp_seq=26 ttl=64 time=7.411 ms 64 bytes from 192.168.123.231: icmp_seq=27 ttl=64 time=6.448 ms 64 bytes from 192.168.123.231: icmp_seq=28 ttl=64 time=5.497 ms 64 bytes from 192.168.123.231: icmp_seq=29 ttl=64 time=4.508 ms 64 bytes from 192.168.123.231: icmp_seq=30 ttl=64 time=3.540 ms 64 bytes from 192.168.123.231: icmp_seq=31 ttl=64 time=2.588 ms 64 bytes from 192.168.123.231: icmp_seq=32 ttl=64 time=1.635 ms 64 bytes from 192.168.123.231: icmp_seq=33 ttl=64 time=0.738 ms 64 bytes from 192.168.123.231: icmp_seq=34 ttl=64 time=9.770 ms 64 bytes from 192.168.123.231: icmp_seq=35 ttl=64 time=8.805 ms 64 bytes from 192.168.123.231: icmp_seq=36 ttl=64 time=7.833 ms 64 bytes from 192.168.123.231: icmp_seq=37 ttl=64 time=6.843 ms 64 bytes from 192.168.123.231: icmp_seq=38 ttl=64 time=5.869 ms
That is a beautiful sawtooth, but that doesn't make sense.
I tried various things, like setting the tick interval from 100 to 1000 Hz, but no luck yet. Together with Peter Jeremy we are looking for an answer, but being a non-kernel guy there is not much what I can do here except test patches.