WiFi stack prototype works

Blog post by coling on Sun, 2009-07-12 08:44

Screenshot of working WiFi prototypeScreenshot of working WiFi prototype Today I fiddled out the last hurdle on getting my WiFi-card up and running. It only connects to unprotected open wireless LANs, because there is no configuring mechanism implemented yet. Though it is far away from completeness.

On the screenshot, you see Firefox surfing www.haiku-os.org and downloading a 100 MiB file from my ftp server in parallel. The terminal is showing the result of the ifconfig command for my WiFi-card.

I managed to port the FreeBSD WiFi-stack, utilizing Haiku's FreeBSD compatibility layer. Thus I could use the WiFi-card driver for my atheros chipset from FreeBSD without any major changes to its codebase (I had to move some interrupt handler code into driver-specific glue code).

The driver-binary has a size of 500 KiB, due to compiling the WiFi-stack into a static library and statically linking it and the FreeBSD compat layer with the driver. Update: The sources are up in the haiku-wifi repository on www.osdrawer.net (read "For the bravery" down the line for more info on how to get it).

The atheros driver should support every atheros chipset, which are supported by the FreeBSD driver (look in the corresponding FreeBSD manpage for more information on supported chipsets).

Designing a Haiku specific WiFi-stack will be my next step.

For the brave only: The source can be checked out via svn checkout http://svn.osdrawer.net/haiku-wifi/prototype/trunk/wifi. I recommend the 3rdparty subdirectory as checkout location, because the Jamfiles expect themselves there. With jam ath everything needed (customized FreeBSD compat layer, WiFi stack, atheros driver) gets built.

Update: For developing I used a gcc2 build environment and Haiku rev. 31286 was the newest I tested it on.

There are no settings to set to make this driver work. Just put the driver in /home/config/add-ons/kernel/drivers/bin and make a symlink to /home/config/add-ons/kernel/drivers/dev/net/ath. A reboot could be required to make Haiku recognize the new driver.

To check whether your atheros card gets at least detected by this driver, watch the debug messages during the bootphase or look into the /boot/var/log/syslog file. If you see something like

Adding entry for IEEE 802.11 Wireless Ethernet mode autoselect autoselect
Adding entry for IEEE 802.11 Wireless Ethernet mode autoselect autoselect <adhoc>
Adding entry for IEEE 802.11 Wireless Ethernet mode autoselect autoselect <hostap>
Adding entry for IEEE 802.11 Wireless Ethernet mode autoselect autoselect <flag0,adhoc>
Adding entry for IEEE 802.11 Wireless Ethernet mode autoselect autoselect <monitor>
you know that your card is detected

Update2: To connect to a WLAN make sure that it is an unprotected (no WPE, WPA, WPA2) one that doesn't need a password for login. On my Fritz!Box this is called "unverschlüsselten Zugang aktivieren" (activate unencrypted access).

For more information on technical aspects of the hardware I use surf to the bounty proposal on haikuware and select the "Technical Information" tab.

I will give no support for this prototype 'cuz it is a prototype ;-). It is intended for the purpose of gaining knowledge, only.