This Howto is a work in progress, as is the slug with internal wireless. There will be photographs of the WIP and the finished product.
This hardware mod is being carried out on a slug that will, when finished, run debian. I have not run Unslung, SlugOS, or Debian ARM BE and I cannot give any advice on getting the hardware working with those.
For Historical reasons I found myself in possession of a Shuttle PN15 802.11g wireless network card that I wasn't using. The thing is tiny (less than credit card size) and makes a good match to the NSLU2. The PN15 is a USB device with a connection to use an internal USB jumper on shuttle (and other?) motherboards.
The groundwork for this mod has been laid by EnableExtraUSBPorts and many thanks go to its author.
To mount the PN15 onto the slug mainboard and connect the PN15 to one of the extra USB ports that are present on the slug, leaving an ordinary looking looking NSLU2 with an antenna sticking out of the back.
The PN15 was removed from its backplate and stripped of it's sticky-label covering so I could see exactly what chipset it has and because for some reason voiding the warranty seemed like a good idea.
The internal USB cable that the PN15 uses was also stripped of its PVC covering. At this point you should have something very much like the picture below:
After Opening up the slug I thought the best place for the wireless antenna connector was probably below the power connection as that's where the most space is on the back panel. A hole was made using my trusty pocket knife. The plastic is quite soft and a reasonably circular hole was made simply by applying pressure and rotating the blade. It doesn't have to be perfect as there's going to be a washer over it later.
Now the tricky part. R165 and R166 make up USB port 5 and have a little more clearance around them for the novice solderer so these are used for the USB data connections.
The PN15 has two ground wires for some reason, one of which is bare. I've used a little cellulose tape around the bare ground wire as I don't have electrical tape to hand. The bare wire is attached to the ground connection of the power connector. The other ground I've connected up to the ground connection of USB1.
The problem with the +5 line is that the PN15 uses either 350ma or 450ma in transmission mode, depending on which source you believe. As EnableExtraUSBPorts says, the max current output for a USB port is 500ma. This means you can't just hook the power line in from one of the existing ports unless you plan on not using it for bus powered devices. I don't want this limitation so I've gone the other way and attached the power line straight to the 5V line from the power connector. This may or may not be a good idea, I'm not an EE and don't know.
(You'll probably be OK; my NSLU2 power supply claims a 2 A output; the NSLU2 plus a flash drive takes about 500 mA; add another 450 mA for the wireless card and you've still got more than half of the power supply capacity spare for other USB devices. Do check how hot it gets though - you're doubling the heat that has to escape from the box.) (Thanks for that. Algernon is getting a little warmer than emphyrio (stock slug w. debian) and I haven't even loaded a driver for the wireless yet, I'll have to see if it gets too hot when (if) in operation.)
Mounting the PN15 was achieved by finding a blank area of the slug's mainboard between C45 and the power switch and super-gluing in a piece of junk plastic that's about half a millimeter taller than C45:
This half millimetrer is important as if you make it any bigger the PN15 will not fit back into the case. The metal plate (heatsink/spreader?) on the PN15 is then glued onto this. I presume this won't do much harm or block heat dissipation overly - the whole unit comes wrapped in a sticky label so shuttle obviously don't have heat concerns.
Screw the aerial connector into the hole you made earlier and lock it in place with the washer and nut, then put the case back on carefully. You should now have an ordinary looking slug with a wireless aerial connector sticking out of the back:
Install Debian "etch" on the slug in the usual (wired) way. I used installer RC2. Check that the USB device is present using lsusb. Algernon gave this report:
algernon:~#lsusb Bus 003 Device 003: ID 124a:4023 AirVast Bus 003 Device 002: ID 0718:0158 Imation Corp. Bus 003 Device 001: ID 0000:0000 Bus 002 Device 001: ID 0000:0000 Bus 001 Device 001: ID 0000:0000
The top entry there is shows an entry for the manufacturer of the card, AirVast. The second entry is the slug's flash drive in disk1. It looks like disk one and R165/166 are on the same bus, perhaps putting them on different buses would have been better. Too late now! However, this has shown us that wireless card is there and responding, and that the solder was in the right place. The rest is all software.
The shuttle PN15 has limited native driver support under linux but there is a project at prism54 that is still in development is useful. ndiswrapper is x86 only so it's out of the question. Prism54 on the other hand is fully open source and seems to be in active development. The forums have most of the up to date information.
It would appear that the newer PN15G model from shuttle has a beta Linux driver available. This may be a better piece of kit to use but it's not what I had lying around.
My home network uses wpa so I'm going to attempt to use wpa-supplicant to connect up, but I have already been able to see my networks (and my neighbors') through "iwlist scan".
I think at this point I'm declaring this mod a success.
[Note: due to the current state of wireless drivers for the PN15 the software installation for this mod is currently on hold, a write up will appear here when I get it going again. It would appear that prism54 and wpa-supplicant in combination do not (currently) do WPA-PSK particularly well, which it needs for my home network. Data transfer has been acheived to open wireless nets though.]
Profit? This mod has many applications, not least of which would be the ability to have a truly portable slug if combined with MakeABatteryPoweredSlug, though the power requirements may be quite a bit higher with the addition of the wireless card. This *could* be fun at hackers conventions - ie put it in your bag, set it to attach to whatever networks it finds and then run $SCRIPT to spoof people into downloading a picture of your cat or something. Personally I like the idea of having a slug that only needs a power line and a thumb drive.
An alternative internal antenna
I have had some success using the sort of antennas that are fitted internally in laptops. They seem to be equally as sensitive as external antennas of the type David is using. (My experience is not with a slug, but the same principle applies.) I got mine from Ebay; search for "internal wireless" or "laptop antenna". There seem to be various different styles; mine are like small strips of PCB about 4cm long with a thin wire about 6cm long ending in a connector suitable for the wireless card. dead beef