Droid Does IPv6!

Copyright 2010, NETFLIX This week, I have been getting used to my new phone, which is a Motorola Droid, running Android 2.1. One of my primary interests was to “see if I could get IPv6 working”, since it is based on a recent Linux kernel (which does IPv6). I looked into how to get the kernel source, and what environment I would need to recompile it, and reading web posts about people who tried, in vain to figure out “how to get IPv6 working on Android”, without a single useful answer.

For the uninitiated, “Android” is a mobile operating system (or more specifically a “software stack”), driven by (IPv6 bastion) Google, and “Droid” is a motorola phone, one of many phones which run Android.

On about my 8th day thinking about this, it occurred to me to try loading an IPv6-only web page. It worked the first time. I felt foolish.

As it turns out, Android has been doing native IPv6 on the 802.11 (WiFi) interface since about November 2009, if the device in question supports an Android version that supports 2.X firmware (not all do).

To answer the obvious question: iPhone doesn’t. Plans are in place, however, to include it in upcoming iPhone OS 4.0.

Read more in Derek Morr’s blog

Here’s what Droid really does: native IPv6 when it sees router advertisements. Interestingly, it doesn’t do 6to4, although a “rooted” Android 2.1 device can be coaxed to do so, even though the 6to4 connectivity is incomplete, which is really a more important issue.  Since Apple Mac OS X Leopard (plain and Snow), MS Windows Vista and 7, and some other OSes will do 6to4 when it is ordered up by the user or by certain applications, those using Verizon as a 3G provider for their laptops may find certain things unreachable.

This may be due in part to obstinacy by Verizon Business. See:

Verizon Refuses to Provide Complete IPv6,
Oct 3rd, 2009 by Roller Network.

But it doesn’t explain why one can’t reach various educational and research institutions.

In order to see how to enable 6to4 through your 3G connection on (rooted) Android, see my post:

Droid does… (6to4 over Verizon 3G)
11:21, May 12th, 2010 at ipv6hawaii.org

Why Droid Isn’t Better Than iPhone (and vice versa)

I read a Motorola Droid review about two weeks ago in which the reviewer said:

“The slide out keyboard is horrible; I haven’t even used it once.”

Which illuminates something about blogging and the web, and the way we relate to technology, especially the kind of technology in which we invest emotionally, and worry, subconsciously, about how it looks on us.

Our culture, as the bearers of handheld information access devices, is to knee-jerk every evaluation. We don’t break things in like a pair of shoes. There are no acquired tastes, no learned skills. The allure of the Device That Finally Understands us, and  the myth of User-Friendliness, and frequent tabloid-esque sightings of same, consume us, and bind us.

iPhone and Android are, if you zoom out to a distance that obscures countless bidirectional nitpicks, the same thing.  Sorry, but for the most part, it’s true.  So far, Apple does a better job of placing a positive user experience in the customer’s hands, and then saddles them with iTunes to cancel out the positives.  A new Android user needs to add several apps and replace several others to be at square one, but not being saddled with iTunes is a worthwhile trade.  But most people will need their kids to set up their iPhone OR their Android, so it doesn’t matter — or it depends on your kids.

Sometime around the end of 2008, I was building a new PC for my office from components: new power supply, new mother board, old case, etc. When it came down to the OS, I noticed that the supplier that I was buying parts from offered Windows Vista Ultimate 64-bit for a mere $193.99.  I could have easily transferred my license for Windows XP to the new PC, or simply have relied on Linux. But I’m an IT guy with constituents who were using the following operating systems:

  1. 80 % Windows (XP, Vista, 7, 2003, 2008)
  2. 15 %  Mac OS X (Mostly Leopard and Snow Leopard)
  3. 5 % Other

Most people, I imagine, don’t worry about experiencing multiple environments, but for practically everything I do, I seek ways to do it in MS Windows, Apple Mac OS X, and sometimes Linux. It is important to appreciate that the third most popular OS family, Desktop Linux Distributions (this excludes mobiles Palm WebOS and Google Android), is in use by less than 2% of my several thousand users. So really, it’s Windows and Mac OS X, plus the minutia.

Of course, everybody hates Windows Vista. That’s what we have been led to believe, anyway. I have read dozens of reviews about Vista and why it’s not as good as XP, and I have found, for the most part, that I don’t even understand what the heck most of the reasons mean. Furthermore, the everybody that’s hating Vista isn’t a meaningful proportion of everybody. People want to by PC-compatibles, and when they bought them for a couple of years, they were shipped with Vista. The “word on the street” was that nobody was moving to that horrible Vista, and yet, in 2008, my annual client distribution survey showed that we had more Windows Vista clients than we did Mac OS clients.

Regular people don’t care. They don’t care about the opinions of the pundits that hate Vista for indecipherable reasons, they don’t care about the focus groups that led Microsoft down the dark and mysterious path of re-working its user interface, again, and they don’t care whether Mac is easier, or even if it’s better. What regular people want, apparently, is email, social media, and free access to music and movies.

So after 2 years as a Vista user, I have to say, it’s been pretty good. It was a wise choice. I have Windows 7 on my laptop (a Mac), alongside Mac OS X Leopard and Ubuntu Studio (*), so I know what’s coming, but Vista has been, for the most part, good to me.

I think that the primary reason that I’m OK with Vista is that I accepted the break-in period. Too often, objections to a change of environment are only the collision of current habits with new interfaces, and time, usually a short time, made shorter by not whining about it, spent in your new environment will solve most of the issues you face.

No environment is perfect. No environment is right for everyone. You may have to make choices and live with them for a while, before you can really evaluate them.  Most of the time, I assert, what we seek is familiarity, so we can continue to use our skills and habits, bad and good.

installing Python on Windows with Blender in spite of CygWin

I was just jumping through hoops getting Python (the one from python.org) to go on Windows Vista, with the set-up that includes Blender 2.4.9b and scapy

First, Blender 2.4.9b (Win32, compiled with Python 2.6) was not seeing Python on startup.

The reason for this is that I had previously installed Blender 2.48 (Windows 64-bit, compiled with Python 2.5) which doesn’t come with an installer, so I had manually set ENV variable “PYTHONHOME=C:\Python25”. So simply changing Python25 to Python26 made it work with Blender.

Then I had to run the installer for scapy, which uses Python to install itself, and it complained that it couldn’t find the “distutils” package. So I went off troubleshooting to see how to help Python find its modules (as distutils was clearly in C:\Python26\lib), and even after I judiciously set the right thingies (i.e. PYTHONPATH), it still didn’t work…

As it turns out, in the regular system PATH, the Cygwin-installed Python 2.5 was getting found first, and that was mucking things up.  So I edited the PATH to include C:\Python26, and moved C:\cygwin\bin to the end.

I had installed Cygwin, with all attachments (two 750 GB drives makes it easy to just install everything) so that I could compile nuttcp-7.12 on Windows.

This post is actually more of a note-to-self, but maybe someone else will benefit…

I Am Taken By Android

The iPhone is two years old, as of last Friday.

It has “screen cancer” at the bottom, often I cant see enough of the icons there to identify them, usually I remember or guess.

It’s as slow as molasses in January, sometimes.  I actually had it pause for 10 seconds after I did “slide to answer” on an incoming call, the other day.

So I’m looking into a new phone.  I want something with Internet access, email, and etc. I want something with a little more freedom in terms of app development and distribution. The  Apple App Store, and its Stalinist outlook, with regard to app signing, app censorship and public app denial, is not the thing. Several times, in the inquiry about a new phone, I have seen the number of apps available through the Apple App Store cited as a reason to keep iPhone. This is the stupidest thing I’ve ever heard, if you consider that about 99.9% of all Apple App Store Apps are worthless nonsense. It’s gotten too big to browse, and too cluttered to search. Bleagh.

The jail-broken side isn’t much better. The presence of Cycorder is a plus, but there’s just not much quality work in that arena, either.You can try to install gcc, but it’s missing libgcc, which hasn’t been upgraded past compatibility with iPhoneOS 2.0. I would really like to be able to compile a simple console program at the command line. but no avail. Python is there, but Perl isn’t. And they call it a “Smart Phone”.

Android seems considerably more promising, at least from the development POV. One isn’t constricted to the Android Market  (which has its own issues) as a place to acquire apps, and the ability to simply load your program and run it, without asking Steve Jobs for permission, make things nice(r). Python is available, and I have some minimal experience in Java, which is what one makes one’s Android programs in when one wants to share them on the Android Market.

It’s odd that the Android’s Market pretty much requires one to have an Android to see what apps are available — there are hacks on the web to work around this, but one would think that the Android promoters would want the iPhone toting community to see what they’re missing. What’s worse, the iPhone store has more apps in it, which is supposedly a major selling point for iPhone, but as anyone who’s browsed the iPhone store knows, those thousands of apps are dominated in numbers by WORTHLESS CRAP. I think there should be a non-worthless-crap counter for both stores, so that one could make an informed opinion.

I had the good fortune to use a demo Samsung Moment (runs Android) for a week, which solved two issues: 1) I chose Verizon-Moto-Droid, and 2) I got to see the Market unhindered. Lots of worthless crap there, but some useful stuff, too.

I noticed that my iPhone’s left built-in speaker is dead last night. Droid is due today or Monday…

Serial Port Thermometers and Perl


About two years ago, I adapted a thermometer design that I found on the web to be used with Perl under Linux — it worked reasonably well, and after a while it fell into dis-use, probably because the wiring was wrong as I found it — I had tried to extend the wiring and it didn’t work, so I went in search of lower-hanging fruit…

Anyways, the central idea is this:

A thermistor, that is, a component that changes it resistance with temperature, is placed in parallel with a capacitor, and the butt of the capacitor is connected to ground, and the top of the thermistor is connected to an output serial port control line. An input serial control line is connected to the top of the capacitor, which is also the bottom of the resistor. When you direct the output control line to apply positive voltage, you will charge the cap through the thermistor, and you will be in the land of RC time constants, where you can derive the value of R for the thermistor, and therefore the temperature.

Of course, there are a couple of diodes involved to keep things right-side up, since RS-232 applies plus and minus voltages.

With the average 9-pin serial port, you can wire up two thermistors, on DTR/DSR and RTS/CTS.

The original was set up for Windows, with some Visual BASIC program, you know the kind that’s always missing some OCX file or other. I “ported” the idea to Perl, and as soon as I can find the guy’s name, I will add it here. The Perl module Device::SerialPins is central to this scheme, as well as good old Time::HiRes.

I am looking for the original files in order to get the curve-fitting procedure, because, for what-ever reason, it’s uncalibrated on the new hardware, and tests have shown that the temp differential is non-linear, so I am not likely to get off that easy.

Still, it’s a digital thermometer for pennies, possibly free, since it used things that you’re likely to have, if you’re the kind of person that’s likely to have them…

Better program performance through minimalism

I was just sorting out how to graph IPv6 versus others, obviously the classic MRTG methods use SNMP MIB2 Objects ifInOctets and ifOutOctets, which are protocol-blind, so that’s not going to help.

After recent fiddling with libpcap programming, I found that small, custom programs perform much better than decode-intensive off-the-shelf things like tcpdump and tshark (part of wireshark), and etc. As I was evaluating options, I made a capture file with a million packets in it, and then ran it through some capture programs to see how long it took.

tcpdump took 1 minute 57 seconds
ipgrep.pl, a perl script I wrote took about 4 minutes
but a small, lightweight Perl script took 14 seconds!

Another cool thing about the little program is that you can set a pcap (nee bpf) filter expression to give it exactly what you want to see, and then it has to work even less…

When you use libpcap, the capture device keeps stats, of packets received and dropped.

So this morning while I was dreading doing diffs between our RRD graph data and some sort of cap file, it hit me —
Why not do a lightweight program that doesn’t even examine packets, but opens a pcap device simply for the stats? Run one each for v4 and v6, and voila…

So far, this “minimalism” is interesting. I have typed entire stanzas of code and then realized that I didn’t need that feature in the minimal program, that all of the elements were in the data to do it later. It really shines a light on how our eyes can be bigger than our stomachs when it comes to throwing in the kitchen sink while programming.

Look at tcpdump for instance. It does more decodes and automatic stuff than it did 20 years ago. Why use up the increase in power with more process? Sometimes you need a swiss army knife — no scratch that, sometimes you need one element of a swiss army knife, sometimes you need a sharpened stick.

Ancient Troubleshooting secret revealed!!

Last week I did something to my certificate Authority — the certs that were issued after a certain point did not work with Mac OS or Windows 7, although they did work with Windows XP and Vista. I compared files and straced certificate requests and signing, and I could not find the difference between the messed up version and the last (July) backup of the CA. In the end, I moved the new certs to the backup, reissued the funny ones from the backup, and ever since it has worked with all OSes, once again. Want to fix practically anything? MAKE BACKUPS! — MD