Tag Archive for 'wireless'

Realtek USB Wireless on Linux (Fedora)

When John needed wireless for his computer at home, he bought (probably on my recommendation) a Billion 3011N – a USB wireless N device with the Realtek 8191S(U) chipset. On the box it said that it supported Linux, so I figured it was a pretty safe bet (surely that means there’s a stable driver in the mainline kernel, right?).

Turns out, no. The device has horrible support under Linux and it’s a super pain. The driver disk that came with the box does have a Linux driver, but it doesn’t always compile against the kernel and then there are configuration issues and a custom wpaconfig is required.

Gah.

So John bought another USB wireless dongle.

Anyway, so now I need a USB wireless dongle for my machine and I asked John to buy one of his spare ones from him (he has four or five). He gave me the afore mentioned Billion device. I plugged it into my Fedora 13 box, but it didn’t know much about it. So then I downloaded the open source driver from Realtek, compiled it and loaded the module. The system hard-locked – even Magic Keys couldn’t save it.

I shelved it for a while, until a bloke called Terry Polzin on the Fedora list today posted a request for help with getting a Realtek 8188S(U) working. I replied saying that I had a similar device and shared my experiences.

I told him that there is a driver in staging which supports the device, but unlike Ubuntu, Fedora only ships quality working drivers by default, so no staging drivers are included. It’s easy enough to get them though, just add the RPMFusion Free repository and install their kmod-staging package which (as the name might give away) includes the staging drivers for the current kernel.

Once you have that installed, the r8192s_usb module can be loaded, but the device still needs external (presumably proprietary) firmware to work. Fortunately, although the driver available from Realtek does not include it, it was included on the disk, and is also available in the Billion driver from their website. So, once you have put the firmware in the right place, the device just works.

Here are the steps to get it working (you will need to have RPMFusion enabled, and run these as root).

yum install kmod-staging unzip
depmod -a
wget http://au.billion.com/downloads/3011N/3011N_Linux_Driver.zip
unzip -j 3011N_Linux_Driver.zip "*rtl8192sfw.bin" -d RTL8192SU
mv RTL8192SU /lib/firmware/

Now, plug in your device and check that the module and firmware have been loaded, using dmesg. You should see something like this:

usb 1-2.3: new high speed USB device using ehci_hcd and address 16
usb 1-2.3: New USB device found, idVendor=0bda, idProduct=8172
usb 1-2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 1-2.3: SerialNumber: 00e04c000001
==>ep_num:4, in_ep_num:1, out_ep_num:3
==>RtInPipes:3
==>RtOutPipes:4 6 13
==>txqueue_to_outpipemap for BK, BE, VI, VO, HCCA, TXCMD, MGNT, HIGH, BEACON:
1 1 0 0 2 2 2 2 2
Dot11d_Init()
rtl819xU: --->FirmwareDownload92S()

usb 1-2.3: firmware: requesting RTL8192SU/rtl8192sfw.bin
rtl819xU:signature:8192, version:902b, size:30, imemsize:7408, sram size:9688

rtl819xU:--->FirmwareDownloadCode()

rtl819xU:--->FirmwareCheckReady(): LoadStaus(1),
rtl819xU:<---FirmwareCheckReady(): LoadFWStatus(1), rtStatus(0)

rtl819xU:--->FirmwareDownloadCode()

rtl819xU:--->FirmwareCheckReady(): LoadStaus(2),
rtl819xU:-->FirmwareEnableCPU()

rtl819xU:IMEM Ready after CPU has refilled.

rtl819xU:<--FirmwareEnableCPU(): rtStatus(0x0)

rtl819xU:<---FirmwareCheckReady(): LoadFWStatus(2), rtStatus(0)

rtl819xU:--->FirmwareDownloadCode()

rtl819xU:--->FirmwareCheckReady(): LoadStaus(3),
rtl819xU:DMEM code download success, CPUStatus(0x3f)

rtl819xU:Polling Load Firmware ready, CPUStatus(ff)

rtl819xU:FirmwareCheckReady(): Current RCR settings(0x157e20e)

rtl819xU:<---FirmwareCheckReady(): LoadFWStatus(3), rtStatus(0)

rtl819xU:Firmware Download Success!!

ADDRCONF(NETDEV_UP): wlan0: link is not ready
=====>rtl8192SU_link_change 1
<=====rtl8192SU_link_change 2

Now, you should have a wireless device and network interface, which you can check with iwconfig and ifconfig -a.

wlan0 802.11b/g/n Mode:Managed Frequency=2.422 GHz
Access Point: Not-Associated Bit Rate:130 Mb/s
Retry min limit:7 RTS thr:off Fragment thr:off
Power Management:off
Link Quality=0/100 Signal level=0 dBm Noise level=0 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

And that's it. The device should now work with NetworkManager, etc.

The main downside here (apart from the obvious) is that you will be relying on RPMFusion to build an updated kmod-staging version when you get a Fedora kernel update. Sometimes this might not happen before you get your kernel, so when you reboot, you lose your wireless (because there's no driver). If so, boot to your older kernel for a while, or build the driver yourself, or create an akmod instead of kmod.

Ubuntu users should be able to just put the firmware in the right place, as their kernel ships with the unstable drivers by default.

-c

Wireless 802.11N standard finally ratified

Soon we should see no more “Draft N” wireless devices as the final spec has finally been approved.

I wonder what happened to those CSIRO patents that were blocking the finalisation? Did CSIRO relinquish them, or come to some sort of deal? Was it dropped entirely?

Telstra NextG working with MF626 USB modem

Essentially, these devices are detected as a SCSI CD device so that Windows and Mac users can install the drivers and software to make the device work and connect to the net. They then switch product ID to activate the device as a modem. Unfortunately this didn’t work properly in Ubuntu, and would only detect as a mass storage device. With this fix, it can be hot plugged and still work :-O

Thanks to a post in the Ubuntu forums, I finally got the Telstra NextG wireless working for a friend of Mike, on his Jaunty netbook.

Here’s what I did, for for future reference:

1) Install udev-extras which provides some extra hal scripts.
sudo apt-get install udev-extras

2) Install the Debian Sid i386 usb-modeswitch package, rather than build from scratch.
http://packages.debian.org/sid/usb-modeswitch
sudo dpkg -i usb-modeswitch_0.9.7-1_i386.deb

3) Uncommented the “ZTE MF626″ entry of the usb-modeswitch config (including the # comments!).
sudo vim /etc/usb_modeswitch.conf

ZTE MF628+ (tested version from Telia / Sweden)
ZTE MF626

Contributor: Joakim Wennergren

DefaultVendor= 0x19d2
DefaultProduct= 0x2000

TargetVendor= 0x19d2
TargetProduct= 0x0031

MessageEndpoint=0x01
MessageContent=”55534243123456782000000080000c8501 0101180101010101000000000000″

4) Create new HAL rule to activate the device as a modem.
sudo vim /usr/share/hal/fdi/information/20thirdparty/20-zte-mf626.fdi

<!– -*- SGML -*- –>
<deviceinfo version=”0.2″>
<device>
<!– ZTE MF626 HSDPA USB Modem –>
<match key=”@info.parent:usb.vendor_

id” int=”0x19d2″>
<match key=”@info.parent:usb.product_id” int=”0x0031″>
<match key=”@info.parent:usb.interface.number” int=”3″>
<append key=”modem.command_sets” type=”strlist”>GSM-07.07</append>
<append key=”modem.command_sets” type=”strlist”>GSM-07.05</append>
<append key=”info.capabilities” type=”strlist”>modem</append>
</match>
</match>
</match>
</device>
</deviceinfo>

5) Create a new udev rule to auto run usb_modeswitch when the device is plugged in.
sudo vim /etc/udev/rules.d/90-zte.rules

ACTION!=”add”, GOTO=”ZTE_End”

SUBSYSTEM==”usb”, SYSFS{idProduct}==”2000″, SYSFS{idVendor}==”19d2″, GOTO=”ZTE_ZeroCD”

LABEL=”ZTE_ZeroCD”
RUN+=”/usr/sbin/usb_modeswitch -W -c /etc/usb_modeswitch.conf”

LABEL=”ZTE_End”

6) Remove the HAL FDI cache and reboot.
sudo rm /var/cache/hald/fdi-cache
sudo reboot

7) Then after a reboot, I plug in the device, wait for it to go blue, then connect to Telstra (Next G Card) in Network Manager.

Works!

Aspiring to be Jaunty

Mike has a friend with an Acer Aspire One netbook (which he bought over 6 months ago) and it has been no end of trouble getting it to work properly. The main issue has been the horrible built-in Atheros wireless chip. There was much to-ing and fro-ing, the end result of which is that the guy wanted to buy a Windows netbook to replace it (all because of this one main issue). In fact, it’s been down right embarrassing that Linux doesn’t work. He’s wanted to give the rotten thing away, or rather, throw it away (preferably somewhere jagged with lots of rocks).

Eventually we did get it working with Intrepid and even though it was clunkalicious, it did work. Until he did an upgrade that is. So Jaunty comes along and everything is supposed to work out of the box, but it doesn’t. Wireless is still broken. The device is detected, but network manager just won’t work (also iwlist wlan0 scanning does not work).

I dug around on launchpad and found out, lo and behold, there is a bug that stops wireless from working.

The fix? Blacklist the acer_wmi module (add blacklist acer_wmi to /etc/modprobe.d/blacklist) and reboot. Essentially the rfkill switch on the Aspire One is dodgy and it gets permanently set to off. Not loading this module prevents that, which means it’s free to be, well, on.

So, if you have an Acer Aspire One with Jaunty (or other distribution) and you don’t get any wireless love, try this work around. Now I just have to get his dodgy Telstra 3G USB modem device working.. and that’s a whole other level of pain.

-c

Whatever did we used to do?

These days everyone wants a graphical interface for this and for that, including a network manager to well, manage your network connections. Back in the days when wireless hardly ever worked in Linux anyway, who cared? But now that life is more than just DHCP on eth0 things need to get more fancy. Now that Linux has awesome wireless support, we’ve also moved to mobile broadband with a much faster pace than I ever expected. That’s all good.

Dan Williams has just blogged about the new NetworkManager 0.7.1 release which contains a slew of updates and improvements. I wonder whether the issue of suspending the laptop then resuming somewhere else and having it re-detect wireless access points in the new location has been fixed or not. Wait.. laptops can suspend and resume now too? Boy!

-c