LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Wireless Networking (https://www.linuxquestions.org/questions/linux-wireless-networking-41/)
-   -   D-Link DWL-650 working in Slackware v13 using orinoco_cs driver (https://www.linuxquestions.org/questions/linux-wireless-networking-41/d-link-dwl-650-working-in-slackware-v13-using-orinoco_cs-driver-787494/)

wroom 02-06-2010 08:07 PM

D-Link DWL-650 working in Slackware v13 using orinoco_cs driver
 
WHY?

Since i had a handfull of D-Link DWL-650 WLAN pccards i was thinking of putting them to use in setting up a distributed network of laptops running Slackware Linux, and without having to make a physical webb of TP cables all over the place. One in the kitchen for googling recipees, one in the machine shop to look up service manuals, play music and chat with my tuning customers while i calibrate their engines, one to bring with me to the beach to improve my surf... :D

Whatnots:

I started off thinking this would be as easy as scratching my nose. Guess what? This about Wireless PCCARDs is not that easy. It's a jungle, full of death traps that fry your hardware and make you standing bewildered, desillusioned and angry in a mudpile of variants, packaging mistakes, special hacking recipees and lack of support.

To keep others having the same thoughts going on the straight and narrow path, and not to stray around in the jungle of unsupport, identifying chipsets in rebadged hardware, searching the discontinued support alternatives and a madly bewildered bunch of web sites either gone away or completely misleading completely innocent people that are searching for the quick, fast, easy and correct way of setting things up,...

...i will not mention all the stray info i have searched-n-sifted, but instead focus on what works. Good of me, huh? ;)

How to get D-Link DWL-650 pccard wireless adapter going with Linux Slackware 13:

Driver:
Use the orinoco_cs driver which is by default included as a module in Slackware version 13. It works! But not with an old firmware in the pccard.

The orinoco_cs driver loads straight away when you insert the pccard, as it should. No need to change anything there.

Firmware:
Ah! This is where it gets interesting. While the orinoco_cs driver loads, and the adapter shows up using the iwconfig and ifconfig shell commands, it did not work for me with 128 bit WEP encryption.

To make a very long story rather short, my adapters had too old firmware in them. (Version 0.7.6).
A newer firmware can be downloaded into flash in the adapter. The trick is to know which firmware to get, where to get it, and how to get it into the adapters flash memory, (without frying the card).

It took me a while to realize that the DWL-650 has an Intersil Prism II chipset in it.

If the adapter is inserted with no netconf-iguration at all to set it up with ESSID, ip address, etc... then the card defaults to hostname "Prism I". Peculiar, since it is a Prism II card.

One can see details of the adapter card using the shell command "pccardctl -v ls", that will verbosely describe the pccards inserted in the PC.

Googling led me to the following website: http://linux.junsun.net/intersil-prism/

Great kudos to Jun Sun for that website! Thank you!

On this website i found a good tool to reflash the firmware. There is a tool for reflashing with Linux, as well as with a Windows OS. Since the adapter actually worked in one of my Windows laptops i decided to reflash the adapters with a Windows laptop.
Peculiar also that the 128 bit WEP encryption worked with Windows, despite the old firmware that actually does not support 128 bit WEP.

I downloaded the winupdate program that Jun Sun provides on his page. Installed quick and easy. (Works in paralell with the wireless tray application that handles the DWL-650 adapter).

First thing i did was to upload the current firmware from the flash in the adapter card and store it in a file, in case something goes wrong.

Then i got firmware version 1.4.9, which handles the Prism II chipsets with platform id 8008 in the DWL-650 adapters, from http://www.red-bean.com/~proski/firmware, (also linked to by Jun Sun's marvellous website).
Actually, i read the following document on that site in my web browser: http://www.red-bean.com/~proski/firmware/readme.html which informed be to download the firmware package http://www.red-bean.com/~proski/firmware/Latest-prism.tar.bz2. This is the firmware you want for your DWL-650!

The archive file can of course be opened with "tar -xvjf Latest-prism.tar.bz2", but since i was about to flash the cards using Windows i cheated, and used WinRAR to open it instead. :)

WinRAR can be downloaded as time limited shareware at http://www.rarlab.com/.
(Very useful archiving tool that works on Linux as well as "the other" OS'es).

In that archive one finds lots of firmware images in S Record format files. Also known as Exormax by all of us who have worked with the Motorola 6803, 6805, 6811, 68020... Oops! Now i started to stray... ;)
These S Record files contain the wanted firmware images, and the winupdate program handles them directly with no hazzle. Be aware that there exist lots of different firmware files in numerous file formats. Most of them pretty useless, since one has to be a promburner wizard and Intersil expert to know how to handle them.

Of all these firmware files we want only two. Those that supports platform id 8008, which is our Prism II chipset, and that are intended for writing to the FLASH memory in the adapter.

Within this tar.gz archive file we want these:
Primary firmware: primary-FLASH/p40003C0.hex
Secondary firmware: secondary-FLASH/s1010701.hex

Add both of them into the winupdate program. You will see the firmware files listed with a colorish P for the primary firmware, and a colorish S for the secondary, (or station), -firmware. This assures you the winupdate tool has validated the firmware files content OK.

Remember that you must add both the primary and secondary firmware files before flashing to avoid frying the adapter.

The winupdate program will check for compatibility before actual reflashing occurs, and will report if the firmware you are trying to download to the adapter is wrong.

Then, with the correct adapter card selected, press Continue, and follow the procedure for flashing. You will get warnings. Proceed unless winupdate says the firmware files are incompatible.

Done! Eject the card and insert it again, (just to be safe).
You will find the card now has primary firmware version 0.3.0 and station, (secondary), firmware 1.7.1 by selecting the menu choice "Tools/Query firmware" in the winupdate program.

One thing that must be mentioned more than once, is that you must select both a primary and a secondary firmware to flash at the same time, or otherwise you may fry the adapter.


With the new firmware the driver works straight away in Linux with the orinoco_cs driver, and with 128 bit WEP encryption.


Besides getting WEP128 to work also with Linux, the DWL-650 adapters got faster with the newer firmware (1.4.9), and can maintain better throughput with much larger distance to the AccessPoint, and infact keep the link up further away from the AccessPoint, compared to the old firmware. And now the cards also support genuine 802.11 AdHoc networking, as compared to the nonstandard "Demo AdHoc" mode they had from stock firmware. So the firmware upgrade was also to a benefit for the Windows laptops i use with DWL-650 wlan adapters.

From here, we need to set up "/etc/rc.d/rc.inet1.conf" and optionally "/etc/rc.d/rc.wireless.conf". rc.inet1.conf is enough, but the wireless configuration parameters can be stored in rc.wireless.conf, thus leaving the rc.inet1.conf to handle the vanilla adapter setup, like ip address, netmask, etc. I will leave the setup of rc.wireless.conf to the curious mind, since it is enough for most people to only use rc.inet1.conf to get the network up.

Example snippet from /etc/rc.d/rc.inet1.conf for a DWL-650 as the first, (eth0) adapter:
Code:

# Config information for eth0:
IPADDR[0]="192.168.1.2"
NETMASK[0]="255.255.255.0"
USE_DHCP[0]="no"
DHCP_HOSTNAME[0]=""
WLAN_ESSID[0]="wireless"
WLAN_MODE[0]="Managed"
WLAN_RATE[0]="auto"
WLAN_CHANNEL[0]="auto"
WLAN_KEY[0]="12345678901234567890123456"

This example sets up the adapter to work in the mode that use an AccessPoint gateway for the wireless network, with ESS_ID = wireless, and the WEP encryption key of 1234-5678-9012-3456-7890-1234-56, and using the fixed ip address 192.168.1.2 in the 192.168.1/24 network which is in the range 192.168/16 that is reserved for local intranet usage.

Extra:
I also found the wicd package very useful for setting up the wireless and for debugging. It is included as a package in the Slackware13 DVD in the directory "extra" and can easily be installed by cd'ing to the extra directory on the Slackware DVD and fire up pkgtool. Support can be found at http://wicd.net/.


Content with working this out i will now go on to reflashing the Linksys WRT54GL wireless gateway to get increased throughput and transmit power, (it runs embedded linux!), and also setting up the gpsd daemon to get accurate offline timing for my beloved intranet ntp peers. Cheers! :D


Weblinx collection on the topic:
http://linux.junsun.net/intersil-prism/
http://www.red-bean.com/~proski/firmware/readme.html
http://savannah.nongnu.org/projects/orinoco/
http://angerman.net/articles/wap/
http://www.hpl.hp.com/personal/Jean_...b.html#Orinoco
http://pcmcia-cs.sourceforge.net/
http://linuxwireless.org/en/users/Devices/PCMCIA
http://wicd.net/


All times are GMT -5. The time now is 11:53 PM.