- Reporting bugs
- Relevant software
- Knowing what wireless driver you use
- Kernel panics / Kernel hangs
- Other issues - Fixes for the stable kernel series requirements
- Getting the latest and greatest Linux wireless drivers
- Distribution specific notes
- Identifying the bug
- iw event log
- increase debugging in the kernel log
- Reporting bugs in NetworkManager
- Reporting bugs in wpa_supplicant
- Reporting bugs in drivers or mac80211
- When will your kernel issue be fixed ?
Wireless drivers are just one component of the software stack necessary for wireless devices to function. There are also userspace components, namely NetworkManager, wpa_supplicant, Dbus, wireless-tools, wireless-regdb, CRDA, iw and possibly many more (as always, there are lots of options to choose from).
It is important for you to try to distinguish what these are when reporting issues. If unsure you can check out user support IRC channel and ask there.
Knowing what wireless driver you use
If you are unsure of which wireless card you have or which driver you are using, run the lspci -k command in a terminal (note that the -k option for lspci is available in version 3.0.0 or later). Some example output follows:
$ lspci -k | grep -A3 "Network controller" 0c:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02) Kernel driver in use: iwl3945 Kernel modules: iwl3945
Kernel panics / Kernel hangs
Kernel panics are kernel bugs, and should be reported immediately. Kernel hangs can be kernel bugs and should be reported as well. Keep in mind you must first ensure your distribution is running the latest stable kernel which matches upstream. You can check that by looking at the v2.6 kernel archives or if you are running the actual latest stable kernel simply by looking at http://kernel.org (another option is the Linux kernel.org finger banner). If you are say on 126.96.36.199 and see there is a 188.8.131.52 you should firs try out 184.108.40.206.
Other issues - Fixes for the stable kernel series requirements
Non-kernel panic or non-hang issues still need to be reported but to better assist Linux wireless developers you are encouraged to try the latest wireless drivers first so the issues can be fixed first upstream and then the respective backport fixes can be propagated down to the older kernel stable series. Reason for this is the stable kernel series has a requirement of having a respective fix in Linus' tree first before applying it to any old stable kernel release. If you are using your distribution's kernel chances are very high you are not using Linus' tree directly but an old stable kernel release.
If you are not sure if your issues is driver or userspace specific you can check asking on our user support IRC channel for help in trying to make that determination.
If you determine you have issues with your drivers you are encouraged to try the latest and greatest wireless drivers. You have a few options, these are covered below.
Getting the latest and greatest Linux wireless drivers
Why not Linus' tree? – because John pulls from him so you already get his stuff
We elaborate on these below.
Using John's wireless-testing git tree
John Linville is the Linux wireless maintainer and as such his tree is used to push patches upstream to be queued for the next kernel release. Patches pushed into his tree eventually make it to David Miller's tree for the next stable kernel. David then pushes his changes down to Linus and Linus blesses a new release. For more elaborate details you can refer the Linux wireless developer documentation. What you need to know John's tree is the point of entry for any wireless patch.
To use John's tree directly you are expected to know how to configure your kernel, compile it, and load it. If you're up for that you can use our git-guide for reference on how to use git and then clone this tree:
You can use compat-wireless to get the latest and greatest drivers as well. This basically takes what John has and applies some compatibility patches and gets you going with the latest and greatest on older kernels. You are expected to be able to run 'make' and 'sudo make install' and 'sudo reboot'. For further details you should read the compat-wireless documentation.
Use Stephen Rothwell's linux-next git tree
This is similar to using John's tree but with the added benefit of getting not only the latest and greatest Linux wireless drivers but also the latest *everything* (technically all the -next git trees). You may want this if you have issues with other devices on your system. Read the git-guide and then check out his tree (gitweb):
Why are you not recommending Linus' tree?
John's tree is based on Linus' tree so by testing his tree you test Linus' tree already and you get the latest Linux wireless drivers as well. This is after all the Linux wireless page.
Distribution specific notes
Distributions may have a few notes which they can add here to help their users in the process of reporting bugs for Linux wireless.
Identifying the bug
In order to help developers help you better you can do some work on your part to try to narrow bugs down better. If you are unsure about where the bug lies you can start by turning off NetworkManager and its attached wpa_supplicant and then try running wpa_supplicant yourself with your own configuration file. NetworkManager keeps its configuration internally and uses Dbus to relay to wpa_supplicant its configuration settings. To try to reproduce a configuration file similar to the one NetworkManager uses you can check the log file used by NetworkManager (/var/log/messages in most some systems) to review the settings used. If you can still reproduce the issue then try using wireless-tools or iw to connect manually. You will only be able to use wireless-tools or iw to connect manually if your wireless connection *does not require* WPA or WPA2. For connections with WPA or WPA2 you *need* to use wpa_supplicant.
To stop NetworkManager use:
# Red Hat based systems sudo /sbin/service NetworkMananger stop # Debian based systems (Ubuntu is one) sudo /etc/init.d/NetworkManager stop sudo killall -TERM wpa_supplicant
iw event log
Please install iw and provide the output of the iw event -t in your bug report. The -t is to add timing information.
increase debugging in the kernel log
We recommended these to be enabled:
CONFIG_MAC80211_HT_DEBUG=y CONFIG_MAC80211_VERBOSE_PS_DEBUG=y CONFIG_MAC80211_VERBOSE_DEBUG=y
If using compat-wireless you can edit config.mk and enable them there. Note that each driver may also have their own respective debug parameters so this could also help but usually it is best to first just use the iw event log and the kernel log to report an issue.
Reporting bugs in NetworkManager
Reporting bugs in wpa_supplicant
You can report bugs in the hostap mailing lists.
Reporting bugs in drivers or mac80211
You should report them on the Linux wireless mailing list.
When will your kernel issue be fixed ?
Understanding how bugs actually get fixed and fixes get propagated through the kernel is important to understanding when and how your specific issue may be fixed upstream. It should also help you as a user understand why using bleeding edge can tend to help accelerate the pace for a bug fix.
Getting fixes in to wireless-testing first
cfg80211, mac80211, or wireless driver bugs will always be fixed first on the wireless-testing git tree. Once a bug is fixed there it will be determined by the developer and community whether the fix is also required for older stable kernel releases, if it is it will undergo the process described below.
Getting fixes in to stable kernel releases
If a patch submitted for inclusion into wireless-testing is a stable fix candidate the patch will be annotated as such prior to submission with a note towards the bottom of the patch commit log for stable:
Once the patch gets merged onto John's tree, John Linville (wireless maintainer) will determine whether or not the patch also fixes an issue on Linus' tree; and if so it gets submitted to David Miller (networking maintainer) so that David can then propagate the fix to Linus. Once the patch gets merged onto Linus' tree an e-mail will be sent to email@example.com and the patch will be either directly queued or ported for review on the stable-review mailing list. If no objections are raised the patch then gets merged onto the respective stable kernels.
Getting the fix in your Linux distribution
Linux distributions which make official tagged release stick to a series of stable kernels for each release. This is contrary to rolling distributions which always just keep on the latest and greatest all the time. Distributions like Ubuntu, Debian, RHEL, Fedora are not rolling distributions, distributions like Gentoo and Arch are rolling distributions. Non-rolling distributions usually stick to supporting only one kernel per tagged release. The kernel they pick for use on a release is based on the date of the targeted release. Updates to the kernel will be made on a Linux distribution once a new stable kernel release with a newer extraversion is released. The extraversion is the last number in a 4 series number release, so in 220.127.116.11 the extraversion would be 2.
When a fix cannot be propagated to stable releases
Not all fixes will be propagated to stable releases of the Linux kernel. It is better to understand what fixes will be merged onto stable kernel releases than to consider which fixes will not. Fixes which will be accepted for stable kernel releases will vary but a general rule of thumb is:
- Kernel oops
- Security flaws
- Memory leaks
- Regressions (issues introduced into newer kernels which did not exist in older kernel releases)
- Critical fixes
What fits into a Critical fix category are left to the judgment of the subsystem maintainer. Unfortunately for users the reality of this model is some minor fixes which can help a user out on a stable kernel will not be merged into new stable kernel release, but this is also why new kernels are always encouraged, and also why we have come up with bleeding edge compat-wireless releases and stable compat-wireless releases.