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 ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
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 |
|
|||
|
> 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. |
|
|||
|
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 |