eeeDora WiFi Fix


The default OS on the eeePC isn't bad, but I've seen better Linux implementations, so I decided to take a look at something different - something not Ubuntu-related (for once).

I came across eeeDora, a cut down distro based on Fedora and I have to say, it's quite nice. Looks a bit clunky out-of-the-box but can easily be spruced up and customised. It's a nice light distro taking up just a third of my 4GB solid state disk (after all the extra stuff has been installed for WiFi - see below).

The project homepage is here: http://wiki.eeeuser.com/howto:eeedora

The primary reason for writing this page is because once eeeDora is installed, a software update breaks the WiFi.

Now, I'm new to Fedora and it's variants and anyone who has glanced at other pages on this site will probably suss that I'm no Linux expert, just a button pusher who plugs away at something until it works so this guide may not show best practice. I should also state that this guide is written for eeeDora version 2008-01-25_12h58m with updates applied as of 13/03/08. I imagine a project such as eeeDora will evolve quite quickly so I'm not sure how long this information will be valid for! Hopefully the whole broken-wifi-after-updating problem will be resolved quite quickly anyway.

One of the main differences between a Debian variant such as Ubuntu and a Fedora based distro is that to get extra software you use yum instead of apt-get. An example of this, and one of the first things you may want to obtain, is the OpenOffice Writer application which involves punching the following into a command line...

su -
yum -y install openoffice.org-writer


The -y switch just tells it to answer 'yes' to any questions. A similar command is needed for the spreadsheet application:

yum -y install openoffice.org-calc

.. and so on. As eeeDora is so cut down to begin with, you can really customise your installation to save space, keep speed at a premium and keep your eeePC unclogged!

The remainder of this page shows how to create an eeeDora flash drive installer in Ubuntu, shows how to fix the WiFi after it is broken by a kernel update and wiffles on about WPA encryption...

There are instructions on the eeeDora Wiki explaining how to build a CD from an ISO or a bootable USB flash drive installer. I plumped for the flash drive version and did the following to create a flash drive installer from my Ubuntu laptop. I used a 1GB drive but eeeDora should fit on a 512MB drive. I'm dedicating my whole USB flash drive to this so the following instructions will destroy existing partitions and wipe any data off that drive. Don't follow these instructions to the letter if your USB drive has data on it that you want to keep!

Creating a flash drive installer in Ubuntu:

Insert flash drive and enter the following commands in a terminal:

Log in as superuser:
sudo su

Check the device label for your flash drive with the (-l)ist switch:
fdisk -l

For the purposes of this guide, I'm using /dev/sdx but substitute 'x' with whatever letter is associated with your flash drive. If the flash drive was mounted when you inserted it, unmount it with
umount /dev/sdx1

Note - if you have more than one partition, you may need to repeat this command for any other mounted partitions, e.g. umount /dev/sdx2

Start the fdisk application and connect to your flash drive
fdisk /dev/sdx

Press the following keys as indicated:

List existing partitions:
p

Remove existing partition (repeat for all partitions you want to remove):
d

Create new primary partition (note - <CR> means press RETURN - oh, and that third digit is a 'one'):
n
p
1

<CR>
<CR>

Make new partition active:
a
1


Write new partition table and quit fdisk
w

Ubuntu will mount the new partition so unmount it again:
umount /dev/sdx1

Format the partition as FAT:
mkfs.vfat /dev/sdx1

Install syslinux on the flash drive. Note, if you've never done anything like this before, you may need to enter apt-get install syslinux mtools to get it first.
syslinux -sf /dev/sdx1

Write the master boot loader with lilo. Note, you may need to issue the command apt-get install lilo if you don't already have it installed.
lilo -M /dev/sdx

Remove and reinsert the flash drive to remount.

Download the eeeDora ZIP version. Open the zip archive in Gnome by double-clicking it, then extract the LiveOS and syslinux directories to your flash drive.

Once done, unmount and remove the flash drive. Insert it into the eeePC and enter the BIOS by pressing F2 on the POST screen which shows when the eeePC is first turned on. Set the USB drive as the first hard drive then exit and save changes. The eeePC should now boot into eeeDora from the USB flash drive. Have a poke around and see what you think. It will be slow working from the USB drive but you'll soon get a feel for whether you want to proceed with installing or not.

You can install the Live Image by double-clicking the icon on the Desktop (the default root password is 'eeedora')

For my installation, I removed all existing partitions on the internal solid state drive and installed eeeDora to a single partition. It does throw up a "Failed to mount" error during installation but this can be safely dismissed.

Installation only takes about five minutes, then you can shut down the eeePC, remove the USB flash drive and fire it back up into the new eeeDora installation. All hardware works - so have a play!

Now for the fun part. On my version and at the time of writing, if I run System > Software Updater and allow my eeePC to update - the WiFi will break! It seems the updated kernel doesn't support the Atheros chipset (or something).

To repair it, reboot with a wired network cable inserted. When you reboot, sure enough the WaveLan plugin will state there is no such wireless device. To fix, do the following...

Open a Terminal and run the following command to install some extra bits and bobs. Note that I'm installing the Nano text editor but vi is preinstalled on eeeDora for those who prefer it (or you can use another text editor of your choice).

su -
yum -y install nano gcc gcc-c++ kernel-devel wget make


Once all that is finished, issue the following commands to install the madwifi wireless driver:

wget http://snapshots.madwifi.org/madwifi-ng/madwifi-ng-r2756-20071018.tar.gz

tar xzvf madwifi-ng-r2756-20071018.tar.gz

cd madwifi-ng-r2756-20071018

Issue the following command all on one line with no space between the line wrap:
wget -O madwifi-0933.ar2425.20071130.i386.patch http://madwifi.org/
attachment/ticket/1679/madwifi-ng-0933.ar2425.20071130.i386.patch?format=raw

Apply the patch:
patch -p0 < madwifi-0933.ar2425.20071130.i386.patch

make


Now edit the file /etc/modprobe.d/blacklist and make sure there is an uncommented line that blacklists the ath5k driver....
nano /etc/modprobe.d/blacklist

....you should see:
# Added for EeeDora setup
blacklist ath5k


One more command to issue:
make install

Shutdown and remove the wired network connection. Restart and you should find WiFi is working again. A few other points to note however...

Open up a terminal and log in as superuser. Run a scan using your (now working) WiFi drivers to ensure you can see your wireless network:

su -
iwlist scan


You should be able to join an open or WEP network using the WiFi Radar tool. Joining a WPA protected network seems more complicated however. It is possible to join one by jumping through the following hoops....

First, create a wpa.conf file. I'm sticking it in my home directory for now but you can place it wherever you want...

su -
cd /home/eeedora/
nano wpa.conf


Edit this conf file so it contains the following information:

network={
ssid="insert your ssid here"
scan_ssid=1
key_mgmt=WPA-PSK
psk="WPA key goes here"
}


Save the file and exit Nano.

On the command line, type the following to associate with the wireless network. The command specifies the (D)river (i)nterface and (c)onfig path/file to use:

wpa_supplicant -D madwifi -i ath0 -c /home/eeedora/wpa.conf

Because we didn't specify background operation, our terminal window will be locked running the wireless process so open another and type the following to obtain an IP address:

su -
dhclient ath0


You should now get an ipaddress - use ifconfig to confirm. Pressing CTRL-C in the original terminal window will abort the wireless process and disconnect you from the wireless network.

The above steps check everything is working - but they're not ideal. We can improve on things however...

Firstly having the WPA key listed as plain text in your wpa.conf file is a bit of a security risk. You can encrypt it using this command:

wpa_passphrase "insert your ssid here" "WPA key goes here"


This will return a horribly long hexadecimal PSK which can be inserted into the wpa.conf file in place of the actual WPA key. Note - when placing a key into the wpa.conf file in hexidecimal format you need to remove the quotes. For example....

psk="ASCII key goes in between quotes"
psk=Hex key goes in without quotes


Secondly, the proper wpa_supplicant.conf file resides in /etc/wpa_supplicant so you might want to edit this file with your network settings or move this file out of the way and replace it with your own.

Thirdly, you can run wpa_supplicant in the background by using the -B background switch, so the command issued earlier would look as follows:
wpa_supplicant -BD madwifi -i ath0 -c /home/eeedora/wpa.conf

This saves your terminal window from getting locked into running the process after the command has been issued.

Fourthly, you can specify multiple networks in your config file. Below is an example config specifying a WPA network and a WEP network:

network={
ssid="ssid1"
scan_ssid=1
key_mgmt=WPA-PSK
psk="WPA key goes here"
}
network={
ssid="ssid2"
scan_ssid=1
key_mgmt=NONE
wep_key0="WEP key goes here"
wep_tx_keyidx=0
}


Finally, to run wpa_supplicant at startup and avoid any further command line faffing, do the following:

Open the daemon config file:
nano /etc/init.d/wpa_supplicant

...and ensure it is pointing to the correct .conf path and file that you want to use. By default this will be as below:
conf="/etc/wpa_supplicant/wpa_supplicant.conf"

If your .conf is named differently or lives elsewhere then amend the above line. Save changes (if any) and close Nano.

Open the wpa_supplicant file in /etc/sysconfig
nano /etc/sysconfig/wpa_supplicant

...and edit the following two lines to show as below:
INTERFACES="-iath0"
DRIVERS="-Dmadwifi"


Save changes and close Nano.

Restart the wpa_supplicant daemon (or reboot the eeePC) and it should come back up associated with the WPA network. You'll need to get an IP address if using DHCP so use WiFi Radar to select and connect to the network or issue a dhclient ath0 command as root.

Related articles on this site:
Project homepage
eeePC Disassembly guide
eeePC Bluetooth and USB mods (fitting internal Bluetooth and an extra USB port)
eeePC model 4G review
eeePC Vodafone 3G access via Nokia E90 and Bluetooth
eeePC Tips and Tricks
Trust BT-2400p ultra small Bluetooth adaptor review