# acx100 and 2.6 kernel howto

## FreeFly42

I have my DWL 650+ (acx100 TI chipset) working using the OSS driver (from sourceforge) in the 2.6 kernel series.  Here's how I did it:

First compile and install the driver.  I found this message on sourceforge and applied this patch to my 2.6 kernel tree, and compiled the kernel.  This will create a module for the acx100 (acx100_pci is the module name).  The patch includes all the acx100 source and correctly installed/modified the proper Makefiles on the gentoo-dev-sources 2.6.0, so there's nothing else to download.

Compile the kernel and install the modules.

You will still need to get a binary firmware and extract it per the instructions in the acx100 project.

I created a dir for the firmware in the 2.6 modules directory:

```
mkdir /lib/modules/2.6.0-gentoo/kernel/drivers/net/wireless/acx100/firmware      

```

You will need a fixed location for the firmware so you can pass it as an argument when you insert the acx100_pci module

You can get a copy of the firmware online (but I don't recommend it):

```
wget ftp://ftp.dlink.com/Wireless/dwl520+/Driver/dwl520+_driver_302.zip

unzip dwl520+_driver_302.zip

cp Win2000/WLANGEN.BIN Win2000/RADIO0d.BIN Win2000/RADIO11.BIN \ 

/lib/modules/2.6.0-gentoo/kernel/drivers/net/wireless/acx100/firmware
```

I have found that the key to stability in the driver is to have the same firmware for the kernel driver as actually running on the card, so you'd be better off using the version of the firmware on the Windows installation CD for whatever device you have.  Alternatively, you can upgrade the firmware on your device so it matches the firmware you are using for the driver (this is what I did), but it has to be done in Windows  :Crying or Very sad: 

Now you can insert the acx100_pci module specifying the path to the firmware:

```
modprobe acx100_pci firmware_dir=/lib/modules/2.6.0-gentoo/kernel/drivers/net/wireless/acx100/firmware

```

If the module insertion worked correctly you will find the new device as wlan0, and you can configure it using the usual iwconfig commands.  I hacked up the start script provided in the acx100 project, but it's not too hard to script this yourself. 

This post was composed and submitted entirely through my DWL650+ wireless card running 128 bit WEP @22M on my 2.6 kernel  :Cool: 

----------

## J.M.I.T.

are you sure you're using an OSS (OpenSoundSystem) driver for a wireless network card???

----------

## FreeFly42

 *J.M.I.T. wrote:*   

> are you sure you're using an OSS (OpenSoundSystem) driver for a wireless network card???

 

I'm sure I'm using an OSS driver (Open Source Software).  Have a look at the acx100 OSS driver page.   :Very Happy: 

Is it possible the same acronym would mean more than one thing?  Gosh, who could have imagined...  :Embarassed: 

----------

## mr.twister

Hello,

can you publish your kernel pcmcia config?

i tryed acx100 and also drivers from linuxant; i got linuxnt working with compiled support for cardmgr.... but this way i loosing my pcmcia cdrom....

for acx100 i have tryed both ways, with cardmgr support and without, not working!

----------

## FreeFly42

```
Bus options (PCI, PCMICA, EISA, MCA, ISA) -->

    PCMCIA/Cardbus support -->

        PCMCIA/CardBus support (enabled)

        CardBus yenta-compatible bridge support (enabled)

Device drivers -->

    Networking support -->

        Networking support (enabled)

        Network device support (enabled)

        Dummy net driver support (module)

        Wireless LAN (non-hamradio) -->

            Wireless LAN drivers (non-hamradio) & Wireless Extension (enabled)
```

----------

## anybody

Hi everyone  :Smile: 

Thanks a lot for this howto and the information on which kernel configurations are necessary!

It really helped me a lot, though it still doesn't work...

I applied the Patch mentioned above to my 2.6.0 Kernel from Kernel Org.

I enabled Cardbus + Yenta, as well as the "wireless lan non hamradio" support in the kernel and compiled it (make+make modules_install).

The pcmcia-cs package (v 3.2.5 since v3.2.4 didn't compile - probably because of kernel 2.6 ?) is installed and running (rc-update add pcmcia default).

I then downloaded the appropriate Drivers v3.07 for my DWL-650+ Card (HW Rev A1) from www.d-link.com - those are the same Drivers which im using (very successfully  :Wink:  in WinXP and put them in /usr/src/wlan-firmware/.

AIRPLUS.CAT  AIRPLUS.SYS  RADIO11.BIN  WLANGEN.bin AIRPLUS.INF  RADIO0d.BIN  RADIO15.BIN

Everything looked very well so far.

I start my acx100 with 

modprobe acx100_pci firmware_dir=/usr/src/wlan-firmware

No errors or any other status messages can be seen in the commandline, but this is what appears in dmesg:

PCI: Enabling device 0000:03:00.0 (0000 -> 0003)

PCI: Setting latency timer of device 0000:03:00.0 to 64

Allocating 6624, 19E0h bytes for wlandevice_t

acx100_pci: probe of 0000:03:00.0 failed with error -5

I also installed the "wireless-tools" package to get iwconfig but 

root@tuxpaq root # iwconfig wlan0

wlan0     No such device

Anyone has any Idea what i could do ?

From what i've seen it's possible to active additional debug outputs, however i have been 

unsuccessfull in activating this. (Adding it to the modprobe commandline resulted in errors in dmesg about unsupported options in the commandline).

----------

## FreeFly42

Since you are running this in Windows, and are using a very recent firmware, did you enable 4x mode in Windows?  This will not work with the Linux drivers.  I am using the 3.05 firmware, with the speed at 22M.

----------

## anybody

The 4x Mode is enabled, in the Windows Driver as well as in the Access Point (DWL-900AP+, Firmware v2.61) and seems to work fine and gives me a somewhat descent Performance  :Smile: 

But i really don't care whether i can use this additional feature in Linux or not (the performance gain really isn't that great, even 11MBit WLAN would be fine, wait, i think i could even live with 1-2MBit as long as it works   :Cool:  )

- however -

a) 4x Mode has been in the Drivers since quite some time, so v3.05 won't change much i think...

b) My Linux Problems do not seem Firmware/Windows Driver related at all, because - as i just tested - the error messages posted above don't change at all when i specify an incorrect firmware location as parameter.

----------

## FreeFly42

Right, 4x performance works nicely in Windows, but it won't work in Linux.  Even though the firmware I am using has the 4x capability it is not enabled, and I think this may be why you are having a problem.  The driver loads the firmware when it is installed and uses it to communicate with the card, so it could explain the problem you are having.  I will reboot in Windows and put my card in 4x mode to see if this breaks my set up.

Have you been able to get your card working with a 1.4 series kernel?

----------

## FreeFly42

Ok, 4x mode didn't hurt me at all.  I suppose this isn't all that surprising since the card doesn't even store the WEP key, so I get the feeling it doesn't store much on it.  Good to know, though!

However, if I modprobe with an incorrect firmware path then it fails with the exact message shown.  Are you sure you are giving it the path to a valid firmware?  Have you tried using the firmware from the binary Linux driver?

----------

## mr.twister

Hi,

I have installed it finally and njoying last two days  :Smile: 

But i installed on 2.4.22-ac4 kernel (in general my goala is 2.6, because it is faster and have no problem with software suspend).

Binary drivers from http://www.ivor.it/wireless does not working. dmesg giving info about incompatibility of compiled and installed versions of wireless-tools. But driver from ivor.it detects my DWL-650+.

Original driver from http://acx100.sourceforge.net working well!

Only comment: i got windows binary not from D-Link web *there is latest version), but from CD coming with card.

Also must run startup script manually (i just put into my /etc/init.d/net.eth0 start part reference to /acx100/scripts/start_net and to stop part reference to /acx100/scripts/stop.net).

Settings in /etc/conf.d/net does not matter for this driver, except routing; rest is coming in start_net.

What now? Now I just trying 2.6 kernel. I just have some problems with it, but now i sure, that acx100 can work there too  :Smile: 

----------

## anybody

@FreeFly42:

Thank you very much for trying this - i think this information you posted might really help me a lot  :Smile:  [I have not yet tried any other firmwares so far]

Sorry for not answering earlier, i'm quite busy currently, but i'll try all this tonight and will let you know what happens  :Smile: 

Thanks a lot for your help!

----------

## FreeFly42

Yep you still have to run the scripts manually, or write your own, or modprobe it and iwconfig it manually.  Maybe someday I'll post a howto on automating it, but that wasn't my goal for this one!  :Wink: 

----------

## leon_73

Hi all, 

and sorry guys for the cross posting but I had no answer on the other 3d.

Maybe you can explain me a part of the README file of the patch *Quote:*   

> 1. Create a directory drivers/net/wireless/acx100 in your 2.6 source tree.
> 
> 2. Copy the files
> 
> - src/Makefile
> ...

 1) at point 2 should I copy all the file in acx100 dir or I have to create also the subdirs src and include  ???

2) when I use make menuconfig I don't see the acx100 option. Is it right?

Thanks

Leo

----------

## spb

 *FreeFly42 wrote:*   

> Yep you still have to run the scripts manually, or write your own, or modprobe it and iwconfig it manually.  Maybe someday I'll post a howto on automating it, but that wasn't my goal for this one! 

 

I have it starting up automatically, by adding a line to /etc/modules.autoload.d/kernel-2.6:

```
acx100_pci firmware_dir=/usr/local/acx100/firmware
```

And a couple of lines to the end of the start function in /etc/init.d/net.wlan0 (make a copy of net.eth0, rename it net.wlan0) to set the ESSID properly. Then rc-update add net.wlan0 default, and it works perfectly.

----------

## FreeFly42

This will work if you have a pci device or the card is in place at boot, but I really want to get the PCMCIA system to recognize the card.

Here's what I've done so far, maybe someone out there will know what to try next.  I have another wireless card which I have set up in PCMCIA so it is recognized, the module is loaded, the wireless options are correctly configured and networking is set up, so I used the PCMCIA configurations for that card as a guide.

The first step is easy--to get PCMCIA to recognize the card and load the module I edited /etc/pcmica/config with the following:

```
#

# Device driver definitions

#

# These should generally not be changed!

#

  

device "acx100"

  class "network" module "acx100_pci"

(further down in the file)

#

# Wireless network adapters

#

card "D-Link Systems Texas Instruments ACX 100 22Mbps Wireless Interface"

  manfid 0x0097, 0x8402

  bind "acx100"
```

Since the module needs to be told where to find the firmware I edited /etc/pcmcia/config.opts with:

```
# Options for Texas Instruments 22M ACX100 wireless module

module "acx100_pci" opts "firmware_dir=/root/acx100/firmware"
```

However this didn't work.  :Sad:    The module would load, but wasn't getting the firmware directory option.  So I bypassed it by hard-coding the firmware path in the module source.    :Confused:    Now I could insert the card and pcmcia would recognize it and load the right driver.  I could set up the wireless with iwconfig commands and it would work!    :Smile:    Halfway there.

Next I edited /etc/pcmcia/wireless.opts with:

```
# Dlink DWL-650+

*,*,*,00:80:C8:*)

    INFO="Dlink 650+"

    ESSID="notMyEssid"

    MODE="Managed"

    RATE="22M auto"

    KEY="0123456789ABCDEF0123456789 restricted" # WEP128

    CHANNEL="10"

    ;;
```

and andded the network configuration to /etc/pcmcia/network.opts.  The network.opts worked, but the wireless.opts didn't.  Of course without the wireless stuff configured none of the network stuff worked!!  So I copied /etc/init.d/net.eth0 to /etc/init.d/net.wlan0 and hacked it up a bit to load wireless options which I added to /etc/conf.d/net, which works, but is really hackish.  I haven't been able to figure out why the module wasn't loaded with the firmware option or why the wireless stuff isn't loaded.  I've debated about using the scripts on this thread, but I have two wireless cards which need to be configured slightly differently I really want to get the pcmcia stuff to work since it will do that.

----------

## anybody

Ok, i finally found some time to do this...

I read the README from the new acx100_pre7 beta and concluded that there might be a problem with the Firmware Files beeing Case-Sensitive...

I renamed WLANGEN.bin to WLANGEN.BIN and the driver loads fine now.

Somewhat sad that the ACX team wasn't able to implement basic error messages  :Smile: 

[EDIT]

I now upgraded to 'acx100-0.2.0pre7_plus_fixes_2.tar' which can be found here.

[Running it with Kernel 2.6.1]

Apart from now having MASSIVE debug statements in dmesg, everything works fine. Have not tried WEP yet or anything special, but it seems to work quite solid with my card.

[/EDIT]

----------

## salog

when i try to follow the steps, the make tells me that multiple processors arent supported.

is there any way out??

----------

## jonasmattsson

hi, and thanks for a good guide.

it works almost fine, doing this post using my dwl-650+.

but i also get some strange side effects,  seems like some apps like gaim and the terminal window 

in gnome suddenly takes several minutes to start up.  

This is true, first i start a few terminal windows just to close them again (starts in no time),

then i run 

```
# /etc/init.d/net.wlan0 start
```

 , wich works fine and my internet connection is up and running, thats when i try to start a terminal window again,  

this time i find myself waiting for about 1-2 minutes.  It doesn't seem to be heavy work for

the computer (not the cpu nor the disk), it just puts me on hold for a while 

(longshot: has this got something to do with gtk?).

another thing that bothers me are, when i connect the card the acx100_pci module 

starts up, this would be great if it wasnt for three things, 

first: i want to know why this happens to my computer (control freak, thus gentoo),

second: it doesnt stop when i dissconnect the card again,

last: it doesnt load the firmware_dir (since i dont know how to load it)[/list]

pehaps if i solved the first problem the rest would follow,  any ideas?

----------

## spb

 *jonasmattsson wrote:*   

> first: i want to know why this happens to my computer (control freak, thus gentoo),

 This is hotplug seeing your new hardware and loading the driver for it.

 *Quote:*   

>  second: it doesnt stop when i dissconnect the card again,

 I'm not too hot on hotplug (no pun intended): since I don't have a laptop, I've only ever used it with USB, but this might be intended behaivour. I would have thought it ought to unload it though.

 *Quote:*   

>  last: it doesnt load the firmware_dir (since i dont know how to load it)[/list]

 What I did here was to create a file /etc/modules.d/acx, and put in it

```
alias wlan0 acx100_pci

options acx100_pci firmware_dir=/lib/acx-firmware
```

Replace /lib/acx-firmware with wherever your firmware is, then run modules-update. Now whenever your modules loads, it should have the right firmware directory.

BTW: for anyone wanting to automate it, I have a hacked net.wlan0 init script on my other machine that looks for wlan_$IFACE and iwpriv_$IFACE in /etc/conf.d/net and passes those to iwconfig and iwpriv. If anyone's interested, I'll post it (I don't have access to it right now).

----------

## jonasmattsson

thanks for the tip that solved at least the firmware problem.

but there are others left

I stopped (/etc/init.d/hotplug stop) the hotplugging, it still autodetects and

runs the module, and now (thanks to thebell's tip) it all works it even starts the net.wlan0 and

my internet works fine.  my problem at this time is not really a problem, i just want to know 

how it all happens, why, and how and can controll it, also how to make it stop when i 

disconnect my card again (wich is probably never going to be a real problem since i usaly shut 

the computer down when i'm done for this time)

also the slow start of some applications that i mentioned earlier are gone, thats nice, still if 

anyone know (or have an idea) of what happend when Langoliers hijacked my computer, feel 

free to speak.

----------

## jonasmattsson

hmm still doesnt load the firmware if the card is inserted during boot, i'll have to remove the card and

```
 modprobe -r acx100_pci 
```

 and then insert the card again

i forgot to say earlier that it's only the module (acx100_pci) that doesnt unload, the net.wlan0 actually stops when card is removed and starts when card is inserted again, wich is great (if i only knew how it happends).

----------

## FreeFly42

Interesting about getting the firmware address to autoload.  I tried do do that before (exactly as described) and it never loaded the firmware address.  I got around it by hard-coding the firmware address in the driver source, which works but it's pretty lame.  Perhaps there have been some bug fixes to the module loading which fix it.  I'll try again next time I feel like mucking around with it.

As far as the pci module, the pcmcia module doesn't contain the actual acx driver, just an interface to allow the pcmcia card to interact with the pci driver.  That's done pretty commonly with open-source pc card drivers--no need to reinvent the wheel.

----------

## YellowJacketRyan

I am a total Linux newbie trying to get my D-link DWL-G650+ working.  I was following the instructions on http://www.houseofcraig.net/acx100_howto.php.  You mention (as did th author of that page) getting the firmware off of the driver CD.  My driver CD contains no *.bin files.  The drivers folder contains ar5211.sys, ar52119x.sys, net5211.inf, and setup.exe.

Am I missing something?  Are the firmware files on this cd?  Are these the ones?  (I think I am looking for radio??.bin and ti*.bin)

Please help.

----------

## FreeFly42

Open the .inf file with a text editor, it should tell you where to find the .BIN files.  Also you should do a search for *.BIN.  Remember the file name will be all caps.

----------

## lordkur

Hello friends!!!

I want to install gentoo in my box. I 've done this thousand of times before. This time I found a challenging issue!!!! . I cannot install nothing since I have a wireless connection now.  I have a  Texas Instrument acx 111 Chip.  I need 

your great suggestions and ideas on how to do this.  I need to do my installation from stage one, I need to find a way to get driver and load it as a module.... 

PLEASE ---I NEED IDEAS!!!!!

THANKS IN ADVANCE

----------

## FreeFly42

If you've been through the installation before then you probably have a working Linux box you can use to compile the driver.  If you really want to do the installation with the network working you'll have to create a custom boot cd.  There are several threads with howtos for that.  I've done it a couple of time to get an emergency boot cd for my root-lvm system.  I don't recommend it, however.  I think You'll wind up making a bunch of coasters before you finally get a kernel configuration that will work properly for your hardware.

My recommendation would be to do a minimal installation off-line until you can compile the kernel including the acx100/acx111 patches, then you can upgrade or maintain the system.  Once you have it working, then make a bootable cd with your custom kernel (else you won't be able to get net access to help troubleshooting a problem).

----------

## lordkur

First and foremost ...thanks!!!!. I will try to do a mininal installation and then compile  a custom kernel so I can do my own bootable live CD to get this working . I will keep u informed about this issue. I will accept another ideas .

Thanks!!!!

----------

## soigres

yes yes yes... but if i want to install gentoo from livecd, what i have to do?

help me, please!

----------

## flipy

did anyone tried the ebuild? it's not working here, it hangs my comp at boot, and if not, it causes a segmentation fault if i do "iwconfig". maybe this is caused by my arch amd64?

----------

