Difference between revisions of "Rtl8187 wireless"

From ArchWiki
Jump to: navigation, search
(What to do if your connection always times out?)
m (Lowering the rate: spelling, grammar)
(35 intermediate revisions by 12 users not shown)
Line 1: Line 1:
[[Category:Communication and network (English)]]
+
[[Category:Wireless Networking]]
[[Category:HOWTOs (English)]]
+
 
This page describes how to get the '''rtl8187''' wifi-driver working
 
This page describes how to get the '''rtl8187''' wifi-driver working
  
Note: The rtl8187 driver is included in vanilla 2.6.23!
+
The rtl8187 chip is made for usb-cards/dongles. It supports 802.11(a)/b/g and the following encryptions: WEP, WPA and WPA2. The rtl8187 driver is in the kernel now.
  
 +
== Using the driver ==
  
The rtl8187 chip is made for usb-cards/dongles
+
Make sure that you have loaded the rtl8187 module with
 +
# modprobe rtl8187
 +
Then run
 +
# dmesg | grep rtl8187
 +
You should see some output like this <pre> usbcore: registered new interface driver rtl8187 </pre>
 +
If you see that line everything should be OK
  
It supports 802.11(a)/b/g and the following encryptions: WEP, WPA and WPA2
+
If everything is right, you should have two new interfaces: wlan0 and wmaster0
 +
If you do not see wlan0 just run
 +
  # ip link set dev wlan0 up
  
The driver's source is released under the GPL
+
To list all available wifi-networks just run
 +
# iw dev wlan0 scan
  
= Installing the driver =
+
For more information about configuring your wifi-network see here: [[Wireless_Setup#Part II: Wireless management|Wireless management]].
  
If you are on 2.6.23 or above you have to enable CONFIG_RTL8187 in your kernel-config.
+
== What to do if your connection always times out? ==
  
You can check if this option is enabled in your current kernel by executing:
+
The open source driver suffers from a lot of tx excessive retries and invalid misc errors for some unknown reason, resulting in a lot of packet loss and it keeps disconnecting, some times instantly.
zcat /proc/config.gz | grep CONFIG_RTL8187
+
If it outputs
+
CONFIG_RTL8187=m
+
or
+
CONFIG_RTL8187=y
+
then your kernel includes the rtl8187 driver
+
  
 +
=== Lowering the rate ===
  
If you are using anything lower than 2.6.23 you can choose between the following methods:
+
The solution can be found in this thread: https://bbs.archlinux.org/viewtopic.php?pid=299642
  
== Compiling the module from the source-code ==
+
Just set the rate to 5.5
 +
iwconfig wlan0 rate 5.5M auto
  
No HOWTO yet
+
Fixed option should ensure that it doesn't change the rate on its own, thus making the connection a bit more stable:
  
== Patch your 2.6.22 kernel ==
+
iwconfig wlan0 rate 5.5M fixed
  
Note: if you are already running 2.6.23 or later this is not necessary anymore - just enable the Realtek 8187 USB support in your kernel-config
+
Alternativelly find the $POST_UP option and append the above options to your profile config file:
  
At first you have to get the kernel-sources
+
POST_UP="iwconfig wlan0 rate 5.5M fixed"
After that you'll need to download two patches: one for the rtl8187 driver and one for EEPROM_93CX6 (rtl8187 requires EEPROM_93CX6-support)
+
  
Save the following link as EEPROM_93CX6.patch (download it to your harddisk with wget -O EEPROM_93CX6.patch $URL):
+
Try various rates until you get the optimal setting, with no disconnection. In this case 12Mbits, as shown below:
  
[http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=9467d64b0e88763914c01f71ddf591b166c4f526;hp=7dcca30a32aadb0520417521b0c44f42d09fe05c  EEPROM_93CX6.patch]
+
POST_UP="iwconfig wlan0 rate 12M fixed"
  
Then save the following link as rtl8187.patch (download it to your harddisk with wget -O rtl8187.patch $URL):
+
Now calling;
  
[http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=605bebe23bf6ac66c0a717e663a7baa2f981294d;hp=4b914dc0493edff19ff698a18198a173a14ba9d2 rtl8187.patch]
+
netfcg2 -c <wireless profile>
 +
or
 +
  netcfg-menu
 +
and choosing your profile works without extra commands.
  
Now extract your kernel sources, cd into the kernel-source directory
+
=== Lowering the txpower ===
and run
+
patch -Np1 -i $path/to/EEPROM_93CX6.patch
+
patch -Np1 -i $path/to/rtl8187.patch
+
  
make menuconfig
+
You can try lowering the transmit power as well. This may save power as well:
Now activate: <pre> Device Drivers  ---> Misc devices  ---> EEPROM 93CX6 support </pre> (I compiled it directly into the kernel with [*])
+
  
Then go to: <pre> Device Drivers ---> Network device support  ---> Wireless LAN  ---> Wireless LAN (IEEE 802.11) -> Realtek 8187 USB support </pre>
+
  iwconfig wlan0 txpower 5
(I compiled this as module [m])
+
  
What if you can't find "Realtek 8187 USB support" in the kernel config menu?
+
or even as low as 0. Valid settings are from 0 to 20, auto and off for the stock kernel driver.
Don't panic - make sure you activated EEPROM 93CX6 support <pre> Device Drivers  ---> Misc devices  ---> EEPROM 93CX6 support </pre> and the Generic IEEE 802.11 Networking Stack (mac80211) <pre> Networking  ---> Wireless  ---> Generic IEEE 802.11 Networking Stack (mac80211) </pre>
+
  
 +
=== Setting rts and fragmentation thresholds ===
  
Now you can save your kernel-config and start compiling
+
Default iwconfig options have rts and fragmentation thresholds off. These options are particularly useful when there are many adjacent APs or in a noisy environment.
After a reboot the module rtl8187 should be available.
+
You can load it like this:
+
modprobe rtl8187
+
You can also add rtl8187 to the MODULES-section in your rc.conf
+
  
If you want to add rtl8187 support 'The Arch-Way' make sure to add "patch -Np1 -i ../foo.bar" to your kernel-PKGBUILD
+
The minimum value for fragmentation value is 256 and maximum is 2346. In many windows drivers the maximum is the default value:
  
=Using and testing the driver/Troubleshooting=
+
  iwconfig wlan0 frag 2346
 
+
Make sure that you have loaded the rtl8187 module with
+
modprobe rtl8187
+
Then run
+
dmesg | grep rtl8187
+
You should see some output like this <pre> usbcore: registered new interface driver rtl8187 </pre>
+
If you see that line everything should be OK
+
 
+
== Using the driver ==
+
 
+
If everything is right, you should have two new interfaces: wlan0 and wmaster0
+
If you don't see wlan0 just run
+
ifconfig wlan0 up
+
 
+
To list all available wifi-networks just run
+
iwlist wlan0 scan
+
 
+
For more information about configuring your wifi-network see here: [http://wiki.archlinux.org/index.php/Wireless_Setup#Setup_and_Boot http://wiki.archlinux.org/index.php/Wireless_Setup#Setup_and_Boot]
+
 
+
== What to do if your connection always times out? ==
+
 
+
The solution can be found in this thread: http://bbs.archlinux.org/viewtopic.php?pid=299642
+
 
+
Just set the rate to 5.5
+
iwconfig wlan0 rate 5.5M auto
+
 
+
Actually this worked for a while but it would still start revving out, so making the last
+
item "fixed" ensures it does not spin.  Btw. If your wireless card has already gone into
+
meltdown issuing this command will get it working again.
+
 
+
  iwconfig wlan0 rate 5.5M fixed
+
  
I have also tried setting this in the IWOPTS, but it does not seem to be taking, so now what I do until I get this sorted out is:
+
For rts minimum is 0, maximum is 2347. Once again windows drivers use maximum as the default:
netcfg -c <your wireless profile>
+
iwconfig wlan0 rate 5.5M fixed
+
  
And then it never times out (at least for me)
+
iwconfig wlan0 rts 2347
  
=Misc Links=
+
== See also ==
*[http://rtl-wifi.sourceforge.net/ Project-page of the rtl-wifi driver project]
+
*[http://wireless.kernel.org/ The Linux Wireless project]
 +
*[http://aircrack-ng.org/doku.php?id=r8187 Aircrack-ng information for rtl8187 chips]

Revision as of 11:00, 22 May 2013

This page describes how to get the rtl8187 wifi-driver working

The rtl8187 chip is made for usb-cards/dongles. It supports 802.11(a)/b/g and the following encryptions: WEP, WPA and WPA2. The rtl8187 driver is in the kernel now.

Using the driver

Make sure that you have loaded the rtl8187 module with

# modprobe rtl8187

Then run

# dmesg | grep rtl8187
You should see some output like this
 usbcore: registered new interface driver rtl8187 

If you see that line everything should be OK

If everything is right, you should have two new interfaces: wlan0 and wmaster0 If you do not see wlan0 just run

# ip link set dev wlan0 up

To list all available wifi-networks just run

# iw dev wlan0 scan 

For more information about configuring your wifi-network see here: Wireless management.

What to do if your connection always times out?

The open source driver suffers from a lot of tx excessive retries and invalid misc errors for some unknown reason, resulting in a lot of packet loss and it keeps disconnecting, some times instantly.

Lowering the rate

The solution can be found in this thread: https://bbs.archlinux.org/viewtopic.php?pid=299642

Just set the rate to 5.5

iwconfig wlan0 rate 5.5M auto

Fixed option should ensure that it doesn't change the rate on its own, thus making the connection a bit more stable:

iwconfig wlan0 rate 5.5M fixed 

Alternativelly find the $POST_UP option and append the above options to your profile config file:

POST_UP="iwconfig wlan0 rate 5.5M fixed"

Try various rates until you get the optimal setting, with no disconnection. In this case 12Mbits, as shown below:

POST_UP="iwconfig wlan0 rate 12M fixed"

Now calling;

netfcg2 -c <wireless profile>

or

  netcfg-menu 

and choosing your profile works without extra commands.

Lowering the txpower

You can try lowering the transmit power as well. This may save power as well:

iwconfig wlan0 txpower 5

or even as low as 0. Valid settings are from 0 to 20, auto and off for the stock kernel driver.

Setting rts and fragmentation thresholds

Default iwconfig options have rts and fragmentation thresholds off. These options are particularly useful when there are many adjacent APs or in a noisy environment.

The minimum value for fragmentation value is 256 and maximum is 2346. In many windows drivers the maximum is the default value:

iwconfig wlan0 frag 2346

For rts minimum is 0, maximum is 2347. Once again windows drivers use maximum as the default:

iwconfig wlan0 rts 2347

See also