Difference between revisions of "User:Piccobello/Wireless"

From ThinkWiki
Jump to: navigation, search
 
(after Dapper upgrade)
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
My {{path|/etc/acpi/wireless.sh}} with lots of debugging info
+
My {{X31}} has an [[Intel PRO/Wireless LAN 2100 3B Mini PCI Adapter]] built in.
 +
 
 +
Initially I thought it did not work.
 +
I could do:
 +
 
 +
{{cmdroot|iwconfig eth0 essid <name> key <key>}}
 +
 
 +
and it seemed to work fine, but no tx power:
 +
 
 +
{{cmdroot|iwconfig}}
 +
 
 +
eth0      IEEE 802.11b  ESSID:"rightname"  Nickname:"ipw2100"
 +
          Mode:Managed  Frequency:2.462 GHz  Access Point: 00:0F:34:D5:90:E0
 +
          Bit Rate=11 Mb/s  Tx-Power:off
 +
          Retry min limit:7  RTS thr:off  Fragment thr:off
 +
          Encryption key:XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XX  Security mode:open
 +
          Power Management:off
 +
          Link Quality=100/100  Signal level=-58 dBm
 +
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
 +
          Tx excessive retries:0  Invalid misc:184  Missed beacon:0
 +
 
 +
but
 +
 
 +
{{cmdroot|iwconfig eth0 txpower on}}
 +
 
 +
Error for wireless request "Set Tx Power" (8B26) :
 +
  SET failed on device eth0 ; Invalid argument.
 +
 
 +
Apparently this is not a problem! I can use it
 +
and still see TxPower:off so it's just not related..
 +
I'd like to make KWirelessManager aware of this, it still shows it as disabled even though
 +
it gives me the correct speed, but as it's
 +
working it's not really a problem..
 +
 
 +
The reason is this ipw2100 [http://bughost.org/bugzilla/show_bug.cgi?id=305 bug], fixed in 1.1.5 (I have 1.1.2).
 +
 
 +
I added eth0 to my [[User:Piccobello/interfaces|/etc/network/interfaces]]
 +
file and ifup'd it manually.
 +
 
 +
My modified {{path|/etc/acpi/wireless.sh}}, taking into account the status of the software switch for ipw2100. The sw switch is turned on if necesary, but never turned off again, as I can just relay on the hw switch.
  
 
  #!/bin/bash
 
  #!/bin/bash
Line 7: Line 46:
 
     if [ -d $DEVICE/wireless ]; then
 
     if [ -d $DEVICE/wireless ]; then
 
  # $DEVICE is a wireless device. Check if it's powered on:
 
  # $DEVICE is a wireless device. Check if it's powered on:
        echo $DEVICE power state `cat $DEVICE/device/power/state`
 
 
         if [ `cat $DEVICE/device/power/state` = 0 ]; then
 
         if [ `cat $DEVICE/device/power/state` = 0 ]; then
 
  # It's powered on. Switch it off.
 
  # It's powered on. Switch it off.
            echo Switching off
+
             echo -n 2 > $DEVICE/device/power/state;
             echo -n 3 > $DEVICE/device/power/state;
 
            echo $DEVICE power state `cat $DEVICE/device/power/state`
 
#Check SW kill switch status
 
#see /usr/src/linux-source-2.6.12/Documentation/networking/README.ipw2100
 
            if [ -e $DEVICE/device/rf_kill ]; then
 
                echo $DEVICE rf_kill `cat $DEVICE/device/rf_kill`
 
                if [ `cat $DEVICE/device/rf_kill` = 0 ]; then
 
                    echo -n 1 > $DEVICE/device/rf_kill
 
                    echo $DEVICE rf_kill `cat $DEVICE/device/rf_kill`
 
                fi
 
            fi
 
 
             echo 0
 
             echo 0
 
         else
 
         else
 
  # It's powered off. Switch it on.
 
  # It's powered off. Switch it on.
            echo Switching on
 
 
             echo -n 0 > $DEVICE/device/power/state;
 
             echo -n 0 > $DEVICE/device/power/state;
            echo $DEVICE power state `cat $DEVICE/device/power/state`
 
 
  #Check SW kill switch status
 
  #Check SW kill switch status
 
  #see /usr/src/linux-source-2.6.12/Documentation/networking/README.ipw2100
 
  #see /usr/src/linux-source-2.6.12/Documentation/networking/README.ipw2100
 
             if [ -e $DEVICE/device/rf_kill ]; then
 
             if [ -e $DEVICE/device/rf_kill ]; then
                echo $DEVICE rf_kill `cat $DEVICE/device/rf_kill`
+
#              echo $DEVICE rf_kill `cat $DEVICE/device/rf_kill`
 
                 if [ `cat $DEVICE/device/rf_kill` -gt 0 ]; then
 
                 if [ `cat $DEVICE/device/rf_kill` -gt 0 ]; then
 
                     echo -n 0 > $DEVICE/device/rf_kill
 
                     echo -n 0 > $DEVICE/device/rf_kill
                    echo $DEVICE rf_kill `cat $DEVICE/device/rf_kill`
+
#                  echo $DEVICE rf_kill `cat $DEVICE/device/rf_kill`
 
                 fi
 
                 fi
 
             fi
 
             fi

Latest revision as of 15:20, 28 November 2006

My X31 has an Intel PRO/Wireless LAN 2100 3B Mini PCI Adapter built in.

Initially I thought it did not work. I could do:

# iwconfig eth0 essid <name> key <key>

and it seemed to work fine, but no tx power:

# iwconfig

eth0      IEEE 802.11b  ESSID:"rightname"  Nickname:"ipw2100"
          Mode:Managed  Frequency:2.462 GHz  Access Point: 00:0F:34:D5:90:E0
          Bit Rate=11 Mb/s   Tx-Power:off
          Retry min limit:7   RTS thr:off   Fragment thr:off
          Encryption key:XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XX   Security mode:open
          Power Management:off
          Link Quality=100/100  Signal level=-58 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:184   Missed beacon:0

but

# iwconfig eth0 txpower on

Error for wireless request "Set Tx Power" (8B26) :
 SET failed on device eth0 ; Invalid argument.

Apparently this is not a problem! I can use it and still see TxPower:off so it's just not related.. I'd like to make KWirelessManager aware of this, it still shows it as disabled even though it gives me the correct speed, but as it's working it's not really a problem..

The reason is this ipw2100 bug, fixed in 1.1.5 (I have 1.1.2).

I added eth0 to my /etc/network/interfaces file and ifup'd it manually.

My modified /etc/acpi/wireless.sh, taking into account the status of the software switch for ipw2100. The sw switch is turned on if necesary, but never turned off again, as I can just relay on the hw switch.

#!/bin/bash
# Find and enable/disable wireless devices

for DEVICE in /sys/class/net/*; do
    if [ -d $DEVICE/wireless ]; then
# $DEVICE is a wireless device. Check if it's powered on:
        if [ `cat $DEVICE/device/power/state` = 0 ]; then
# It's powered on. Switch it off.
            echo -n 2 > $DEVICE/device/power/state;
            echo 0
        else
# It's powered off. Switch it on.
            echo -n 0 > $DEVICE/device/power/state;
#Check SW kill switch status
#see /usr/src/linux-source-2.6.12/Documentation/networking/README.ipw2100
            if [ -e $DEVICE/device/rf_kill ]; then
#               echo $DEVICE rf_kill `cat $DEVICE/device/rf_kill`
                if [ `cat $DEVICE/device/rf_kill` -gt 0 ]; then
                    echo -n 0 > $DEVICE/device/rf_kill
#                   echo $DEVICE rf_kill `cat $DEVICE/device/rf_kill`
                fi
            fi
            echo 1
        fi
    fi
done