Airlink AWLL5099 / Realtek RTL8188CUS / RTL8192CU -- Connection ceases

OS: OpenSUSE 12.3 x86_64
Wireless: N-only, Authentication: 802.1x
USB Dongle: Airlink AWLL5099 (Chipset RTL8188CUS)
Kernel Driver in use: RTL8192CU

dmesg output for “rtl”:
4.034618] rtl8192cu: Chip version 0x10
4.078913] rtl8192cu: MAC address: 00:21:2f:30:ec:74
4.078917] rtl8192cu: Board Type 0
4.078988] rtlwifi: rx_max_size 15360, rx_urb_num 8, in_ep 1
4.079010] rtl8192cu: Loading firmware rtlwifi/rtl8192cufw.bin
4.079061] usbcore: registered new interface driver rtl8192cu
4.084530] ieee80211 phy0: Selected rate control algorithm ‘rtl_rc’
4.084813] rtlwifi: wireless switch is on
5.933805] rtl8192cu: MAC auto ON okay!
5.950126] rtl8192cu: Tx queue select: 0x05

iwconifg wlan0 output (ESSID, AP MAC MASKED):
wlan0 IEEE 802.11bgn ESSID:“XXXMASKEDXXX”
Mode:Managed Frequency:2.412 GHz Access Point: 00:00:00:C0:FF:EE
Bit Rate=150 Mb/s Tx-Power=20 dBm
Retry long limit:7 RTS thr=2347 B Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=61/70 Signal level=-49 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:4 Missed beacon:0

lsusb -v output for RTL8188CUS device:
Bus 008 Device 002: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0bda Realtek Semiconductor Corp.
idProduct 0x8176 RTL8188CUS 802.11n WLAN Adapter
bcdDevice 2.00
iManufacturer 1 Realtek
iProduct 2 802.11n WLAN Adapter
iSerial 3 00e04c000001
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 46
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 4
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)

Relevant package output from rpm -qa | egrep “(wireless|iw|kernel-firmware)” command:wireless-tools-30.pre9-28.2.1.x86_64
libiw30-30.pre9-28.2.1.x86_64
iw-3.7-2.1.1.x86_64
kernel-firmware-20130114git-1.2.1.noarch
wireless-regdb-2012.06.08-2.1.1.noarch

uname -a output:
Linux host_masked 3.7.10-1.1-desktop #1 SMP PREEMPT Thu Feb 28 15:06:29 UTC 2013 (82d3f21) x86_64 x86_64 x86_64 GNU/Linux

What works: Association with AP, authentication using 802.1x, passing data
Configured using: YaST (not using network manager, I need wireless to work from the console)

Symptom: After passing a undisclosed amount of data, the wireless connection abruptly stops. No errors reported in dmesg, /var/log/message, /var/log/warn.
Workaround: Remove RTL8192CU using rmmod, using modprobe rtl8192cu to insert, repeat when data connection drops.

Other symptoms observed: Hotplugging the device to reset it sometimes results in Kernel panic and system reboots, restarting the network stack using ‘service network restart’ does not allow for the usb wireless device to resume normal operations. You must either reboot, rmmod-modprobe, or try and wave the magical dead chicken over the workstation.

I did find a related post relevant to the RTL8192CU driver and a major bug discovered but no further information was posted in regards to the kernel fix. I would be more than happy to roll my own vanilla kernel to get this resolved. I also did investigate using the Realtek driver but it is inappropriate for use as no longer designed to run on the more recent releases of the linux kernel, inclusive of OpenSUSE 12.3.

Thank you.

I can completely confirm the described problems with the rtl8192cu driver, that comes with the kernel 3.8.9-5-pae #1 SMP Mon Apr 29 08:37:40 UTC 2013 (5e42670) i686 athlon i386 GNU/Linux.

(The driver from the Realtek website worked perfect, until the recent kernels didn’t allow any longer to compile the rtl8192C_3.4.4_4749 driver package offered there.
Realtek apparently has lost the interest to update its driver. The 3.4.4_4749 driver was introduced 2012/11/12 for the 3.08 kernel and left unchanged since.)

Now the rtl8192cu driver that comes with the kernel seems to work fine at first try, but within minutes, the connection is lost, but the system doesn’t seem to take any note of this fact, no warnings, just the browser cannot connect anymore and gives up to load a website.

# dmesg

[11796.068088] usb 3-1: new high-speed USB device number 14 using ehci-pci
[11796.203497] usb 3-1: New USB device found, idVendor=0bda, idProduct=8176
[11796.203512] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[11796.203521] usb 3-1: Product: 802.11n WLAN Adapter
[11796.203528] usb 3-1: Manufacturer: Realtek
[11796.203535] usb 3-1: SerialNumber: 00e04c000001
[11796.510262] cfg80211: Calling CRDA to update world regulatory domain
[11796.702418] cfg80211: World regulatory domain updated:
[11796.702440] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[11796.702448] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[11796.702455] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[11796.702461] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[11796.702467] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[11796.702473] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[11796.702551] cfg80211: Calling CRDA for country: DE
[11796.741739] cfg80211: Regulatory domain changed to country: DE
[11796.741758] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[11796.741765] cfg80211: (2400000 KHz - 2483500 KHz @ 40000 KHz), (N/A, 2000 mBm)
[11796.741771] cfg80211: (5150000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[11796.741777] cfg80211: (5250000 KHz - 5350000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[11796.741783] cfg80211: (5470000 KHz - 5725000 KHz @ 40000 KHz), (N/A, 2698 mBm)
[11797.213174] rtl8192cu: Chip version 0x10
[11797.372515] rtl8192cu: MAC address: 00:e1:4c:03:e1:55
[11797.372545] rtl8192cu: Board Type 0
[11797.372980] rtlwifi: rx_max_size 15360, rx_urb_num 8, in_ep 1
[11797.373151] rtl8192cu: Loading firmware rtlwifi/rtl8192cufw.bin
[11797.373342] usbcore: registered new interface driver rtl8192cu
[11797.434007] ieee80211 phy0: Selected rate control algorithm ‘rtl_rc’
[11797.436748] rtlwifi: wireless switch is on
[11799.542124] rtl8192cu: MAC auto ON okay!
[11799.614513] rtl8192cu: Tx queue select: 0x05
[11800.043575] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
[11803.468802] wlan0: authenticate with 00:1f:3f:b0:d8:d1
[11803.488906] wlan0: send auth to 00:1f:3f:b0:d8:d1 (try 1/3)
[11803.496376] wlan0: authenticated
[11803.504165] wlan0: associate with 00:1f:3f:b0:d8:d1 (try 1/3)
[11803.530467] wlan0: RX AssocResp from 00:1f:3f:b0:d8:d1 (capab=0x431 status=0 aid=1)
[11803.530644] wlan0: associated
[11803.530810] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready

After the connection is lost, dmesg tells:

[12018.009729] type=1400 audit(1367579701.957:50): apparmor=“DENIED” operation=“change_hat” info=“unconfined” error=-1 pid=14564 comm=“cron”
[12018.049913] wlan0: deauthenticated from 00:1f:3f:b0:d8:d1 (Reason: 6)
[12018.091553] cfg80211: Calling CRDA to update world regulatory domain
[12018.159949] cfg80211: World regulatory domain updated:
[12018.159971] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[12018.159979] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[12018.159986] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[12018.159992] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[12018.159998] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[12018.160155] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[12018.160251] cfg80211: Calling CRDA for country: DE
[12018.262391] cfg80211: Regulatory domain changed to country: DE
[12018.262411] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[12018.262419] cfg80211: (2400000 KHz - 2483500 KHz @ 40000 KHz), (N/A, 2000 mBm)
[12018.262425] cfg80211: (5150000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[12018.262430] cfg80211: (5250000 KHz - 5350000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[12018.262436] cfg80211: (5470000 KHz - 5725000 KHz @ 40000 KHz), (N/A, 2698 mBm)
[12019.017622] wlan0: authenticate with 00:1f:3f:b0:d8:d1
[12019.047902] wlan0: send auth to 00:1f:3f:b0:d8:d1 (try 1/3)
[12019.051445] wlan0: authenticated
[12019.064082] wlan0: associate with 00:1f:3f:b0:d8:d1 (try 1/3)
[12019.067706] wlan0: RX AssocResp from 00:1f:3f:b0:d8:d1 (capab=0x431 status=0 aid=1)
[12019.067883] wlan0: associated
[12134.357071] wlan0: deauthenticated from 00:1f:3f:b0:d8:d1 (Reason: 6)
[12134.388194] cfg80211: Calling CRDA to update world regulatory domain
[12134.423774] cfg80211: World regulatory domain updated:
[12134.423795] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[12134.423802] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[12134.423809] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[12134.423816] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[12134.423822] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[12134.423827] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[12134.423959] cfg80211: Calling CRDA for country: DE
[12134.459837] cfg80211: Regulatory domain changed to country: DE
[12134.459855] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[12134.459862] cfg80211: (2400000 KHz - 2483500 KHz @ 40000 KHz), (N/A, 2000 mBm)
[12134.459868] cfg80211: (5150000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[12134.459874] cfg80211: (5250000 KHz - 5350000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[12134.459879] cfg80211: (5470000 KHz - 5725000 KHz @ 40000 KHz), (N/A, 2698 mBm)
[12135.289650] wlan0: authenticate with 00:1f:3f:b0:d8:d1
[12135.330675] wlan0: send auth to 00:1f:3f:b0:d8:d1 (try 1/3)
[12135.348564] wlan0: authenticated
[12135.364133] wlan0: associate with 00:1f:3f:b0:d8:d1 (try 1/3)
[12135.387254] wlan0: RX AssocResp from 00:1f:3f:b0:d8:d1 (capab=0x431 status=0 aid=1)
[12135.387432] wlan0: associated

No connection despite the last message "wlan0: associated.
I use a WPA2 encryption and can exclude any problems with the access point. All worked well with the same hardware, an earlier kernel and the driver from the Realtek website. But the driver that came with that earlier kernel didn’t work either.

Resumee:
The wlan connection with the rtl8192cu works in principle, that is for some minutes, but then the connection collapses without noticing the system about that failing. Only modprobe -r rtl8192cu and reattaching the USB-stick enables to renew the connection, which unfortunately only keeps working for few minutes.

On 05/03/2013 06:36 AM, Brunolab wrote:
>
> I can completely confirm the described problems with the rtl8192cu
> driver, that comes with the kernel 3.8.9-5-pae #1 SMP Mon Apr 29
> 08:37:40 UTC 2013 (5e42670) i686 athlon i386 GNU/Linux.
>
> (The driver from the Realtek website worked perfect, until the recent
> kernels didn’t allow any longer to compile the rtl8192C_3.4.4_4749
> driver package offered there.
> Realtek apparently has lost the interest to update its driver. The
> 3.4.4_4749 driver was introduced 2012/11/12 for the 3.08 kernel and left
> unchanged since.)
>
> Now the rtl8192cu driver that comes with the kernel seems to work fine
> at first try, but within minutes, the connection is lost, but the system
> doesn’t seem to take any note of this fact, no warnings, just the
> browser cannot connect anymore and gives up to load a website.
>
> # DMESG
> [11796.068088] usb 3-1: new high-speed USB device number 14 using
> ehci-pci
> [11796.203497] usb 3-1: New USB device found, idVendor=0bda,
> idProduct=8176
> [11796.203512] usb 3-1: New USB device strings: Mfr=1, Product=2,
> SerialNumber=3
> [11796.203521] usb 3-1: Product: 802.11n WLAN Adapter
> [11796.203528] usb 3-1: Manufacturer: Realtek
> [11796.203535] usb 3-1: SerialNumber: 00e04c000001
> [11796.510262] cfg80211: Calling CRDA to update world regulatory domain
> [11796.702418] cfg80211: World regulatory domain updated:
> [11796.702440] cfg80211: (start_freq - end_freq @ bandwidth),
> (max_antenna_gain, max_eirp)
> [11796.702448] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz),
> (300 mBi, 2000 mBm)
> [11796.702455] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz),
> (300 mBi, 2000 mBm)
> [11796.702461] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz),
> (300 mBi, 2000 mBm)
> [11796.702467] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz),
> (300 mBi, 2000 mBm)
> [11796.702473] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz),
> (300 mBi, 2000 mBm)
> [11796.702551] cfg80211: Calling CRDA for country: DE
> [11796.741739] cfg80211: Regulatory domain changed to country: DE
> [11796.741758] cfg80211: (start_freq - end_freq @ bandwidth),
> (max_antenna_gain, max_eirp)
> [11796.741765] cfg80211: (2400000 KHz - 2483500 KHz @ 40000 KHz),
> (N/A, 2000 mBm)
> [11796.741771] cfg80211: (5150000 KHz - 5250000 KHz @ 40000 KHz),
> (N/A, 2000 mBm)
> [11796.741777] cfg80211: (5250000 KHz - 5350000 KHz @ 40000 KHz),
> (N/A, 2000 mBm)
> [11796.741783] cfg80211: (5470000 KHz - 5725000 KHz @ 40000 KHz),
> (N/A, 2698 mBm)
> [11797.213174] rtl8192cu: Chip version 0x10
> [11797.372515] rtl8192cu: MAC address: 00:e1:4c:03:e1:55
> [11797.372545] rtl8192cu: Board Type 0
> [11797.372980] rtlwifi: rx_max_size 15360, rx_urb_num 8, in_ep 1
> [11797.373151] rtl8192cu: Loading firmware rtlwifi/rtl8192cufw.bin
> [11797.373342] usbcore: registered new interface driver rtl8192cu
> [11797.434007] ieee80211 phy0: Selected rate control algorithm ‘rtl_rc’
> [11797.436748] rtlwifi: wireless switch is on
> [11799.542124] rtl8192cu: MAC auto ON okay!
> [11799.614513] rtl8192cu: Tx queue select: 0x05
> [11800.043575] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
> [11803.468802] wlan0: authenticate with 00:1f:3f:b0:d8:d1
> [11803.488906] wlan0: send auth to 00:1f:3f:b0:d8:d1 (try 1/3)
> [11803.496376] wlan0: authenticated
> [11803.504165] wlan0: associate with 00:1f:3f:b0:d8:d1 (try 1/3)
> [11803.530467] wlan0: RX AssocResp from 00:1f:3f:b0:d8:d1 (capab=0x431
> status=0 aid=1)
> [11803.530644] wlan0: associated
> [11803.530810] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
>
> AFTER THE CONNECTION IS LOST, DMESG TELLS:
> [12018.009729] type=1400 audit(1367579701.957:50): apparmor=“DENIED”
> operation=“change_hat” info=“unconfined” error=-1 pid=14564 comm=“cron”
> [12018.049913] wlan0: deauthenticated from 00:1f:3f:b0:d8:d1 (Reason:
> 6)
> [12018.091553] cfg80211: Calling CRDA to update world regulatory domain
> [12018.159949] cfg80211: World regulatory domain updated:
> [12018.159971] cfg80211: (start_freq - end_freq @ bandwidth),
> (max_antenna_gain, max_eirp)
> [12018.159979] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz),
> (300 mBi, 2000 mBm)
> [12018.159986] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz),
> (300 mBi, 2000 mBm)
> [12018.159992] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz),
> (300 mBi, 2000 mBm)
> [12018.159998] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz),
> (300 mBi, 2000 mBm)
> [12018.160155] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz),
> (300 mBi, 2000 mBm)
> [12018.160251] cfg80211: Calling CRDA for country: DE
> [12018.262391] cfg80211: Regulatory domain changed to country: DE
> [12018.262411] cfg80211: (start_freq - end_freq @ bandwidth),
> (max_antenna_gain, max_eirp)
> [12018.262419] cfg80211: (2400000 KHz - 2483500 KHz @ 40000 KHz),
> (N/A, 2000 mBm)
> [12018.262425] cfg80211: (5150000 KHz - 5250000 KHz @ 40000 KHz),
> (N/A, 2000 mBm)
> [12018.262430] cfg80211: (5250000 KHz - 5350000 KHz @ 40000 KHz),
> (N/A, 2000 mBm)
> [12018.262436] cfg80211: (5470000 KHz - 5725000 KHz @ 40000 KHz),
> (N/A, 2698 mBm)
> [12019.017622] wlan0: authenticate with 00:1f:3f:b0:d8:d1
> [12019.047902] wlan0: send auth to 00:1f:3f:b0:d8:d1 (try 1/3)
> [12019.051445] wlan0: authenticated
> [12019.064082] wlan0: associate with 00:1f:3f:b0:d8:d1 (try 1/3)
> [12019.067706] wlan0: RX AssocResp from 00:1f:3f:b0:d8:d1 (capab=0x431
> status=0 aid=1)
> [12019.067883] wlan0: associated
> [12134.357071] wlan0: deauthenticated from 00:1f:3f:b0:d8:d1 (Reason:
> 6)
> [12134.388194] cfg80211: Calling CRDA to update world regulatory domain
> [12134.423774] cfg80211: World regulatory domain updated:
> [12134.423795] cfg80211: (start_freq - end_freq @ bandwidth),
> (max_antenna_gain, max_eirp)
> [12134.423802] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz),
> (300 mBi, 2000 mBm)
> [12134.423809] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz),
> (300 mBi, 2000 mBm)
> [12134.423816] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz),
> (300 mBi, 2000 mBm)
> [12134.423822] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz),
> (300 mBi, 2000 mBm)
> [12134.423827] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz),
> (300 mBi, 2000 mBm)
> [12134.423959] cfg80211: Calling CRDA for country: DE
> [12134.459837] cfg80211: Regulatory domain changed to country: DE
> [12134.459855] cfg80211: (start_freq - end_freq @ bandwidth),
> (max_antenna_gain, max_eirp)
> [12134.459862] cfg80211: (2400000 KHz - 2483500 KHz @ 40000 KHz),
> (N/A, 2000 mBm)
> [12134.459868] cfg80211: (5150000 KHz - 5250000 KHz @ 40000 KHz),
> (N/A, 2000 mBm)
> [12134.459874] cfg80211: (5250000 KHz - 5350000 KHz @ 40000 KHz),
> (N/A, 2000 mBm)
> [12134.459879] cfg80211: (5470000 KHz - 5725000 KHz @ 40000 KHz),
> (N/A, 2698 mBm)
> [12135.289650] wlan0: authenticate with 00:1f:3f:b0:d8:d1
> [12135.330675] wlan0: send auth to 00:1f:3f:b0:d8:d1 (try 1/3)
> [12135.348564] wlan0: authenticated
> [12135.364133] wlan0: associate with 00:1f:3f:b0:d8:d1 (try 1/3)
> [12135.387254] wlan0: RX AssocResp from 00:1f:3f:b0:d8:d1 (capab=0x431
> status=0 aid=1)
> [12135.387432] wlan0: associated
>
> No connection despite the last message "wlan0: associated.
> I use a WPA2 encryption and can exclude any problems with the access
> point. All worked well with the same hardware, an earlier kernel and the
> driver from the Realtek website. But the driver that came with that
> earlier kernel didn’t work either.
>
> Resumee:
> The wlan connection with the rtl8192cu works in principle, that is for
> some minutes, but then the connection collapses without noticing the
> system about that failing. Only modprobe -r rtl8192cu and reattaching
> the USB-stick enables to renew the connection, which unfortunately only
> keeps working for few minutes.

A report of a kernel panic without any publication of the dump is useless, and I
will ignore such reports. I’m sorry if that is harsh, but otherwise, you are
just wasting my time.

There has been a lot of recent work on this driver, but much of that cannot be
backported to kernel 3.7 (12.3), kernel 3.4 (12.2), or even kernel 3.8 or 3.9.
Testing is currently being done and the patch may make it into 3.10.

There are 3 patches listed in
https://bugzilla.redhat.com/show_bug.cgi?id=952793. The second of three should
already be in the latest stable kernels. The third one works with kernel 3.5,
and the first one is the same fix for kernel 3.9.

>There are 3 patches listed in
>https://bugzilla.redhat.com/show_bug.cgi?id=952793. The second of three should
>already be in the latest stable kernels. The third one works with kernel 3.5,
>and the first one is the same fix for kernel 3.9.

Thank you, this was the information I was looking for.

I’ve been running with the vendor driver and the attached patch below. It works well with the OpenSUSE 12.3 standard installed kernel 3.7. This patch was found on another ubuntu site. The patch adjusts for some newer features introduced that had originally broke the vendor driver upon insertion. The designed driver is configured to be “green” so it limits or powers off the device and is noted to cause problems in many documented forums on the internet.

Testing conducted: I performed a level 0 dump of my /home partition (roughly 30GB) over the wireless connection. While not suitable for the job, it did test and ensure the driver would function properly.

For those who want the plug-and-play answer, you must have the kernel-devel and the appropriate compiler tools installed. There are other suitable places here on the OpenSUSE forums and wiki which have answered these questions and I won’t get in to specifics here.

Notes:

  1. Do not perform these steps remotely. Steps should be completed on console.

  2. Also, removing the driver using “rmmod 8192cu” causes my machine to hard freeze. I installed the kernel panic tools but I will have to further investigate why. I am only reporting this here so there are no surprises in case you attempt such.

  3. Grab the driver for the RTL8188CUS from the realtek site.

  4. Create a src directory where you will perform the driver build. Put all files including the driver you just downloaded into this src directory for the build.

  5. Take the below code and save it to a text file with the mentioned name (file should again remain in the same directory as the zip file)

  6. Execute the following commands:


unzip ./RTL8192xC_USB_linux_v3.4.4_4749.20121105.zip
cd ./RTL8188C_8192C_USB_linux_v3.4.4_4749.20121105/driver/
tar -xvf ./rtl8188C_8192C_usb_linux_v3.4.4_4749.20121105.tar.gz
cd ./rtl8188C_8192C_usb_linux_v3.4.4_4749.20121105/
patch -p1 < ../../../rtl8188C_8192C_usb_linux_v3.4.4_4749.20121105_patch.txt
make
make install
insmod ./8192cu.ko

  1. Blacklist built-in kernel driver and set 8192cu driver options
cd /etc/modprobe.d
  1. Put the following in the 99-local.conf file:

blacklist rtlwifi
blacklist rtl8192cu
blacklist rtl8192c_common


options 8192cu rtw_power_mgnt=0 rtw_enusbss=0

  1. Change the directory to:
/etc/modules-load.d
  1. Create a configuration file so the module is loaded on boot. I called mine 8192cu.conf. Put the following in the 8192cu.conf file:

# wireless driver
8192cu

  1. Remove the current loaded wireless network driver (please note if you have configured network connectivity, it will be lost)

rmmod rtl8192cu
rmmod rtl8192c_common
rmmod rtlwifi

Note: I can’t remember the specific order of removing the kernel drivers. You should use lsmod to check which are dependent on each other should you encounter error. This will indicate how to properly remove the driver.*

  1. Execute:
modprobe 8192cu
  1. Execute:
dmesg

to check the output of the wireless driver.
12. Configure your WPA_SUPPLICANT either from Yast or Network Manager …and enjoy!

Name the file: rtl8188C_8192C_usb_linux_v3.4.4_4749.20121105_patch.txt


diff -ru original/core/rtw_mp.c new/core/rtw_mp.c
--- original/core/rtw_mp.c      2012-07-30 13:51:05.000000000 +0100
+++ new/core/rtw_mp.c   2013-04-27 01:03:54.803246633 +0100
@@ -1140,8 +1140,7 @@
        _rtw_memset(ptr, payload, pkt_end - ptr);
 
        //3 6. start thread
-       pmp_priv->tx.PktTxThread = kernel_thread(mp_xmit_packet_thread, pmp_priv, CLONE_FS|CLONE_FILES);
-       if(pmp_priv->tx.PktTxThread < 0)
+       if(!start_kthread(&pmp_priv->tx.PktTxThread, mp_xmit_packet_thread, pmp_priv, "8192cu-mp-xmit"))
                DBG_871X("Create PktTx Thread Fail !!!!!
");
 
 }
Only in original/core: .rtw_wlan_util.o.d
diff -ru original/include/osdep_service.h new/include/osdep_service.h
--- original/include/osdep_service.h    2012-07-30 13:51:05.000000000 +0100
+++ new/include/osdep_service.h 2013-04-27 01:03:54.811246677 +0100
@@ -100,6 +100,9 @@
        #include <linux/pci.h>
 #endif
 
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
+       #include <linux/kthread.h>
+#endif
 
 #ifdef CONFIG_USB_HCI
        typedef struct urb *  PURB;
@@ -133,8 +136,12 @@
        //typedef u32   _irqL;
        typedef unsigned long _irqL;
        typedef struct  net_device * _nic_hdl;
-
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))                                                                                                  
        typedef pid_t           _thread_hdl_;                                                                                                      
+#else
+       typedef struct task_struct * _thread_hdl_;
+#endif
        typedef int             thread_return;
        typedef void*   thread_context;
 
@@ -571,8 +578,8 @@
 {
 #ifdef PLATFORM_LINUX
        //struct net_device *pnetdev = (struct net_device *)context;
-       //daemonize("%s", pnetdev->name);
-       daemonize("%s", "RTKTHREAD");
+       ////daemonize("%s", pnetdev->name);
+       //daemonize("%s", "RTKTHREAD");
        allow_signal(SIGTERM);
 #endif
 }
@@ -827,4 +834,8 @@
 
 #endif
 
+#ifdef PLATFORM_LINUX
+extern int start_kthread(_thread_hdl_ *t_hdl, int (*threadfn)(void *data),
+                        void *data, const char *name);
+#endif
 
diff -ru original/os_dep/linux/os_intfs.c new/os_dep/linux/os_intfs.c
--- original/os_dep/linux/os_intfs.c    2012-11-05 07:42:45.000000000 +0000
+++ new/os_dep/linux/os_intfs.c 2013-04-27 01:03:54.811246677 +0100
@@ -797,27 +797,22 @@
        RT_TRACE(_module_os_intfs_c_,_drv_info_,("+rtw_start_drv_threads
"));
 
 #ifdef CONFIG_SDIO_HCI
-       padapter->xmitThread = kernel_thread(rtw_xmit_thread, padapter, CLONE_FS|CLONE_FILES);
-       if(padapter->xmitThread < 0)
+       if(!start_kthread(&padapter->xmitThread, rtw_xmit_thread, padapter, "8192cu-xmit"))
                _status = _FAIL;
 #endif
 
 #ifdef CONFIG_RECV_THREAD_MODE
-       padapter->recvThread = kernel_thread(recv_thread, padapter, CLONE_FS|CLONE_FILES);
-       if(padapter->recvThread < 0)
+       if(!start_kthread(&padapter->recvThread, recv_thread, padapter, "8192cu-recv"))
                _status = _FAIL;
 #endif
 
-       padapter->cmdThread = kernel_thread(rtw_cmd_thread, padapter, CLONE_FS|CLONE_FILES);
-       if(padapter->cmdThread < 0)
+       if(!start_kthread(&padapter->cmdThread, rtw_cmd_thread, padapter, "8192cu-cmd"))
                _status = _FAIL;
        else
                _rtw_down_sema(&padapter->cmdpriv.terminate_cmdthread_sema); //wait for cmd_thread to run
-
 
 #ifdef CONFIG_EVENT_THREAD_MODE
-       padapter->evtThread = kernel_thread(event_thread, padapter, CLONE_FS|CLONE_FILES);
-       if(padapter->evtThread < 0)
+       if(!start_kthread(&padapter->evtThread, event_thread, padapter, "8192cu-evt"))
                _status = _FAIL;
 #endif
 
diff -ru original/os_dep/osdep_service.c new/os_dep/osdep_service.c
--- original/os_dep/osdep_service.c     2012-07-30 13:51:05.000000000 +0100
+++ new/os_dep/osdep_service.c  2013-04-27 01:03:54.815246692 +0100
@@ -1553,3 +1553,19 @@
 #endif
 }
 
+#ifdef PLATFORM_LINUX
+int start_kthread(_thread_hdl_ *t_hdl, int (*threadfn)(void *data),
+                 void *data, const char *name)
+{
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
+       *t_hdl = kernel_thread(threadfn, data, CLONE_FS|CLONE_FILES);
+       if(*t_hdl < 0)
+#else
+       *t_hdl = kthread_run(threadfn, data, name);
+       if(IS_ERR(*t_hdl))
+#endif
+               return 0;
+       return -1;
+}
+#endif
+