Monday, October 02, 2006

I'm trying to get kismet running on the Toshiba Portege I installed Dapper on recently.

It's not turning out to be too easy.

The problem is that the wireless adapter in the laptop, a Toshiba Wireless MiniPCI card, which is just basically a pcmcia Lucent/Agere wireless card with a cardbus controller on a MiniPCI card, won't run in monitor mode.

Initially the card had firmward 8.10 on it, and attempting to run kismet would result in an error about monitor mode being buggy, and not being enabled.

There's references to the firmware versions here.

I found some windows firmware updaters (eventually, since Agere redesigned their site, and don't make any reference to these cards anymore), here, and I attempted to downgrade the firmware to something earlier than 8.xx, however didn't have any luck there. The firmware loaders are for pcmcia cards, and don't detect the MiniPCI card properly, and refuse to update it.

I managed to find a zip file with firmwares that will load here, however unfortunately they are even higher 8.xx versions.

There seems to be a way to force it, detailed here, fiddling in the registry. It has a link to a generic firmware collection, however that server seems to be gone.

I googled around, and found a useful howto, here, that makes references to earlier orinoco kernel modules here, that have work arounds for the buggy monitor mode in the 8.xx firmware, so I went about trying to use those instead.

I downloaded the version that matched the kernel I was using, dapper's stock 2.6.15 686 kernel, however it wouldn't compile, because there's something funny about the pcmcia stuff in the ubuntu kernel.

The newer versions of the patched orinoco drivers wouldn't compile either.

I edited the make file, and stopped it from trying to compile the pcmcia orinoco driver, however because the MiniPCI is a pcmcia card, this didn't work very well.

Strangely, the hostap driver loaded, in both ap and client modes, I ended up with both eth1 and wlan0, and it seemed to be connected to itself.

Monitor mode still wasn't available, so I didn't muck around with this too much.

I decided that I'd try a vanilla kernel, so I downloaded that, 2.6.17, configured it, and waited several hours for it to compile.

I then built it as a deb package, installed it, which seemed to work ok, except for the video being corrupt while the kernel initially boots.

I then went about compiling the hacked orinoco drivers again, and while there was warnings, they compiled properly.

I installed them, and rebooted, the card came up, and had monitor mode available, finally. Kismet ran, and detected a few aps, so it was all working.

I quit kismet, and then discovered that the card didn't want to work properly. The driver must have been spewing errors, because the kernel logger pegged the CPU, and took the system load to 4.

I took the interface down, and it stopped. I then tried using dhclient to reconfigure it against my AP, and received errors.

I tried ejecting the card, even though it's a MiniPCI card, not a pcmcia card, but the pcmcia driver interacts with it. This worked.

I then inserted it again, and the laptop immediately locked up hard.

I think my option now is to try to find a way to change the firmware in linux, via the pcmcia interface, since the windows firmware loaders refuse to, and try to load firmware 6.xx or 7.xx, where monitor mode works properly, without having to use hacked kernel modules to work around broken firmware.

Or else I could replace the MiniPCI card with a non crap one, or just use a pcmcia card, like the Prism cards I've got, but that requires using an external antenna, and fiddling.