# Realtek RTL8188CE WLAN Problems - Probably solved ?

## robdd

Hi All,

I'm posting this in the hope that it may help others with the same or similar problems.

I recently bought a Toshiba Satellite C850 laptop with a Realtek RTL8188CE WLAN card. Loaded Gentoo, and most things seem to work just fine. InitiallyI couldn't get the WLAN card to work, but a bit of forum searching and after remembering to look in /var/log/messages I realised the card needed firmware. So, emerged linux-firmware and "Bingo !" I have wlan0 in ifconfig. All good so far, BUT very soon after I tried to use the wireless interface it would hang. Here's an extract from var/log/messages showing the firmware loading and the final reset fail message.

```
Jul 24 07:20:02 lark udevd[1536]: starting version 171

Jul 24 07:20:02 lark kernel: r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded

Jul 24 07:20:02 lark kernel: r8169 0000:03:00.0: irq 41 for MSI/MSI-X

Jul 24 07:20:02 lark kernel: snd_hda_intel 0000:00:1b.0: irq 42 for MSI/MSI-X

Jul 24 07:20:02 lark kernel: r8169 0000:03:00.0: eth0: RTL8105e at 0xffffc9000067e000, e8:40:f2:be:c4:98, XID 00c00000 IRQ 41

Jul 24 07:20:02 lark kernel: Using firmware rtlwifi/rtl8192cfw.bin

Jul 24 07:20:02 lark kernel: ieee80211 phy0: Selected rate control algorithm 'rtl_rc'

Jul 24 07:20:02 lark kernel: rtlwifi: wireless switch is on

Jul 24 07:20:02 lark kernel: HDMI status: Codec=3 Pin=7 Presence_Detect=0 ELD_Valid=0

Jul 24 07:20:02 lark kernel: EXT3-fs (sda5): using internal journal

Jul 24 07:20:02 lark kernel: kjournald starting.  Commit interval 5 seconds

Jul 24 07:20:02 lark kernel: EXT3-fs (sda6): using internal journal

Jul 24 07:20:02 lark kernel: EXT3-fs (sda6): mounted filesystem with writeback data mode

Jul 24 07:20:02 lark kernel: kjournald starting.  Commit interval 5 seconds

Jul 24 07:20:02 lark kernel: EXT3-fs (sda8): using internal journal

Jul 24 07:20:02 lark kernel: EXT3-fs (sda8): mounted filesystem with writeback data mode

Jul 24 07:20:02 lark kernel: Adding 2101020k swap on /dev/sda3.  Priority:-1 extents:1 across:2101020k 

Jul 24 07:20:02 lark start-stop-daemon: pam_unix(start-stop-daemon:session): session opened for user nobody by (uid=0)

Jul 24 07:20:02 lark /usr/sbin/gpm[2158]: *** info [daemon/startup.c(136)]: 

Jul 24 07:20:02 lark /usr/sbin/gpm[2158]: Started gpm successfully. Entered daemon mode.

Jul 24 07:20:03 lark kernel: r8169 0000:03:00.0: eth0: link down

Jul 24 07:22:41 lark kernel: wlan0: authenticate with 00:14:bf:dc:0e:50 (try 1)

Jul 24 07:22:41 lark kernel: wlan0: authenticated

Jul 24 07:22:41 lark kernel: wlan0: associate with 00:14:bf:dc:0e:50 (try 1)

Jul 24 07:22:41 lark kernel: wlan0: RX AssocResp from 00:14:bf:dc:0e:50 (capab=0x411 status=0 aid=3)

Jul 24 07:22:41 lark kernel: wlan0: associated

Jul 24 07:22:41 lark kernel: wlan0: moving STA 00:14:bf:dc:0e:50 to state 1

Jul 24 07:22:41 lark kernel: wlan0: moving STA 00:14:bf:dc:0e:50 to state 2

Jul 24 07:22:41 lark kernel: wlan0: moving STA 00:14:bf:dc:0e:50 to state 3

Jul 24 07:26:58 lark kernel: wlan0: deauthenticating from 00:14:bf:dc:0e:50 by local choice (reason=3)

Jul 24 07:26:58 lark kernel: wlan0: moving STA 00:14:bf:dc:0e:50 to state 2

Jul 24 07:26:58 lark kernel: wlan0: moving STA 00:14:bf:dc:0e:50 to state 1

Jul 24 07:26:58 lark kernel: wlan0: moving STA 00:14:bf:dc:0e:50 to state 0

Jul 24 07:27:03 lark kernel: cfg80211: Calling CRDA for country: EC

Jul 24 07:27:03 lark kernel: rtl8192c_common:rtl92c_firmware_selfreset(): 8051 reset fail.

```

I did a bit more searching, but couldn't find an exact answer to my problem, although I did find the Linux drivers at the Realtek web site:

http://www.realtek.com/downloads/downloadsView.aspx?Langid=1&PNid=48&PFid=48&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true#RTL8188CE

They looked pretty much the same as the ones in the /lib64/firmware/rtlwifi/ directory that were loaded with linux-firmware, but it looked like there were later versions with different names (no helpful README as far as I could see):

```
lark ~ # ls -l /usr/src/misc/rtl_92ce_92se_92de_linux_mac80211_0005.1230.2011/firmware/rtlwifi/

total 276

-rwxr-xr-x 1 root root  2115 Dec 30  2011 Realtek-Firmware-License.txt

-rwxr-xr-x 1 root root 13540 Dec 30  2011 rtl8192cfw.bin

-rwxr-xr-x 1 root root 14818 Dec 30  2011 rtl8192cfwU.bin

-rwxr-xr-x 1 root root 14800 Dec 30  2011 rtl8192cfwU_B.bin

-rwxr-xr-x 1 root root 22978 Dec 30  2011 rtl8192defw.bin

-rwxr-xr-x 1 root root 20526 Dec 30  2011 rtl8192defw_12.bin

-rwxr-xr-x 1 root root 80208 Dec 30  2011 rtl8192sefw.bin

-rwxr-xr-x 1 root root 88856 Dec 30  2011 rtl8192sefw.old.bin

```

Now we *know* that size is not important, but the rtl8192cfwU_B.bin file looked to be the latest version AND it was bigger,so I just copied that over the top of the rtl8192cfw.bin file in the /lib64/firmware/rtlwifi/ directory and re-booted. And now the WLAN has stayed up long enough for me to post this.

Please let me know if there's a more elegant/correct solution   :Very Happy: 

Happy Gentoo'ing - Rob.

----------

## tharasix

Resurrecting an old post, but problems with the RTL8192CE chip persist.  I recently had the intermittent disconnect issue, and I think I solved it, since I've gone over two hours without a drop, which is a new record since I upgraded to kernel 3.7.1.

The first thing I did was copy rtl8192cfw.bin from the tarball Rob linked to /lib/firmware/rtlwifi.  Here's the contents of that part of the tarball as of today (the README is my own):

```
mandos rtlwifi # ls -l

total 328

-rw-r--r-- 1 root root   187 Jan 17 02:42 README

-rw-r--r-- 1 root root  2115 Jan 17 02:42 Realtek-Firmware-License.txt

-rw-r--r-- 1 root root 11216 Jan 17 02:42 rtl8188efw.bin

-rw-r--r-- 1 root root 16192 Jan 17 02:42 rtl8192cfw.bin

-rw-r--r-- 1 root root 14818 Jan 17 02:42 rtl8192cfwU.bin

-rw-r--r-- 1 root root 14800 Jan 17 02:42 rtl8192cfwU_B.bin

-rw-r--r-- 1 root root 31376 Jan 17 02:42 rtl8192defw.bin

-rw-r--r-- 1 root root 20526 Jan 17 02:42 rtl8192defw_12.bin

-rw-r--r-- 1 root root 80208 Jan 17 02:42 rtl8192sefw.bin

-rw-r--r-- 1 root root 88856 Jan 17 02:42 rtl8192sefw.old.bin

-rw-r--r-- 1 root root 11662 Jan 17 02:42 rtl8723fw.bin

-rw-r--r-- 1 root root 22996 Jan 17 02:42 rtl8723fw_B.bin
```

I too, went with the bigger-is-better approach.  That seemed to slow the rate of disconnects, but not fix them.  I then created /etc/modprobe.d/rtl8188ce.conf per several suggestions around the web:

```
options rtl8192ce fwlps=0 ips=0
```

That seemed to do the trick.  I'll see if the next update to linux-firmware breaks things again, but it seems that passing those options to the rtl8192ce driver is the key.  Note that some people complained that the connection to their access point was weaker with those options set, but my Link Quality didn't change appreciably after the change (67 to 66).

----------

## consus

Even more -- with fwlps=1 my card goes insane and lost connection every minute (reason 7). This bug was around for at least 6-7 months. And because it's firmware-related and it's RealTek's job to fix it I think we're fucked.

----------

