DD-WRT is an open source router firmware based on Linux. The open source community realised that Linksys had used GPL licenced code to build the firmware of their WRT54 home market routers. The community partitioned Linksys to release the software code they had written in order to compile with the terms of the GPL.
Unusually, Linksys open sourced all the software and not just the sections which used the GPL licence, and thus the DD-WRT project was born. It's aim is to turn a £60 router into a £600 router, for as many routers as it can.
DD-WRT's website has thousands of pages of documentation, but it seems to be lacking the bit which tells you how and where to get the bit you want. So here it is. The instructions below tell you how to find out which version you need to download for your particular hardware type.
On the bottom of the router there is a panel which lists the model number and version. Goto the DD-WRT Supported Devices page and match the model to a Hardware type and hardware version.
- Various sizing restrictions mean that on some routers you may not be able to install the full version so make a note of the DD-WRT version required column.
- The File Version pages tells you what the file names mean. In most cases you want the standard version.
- Go to DD-WRT's download area.
- Choose whether you would like stable or release candidates: stable usually means 'the old version' and release candidate means 'newer, but a bit untested'. I usually go for a release candidate for the new features. If you feel the need you can report bugs back to the project.
- Select the version number.
- Earlier you made a note of the hardware type from the supported devices list, so select that type now.
- Earlier you made a note of the manufacturer from the supported devices list, so select that type now.
- Select the model number of your router and the version number (from the under side of the router).
- Select the File Version usually
dd-wrt.v24_std_generic.bin.
Now, you can follow their instructions to do the installation.
I was looking for an on-line Bandwidth Calculator to find out how many megabytes there were in 100 megabits. Simple I know but hay! I found quite a few, but unfortunately they were all rubbish! I was surprised how many bad implementations there were, some even submitted the form to the remote web server for it to work out. What a waste! Anyway after trawling the wastelands, I decided to write my own.
'B' indicates bytes and 'b' indicates bits so for example, if you want to find out how many megabytes of transfer you can get from a 100 megabit network card then:
- Enter 100 in the In unit box.
- Select Mb from the In unit drop down.
- Select MB from the Out unit drop down.
Unfortunately, I have not figured out how to embed Javascript in a blog page, so here is the Bandwidth Calculator in action. For completeness the code is listed below.
<html>
<body>
<script language="Javascript">
//<!--
// This code was written by BigSoft Limited.
// Please include this message when you use the code in any form.
// (c) BigSoft Limited 2008
// MIT License
//
function recalc()
{
var frm = document.forms['converter'];
var in_val = frm.in.value;
var in_unit = frm.inunit.options[frm.inunit.selectedIndex].value;
var out_unit = frm.outunit.options[frm.outunit.selectedIndex].value;
// convert in to bits
var bits;
switch (in_unit)
{
case 'b' : bits = in_val ; break;
case 'B' : bits = in_val * 8 ; break;
case 'Kb': bits = in_val * 1024 ; break;
case 'KB': bits = in_val * 1024 * 8 ; break;
case 'Mb': bits = in_val * 1024 * 1024 ; break;
case 'MB': bits = in_val * 1024 * 1024 * 8 ; break;
case 'Gb': bits = in_val * 1024 * 1024 * 1024 ; break;
case 'GB': bits = in_val * 1024 * 1024 * 1024 * 8 ; break;
case 'Tb': bits = in_val * 1024 * 1024 * 1024 * 1024 ; break;
case 'TB': bits = in_val * 1024 * 1024 * 1024 * 1024 * 8; break;
}
// convert bits to required unit
var answer;
switch (out_unit)
{
case 'b' : answer = bits ; break;
case 'B' : answer = bits / 8 ; break;
case 'Kb': answer = bits / 1024 ; break;
case 'KB': answer = bits / 1024 / 8 ; break;
case 'Mb': answer = bits / 1024 / 1024 ; break;
case 'MB': answer = bits / 1024 / 1024 / 8 ; break;
case 'Gb': answer = bits / 1024 / 1024 / 1024 ; break;
case 'GB': answer = bits / 1024 / 1024 / 1024 / 8 ; break;
case 'Tb': answer = bits / 1024 / 1024 / 1024 / 1024 ; break;
case 'TB': answer = bits / 1024 / 1024 / 1024 / 1024 / 8; break;
}
frm.out.value = answer;
}
// -->
</script>
<form name="converter">
<table>
<tr>
<td>In unit</td>
<td><input name="in" value="0" onChange="recalc();">
<select name="inunit" onChange="recalc()">
<option value="b">b</option>
<option value="B">B</option>
<option value="Kb">Kb</option>
<option value="KB">KB</option>
<option value="Mb">Mb</option>
<option value="MB">MB</option>
<option value="Gb">Gb</option>
<option value="GB">GB</option>
<option value="Tb">Tb</option>
<option value="TB">TB</option>
</select>
</td></tr>
<tr>
<td>Out unit</td>
<td><input name="out" value="0" onFocus="blur();">
<select name="outunit" onChange="recalc();">
<option value="b">b</option>
<option value="B">B</option>
<option value="Kb">Kb</option>
<option value="KB">KB</option>
<option value="Mb">Mb</option>
<option value="MB">MB</option>
<option value="Gb">Gb</option>
<option value="GB">GB</option>
<option value="Tb">Tb</option>
<option value="TB">TB</option>
</select>
</td>
</tr>
</table></form>
</body>
</html>
Ever searched a set of files under Windows XP knowing that the search string you are looking for is there, but having the machine tell you it can't find anything?
This is caused by Windows trying to be too clever for its own good. If a file ends with a particular extension, then it looks for a filter that knows how to search that particular type of file and gives you back some useful results. In principle this is not a bad idea but they neglected to set a default on the file type system. If you do a lot of programming, then there are a lot of files which are text but end with an extension that is not recognised e.g. (*.c, *.java, *.php). Even if you associate the file with a text reader it doesn't make any difference.
There is a Microsoft Support document explaining how to correct this problem but it's not very easy to find. I have added the guts of it here so that others won't have to waste as much time as I did looking for it.
Microsoft say there are two ways to correct the problem: change the registry to add a text filter to that extension, or a set a default for all file types.
Adding an extra filter is a waste of time as you will only have to do the same thing again next time it happens.
Things can get lost in the ether so am taking a copy of the Microsoft page and reposting it here:
- Click Start, and then click Search. If your Start bar doesn't have Search, then load Explorer and click the Search button at the top. Or click the task bar and press F3.
- Click Change preferences
- Click With Indexing Service (for faster local searches). If you already have indexing switched on, this will read Without Indexing Service.
- Click Change Indexing Service Settings (Advanced). Note that you do not have to turn on the Index service.
- On the toolbar, click Show/Hide Console Tree icon.
- In the left pane, right-click Indexing Service on Local Machine, and then click Properties.
- On the Generation tab, click to select the Index files with unknown extensions check box, and then click OK.
- Close the Indexing Service console.
You don't have to log in again for the changes to take effect. And that's it - Happy Hunting!
Just come back from a week in San Francisco. Had a great time seeing the sights. Did the obligatory Alcatraz tour around the island, went on a cable car, watched a car drive too fast over a bump in the street and saw sparks flying out as its exhaust scraped along the ground.
There are 2 things we did that we really enjoyed.
We ate at King of Thai Noodle House about 3 times during our stay. The food was served in a canteen style but with table service. You could see the chefs cooking the food, which arrived at your table in about 5 minutes, delivered by an army of waitresses.
For an afternoon we hired a GoCar (on Beach Street) and drove around the city. A GoCar is a 3 wheeled cart wrapped around a moped engine. It has 2 seats, 3 wheels (2 at the front and 1 at the back) and a small boot. The cart is fitted with a GPS programmed with a guided tour of the city. While you are driving down the road, as well as giving you directions it tells you about the places and structures you are passing. You can take as many detours as you like and go where you want. It was top fun!
I can't wait until Google does the Street View for the rest of the world.