General Notes
From ME2000
Harrier's weblog of me2000 development. It's a page of stuff to do with latest ME2000 changes, current development, etc. Latest days at the bottom.
This is split into a couple of sections, whith this page covering the main thread of development.
- All of the Gateworks Avila stuff is covered in the Gateworks Notes.
- Also in development is the Linux on a Routerboard from Scratch HOWTO.
- All of this SBC stuff will be included in the college project, a description covered in ME2000v3 Proposal.
Added 19 April 2006 - Initial start of ME2000v3
!New build from the ground up - ME2000 V3
Note: The first entry of the new me2000 build is a heavily synopsised version of events, many hours were put in on this, I just can't remember all the detail.
A few weeks ago I had a meeting with my Masters project advisor, and it turns out they're interested in wireless networking, wan, etc. They'd heard (and previously installed) me2000, so we kinda talked about re-building me2000 from the ground up. This time, though, with a nice web front end, remote upgradable, etc.
Well, in the last few weeks, I've done some prototyping. I started from the ground up. I stuck syslinux on a compact flash. I downloaded a stock 2.4.27 kernel, because it's the same kernel as my debian server at home. There were several tweaks required, including initrd support. After "make bzImage", I copied the bzImage file onto the CF, and modified the syslinux.cfg to use that as the kernel "kernel=bzImage".
!Kernel and Init
I also needed an initrd (initial ram disk) and an "init" process. I picked busbox, because it is a compact multi-call binary that is used in many embedded systems. It can also emulate the init process. I got my hands on busybox, and using the excellent guide [here], I got a compressed ram disk image (initrd - initial ram disk) created, which is loaded into /dev/ram0 by syslinux at boot.
After a few initial failures, I got the kernel booting, and the boot messages coming out on hyperterminal. There were a few tweaks to the kernel and the syslinux.cfg to get the console on the serial port. The serial port was essential at this stage of development, because there was no other way to see what was going on in the box.
Once the kernel was successfully loading buysbox as init, I added in an inittab file in /etc.
::sysinit:/etc/init.d/rcS ::askfirst:/bin/sh
This was to kick of the overall "god" script (rcS) which runs all the scripts in /etc/rcS.d in order, depending on their name, S00 to S99. This is basically to kick off all the startup scripts for the daemons, networking, etc., in the right order at bootup. The rcS script is basically:
for i in /etc/rcS.d/S??*
do
case "$i" in
*.sh)
echo "Starting $i ..."
. $i
;;
*)
echo "Starting $i ..."
$i start
;;
esac
done
so if the script it's running ends in .sh, it calls it directly, otherwise it passes the "start" parameter to it. This seems to be a common way of doing things.
Then the inittab runs an 'sh' on the console, which is the serial port in this instance.
!What's currently running
So, a few of the features that are prototyped:
savesettings.sh - saves everything under /etc into a tar file on the compact flash.
loadsettings.sh - untars the settings.tar file just after the mounts are done at boot.
done before any other boot scripts so the saved settings are present.
sshd - based on OpenSSH_3.9p1 and OpenSSL 0.9.7e
boot keygen - if this is the first boot of an install, the system will automatically
generate new ssh keys for the system.
httpd - brand new web interface with fancy looking menu system. All the cgi is
based on plain old 'sh'.
cfgmgr - multi-call binary that will query and update an entry in the
/etc/network/interfaces file. Called from the web front end.
Some of the daemons that are running:
sshd httpd snmpd syslogd
some of the scripts that are working
interfaces wireless (for wireless settings) (need to add loads of stuff around madwifi features) keygen.sh (generates ssh keys if not present at boot) mepci (detects hardware and insmod's relevant modules)
!Web Interface
The current state of the web-front end is that you can look at a few settings of the system, iwconfg, ifconfig, cpu info, erc. There is also one prototype of an update. The interface.sh script displays a form with existing eth0 settings, allows the user to change them, and when Apply is clicked, it uses cfgmgr to update the /etc/network/interfaces file. Have to add a button somewhere to save settings. Might add an icon somewhere that you can click on to save settings. We dont want that file on the CF to be written to very often. Better to make a load of changes, then save them all at once.
There's also protection added to the web interface in the form of a username and password. Currently the default username is 'root', with the default passord 'admin'.
Added 19 April 2006 - cfgmgr
cfgmgr - multi-call binary for updating configuration files. By harrier.
cfgmgr is going to be the main program for intellegently updating the config files on the sytem. It currently knows how to handle the /etc/network/interfaces file, but will be extended to handle wireless.opts, plus a whole host of other config files.
The interesting thing about this is that each file type will be known about. In that there will be a set of parameters for each type of call to the binary.
If called in it's 'query_interface' context
query_interface -i eth0
it will return the information regarding eth0
If it's called in it's 'set_interface' context, then it will update /etc/network/interfaces file.
set_interface -i eth0 -a <address> -n <netmask> -g <gateway>
A web front end has been developed to make use of these initial functions, with more to follow.
Added 19 April 2006 - httpd
!httpd
The simplest method of getting a web browser onto the box was to use the busybox built-in server. This is a VERY thin daemon, only taking about 3k (at a guess). It's fairly limited, but does all we need to get the web front end working on the system. Any files found in cgi-bin directory will be executed, and must have the correct execute permisisons. I've done most of the pages as 'sh' scripts which echo html (or anything else, for that matter) to the output. This has minimal impact on the footprint of the OS, as sh is already present. It's kindda like php in reverse. The script is executed, and lumps of html are echoed where needed. The sh scripts echo everything needed for the browser to render the relevant page.
The httpd has a config file (/etc/httpd.conf) with a single line, which simply limits the cgi script execution to a known user/password. A facility will be added to allow users to change this.
The httpd also handles POSTs, GETs. In a post we interrogate $QUERY_STRING and parse it out to get the passed in variables.
Added 21 April 2006
!Routerboard 532
Routerboard powered up. Set of jumpers to select between power socket and POE. Also another set of jumpers to select between the different voltage ranges. I changed voltage range set because I'm using the same 12V psu as the wrap for development.
Was a pain in the ass to get the thing booted, default baud is 115000, that was ok, but the board seemed to hang at "Starting Services...". Turned our you need a fully wired serial cable. Check the routerboard manual.
Booted and ready to start building a kernel for the CF....
Addition:
Got the linux image from the www.routerboard.com website. Happend to be a 128Mb image and I happend to have a 128MB flash card. 'dd'd it on to the CF with a CF-PCMCIA adapter in the laptop. Booted grand. distro doesnt have vi. :)
Anyway, I'll start looking at the CF format, and compile up a mips kernel.
Added 22 April 2006
!Kernels
!12:20
I got buildroot to build the mipsel flavour fo the gcc compiler, for the cross compilation of the kernel. This is a little-endian compiler that will build binaries for the routerboard MIPS processor. Kernel 2.4.30 was initially selected because there is a patch available for it for the routeboard. Wouldnt compile straight off, so I got 2.4.31 for which there is also a patch. However, the "little-endian" selection in the config menu isnt available, so .config has to be edited each time to get it to use the mipsel compiler rather than the mips compiler (big-endian).
!15:42
Well, got a 2.4.31 kernel booting. Patched it with the patch on the mikrotik website.
Press any key within 1 seconds to enter setup. Booting CF Loading kernel... done setting up elf image... OK jumping to kernel code Kernel panic: VFS: Unable to mount root fs on 01:00
Kernel panic is an excellent sign, means the kernel is compiled correctly for a little-endian target, is on the right place on the CF (0x4000 for a 128MB card), and is executable by the routerboard. The guide at http://www.cosam.org/computers/hardware/rb500.html was very handy in getting the new kernel onto the CF. Now I gotta check the kernel paramaters to see if they're pointing at /dev/cfa2.
!18:20
Found that the kernel I was copuing onto the CF was 18MB, which was writing past the first 4megs of the CF, blowing away the second partiton. Stripping the kernel makes it 1.7megs. Very reasonable. did an fdisk on /dev/dhc on the laptop (it sees the CF in the pcmcia adapter as /dev/hdc) and made a new partiton, and did an mke2fs on it.
Booted, still unable to mount.
Made vmlinux again, inserted the section for the kernel parameters:
echo "root=/dev/cfa2 gpio=16375 console=ttyS0,115200" >kernel.params
EDIT: added rw to the boot params so root filesystem comes up read-write.
echo "root=/dev/cfa2 rw gpio=16375 console=ttyS0,115200" >kernel.params mipsel-linux-uclibc-objcopy --add-section kernparm=kernel.params vmlinux
then stripped vmlinux.
mipsel-linux-strip vmlinux
On copying down the kernel, to offser 0x4000 the CF using:
dd if=vmlinux of=/dev/hdc bs=512 seek=32
and booting, I got:
Kernel panic: No init found. Try passing init= option to kernel.
which means the kernel is now able to see /dev/cfa2 on the compact flash.
Then copied busybox (that I'd compiled for mips earler) onto the second partition on the CF, and rebooted. No message at all after "jumping to kernel code", which means that the kernel found init, and executed it. Now, what needs to be sorted is the console messages. The kernel should have a shed load going out to the console. Once this is sorted, it'll allow better debugging of the scripts that have to be ported from the wrap version.
!19:00
Got sh running on the serial port, can type commands and browse around the os. What was preventing the sh running properly was the fact that there were no character devices in /dev for console and ttyS0. I saw this when I had mounted partition 2 of the CF to /mnt on the laptop, and was poking around. So, in /dev, I usued the following commands:
mknod ttyS0 c 4 64 mknod ttyS1 c 4 65 mknod console c 5 1 mknod tty c 5 0
and also changed inittab in /etc to be a very simple version
::sysinit:/etc/init.d/rcS ::askfirst:/bin/sh
This runs the rcS script, then an sh on the console. rcS simply consists of:
!/bin/sh echo echo "Welcome to MIPS ME2000!" echo
so when I then transferred the CF (again) to the routerboard, I saw the welcome message followed by
Please press Enter to activate this console.
Upon hitting enter, I got a "/ #" prompt. Succesful shell on the console.
!20:45
The root filesystem is coming up as readonly, so I found a temporary way around this is to issue the command:
mount -o remount rw /
Then I can run commands that require writing /var, etc., including ifconfig. I'll add this into the mountall.sh script that's run very early on in the boot sequence.
Once I'd copied in the relevant files into /etc/network, I could 'ifup' the three on-board NICs, and start pinging out of the routerboard. Interesting that eth0 comes up as the middle connector on the board.
Added 23 April 2006
Not as good a day today. Tried orinoco drivers. Doesnt compile for mips. Had a look at the source for a while, but gave that up for now.
Also tried the madwifi. Got them compiling, buit the drivers (wlan.o) segfaults.
Added Monday 24 April 2006
!19:25
The sshd wasn't allowing connections. I was getting
ssh_exchange_identification: Connection closed by remote host
Anyway, it turns out that I didnt have Unix sockets compiled into the ketnel, it was compiled as a module. Once I compiled this option into the ketnel, this particular problem went away. Now when I ssh into the box, the client hangs, and I see a process
/usr/sbin/sshd: root@notty
rather than the expected
/usr/sbin/sshd: root@ttyp0
2 minutes, later, I'd done a mknod on a few devices in the /dev directory, namely
mknod ttyp0 c 3 0 mknod ttyp1 c 3 1
and the sshd allowed me to log in remotely for the first time. yipee!
daveh@animal:/dev$ ssh 10.4.11.15 -l root root@10.4.11.15's password: BusyBox v1.2.0-pre0 (2006.04.22-13:32+0000) Built-in shell (ash) Enter 'help' for a list of built-in commands. #
!20:48
Once I got the ssh working, it became pretty easy to catch up to the wrap version of ME2000v3. I scp'd a lot of the scripts over. I re-build busybox with httpd support, as per the x86 version. Copied over the contents of the www directory from the wrap. One thing, I can't scp over busybox itself while it's running (init process), so I had to pull the CF and use the laptop to replace busybox with the new version.
I create the few symlinks needed in /etc/rcS.d, and put the /etc/init.d scripts in the right place to start sshd, networking and httpd, then rebooted the bugger.
Up came all three interfaces on the board, the sshd started grand, and the httpd started no bother. Browse to the box, upcomes the new ME2000v3 web interface, just like the wrap board. It even picked up the 3 on-board NICs. The cfgmgr binary isnt present (yet to compile it for mips), but it's still looking grand.
Enough for tonight, time for some BF2...
Added Tuesday 25th April 2006
!18:12
Was researching the madwifi segfault issue, and came across this beauty at http://asus.czela.net/routerboard/insten.txt :
4. modutils-2.4.27 were compiled, necessary for madwifi, it is not possible insmod ath_pci using busybox insmod
So I'll give that a go.
EDIT This turns out not to be the case. The madwifi modules will load fine with the busybox modutils.
Added Sunday 30th April 2006
!12:07
During the week I ordered a Gateworks board (GW2348-4 Four Channel Network Processor) from Microcom (http://store.microcom.us/). I got a 2% discount because I talked to the guy nicely. The board I ordered is a true -40-85C board, unlike the Valemount, which is actually using 0-70C parts. Also, this board has a CF slot. Although it's expensive, at $280, it's a much better board than the valemount version, which costs $314.
Recompiled the cfgmgr util for mips and copied onto the routerboard. Once I added awk into the busybox list of utils, I could edit the ethernet settings of eth0. cfgmgr stands at 17k so far.
Added Tue 2nd May 2006
!23:48
Finally looked into the issue of the root filesystem mounting as read-only at boot.
Handy website: http://www.cyberciti.biz/howto/question/static/linux-kernel-parameters.php
From that, just add 'rw' to the list of kernel paraneters, and it comes up read-write.
Still having the problem of 'ksyms -a' not showing any kernel symbols (modutils 2.4.27)
Added Wed 3rd May 2006
!01:30
Finally got modutils working on the routerboard. Had to change the source where there were some functions commented out. At thte bottom of modstat.c, the contents of get_kernel_info() was commented out. This was preventing the utils from seeing any of the kernel symbols. Once I changed this, 'ksyms -a' could list the symbols exported by the kernel, and insmod could check these same symbols when loading modules. I still have to investigate this more to see how this could be possible.
So, with the madrifi modules insmod'd:
ath0 IEEE 802.11g ESSID:"MATRIX1"
Mode:Managed Frequency:2.462 GHz Access Point: 00:04:75:65:16:D0
Bit Rate:11 Mb/s Tx-Power:16 dBm Sensitivity=0/3
Retry:off RTS thr:off Fragment thr:off
Encryption key:7765-6269-78 Security mode:restricted
Power Management:off
Link Quality=26/94 Signal level=-69 dBm Noise level=-95 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
!20:30
Compiled in a the prism driver in the routerboard kernel, and a uPCI card I happened to have here came up ok.
Also, managed to get the orinoco.c file compiling. There is an issue in the mips version of io.h in the kernel. The iow_p macro has been modified at some stage to have an extra call to a SLOWDOWN macro, including a ';' before and after. This cause the ternary statement in hermes.h to break. Horrible kludge, I removed the "; SLOWDOWN;" from the iop_w macro definition, and it compiles ok now. The orinoco card I have here doesn't come up yet, but the kernel does see the card's cardbus bridge. Might still be something else needed in the kernel, or it might just be that the card is fubar. Will try rebuilding the kernel for the wrap and trying it in that.
Added Sun 7th May 2006
!13:00
I set up a menu on the daveh login on the development machine so that environment variables are set up for either MIPs or i386 development. Mainly to handle stuff like the cross compiler prefix, the location of the root filesystem, etc. This is so that I can easily switch between enviroments, and the makes know where to put the built files.
echo echo "Development Environment" echo "-----------------------" echo "1. x86" echo "2. MIPS" echo -n "Enter selection: " read choice case $choice in 1) blah...
Hopefully I'll be adding a third option in there soon, for IXP425 board development.
I'm going to look into embedding a compressed root filesystem into the kernel so that an upgrade would be a simple case of copying the one file onto the relevant place in the CF or NAND.
Added Fri 12th May 2006
Complete re-build from scratch for Wrap.
I wanted to do a fresh build, to see if the notes below would get me through a complete rebuild. They did. Almost. The handiest thing was the modutils change to get madwifi working. Also, I did up a makefile for the buildroot that will get a madwifi snapshot and build it as part of the buildroot package, so I can tar up the whole thing into a rootfs.gz without manually copying bits and pieces into the root filesystem.
I also did up a script to make the devices in the /dev directory.
!/bin/sh # sudo mknod console c 5 1 sudo mknod tty c 5 0 sudo mknod core b 1 6 sudo mknod full b 1 7 sudo mknod ram0 b 1 0 sudo mknod ram1 b 1 1 sudo mknod hda b 3 0 sudo mknod hda1 b 3 1 sudo mknod hda2 b 3 2 sudo mknod hda3 b 3 3 sudo mknod hda4 b 3 4 sudo mknod kmem c 1 2 sudo mknod men c 1 1 sudo mknod null c 1 3 sudo mknod port c 1 4 sudo mknod ppp c 108 0 sudo mknod ptmx c 5 2 sudo mknod ptyp0 c 2 0 sudo mknod ptyp1 c 2 1 sudo mknod ptyp2 c 2 2 sudo mknod ptyp3 c 2 3 sudo mknod ptyp4 c 2 4 sudo mknod random c 1 8 sudo mknod ttyS0 c 4 64 sudo mknod ttyS1 c 4 65 sudo mknod ttyp0 c 3 0 sudo mknod ttyp1 c 3 1 sudo mknod ttyp2 c 3 2 sudo mknod ttyp3 c 3 3 sudo mknod ttyp4 c 3 4 sudo mknod urandom c 1 9 sudo mknod vsys c 1 10 sudo mknod zero c 1 5 ln -s ../proc/kcore kcore ln -s ../proc/self/fd/2 stderr ln -s ../proc/self/fd/0 stdin ln -s ../proc/self/fd/1 stdout ln -s ram0 ramdisk
The sudo command is so that my user can call a root command to make the node in the dev directory in the buildroot filesystem.
Also, the getty's in the inittab were removed, and
::askfirst:/bin/sh
was added after the rcS script was called so that we'd get a shell on the console port.
Particular attention had to be paid for the modules options in the kernel. It seems when the version is switched on, modutils doesnt parse the symbols properly. WHen you swithc the symbol versions off in the kernel, it works. Very important to get madwifi loaded...
I'll do something similar for a buildroot OS for a routerboard, and post it up on the mikrotik wiki.
Added Mon 15th May 2006
The Gateworks board is in the country. The billing and shipping address got mixed up, and the address in 'incomplete', so it's re-scheduled to be delivered home tomorrow. Looking forward to playing with that...
18:40
Most interesting. While I waws working on the Linux on a Routerboard from Scratch HOWTO, and building everything from scratch repeatedly, I happend to use the new buildroot makefiles to build madwifi into the rootfs. I had happened to have a fresh busybox install, with it's own modutils built, so I gave insmod a go, even though some webpages say that the embedded modutils dont work with madwifi. Well, the version I'm using does actually work.
ath0 IEEE 802.11g ESSID:"MATRIX1"
Mode:Managed Frequency:2.462 GHz Access Point: 00:04:75:65:16:D0
Bit Rate:11 Mb/s Tx-Power:16 dBm Sensitivity=0/3
Retry:off RTS thr:off Fragment thr:off
Encryption key:7765-6269-78 Security mode:restricted
Power Management:off
Link Quality=25/94 Signal level=-70 dBm Noise level=-95 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
So, no more needing to 'fix' the modutils. This way will also mean smaller footprint.
21:40
Did some more work on the Linux on a Routerboard from Scratch HOWTO. Also, got dropbear working, so I can use the ssh/scp stuff now. Much lighter than OpenSSH. Some problem with /dev/random being blocked, so I deleted it and softlinked it to /dev/urandom. Not ideal, but it'll do for the moment.
Added Tue 16th May 2006
Updated Gateworks Notes.
Added Sun 28th May 2006 - Madwifi Throughput Test
Got the 532 and the Avila running madwifi associated togethter, 532 in master mode, because wlanconfig works on it, whereas it doesnt work on the Avila yet. Anyway, linked /www/kcore to /proc/kcore (64M file), and did a wget from the Avila. 2.1 to 2.3 MB/sec throughput on channel 161 (5.8Ghz). SNR was about 30, and no encryption was used.
Added Fri 2nd June 2006 - Grub on wrap with ext2fs CF
After much messing around with info from different sites, I eventually got the kernel booting with a rootfs.gz. The menu.lst config for grub is as follows:
serial --unit=0 --speed=38400 --word=8 --parity=no --stop=1 terminal --timeout=10 serial default 0 timeout 5 title ME2000v3 root (hd0,0) kernel /bzImage init=/initrd root=/dev/ram0 rw console=ttyS0,38400n8 reboot=bios initrd /rootfs.gz boot
Added Sat 10th June 2006 - Prepping a CF with grub
Prepping a CF with grub for a wrap.
Added Sun 11th June 2006 - wireless.opts with TXPOWER and DISTANCE
Started work on the boot sequence to pick up settings in wireless.opts. Found an issue with the madwifi, the interface must be UP for txpower to be applied. So there's a new script S41txpower.sh to set the power on the cards after the S40network script has been run to bring up the interfaces. S39wireless.sh applies the relevant wireless settings before bringing up the interfaces.
Anyway, TXPOWER in /etc/network/wireless.opts can be changed to anything betweem 0 and 17 for my particular CM9. The DISTANCE setting, also in that particular file, changes the distance in metres. Untested with this version so far, but the previous releases of madwifi worked at distance. Also, scripts can handle 'Master' or 'Managed' mode, and for CHANNEL, use the channel number in 2.4 or 5.8 ranges, 1-11, or 161 etc.
So, all changes for the network and wireless settings can be edited, then run savesettings.sh which saves all the /etc directory tree into a tar file on the Compact Flash filesystem. This tar file is extracted very early in the boot sequence so the saved settings get picked up by all the boot scripts.
So:
vi /etc/network/interfaces
for the network settings.
vi /etc/network/wireless.opts
for the wireless settings.
savesettings.sh
to save the settings.
reboot
Machine will boot with the new settings.
Added Sun 11th June 2006 - Snapshot Build released
For anyone who wants to play with it, I've done a snapshot build for wrap.
It can be found here, and is called me2000v3-x86-110606.bin.gz. Download it, gunzip it, and dd or physdiskwrite.exe it onto a 32MB (or bigger) Compact Flash card. Stick it in a wrap board with a CM9 card in it, and boot the bugger. Dropbear ssh is running on it, so you can ssh to 10.4.11.5 (historical choice).
Network Settings in /etc/network/interfaces
Wireless Settings in /etc/network/wireless.opts
Master (access point) or Managed (client) mode.
Distance setting
TxPower setting
No fancy front end yet, this is just a basic version to test the CM9 drivers, which is the first officially released version of madwifi (0.9.0).
Use 'savesettings.sh' to save settings, and reboot.
Added Sat 17th June 2006 - Geekfest on d'hill
A few of us got together on d'hill for a few beers, and also has an attempt to connect madwifi at distance. Not very good success, unfortunately. While we could see an SNR of about 14, it seems that it didnt associate properly. The channel would lock on for a while, then start scanning again. Distance was set to 40,000m. I reckon it's the sequence of applying the settings to the card. The drivers had no problem with the local access points.
Also, earlier in the week, I'd build a snapshot build for all three boards, wrap, rb and avila. So I was able to demo the differences in the bootsequences of the three to the lads.
Added Fri 23rd June 2006 - Got a batch of Compact Flash Cards
The 25 32MB CFs I got on E-Bay arrived. Nice Cannon High-Speed ones and all, with cases.
Added Sat 24th June 2006 - Routing script added
Added a new file to etc called routes. The format is as follows:
# Static routes file. # Each line should be in the format: # network netmask gateway metric # # Example Line (without the '#', obviously) :) #10.4.112.0 255.255.255.0 10.4.112.1 20 10.4.112.0 255.255.255.0 10.4.11.1 20
and a very basic script to apply the routes at boot, called S42routes.sh
#!/bin/sh
#
# Very basic script to read in the contents of the /etc/routes file and call
# 'route add' with each entry in the file.
# June 2006 - harrier
#
cat /etc/routes | while read network netmask gateway metric
do
if [ -n "$network" -a -n "$netmask" -a -n "$gateway" -a -n "$metric" ]
then
comment=`echo $network | cut -b1`
if [ "$comment" != "#" ]
then
route add -net $network netmask $netmask gw $gateway metric $metric
fi
fi
done
Added Thu 29th June 2006 - Bridging Added
Yesterday I added in the brctl command into the build, and made a release. Unfortunately (as I said in my post in the forums), it wasnt tested. Turns out there was a kernel parameter missing. The bridging! :) This resulted in the following message:
"add bridge failed: Package not installed"
when trying to add a bridge with 'brctl addbr br0'. Anyway, I've just added in Bridge support in to the kernel. I booted a wrap with the new kernel, and an atheros card associated to my local access point. I created the bridge as follows:
brctl addbr br0 brctl addif br0 eth0 brctl addif br0 ath0 ifconfig br0 10.5.11.6 netmask 255.255.255.0 broadcast 10.5.11.255 up
But it wouldnt ping. On searching google for "brctl madwifi", I came across the following link. In that, I spotted
iwpriv ath0 wds 1
I had the laptop connected to the ethernet port on the wrap, with a ping running (unsuccessfully) to a server on the same physical segment as the access point. As soon as I issued the wds command, the laptop was able to ping the server with 0% packet loss. An scp of a 5meg file gave about 600KB/sec, which is a good first effort (in 802.11b mode). A wget of a larger file gave 600-620KB/sec.
One more thing for now. I just tried it on the Gateworks board, and it gave marginally better throughput on the same file. average 630KB/sec. I must try and get a 5.8 setup in place.
Picture of the three boards



