Red Hat Bugzilla – Bug 408181
wpa_supplicant service script is completely FUBARed
Last modified: 2007-12-03 17:35:24 EST
Description of problem:
wpa_supplicant service script is completely FUBARed.
Version-Release number of selected component (if applicable):
current release at 2007-11-02
Try to get wpa_supplicant service to work.
Steps to Reproduce:
Additional info: The wpa_supplicant service script won't work and I don't see
how it can ever work the way the script is written. I don't mean to be mean, but
is this stuff not tested or what!!!???
Please be more descriptive.
Speaking closely to topic of your question - looks like wpa_supplicant not
tested by its Fedora maintainers in any configuration w/o NetworkManager.
In what way is it not working? The known issues are that options to enable the
D-Bus interface are used, but that the dynamic initscript dependency calculation
introduced with Fedora 8 broke the manual dependency that made wpa_supplicant
start after the messagebus service, leading to a failure to start at boot. As a
workaround for hte moment, please remove the "-u" option from
The wpa_supplicant initscript picks up $INTERFACES and $DRIVERS configuration
items from /etc/sysconfig/wpa_supplicant but the initscript uses the
configuration items incorrectly. The result is that wpa_supplicant cannot find
the interface and it does not know which driver to use.
This happens every time because the configuration items are passed incorrectly
to the wpa_supplicant program. Would fail any testing.
It doesn't use them incorrectly, the problem is that wpa_supplicant is somewhat
special in the way that it orders and processes arguments. So either the
INTERFACES & DRIVERS needs to be INTERFACES1, DRIVERS1, INTERFACES2, DRIVERS2,
INTERFACES3, DRIVERS3, etc, and there needs to be CONFFILE1, CONFFILE2,
CONFFILE3, OR the onus is on the person who's configuring the supplicant
_manually_ (at which point you have enough knowledge to figure this out) to make
the arguments correct. Piling on more shell logic in the initscript to parse
space-separated arguments in each of DRIVERS INTERFACES CONFFILE is just way too
ugly and totally not an option.
Have you tested this?
wpa_supplicant requires a '-i' before the interface name and a '-D' before the
driver name but the initscript does not add these bits when it uses $INTERFACES
and $DRIVERS from /etc/sysconfig/wpa_supplicant.
This is correct: wpa_supplicant -D wext -i wlan0 ...
This is wrong: wpa_supplicant wext wlan0 ... <=== the way it is now
I've changed my initscript to add these missing bits and it now works. Sadly, my
linux-fu is too weak to write production scripts so I'll leave that to someone else.
I do agree that it would be overkill to modify the initscript to handle more
than a single wlan. That would seem to be a very rare case. Perhaps just a
comment in the initscript pointing out that it is for a single wlan would suffice.
In that case, to be completely correct, the variables should drop the plurals
and become $INTERFACE and $DRIVER (in both the initscript and the config file).
That assumes the variable names won't conflict with any other network scripts. A
better choice might be $WLAN_INTERFACE and $WLAN_DRIVER. Picky, picky, eh!
Please reread my comments. You, as the person modifying
/etc/sysconfig/wpa_supplicant, need to put the -i and -D in yourself. SO, in
that file, you likely need:
I have added comments in that file in the next build to let users who need to
modify the arguments know what to put there.