Release Date: 2009-0825, ver 0003 RTL8192SU Linux driver --This driver supports RealTek rtl8192SU USB Wireless LAN NIC for 2.6 kernel: Fedora Core 2/3/4/5, Debian 3.1, Mandrake 10.2/Mandriva 2006, SUSE 9.3/10.1/10.2, Gentoo 3.1, Ubuntu 7.10/8.04, etc. 2.4 kernel: Redhat 9.0/9.1 =============================================================================== Component =============================================================================== The driver is composed of several parts: 1. Firmare to make nic work 1.1 firmare/RTL8192SU 2. Module source code 2.1 ieee80211 2.2 HAL/rtl8192u 2.3 wpa_supplicant-0.5.10 (User can download the latest version from internet also, but it is suggested to use default package contained in the distribution because there should less compilation issue.) 3. Script to build the modules 3.1 Makefile 4. Script to load/unload modules 4.1 wlan0up 4.2 wlan0down 5. Script and configuration for DHCP 5.1 wlan0dhcp 5.2 ifcfg-wlan0 6. Example of supplicant configuration file: 6.1 wpa1.conf 7. Script to run wpa_supplicant 7.1 runwpa =============================================================================== Installation =============================================================================== <> Runing the scripts accomplish all operations including building up modules from the source code, installing driver to the kernel and starting up the nic. 1. Build up the drivers from the source code make 2. Install the driver to the kernel make install reboot 3. bring up wlan if nic is not brought up by GUI, such as NetworkManager ifconfig wlan0 up Note: use ifconfig to check whether wlan0 is brought up and use iwconfig to check your wlan interface name, since it may change wlan0 to wlan1,etc. <> Or only load the driver module to kernel and start up nic. 1. Build up the drivers from the source code make 2. Copy firmware to /lib/firmware/ or /lib/firmware/(KERNEL_VERSION)/ cp -rf firmware/RTL8192SU /lib/firmware or cp -rf firmware/RTL8192SU /lib/firmware/(KERNEL_VERSION) Note: This depends on whether (KERNEL_VERSION) subdirectory exists under /lib/firmware 3. Load driver module to kernel and start up nic. ./wlan0up Note: when "insmod: error inserting 'xxxx.ko': -1 File exists" comes out after run ./wlan0up, please run ./wlan0down first, then it should be ok.. Note: If you see the message of "unkown symbol" during ./wlan0up, it is suggested to build driver by <>. =============================================================================== Set wireless lan MIBs =============================================================================== This driver uses Wireless Extension as an interface allowing you to set Wireless LAN specific parameters. Current driver supports "iwlist" to show the device status of nic iwlist wlan0 [parameters] where parameter explaination [parameters] ----------------------- ------------- Show available chan and freq freq / channel Show and Scan BSS and IBSS scan[ning] Show supported bit-rate rate / bit[rate] For example: iwlist wlan0 channel iwlist wlan0 scan iwlist wlan0 rate Driver also supports "iwconfig", manipulate driver private ioctls, to set MIBs. iwconfig wlan0 [parameters] [val] where parameter explaination [parameters] [val] constraints ----------------------- ------------- ------------------ Connect to AP by address ap [mac_addr] Set the essid, join (I)BSS essid [essid] Set operation mode mode {Managed|Ad-hoc} Set keys and security mode key/enc[ryption] {N|open|restricted|off} For example: iwconfig wlan0 ap XX:XX:XX:XX:XX:XX iwconfig wlan0 essid "ap_name" iwconfig wlan0 mode Ad-hoc iwconfig wlan0 essid "name" mode Ad-hoc iwconfig wlan0 key 0123456789 [2] open iwconfig wlan0 key off iwconfig wlan0 key restricted [3] 0123456789 Note: Better to set these MIBS without GUI such as NetworkManager and be sure that our nic has been brought up before these settings. WEP key index 2-4 is not supportted by NetworkManager. =============================================================================== Getting IP address =============================================================================== After start up the nic, the network needs to obtain an IP address before transmit/receive data. This can be done by setting the static IP via "ifconfig wlan0 IP_ADDRESS" command, or using DHCP. If using DHCP, setting steps is as below: (1)connect to an AP via "iwconfig" settings iwconfig wlan0 essid [name] or iwconfig wlan0 ap XX:XX:XX:XX:XX:XX (2)run the script which run the dhclient ./wlan0dhcp or dhcpcd wlan0 (Some network admins require that you use the hostname and domainname provided by the DHCP server. In that case, use dhcpcd -HD wlan0) =============================================================================== WPAPSK/WPA2PSK =============================================================================== Wpa_supplicant helps to secure wireless connection with the protection of WPAPSK/WPA2PSK mechanism. If the version of Wireless Extension in your system is equal or larger than 18, WEXT driver interface is recommended. Otherwise, IPW driver interface is advised. Note: Wireless Extension is defined us "#define WIRELESS_EXT" in Kernel Note: To check the version of wireless extension, please type "iwconfig -v" If IPW driver interface is used, it us suggested to follow the steps from 1 to 6. If wpa_supplicant has been installed in your system, only steps 5 and 6 are required to be executed for WEXT driver interface. To see detailed description for driver interface and wpa_supplicant, please type "man wpa_supplicant". (1)Download latetest source code for wpa supplicant or use wpa_supplicant-0.5.10 attached in this package. (It is suggested to use default package contained in the distribution because there should less compilation issue.) Unpack source code of WPA supplicant: tar -zxvf wpa_supplicant-0.5.10.tar.gz (e.g.) cd wpa_supplicant-0.5.10 (2)Create .config file: cp defconfig .config (3)Edit .config file, uncomment the following line if ipw driver interface will be applied: #CONFIG_DRIVER_IPW=y. (4)Build and install WPA supplicant: make cp wpa_cli wpa_supplicant /usr/local/bin NOTE: 1. If make error for lack of , install the openssl lib(two ways): (1) Install the openssl lib from corresponding installation disc: Fedora Core 2/3/4/5(openssl-0.9.71x-xx), Mandrake10.2/Mandriva10.2(openssl-0.9.7x-xmdk), Debian 3.1(libssl-dev), Suse 9.3/10.0/10.1(openssl_devl), Gentoo(dev-libs/openssl), etc. (2) Download the openssl open source package from www.openssl.org, build and install it. 2. If make errors happen in RedHat(and also Fedora Core) for kssl.h, please add lines below into Makefile CPPFLAGS+=-I/usr/kerboros/include (5)Edit wpa_supplicant.conf to set up SSID and its passphrase. For example, the following setting in "wpa1.conf" means SSID to join is "BufAG54_Ch6" and its passphrase is "87654321". Example 1: Configuration for WPA-PWK network={ ssid="BufAG54_Ch6" #scan_ssid=1 //see note 3 proto=WPA key_mgmt=WPA-PSK pairwise=CCMP TKIP group=CCMP TKIP WEP104 WEP40 psk="87654321" priority=2 } Example 2: Configuration for LEAP network={ ssid="BufAG54_Ch6" key_mgmt=IEEE8021X group=WEP40 WEP104 eap=LEAP identity="user1" password="1111" } Example 3: Linking to hidden ssid given AP's security policy exactly.(see note 3 below) ap_scan=2 network={ ssid="Hidden_ssid" proto=WPA key_mgmt=WPA-PSK pairwise=CCMP group=CCMP psk="12345678" } Example 4: Linking to ad-hoc (see note 4 below) ap_scan=2 network={ ssid="Ad-hoc" mode=1 proto=WPA key_mgmt=WPA-NONE pairwise=NONE group=TKIP psk="12345678" } Note: 1. proto=WPA for WPA, proto=RSN for WPA2. 2. If user needs to connect an AP with WPA or WPA2 mixed mode, it is suggested to set the cipher of pairwise and group to both CCMP and TKIP unless you know exactly which cipher type AP is configured. 3. When connecting to hidden ssid, explicit security policy should be given with ap_scan=2 being setting. 4. It is suggested setting ap_scan to 2 and mode to 1 when linking to or creating an ad-hoc. Group and pairwise cipher type should also be explicit, always with group setting to TKIP or CCMP and pairwise setting to NONE. Lower version wpa_supplicant may not allow setting group to CCMP with pairwise setting to NONE. So if any problem, you may try to set both group and pairwise to CCMP, leaving other setting unchanged, when connecting to an CCMP-encrypted ad-hoc. 5. More config setting option, please refer to wpa_supplicant.conf in wpa_supplicant.tar.gz that we provide. (6)Execute WPA supplicant (Assume rtl8192E and related modules had been loaded): ./runwpa Note: The script runwpa will check Wireless Extension version automatically. If the version of Wireless Extension is equal or larger than 18, the option of "-D wext" is selected. If the version of Wireless extension is less than 18, the option of "-D ipw" is selected. =============================================================================== For kernel 2.4 notes =============================================================================== First of all, we have to install the necessary tools for building the driver. In the RedHat9 installation, please choose the "Customize the set of packages to be install" and include two packages "Development Tools", "Kernel Development". The RedHat 9 (kernel 2.4.20-8) just suppports the WEP security for Wifi. We have to patch the kernel with updating wireless extension so that the kernel just supports the WPA, WPA2 functionalities by stardard wireless extension. This driver had been verified on the patched 2.4.20-8 kernel and the WPA/WPA2 PSK works fine on the patched kernel. First of all, we must have three patch file to update the wireless extension. 1. iw241_we16-6.diff (http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/iw241_we16-6.diff) 2. iw249_we17-13.diff (http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/iw249_we17-13.diff) 3. iw240_we18-5.diff (http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/iw240_we18-5.diff) Copy these three patch files to the patient directory of the linux kernel source folder and use the following command to patch the RedHat 9 kernel. $> patch -p0 < ./iw241_we16-6.diff $> patch -p0 < ./iw249_we17-13.diff $> patch -p0 < ./iw240_we18-5.diff After patching the kernel, please remember to re-build the updated kernel/modules and use it for your target platform. Now, the patched kernel had got the ability to support the WPA/WPA2 PSK functionalities with wireless extension interface. Reminding: At the first time to use the wpa_supplicant, pleasee remember to compile the wpa_supplicant with the updated kernel so that the wpa_supplicant will get the latest wireless extension version for supporting more functionalities. Finally, the kernel 2.4 can't support the WPS functionality.