Thursday, November 13, 2008

mesh networking in Ubuntu 8.10

I was happy to find this when I upgraded my laptop to the new 8.10 release:

$ grep MESH /boot/config-`uname -r`

The kernel shipped with Ubuntu 8.10 (2.6.27) comes with draft-802.11s enabled and mesh-capable b43 and zd1211rw wireless drivers. I suggest that you try and make your own mesh if you have two or more PCs with a b43-supported interface! The only prerequisite is building iw from source as it's not packaged yet, but it's quite easy. Here's how:

First, get a couple of dependencies:

$ sudo apt-get install build-essential libnl-dev

Download the latest iw tarball and extract it, for example:

$ wget
$ tar -xf iw-0.9.6.tar.bz2
$ cd iw-0.9.6

Now make a config (the default config works fine) and build and install iw:

$ cp defconfig .config
$ make
$ sudo make install

Now that you have iw, you can use it to turn your wireless card into a mesh node. First, kill NetworkManager (it doesn't deal with Mesh Point interfaces at this time) and identify your wireless device. For example, you can run "ifconfig -a" and look for an interface named "wlan0". To make a mesh, on each PC do:

$ sudo killall NetworkManager
$ sudo iw dev wlan0 interface add mesh0 type mp mesh_id mymesh

...where "mesh0" is the name of your new interface. The Mesh ID is similar to an SSID and should be the same for all your mesh nodes. Now bring that interface up and assign each one a unique address on the same subnet, for example:

$ sudo ifconfig mesh0 up

Each PC should be able to ping any other in the mesh. Once in a mesh, you can ask iw for a list of nodes that your interface sees like this:

$ sudo iw dev mesh0 station dump

For more details, see the iw documentation or the HOWTO.

Monday, November 10, 2008

new 2002!

I found this nice 1972 BMW 2002 via craigslist recently and got it home a couple of weeks ago:

It's Golf Yellow (original factory color, though several panels have been resprayed) with a nice black interior. I have some more photos of it over here. The car suffers from some typical "previous owner painting some parts black" and "poorly-done stereo install" issues but is otherwise nice and original. In the near future, it will be my friend Aron's car (and will replace his large brown diesel Mercedes) so we've been working on it together. So far, we've fixed some minor electrical problems, both door locks, replaced the aftermarket radio and its associated wiring with a nice factory Blaupunkt unit, and cleaned up the trim and interior pieces. Aron also brightened up the tail lights by repainting the inside reflectors with a fresh coat of chrome paint. I'm maintaining a TODO list of things that need to get fixed or replaced and am happy to see it getting shorter!

Friday, October 24, 2008

draft-802.11s mesh with Atheros and ath5k

Draft-802.11s mesh networking will work properly for ath5k users. My patch is in wireless-testing and (hopefully) headed to the an upcoming kernel in a little while. This also means that my EEEPC 701 will finally have mesh capability out of the box! (well, after I build a new kernel for it and in doing so replace its patched madwifi driver with ath5k, working on that shortly)

There was a slight regression in the ath5k driver which has now been fixed, so mesh functionality should be working after this commit.

Monday, September 8, 2008

Taking apart the dashboard on your BMW 3.0CS (E9 coupe)

A few years ago, I took apart the dashboard in my 1974 3.0CS to replace the wood trim and took some photos and notes during the process. A few folks found my writeup useful but the page I originally had it on is long gone. The whole thing is still in my picasa album, so I wanted to point that out in case the information is useful to others working on their car.

The whole process is actually straight forward and not particularly difficult, but it might take you most of a day to complete. You will remove the windshield, which means you'll probably replace the windshield gasket. My suggested approach is like this:
  1. Take out the windshield. I suggest hiring a good glass company to do this for you, but it's not hard to do yourself if you are willing to sacrifice the gasket. In that case, just take a knife and destroy the gasket as much as possible, then gently push the glass out and have someone help you remove and carry it.
  2. Take apart the lower dash panels, remove the glove box and the center console. This is shown in my photos, but note that my car doesn't have air conditioning (this makes things much easier!). There are bolts installed vertically through the dash "tray" and these can only be reached by removing all of the lower dash stuff. This also enables you to access the bolts that hold the instrument "hood" to the dash pad. The heater and vent controls can just hang off to the side, there's no need to take them apart.
  3. Take out the instrument cluster after gently lifting the "hood" a little bit. There are threaded studs that run from the cluster to metal brackets in the dash. Unscrew the plastic nut that holds them on (the right side can be done through the speaker hole) and then pull the cluster out. Replace any burnt-out bulbs at this time.
  4. You now need to remove the window defroster vents. These are extremely fragile (the top "lip" part, especially) and it's hard to find replacements. Take your time and be very careful with them.
  5. With the glass out of the way, find and remove all of the screws holding the dash trim to the car.
  6. You can now take out the rest of the pieces, as shown in my photos.
  7. The reassembly is, as is usually the case, reverse of disassembly. The glass guys recommend removing the metal bracket things that are attached to the A-pillars (and possibly elsewhere). They make reinstalling the glass really difficult and are not really needed.
I hope you find this information (and the photos) helpful!

Saturday, August 9, 2008

Washington road trip

I drove up to Washington state last week for a sort of combined vintage BMW, hiking, and visiting friends trip. I then got to use a family friend's cabin near Mt. Rainier, which made it very easy to get up to the mountain in the mornings for day hikes. It was great to see Washington during the summer (though it was surprisingly hot). Within a couple of days, the fog cleared right up and revealed spectacular views of the mountain and surrounding forests. In the summer, the meadows around Mt. Rainier are covered in all sorts of colorful wildflowers but there are still fairly large snow fields to cross on most of the higher altitude trails.

Sunday, July 27, 2008

Backpacking in the Yosemite High Country

My friend Rob found an interesting summer job doing gardening and maintenance stuff at Yosemite Valley. Three months in Yosemite seems like a great way to spend some time before moving on to law school. I finally got to visit Rob and do a little bit of backpacking with him in the Yosemite High Country.

We started at Tuolumne Meadows and climbed up to Volgesang. Our original plan was to make it all the way to Lake Merced and then down to the valley the next day but I found the high altitude pretty tough to adjust to and the going was a bit slow. Instead, we crossed over Volgesang Pass into the valley below and camped there. Still, about 20 miles total in a challenging but absolutely beautiful part of the park!

As it turned out, a forest fire started in western Yosemite the next day and covered the valley in a smoky haze. The air quality was poor and it felt like sunset two hours early. As such, it was probably for the best that we didn't continue with our original route. According to the newspaper, the fire was apparently started in a target shooting accident.

The High Country is really interesting. In parts, the trees are quite dense but the terrain is covered in large boulders from rock slides and various river movements. The forest then gives way to a very noticeable tree line, followed by jagged peaks that look like castle ramparts. In other parts, the peaks hide green meadows with crystal-clear creeks or small lakes.

There are several High Sierra camps (like the Volgesang camp) scattered in the area. Folks pay something like $150 per night for the convenience of sleeping in a tent cabin with meals provided. They then have less gear to carry. For us, the camps were a helpful source of drinking water.

There were quite a few serious hikers on the trail, including an older gentlemen who was essentially hiking the entire High Country alone for over a week, armed with a wooden walking stick with bells to scare off bears.

Wednesday, July 23, 2008

draft-802.11s in Linux 2.6.26

The 2.6.26 kernel was released a couple of weeks ago. One of the most exciting changes (for me) was the mainline acceptance of draft-802.11s mesh networking into the mac80211 stack (it's even listed under "cool stuff" at Kernel Newbies). I was also quite happy to see mesh enabled in the kernel configuration for Ubuntu's upcoming 8.10 release.

hardware support

The mesh stack works with off-the-shelf "softmac" chipsets supported by mac80211. In 2.6.26, that includes most Zydas USB chipsets (supported by the zd1211rw driver). Broadcom chipsets supported by the b43 driver work in the wireless-testing kernel (the patch didn't make it in time for 2.6.26) but it looks like distributions like Ubuntu are providing patched drivers and b43 should support mesh in their next kernel (ie: for the 8.10 release). I submitted a patch for the ath5k driver recently. We will hopefully have a wider range of usable WiFi hardware to mesh with in the near future.

try it out!

Right now you can try draft-802.11s mesh on your Linux system by either installing a current wireless-testing kernel or by fetching and installing a compat-wireless snapshot of it. You can also presumably test by using the Ubuntu 8.10 alpha release (or another distribution where draft-802.11s mesh is enabled in the kernel configuration). The o11s HOWTO takes you through the kernel compile (if you go that route) as well as creating a Mesh Point interface using iw. Please note that you should not have userspace like NetworkManager running when playing with the mesh.

Hopefully there will be more contributors as more people start to experiment with the mesh stack. For those interested, there are suggested minor as well as more involved improvements.

draft-802.11s and OLPC XO-1

Also perhaps worth mentioning: the mac80211 mesh is not inter-operable with OLPC's mesh at this time. This is because OLPC's implementation is based on an earlier version of the draft (and it includes various other modifications). The open80211s mesh, on the other hand, is a reference implementation that tracks the 802.11s draft as closely as possible.

Sunday, July 20, 2008

fun with old radios

My '73 3.0S is currently not running due to an increasingly wacky project that I am undertaking, so I am planning to drive my dad's '74 3.0CS up to Mt. Rainier in Washington state for my next road trip and Senior Six car rally. The guy that I bought that car from had discarded the original radio and related parts and installed a pretty cheesy CD player which finally stopped working. Before I take this trip, I'd like to make sure that there's working music and I decided to use this as an opportunity to put a proper radio back into the car for my dad.

Those cars could be ordered with a few different radios, and the Becker models are my favorite. On the non-AC cars, the radio just sits beneath the center console vents in a simple plastic panel. I found a beautiful Becker Europa Stereo on eBay and my friend Aron helped me fabricate a panel out of ABS. The result is quite nice!

One of the most interesting things about Becker radios is that they have a special auxiliary input connector on the back. I'm not sure what this was intended for originally (I've heard "traffic monitors") but it makes for a perfect interface to modern equipment, like an iPod.

For $47.96, Becker will sell you a cable that plugs into this connector and terminates into a stereo jack. Plug anything into that jack, and the radio is overridden. I took a speaker out of the car, wired up the radio, amplifier, and iPod on my work bench, and fired them up. The iPod plays through the Europa and everything sounds great!

At this point, I just need to finish up the wiring, replace a broken automatic antenna, and button the center console back up. I'm also going to add a USB "charger" circuit in the car's glove box or under the radio so that the car can charge things like iPods and mobile phones on long trips. This is simply a 5V switching regulator (with spike suppression and some filtering) that will power a USB type-A female connector.

In the mean time, I've obtained a Becker Grand Prix radio for my 3.0S, a close match to what the car originally had. Since I am converting from an AC to a non-AC center console, I'll need to also make a plastic panel and bracket for that car.