Help setting up Prism3 USB-based WLAN on kernel 2.6.8.1

This is a discussion on Help setting up Prism3 USB-based WLAN on kernel 2.6.8.1 within the Linux Networking forums, part of the Linux Forums category; I'm having real difficulty setting up WLAN connectivity in Linux on my new ECS Desknote, and I'd love ...


Go Back   Usenet Forums > Linux Forums > Linux Networking

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 10-10-2004
Lewin A.R.W. Edwards
 
Posts: n/a
Default Help setting up Prism3 USB-based WLAN on kernel 2.6.8.1

I'm having real difficulty setting up WLAN connectivity in Linux on my
new ECS Desknote, and I'd love some help. The device is an AirVast
PRISM3 card, internally connected on a hidden USB bus. The VID/PID are
included in the current version of linux-wlan-ng, so I guess it's
supposed to be supported. This is a bit of a multifaceted problem -
this is my first serious non-experimental attempt to use 2.6 kernels,
and I'm not fully aware of the differences between FC1 and FC2. I'm
using kernel 2.6.8.1.

Historically I've had no difficulty getting linux-wlan-ng to play nice
with kernel 2.4.x on my older laptops with external USB pods. But I
don't know if it's the device or the kernel or something I've
forgotten in the config process; if someone could read over these
looking for obvious errors it would be MUCH appreciated.

Here's my ifcfg-wlan0 (no my key is not 8888... :):

DEVICE=wlan0
BOOTPROTO=dhcp
ONBOOT=no
TYPE=Wireless
ESSID=LARWE
CHANNEL=11
MODE=Managed
RATE=Auto
KEY=88888888888888888888888888

Here's my /etc/wlan/wlan.conf:

WLAN_DEVICES="wlan0"
ChannelList="0b:06:01:02:03:04:05:07:08:09:0a:00:0 0:00"
ChannelMinTime=200
ChannelMaxTime=250
WLAN_SCAN=y
SSID_wlan0="LARWE"
ENABLE_wlan0=y


Here's my /etc/wlan/wlancfg-LARWE:

lnxreq_hostWEPEncrypt=true # true|false
lnxreq_hostWEPDecrypt=true # true|false
dot11PrivacyInvoked=true # true|false
dot11WEPDefaultKeyID=0 # 0|1|2|3
dot11ExcludeUnencrypted=false # true|false, in AP this means WEP is
required.
dot11WEPDefaultKey0= 88:88:88:88:88:88:88:88:88:88:88:88:88
dot11WEPDefaultKey1= # xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
dot11WEPDefaultKey2= # e.g. 01:20:03:40:05 or
dot11WEPDefaultKey3= # 01:02:03:04:05:06:07:08:09:0a:0b:0c:0d
IS_ADHOC=n # y|n, y - adhoc, n - infrastructure
AuthType="sharedkey" # opensystem | sharedkey (requires WEP)
BCNINT=100 # Beacon interval (in Kus)
CHANNEL=11 # DS channel for BSS (1-14, depends
# on regulatory domain)
BASICRATES="2 4" # Rates for mgmt&ctl frames (in 500Kb/s)
OPRATES="2 4 11 22" # Supported rates in BSS (in 500Kb/s)


Now, here's a snippet of dmesg when the USB driver is loading and I
attempt ifup wlan0:

----8<---
usb 3-2: new full speed USB device using address 2
p80211: Unknown parameter `wlan_debug'
prism2_usb: Unknown parameter `prism2_debug'
prism2usb_init: prism2_usb.o: 0.2.1-pre22 Loaded
prism2usb_init: dev_info is: prism2_usb
divert: allocating divert_blk for wlan0
usbcore: registered new driver prism2_usb
Debug: sleeping function called from invalid context at mm/slab.c:1989
in_atomic():1, irqs_disabled():1
[<c0119ce0>] __might_sleep+0xb0/0xe0
[<c013eb46>] __kmalloc+0x96/0xa0
[<d6850259>] ohci_urb_enqueue+0xb9/0x320 [ohci_hcd]
[<c026a2fe>] hcd_submit_urb+0x10e/0x1a0
[<d6886850>] hfa384x_usbin_callback+0x0/0x230 [prism2_usb]
[<c026adc3>] usb_submit_urb+0x1c3/0x240
[<d68840f6>] submit_rx_urb+0xf6/0x140 [prism2_usb]
[<d6885e2b>] hfa384x_drvr_start+0x7b/0x110 [prism2_usb]
[<d688dae7>] prism2sta_ifstate+0x1c7/0x1e0 [prism2_usb]
[<d688d508>] prism2sta_mlmerequest+0xb8/0x4d0 [prism2_usb]
[<c01b9b03>] capable+0x23/0x60
[<d6862e4a>] p80211req_dorequest+0x8a/0xc0 [p80211]
[<d6865dee>] p80211knetdev_do_ioctl+0xbe/0x100 [p80211]
[<c0293d28>] dev_ifsioc+0x388/0x3f0
[<c0293f34>] dev_ioctl+0x1a4/0x300
[<c0289c28>] sock_ioctl+0x2e8/0x310
[<c01663ed>] sys_ioctl+0x10d/0x260
[<c01060b5>] sysenter_past_esp+0x52/0x71
EXT3 FS on hda2, internal journal
Adding 524152k swap on /dev/hda3. Priority:-1 extents:1
Writing 4096 bytes to ram @0x7e2ffe
Writing 4096 bytes to ram @0x7e3ffe
Writing 4096 bytes to ram @0x7e4ffe
Writing 4096 bytes to ram @0x7e5ffe
Writing 4096 bytes to ram @0x7e6ffe
Writing 4096 bytes to ram @0x7e7ffe
Writing 4096 bytes to ram @0x7e8ffe
Writing 4096 bytes to ram @0x7e9ffe
Writing 4096 bytes to ram @0x7eaffe
Writing 4096 bytes to ram @0x7ebffe
Writing 4096 bytes to ram @0x7ecffe
Writing 4096 bytes to ram @0x7edffe
Writing 3010 bytes to ram @0x7eeffe
Writing 416 bytes to ram @0x7efc20
Writing 16 bytes to ram @0x7efdd0
Writing 4044 bytes to ram @0x7f0800
Writing 3288 bytes to ram @0x7fe000
Debug: sleeping function called from invalid context at mm/slab.c:1989
in_atomic():1, irqs_disabled():1
[<c0119ce0>] __might_sleep+0xb0/0xe0
[<c013eb46>] __kmalloc+0x96/0xa0
[<d6850259>] ohci_urb_enqueue+0xb9/0x320 [ohci_hcd]
[<c026a2fe>] hcd_submit_urb+0x10e/0x1a0
[<d6886850>] hfa384x_usbin_callback+0x0/0x230 [prism2_usb]
[<c026adc3>] usb_submit_urb+0x1c3/0x240
[<d68840f6>] submit_rx_urb+0xf6/0x140 [prism2_usb]
[<d6885e2b>] hfa384x_drvr_start+0x7b/0x110 [prism2_usb]
[<d688d996>] prism2sta_ifstate+0x76/0x1e0 [prism2_usb]
[<d688d508>] prism2sta_mlmerequest+0xb8/0x4d0 [prism2_usb]
[<c01b9b03>] capable+0x23/0x60
[<d6862e4a>] p80211req_dorequest+0x8a/0xc0 [p80211]
[<d6865dee>] p80211knetdev_do_ioctl+0xbe/0x100 [p80211]
[<c0293d28>] dev_ifsioc+0x388/0x3f0
[<c0293f34>] dev_ioctl+0x1a4/0x300
[<c0289c28>] sock_ioctl+0x2e8/0x310
[<c01663ed>] sys_ioctl+0x10d/0x260
[<c01060b5>] sysenter_past_esp+0x52/0x71
ident: nic h/w: id=0x8026 1.0.0
ident: pri f/w: id=0x15 1.1.3
ident: sta f/w: id=0x1f 1.8.3
MFI:SUP:role=0x00:id=0x01:var=0x01:b/t=1/1
CFI:SUP:role=0x00:id=0x02:var=0x02:b/t=1/1
PRI:SUP:role=0x00:id=0x03:var=0x01:b/t=1/4
STA:SUP:role=0x00:id=0x04:var=0x01:b/t=1/15
PRI-CFI:ACT:role=0x01:id=0x02:var=0x02:b/t=1/1
STA-CFI:ACT:role=0x01:id=0x02:var=0x02:b/t=1/1
STA-MFI:ACT:role=0x01:id=0x01:var=0x01:b/t=1/1
Prism2 card SN: \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
linkstatus=DISCONNECTED (unhandled)
hfa384x_dorrid: ctlx failure=REQ_TIMEOUT
hfa384x_dorrid: ctlx failure=REQ_TIMEOUT
hfa384x_dorrid: ctlx failure=REQ_TIMEOUT
hfa384x_dorrid: ctlx failure=REQ_TIMEOUT
prism2sta_mlmerequest: Failed to read wlan0 statistics: error=-5
ip_tables: (C) 2000-2002 Netfilter core team
Reply With Quote
  #2 (permalink)  
Old 10-22-2004
Lewin A.R.W. Edwards
 
Posts: n/a
Default Re: Help setting up Prism3 USB-based WLAN on kernel 2.6.8.1

> I'm having real difficulty setting up WLAN connectivity in Linux on my
> new ECS Desknote, and I'd love some help. The device is an AirVast
> PRISM3 card, internally connected on a hidden USB bus. The VID/PID are


In case anyone cares, there is an acceptable workaround to my problem,
which I discovered after considerable trial-n-error: First, you must
disable "check for sleep in spinlock" checking in the kernel. It
fights with the wlan-ng driver.

Second, it appears that the net device won't connect properly at boot.
It's very unclear why this is the case, but if you initialize the
interface at boot time, you'll get either no link, or a link with ~50%
packet loss. The cure for this is to run a script very late in the
boot process:

#!/bin/sh
rmmod prism2_usb
rmmod p80211
sleep 1
modprobe prism2_usb
sleep 5
ifup wlan0

Thirdly, this specific WLAN adapter can get into a confused state that
can only be cleared with a power-cycle (In this state, even Windows
can't recognize it). Since it's not possible to unplug the device,
being internal, the only way to clear this condition is to power down
and remove the AC adapter from the notebook for a couple of seconds.
It seems that while the AC adapter is connected, sufficient current is
available at the USB ports (even with the machine off) to keep the
WLAN adapter confused.
Reply With Quote
  #3 (permalink)  
Old 10-22-2004
Roby
 
Posts: n/a
Default Re: Help setting up Prism3 USB-based WLAN on kernel 2.6.8.1

Lewin A.R.W. Edwards wrote:

>> I'm having real difficulty setting up WLAN connectivity in Linux on my
>> new ECS Desknote, and I'd love some help. The device is an AirVast
>> PRISM3 card, internally connected on a hidden USB bus. The VID/PID are

>
> In case anyone cares, there is an acceptable workaround to my problem,
> which I discovered after considerable trial-n-error: First, you must
> disable "check for sleep in spinlock" checking in the kernel. It
> fights with the wlan-ng driver.
>
> Second, it appears that the net device won't connect properly at boot.
> It's very unclear why this is the case, but if you initialize the
> interface at boot time, you'll get either no link, or a link with ~50%
> packet loss. The cure for this is to run a script very late in the
> boot process:
>
> #!/bin/sh
> rmmod prism2_usb
> rmmod p80211
> sleep 1
> modprobe prism2_usb
> sleep 5
> ifup wlan0
>
> Thirdly, this specific WLAN adapter can get into a confused state that
> can only be cleared with a power-cycle (In this state, even Windows
> can't recognize it). Since it's not possible to unplug the device,
> being internal, the only way to clear this condition is to power down
> and remove the AC adapter from the notebook for a couple of seconds.
> It seems that while the AC adapter is connected, sufficient current is
> available at the USB ports (even with the machine off) to keep the
> WLAN adapter confused.


I also have been struggling with the Airvast module built into my Shuttle
XPC box. To avoid the boot problems, I set 'enable_wlan0=n' in wlan.conf
and manually start up the radio from root with this:

#!/bin/sh

wep="xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"

modprobe prism2_usb prism2_doreset=1
wlanctl-ng wlan0 lnxreq_ifstate ifstate=enable
if [ "$1" = "My_SSID" ]; then
wlanctl-ng wlan0 lnxreq_hostwep decrypt=true encrypt=true
wlanctl-ng wlan0 dot11req_mibset mibattribute=dot11WEPDefaultKeyID=3
wlanctl-ng wlan0 dot11req_mibset
mibattribute=dot11ExcludeUnencrypted=true
wlanctl-ng wlan0 dot11req_mibset mibattribute=dot11PrivacyInvoked=true
wlanctl-ng wlan0 dot11req_mibset mibattribute=dot11WEPDefaultKey3=$wep
wlanctl-ng wlan0 lnxreq_autojoin ssid="$1" authtype="sharedkey"
else
wlanctl-ng wlan0 lnxreq_autojoin ssid="$1" authtype="opensystem"
fi

ifup wlan0

The script was mostly copied from somebody else who knows far more than I do
about this stuff. It works, but I like your method better.

I have also seen the device mysteriously die. Maybe I ought to wire in a
reset button!

Thank you for sharing your discoveries.

Roby

Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +1. The time now is 02:29 AM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0