There could be another reason your card is not starting up on boot, because I had the same problem, and I run FC5 and ndiswrapper.
The problem I was finding is that NICs are only given 5 seconds to make a link with the access point, and then the "no link present, check cable?" message comes on and the device is shut down--so you won't see it as up in ifconfig.
I'm using a Belkin N5d7050 with 128b WEP encryption, and 5 seconds is just way to short for it to establish the link. It takes my card between 30 and 40 seconds to get a link, so I needed to extend the time the system gives it.
The timeout for checking if there's a link is controlled by a function called check_link_down() in the file /etc/sysconfig/network-scripts/network-fuctions (Fedora Core 5).
The way it works is the script ifup-eth (etc/sysconfig/network-scripts) calls the function check_link_down() which checks your wireless link (wlan0 on my system--wlan is considered an eth device) to see if it is connected to the AP. If there is no link between the card and the AP it fails and you get the "no link present, check cable?" message at boot.
The tool that checks if the link is present is ethtool, and it is called in the check_link_down function.
The wireless card has to sync up to the AP, and if it's encrypted it takes a bit longer (naturally).
So, what I did to make it work was just give the card more time to sync up. Check_link_down() looks like so:
if [ -x /sbin/mii-tool -o -x /sbin/ethtool ]; then
if ! LC_ALL=C ip link show dev $1 2>/dev/null| grep -q UP ; then
ip link set dev $1 up >/dev/null 2>&1
while [ $timeout -le 10 ]; do
if [ $m -eq 1 ] || [ $e -eq 1 ] ; then
if [ $m -eq 2 ] && [ $e -eq 2 ] ; then
So, what you can see from that is we have a timeout counter ($timeout), which increments up to 10 times. If we get to 10 and the link still isn't present then we've timed out and we get the fail message.
Looking further down, we see usleep 500000. That means we wait for .5 seconds each time we loop through the while statement to give the link a chance to sync up.
If you multiply 10 tries by .5 seconds a try, you find out your wireless card only has 5 seconds to sync up with the access point. This is not enough time for my card.
My fix was easy, I just changed the usleep 500000 (.5 seconds) to usleep 5000000 (5 seconds).
Don't worry, you won't have to wait the entire 50 seconds because the while loop has a return statement that breaks the loop if the link is present. You only have to wait long enough for ethtool to see a good link (mine ususally takes 7 passes through to get sync'd up). Once it sees the link, it will break the loop and continue to boot as normal.