# rt73 and wpa_supplicant

## blueBoB2

Hi

I'm trying to get my WLAN Stick (TL-WN321G) running. It has an rt73 chipset so I'm using the rt73 serial monkey's driver. To make it more comfortable for use I'd like to use WICD network manager. If I have understood it right, it's just Graphical wrapper for wpa_supplicant.. I know that the serial monkey rt73 driver and wpa_supplicant are usually not compatible but I've heard that there are ways to make them work.. I can already scan for networks but it does not connect to mine.. 

Does anyone has some advice for me?

----------

## audiodef

Well, if you have wpa_supplicant installed, try this:

ifconfig wlan0 up

iwconfig wlan0 essid YOUR_ROUTERS_ESSID

dhcpcd wlan0

Replace wlan0 with your interface, if it's not wlan0 (maybe wlan1, or whatever, depending on your configuration). Add WEP key or appropriate credentials to iwconfig (check out the iwconfig man page) if your network is encrypted.

----------

## blueBoB2

My network uses WEP encryption so I added the key.. But dhcpcd had a time out.

----------

## audiodef

Well, it still sounds like progress. 

Can you post the commands you used, verbatim (without the real key of course)?

----------

## blueBoB2

I hope I did not forget anything.. One strange  thing that I reocgnized I the last line from dmesg.. But I'm not sure what it is supposed to mean.

dmesg

usbcore: registered new interface driver rt73usb

rt73: init

usbcore: registered new interface driver rt73

firmware: requesting rt73.bin

ADDRCONF(NETDEV_UP): wlan0: link is not ready

ifconfig wlan0 up

iwlist wlan0 scanning

wlan0     Scan completed :

          Cell 01 - Address: 00:16:E3:AF:E2:33

                    ESSID:"home"

                    Mode:Master

                    Channel:11

                    Frequency:2.462 GHz (Channel 11)

                    Quality=49/100  Signal level=-64 dBm  

                    Encryption key:on

                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s

                              24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s

                              12 Mb/s; 48 Mb/s

                    Extra:tsf=00000003c462135a

iwconfig wlan0 essid home

iwconfig wlan0 key s:...

dhcpcd wlan0

wlan0: dhcpcd 4.0.2 starting

wlan0: waiting for carrier

wlan0: timed out

iwconfig wlan0

wlan0     IEEE 802.11  ESSID:"home"  

          Mode:Managed  Frequency:2.412 GHz  Access Point: Not-Associated   

          Tx-Power=6 dBm   

          Retry min limit:7   RTS thr:off   Fragment thr=2352 B   

          Encryption key:...

          Link Quality:0  Signal level:0  Noise level:0

          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0

          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

----------

## audiodef

Try this:

ifconfig wlan0 up

iwconfig wlan0 mode managed key (yourKeyHereWithoutParans)

iwconfig wlan0 essid (ESSID)

dhcpcd wlan0

Let us know if that works

----------

## blueBoB2

First thanks for your help but unfortunatelly it did not make any difference.

----------

## NeddySeagoon

blueBoB2,

What kernel and what driver ?

The serialmonkey driver was adopted into the kernel at 2.6.23 and has worked well since 2.6.25.

Use the driver proved in the kernel.  I have yet to try it with wpa-supplicat but thats on my list of things to do real soon now.

----------

## blueBoB2

I'm using the 2.6.26 kernel. But I'm not using the driver that comes with the kernel. I'm using a cvs "checkout" from 12th of february 2009..

Do you think I should rather use the driver comming with the kernel?

----------

## audiodef

Yep. I think Ned's a kernel dev, so he'd be the guy with the best advice.   :Very Happy: 

----------

## d2_racing

Roy knows almost everything about Linux  :Razz: 

I don't know about you , but did you try with SystemRescueCD ?

```

# lspci -v

# ifconfig -a

# iwconfig

```

Maybe you are using the wrong driver.

----------

## NeddySeagoon

audiodef,

I'm not a coder at all, not really. Its good to use a consistent set of parts. Only use CVS if you really need to, its the code as being maintained now - it may not even build and if it does, it may not work.

At least the code in the kernel is known to work.

----------

## audiodef

 *NeddySeagoon wrote:*   

> audiodef,
> 
> I'm not a coder at all. 

 

Well, alright, but you certainly know a thing or two about a thing or two.   :Wink: 

----------

## blueBoB2

 :Very Happy:  Programmer or not.. Nedgy is an admin so we better are nice to him  :Razz: 

I'm using the drivers that come with the kernel does not help either..

Do you mean Install CD by rescue CD? Or in my case install usb stick? I've already deleted it.. Does it make a great difference if I execute that command from my usb stick or my installed system?

lsusb -v

```

Bus 003 Device 002: ID 148f:2573 Ralink Technology, Corp. 

Device Descriptor:

  bLength                18

  bDescriptorType         1

  bcdUSB               2.00

  bDeviceClass            0 (Defined at Interface level)

  bDeviceSubClass         0 

  bDeviceProtocol         0 

  bMaxPacketSize0        64

  idVendor           0x148f Ralink Technology, Corp.

  idProduct          0x2573 

  bcdDevice            0.01

  iManufacturer           1 Ralink

  iProduct                2 54M.USB.......

  iSerial                 0 

  bNumConfigurations      1

  Configuration Descriptor:

    bLength                 9

    bDescriptorType         2

    wTotalLength           32

    bNumInterfaces          1

    bConfigurationValue     1

    iConfiguration          0 

    bmAttributes         0x80

      (Bus Powered)

    MaxPower              300mA

    Interface Descriptor:

      bLength                 9

      bDescriptorType         4

      bInterfaceNumber        0

      bAlternateSetting       0

      bNumEndpoints           2

      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     0x0040  1x 64 bytes

        bInterval               0

      Endpoint Descriptor:

        bLength                 7

        bDescriptorType         5

        bEndpointAddress     0x01  EP 1 OUT

        bmAttributes            2

          Transfer Type            Bulk

          Synch Type               None

          Usage Type               Data

        wMaxPacketSize     0x0040  1x 64 bytes

        bInterval               0

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)

```

ifconfig -a

```

wlan0     Link encap:Ethernet  HWaddr 00:21:27:CD:A1:19  

          UP BROADCAST MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

```

iwconfig

```

lo        no wireless extensions.

sit0      no wireless extensions.

wmaster0  no wireless extensions.

wlan0     IEEE 802.11  ESSID:"home"  

          Mode:Managed  Frequency:2.462 GHz  Access Point: Not-Associated   

          Tx-Power=6 dBm   

          Retry min limit:7   RTS thr:off   Fragment thr=2352 B   

          Encryption key:6B39-6137-6230-6D6E-7974-3267-39

          Link Quality:0  Signal level:0  Noise level:0

          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0

          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

eth0      no wireless extensions.

```

----------

## d2_racing

What happen when you run this from your USB stick :

```

# lspci -v

```

----------

## NeddySeagoon

blueBoB2,

Follow the Gentoo Handbook

There are two files to configure, don't put all the settings into /etc/conf.d/net

Substitute your SSID and passwords for those in the example. For me and my Belkin rt73, it justworks.

There is another gotcha, your Access Point and wpa-supplicant need to be using the same cypher, so you will need to look at your AP setup to know what that is.

As always, make it work unencrypted first,

----------

## blueBoB2

I tried to follow the handbook.. But either I'm doing it all wrong.. or it does not work for me..

I've put those 2 lines in both files..

```

modules=( "iwconfig" )

key_home="[1] mode managed enc open"

```

What comes next? I executed ifconfig wlan0 up and then iwconfig wlan0 but the interface was not configurated..

About using wpa_supplicant.. What driver should I actually use? It offers those 7.. but what about my Ranlink chip?

```

drivers:

  wext = Linux wireless extensions (generic)

  hostap = Host AP driver (Intersil Prism2/2.5/3)

  prism54 = Prism54.org driver (Intersil Prism GT/Duette/Indigo)

  atmel = ATMEL AT76C5XXx (USB, PCMCIA)

  ndiswrapper = Linux ndiswrapper

  ipw = Intel ipw2100/2200 driver (old; use wext with Linux 2.6.13 or newer)

  wired = wpa_supplicant wired Ethernet driver

```

----------

## NeddySeagoon

blueBoB2,

I have a lot of junk in my net file ... heres the important bits.

```
# Prefer ifconfig over iproute2

modules=( "wpa_supplicant ifconfig" )

# wirless suplicant

# It's important that we tell wpa_supplicant which driver we should

# be using as it's not very good at guessing yet

wpa_supplicant_eth0="-Drt73usb"

# Set managed, not adhoc

mode_wlan0="managed"

# try to get an IP

config_wlan0=( "dhcp" )

dhcp_wlan0="nontp nonis"
```

 /etc/wpa_supplicant/wpa_supplicant.conf reads

```
# This is a network block that connects to any unsecured access point.

# We give it a low priority so any defined blocks are preferred.

network={

        key_mgmt=NONE

        priority=-9999999

}

# The below line not be changed otherwise we refuse to work

ctrl_interface=/var/run/wpa_supplicant

# Ensure that only root can read the WPA configuration

ctrl_interface_group=0

# Let wpa_supplicant take care of scanning and AP selection

ap_scan=1

# Simple case: WPA-PSK, PSK as an ASCII passphrase, allow all valid ciphers

network={

  ssid="RadioNet"

  psk="<your-pass-phrase>"

  # The higher the priority the sooner we are matched

  priority=5

}

# IBSS/ad-hoc network with WPA-None/TKIP

network={

  ssid="RadioNet"

  mode=1

  proto=WPA

  key_mgmt=WPA-NONE

  pairwise=NONE

  group=TKIP

  psk="<your-pass-phrase>"

}
```

I know it works because my Acer One and old laptop with the rt73 dongle work but my iPaq, which struggles to do 64 bit WEP, can no longer connect to the AP.

----------

## blueBoB2

I've got to admit that I feel really stupid..

I of course thought of the WEP encryption. But I totally forgot that I had set up access control via MAC-adresses.

It works wonderful now. Thank you for your patience and sorry that I bugged you with this  :Sad: 

----------

## Gentree

Hi,

one detail that is missing from the handbook and not mentioned here is how to create the pass-phase/key pair. 

It's seemingly so amazingly obvious it's not even worth mentioning but it probably would be useful. 

 :Confused: 

useful online tool using javascript so as not to transmit passphrase or key (verified as working with connection down).

http://www.kurtm.net/wpa-pskgen/

----------

## Gentree

I found a patch that is supposed to make rt73 work with wpa-supplicant

http://mjh.name/Ralink_rt73_wpa_supplicant_rt2x00_wpa2

Since the handbook seems woefully insufficient to get things working I cannot say wether it does work but it looks thorough. This is intended for Gentoo , I added an epatch and put the modified ebuild in overlay. Compliled fine with the new USE for rt73.

[ebuild   R   ] net-wireless/wpa_supplicant-0.5.7  USE="qt4* -legacy_ralink_rt73*" 

Plugging the device loads the driver and firmware:

```

bash-3.2#lsmod |grep 73

rt73                  221056  0 

firmware_class         10176  2 rt73

```

```
bash-3.2#wpa_supplicant -D ralink -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B

ioctl[SIOCGIWAP]: Transport endpoint is not connected

ioctl[SIOCGIWAP]: Transport endpoint is not connected

ioctl[SIOCGIWAP]: Transport endpoint is not connected

ioctl[SIOCGIWAP]: Transport endpoint is not connected

```

Now I just need to make sense of the handbook and fill in the gaps about what it assumes I know but I dont.

----------

## NeddySeagoon

Gentree,

Do you really get a device called wlan0 with that old ralink driver ?

When I used to use it, prior to kernel 2.6.23, it produced a rausb0 device for my rt73.

I only ever used wpa-supplicant with the in kernel driver in gentoo-sources-2.6.28, where it was as I posted above.

----------

## Gentree

Hi,

yes that seems to be the case :

```
bash-3.2#wpa_supplicant -D ralink -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B 

ioctl[SIOCGIWAP]: Transport endpoint is not connected

ioctl[SIOCGIWAP]: Transport endpoint is not connected

ioctl[SIOCGIWAP]: Transport endpoint is not connected

ioctl[SIOCGIWAP]: Transport endpoint is not connected

bash-3.2#wpa_cli -iwlan0 list_networks 

network id / ssid / bssid / flags

0               any

1       Livebox-8491    any

2       Livebox-8491    any

```

If I'm reading this correctly, it is finding the router but not transmitting correct auth information. So it looks like the driver is OK with the hardware, I just have not sussed the config yet.

BTW I'm running 2.6.20

 :Cool: 

----------

## NeddySeagoon

Gentree,

Hmm, that kernel has the well publicised vmsplice root exploit.

Thats a good reason to update the kernel.

Is the rest of the system that old?

It looks like it can see the networks as you say but it not clear if its failing to associate or failing to authenticate.

dmesg may help there.

----------

## Gentree

Neddy, 

thanks for warning about that kernel bug. Looks like quite biggy. I'm not into updating my kernel every fortnight but that seems like as good a reason as there is. Thanks!

the rest of the system if pretty upto date. Last full update probably about a month back. 

I don't understand the associate / authenticate reference, what should I be looking for in dmesg.

This is the output from the point at which I plug the usb wifi device.

```

ip_tables: (C) 2000-2006 Netfilter Core Team

Netfilter messages via NETLINK v0.30.

nf_conntrack version 0.5.0 (8191 buckets, 65528 max)

e100: eth_pci: e100_watchdog: link up, 100Mbps, full-duplex

Installing knfsd (copyright (C) 1996 okir@monad.swb.de).

agpgart: Found an AGP 2.0 compliant device at 0000:00:00.0.

agpgart: Putting AGP V2 device at 0000:00:00.0 into 4x mode

agpgart: Putting AGP V2 device at 0000:02:00.0 into 4x mode

i2c_adapter i2c-2: adapter [NVIDIA i2c adapter 0 at 2:00.0] registered

i2c_adapter i2c-3: adapter [NVIDIA i2c adapter 1 at 2:00.0] registered

i2c_adapter i2c-4: adapter [NVIDIA i2c adapter 2 at 2:00.0] registered

hub 3-0:1.0: state 7 ports 6 chg 0000 evt 0010

ehci_hcd 0000:00:02.2: GetStatus port 4 status 001803 POWER sig=j CSC CONNECT

hub 3-0:1.0: port 4, status 0501, change 0001, 480 Mb/s

hub 3-0:1.0: debounce: port 4: total 100ms stable 100ms status 0x501

ehci_hcd 0000:00:02.2: port 4 high speed

ehci_hcd 0000:00:02.2: GetStatus port 4 status 001005 POWER sig=se0 PE CONNECT

usb 3-4: new high speed USB device using ehci_hcd and address 4

ehci_hcd 0000:00:02.2: port 4 high speed

ehci_hcd 0000:00:02.2: GetStatus port 4 status 001005 POWER sig=se0 PE CONNECT

usb 3-4: default language 0x0409

usb 3-4: new device strings: Mfr=1, Product=2, SerialNumber=0

usb 3-4: Product: 802.11 bg WLAN

usb 3-4: Manufacturer: Ralink

usb 3-4: uevent

usb 3-4: usb_probe_device

usb 3-4: configuration #1 chosen from 1 choice

usb 3-4: adding 3-4:1.0 (config #1, interface 0)

usb 3-4:1.0: uevent

drivers/usb/core/inode.c: creating file '004'

rt73: init

rt73 3-4:1.0: usb_probe_interface

rt73 3-4:1.0: usb_probe_interface - got id

rt73: idVendor = 0x7d1, idProduct = 0x3c03 

rt73: using permanent MAC addr

rt73: Active MAC addr: 00:1e:85:9e:61:81

rt73: Local MAC = 00:1e:85:9e:61:81

usbcore: registered new interface driver rt73

rt73: driver version - 1.0.3.6 CVS

rt73: using net dev supplied MAC addr

rt73: Active MAC addr: 00:1e:85:9e:61:81

rt73: Local MAC = 00:1e:85:9e:61:81

```

----------

## NeddySeagoon

Gentree,

Hmm.  I expected to see something about loading the firmware, associating and getting an IP.

I assume that the interface is not started?

```
rt73: driver version - 1.0.3.6 
```

 Thats a really old driver.

I had an ebuild for it in the Sunrise overlay for a few kernel versions. I seem to remember that 2.6.17 broke it beyond my skills to fix, so I moved to the serialmonkey driver, which had ebuilds in the main portage tree. Thats the driver that was taken into the kernel.

----------

## Gentree

Looks like the firmware loads OK

```
bash-3.2#lsmod |grep 73

rt73                  221056  1 

firmware_class         10176  2 rt73,prism54

```

```

ifconfig 

.....

wlan0     Link encap:Ethernet  HWaddr 00:1e:*%:9e:61:81  

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:4 errors:0 dropped:0 overruns:0 frame:0

          TX packets:13 errors:0 dropped:4 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:496 (496.0 B)  TX bytes:1074 (1.0 KiB)

```

and looks like it's up.

```
lsusb

...

Bus 003 Device 005: ID 07d1:3c03 D-Link System
```

The driver I built was from here. I thought that was the serialmonkey driver but it appears this is the "legacy" version.

http://rt2x00.serialmonkey.com/rt73-cvs-daily.tar.gz

The portage package rt2x00 has been removed in favour of the kernel built-in driver, so I have installed 2.6.28-r10 sources but I don't see any option that seems to match. 

do you know what it is called now ?

many thanks.

----------

## Gentree

OK, I have moved to a 2.6.28 kernel and now use the rt73usb kernel module and -D wext with wpa_supplicant. I have got as far as getting gentoo to associate with the router.

This was with a Dlink DWL-G122. I also have a Belkin F5D7050 which also purportedly uses ralink but rt2xxx. However having replaced the Dlink with the Belkin is see the driver loaded 

```
rt2x00usb              10432  0 

rt2x00lib              37632  1 rt2x00usb

mac80211              167720  2 rt2x00usb,rt2x00lib

cfg80211               30352  2 rt2x00lib,mac80211
```

but I get no wlan* 

```

Initializing interface (2) 'wlan1'

ioctl[SIOCGIFFLAGS]: No such device

```

```
Initializing interface (2) 'wlan0'

ioctl[SIOCGIFFLAGS]: No such device

```

```
dmesg 

...

drivers/usb/core/inode.c: creating file '006'

usb 1-4: New USB device found, idVendor=050d, idProduct=705e

usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3

usb 1-4: Product: Belkin Wireless G USB Adapter

usb 1-4: Manufacturer: Manufacturer_Realtek

usb 1-4: SerialNumber: 00xxxxxxxxx

```

I'm probably missing something obvious but why is no device being created?

thx

----------

## NeddySeagoon

Gentree,

Maybe thats the wrong driver?

This site suggests you want the Realtek 8180/8185 PCI support kernel option.

It probably needs firmware too.

----------

## Gentree

LOL , I may be a bit new to wireless but I reckon I can tell the difference between pci and usb ! The fact that it's pulling in rt2x00usb indicates it's the correct module , you are probably right about the firmware. Maybe I got the wrong file from realtek.

thx.

----------

## NeddySeagoon

Gentree,

Read that site more carefully. Realtek 8180/8185 PCI covers both PCI and USB devices.

----------

## Gentree

apologies, wise one. It was indeed that module that it wanted (rather misleading header on that page).

```

drivers/usb/core/inode.c: creating file '009'

usb 1-4: New USB device found, idVendor=050d, idProduct=705e

usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3

usb 1-4: Product: Belkin Wireless G USB Adapter

usb 1-4: Manufacturer: Manufacturer_Realtek

usb 1-4: SerialNumber: 00e04c000001

rtl8187 1-4:1.0: usb_probe_interface

rtl8187 1-4:1.0: usb_probe_interface - got id

rtl8187: 8187B chip detected. Support is EXPERIMENTAL, and could damage your

         hardware, use at your own risk

phy2: Selected rate control algorithm 'pid'

phy2: hwaddr 00:c1:df:38:14:93, RTL8187BvE V0 + rtl8225z2

usbcore: registered new interface driver rtl8187

udev: renamed network interface wlan0 to wlan1
```

```

usb 1-4:1.0: uevent

drivers/usb/core/inode.c: creating file '010'

usb 1-4: New USB device found, idVendor=07d1, idProduct=3c03

usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0

usb 1-4: Product: 802.11 bg WLAN

usb 1-4: Manufacturer: Ralink

rt73usb 1-4:1.0: usb_probe_interface

rt73usb 1-4:1.0: usb_probe_interface - got id

phy3 -> rt73usb_validate_eeprom: EEPROM recovery - NIC: 0xffef

phy3 -> rt73usb_validate_eeprom: EEPROM recovery - Led: 0xe000

phy3 -> rt73usb_validate_eeprom: EEPROM recovery - RSSI OFFSET A: 0x0000

phy3 -> rt2x00_set_chip: Info - Chipset detected - rt: 1300, rf: 0002, rev: 0002573a.

phy3: Selected rate control algorithm 'pid'

usbcore: registered new interface driver rt73usb

phy3 -> rt2x00lib_request_firmware: Info - Loading firmware file 'rt73.bin'.

rt73usb 1-4:1.0: firmware: requesting rt73.bin

phy3 -> rt2x00lib_request_firmware: Info - Firmware detected - version: 1.7.

phy3 -> rt2x00mac_conf_tx: Info - Configured TX queue 0 - CWmin: 5, CWmax: 10, Aifs: 2, TXop: 0.

phy3 -> rt2x00mac_conf_tx: Info - Configured TX queue 1 - CWmin: 5, CWmax: 10, Aifs: 2, TXop: 0.

phy3 -> rt2x00mac_conf_tx: Info - Configured TX queue 2 - CWmin: 5, CWmax: 10, Aifs: 2, TXop: 0.

phy3 -> rt2x00mac_conf_tx: Info - Configured TX queue 3 - CWmin: 5, CWmax: 10, Aifs: 2, TXop: 0.

```

Am I correct in thinking this indicates the Belkin is a true OSS driver without closed source fimware like d-link?

thanks again.   :Cool: 

----------

## NeddySeagoon

Gentree,

It probably doesn't need firmware loaded as part of the initialisation.

The closed source firmware (when it exists) exists because it saves the cost of some storage inside the device.

Does it matter if the firmware is provided within the device (and not loaded) or provided and loaded with the driver?

In both cases, I hold the view that the firmware is part of the device, not part of the driver, therefore, even devices that need binary blobs of firmware can still be open source.

Look in dmesg to be sure, it should say if it loads firmware.

Its not just that page thats misleading, the kernel option even has PCI in its name.

----------

## Gentree

Yes , you're correct. Clearly this sort of device needs some kind on internal program. In fact calling an externally loaded binary blob "firmware" is probably incorrect anyway. If it needs loading each time the device is used it is clearly stored in volatile memory and is therefore software not firmware. 

Firmware is non-volatile , modifiable code. Neither hard nor soft, hence firm. It is basically a statement about the storage device not the function of the code. There seems to be general abuse / misunderstanding of the term firmware. Both on-chip, non-modifiable code and software loaded into RAM seem to get called "firmware" as a result of function.

It seems the Belkin has its functionality hard coded into the chip and so does not require any additional not-so-firmware.

I agree it seems to make sense to regard it as part of the device if that code runs on the device and is not part of the driver module running on the host.

seems this issue caused a bit of a shit storm over at debian recently.   :Razz: 

----------

## NeddySeagoon

Gentree,

There is no sharp boundary between firmware and software.

Suppose I make a device (it doesn't matter what) that uses a CPU and some stored program.

I think we would agree that the CPU and the rest of the hardware was hardware and the stored program was software, no matter how it was stored. The important differentiator is the design rules followed by the different disiplines.

Now, I need to make lots of this device because its become popular. So I reduce it to a Field Programmable Gate Array.

Clearly, the FPGA before its programmed is hardware. What goes into the FPGA isn't really software as it contains a description of the original hardware. The original software is there somewhere too ...

To rub salt into the wound, the FPGA would be designed using VHDL which looks very much like a software programming language and often follows the same design rules and methods as software.

It gets worse ... FPGAs come in two major sorts. Those that hold their 'program' in FLASH memory, internally and run it from the internal FLASH. Those that have their 'program' in RAM and need to have it loaded at every power up. The latter sort are capable of faster operation than the former.

You should be able to see your two wireless devices in the above descriptions.

----------

