Здравствуйте, форумчане!
Суть проблемы в том, что я не могу переключить WiFi карту (Intel Corporation PRO/Wireless 2200BG [Calexico2]) в режим точки доступа (AP).
В результате выполнения команды using sudo iwconfig eth1 mode Master получаю:
Error for wireless request "Set Mode" (8B06) :
SET failed on device eth1 ; Invalid argument.
В итоге пришел к выводу, что проблема в конфликте IRQ между Ethernet картой и WiFi картой (см. выводы команд).
Обе карты сидят на одном и том же канале - 4.
Кто-нибудь сталкивался с подобным?
Возможно ли назначить разные IRQ средствами Linux?
Просветите, плз.
uname -r
2.6.32-33-generic
lspci | grep Wireless
02:02.0 Network controller: Intel Corporation PRO/Wireless 2200BG [Calexico2] Network Connection (rev 05)
dmesg | grep Intel
[ 0.000000] Intel GenuineIntel
[ 22.636137] agpgart-intel 0000:00:00.0: Intel 855PM Chipset
[ 23.225151] Intel ICH 0000:00:1f.5: PCI INT B -> Link[LNKB] -> GSI 4 (level, low) -> IRQ 4
[ 23.225188] Intel ICH 0000:00:1f.5: setting latency timer to 64
[ 23.616533] ieee80211: Copyright (C) 2004-2005 Intel Corporation <jketreno@linux.intel.com>
[ 23.936621] ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.2.2kmprq
[ 23.936624] ipw2200: Copyright(c) 2003-2006 Intel Corporation
[ 23.942642] ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
sudo lshw -c network
*-network:0
description: Ethernet interface
product: NetXtreme BCM5788 Gigabit Ethernet
vendor: Broadcom Corporation
physical id: 0
bus info: pci@0000:02:00.0
logical name: eth0
version: 03
serial: 00:11:d8:9f:d5:84
size: 100MB/s
capacity: 1GB/s
width: 32 bits
clock: 66MHz
capabilities: pm vpd msi bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=tg3 driverversion=3.102 duplex=full firmware=5788-v3.03 ip=95.84.249.215 latency=64 link=yes mingnt=64 multicast=yes port=twisted pair speed=100MB/s
resources: irq:4 memory:ff9f0000-ff9fffff
*-network:1 DISABLED
description: Wireless interface
product: PRO/Wireless 2200BG [Calexico2] Network Connection
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:02:02.0
logical name: eth1
version: 05
serial: 00:0e:35:80:86:41
width: 32 bits
clock: 33MHz
capabilities: pm bus_master cap_list ethernet physical wireless
configuration: broadcast=yes driver=ipw2200 driverversion=1.2.2kmprq firmware=ABG:9.0.5.27 (Dec 12 2007) latency=64 link=no maxlatency=24 mingnt=3 multicast=yes wireless=IEEE 802.11bg
resources: irq:4 memory:ff9ee000-ff9eefff
ifconfig
eth0 Link encap:Ethernet HWaddr 00:11:d8:9f:d5:84
inet addr:95.84.249.215 Bcast:95.84.249.255 Mask:255.255.254.0
inet6 addr: fe80::211:d8ff:fe9f:d584/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6960 errors:0 dropped:0 overruns:0 frame:0
TX packets:6782 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7297963 (7.2 MB) TX bytes:1285625 (1.2 MB)
Interrupt:4
lo Link encap:Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:89 errors:0 dropped:0 overruns:0 frame:0
TX packets:89 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:24423 (24.4 KB) TX bytes:24423 (24.4 KB)
sudo ifconfig eth1 up
ifconfig
eth0 Link encap:Ethernet HWaddr 00:11:d8:9f:d5:84
inet addr:95.84.249.215 Bcast:95.84.249.255 Mask:255.255.254.0
inet6 addr: fe80::211:d8ff:fe9f:d584/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6967 errors:0 dropped:0 overruns:0 frame:0
TX packets:6782 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7298461 (7.2 MB) TX bytes:1285625 (1.2 MB)
Interrupt:4
eth1 Link encap:Ethernet HWaddr 00:0e:35:80:86:41
inet6 addr: fe80::20e:35ff:fe80:8641/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:1 errors:0 dropped:18 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:84 (84.0 B)
Interrupt:4 Base address:0xa000 Память:ff9ee000-ff9eefff
lo Link encap:Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:89 errors:0 dropped:0 overruns:0 frame:0
TX packets:89 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:24423 (24.4 KB) TX bytes:24423 (24.4 KB)
Проблемы с настройкой WiFi карты в режиме AP
У меня была тоже такая же ошибка. Проблема была решена следующим путем:
1. определение чипсета (именно чипсета) карты:
root@robby:~# dmesg|grep Atheros
[ 6.448712] ath5k phy0: [b]Atheros AR2417[/b] chip found (MAC: 0xf0, PHY: 0x70)2. Просмотром на сайте поддерживается ли мой чипсет. Свой (AR2417) кстати я на данной страничке не нашел, но зато увидел (и взохнул с облегчением) на этой страничке.
3. После того, как я увидел, что мой чипсет поддерживается, я стал внимательно читать что же нужно сделать. Попутно натолкнулся на это HOWTU. В процессе обсуждения на одной из страниц я обнаружил, что по умолчанию, мой драйвер ath5k, автоматически подгружаемый в ядро, не имеет функции точки доступа (дополнительно не сонфигурирован как точка доступа). Поэтому, как и сказано на сайте необходимо скачать исходники и заново скомпилировать и установить данный модуль.
4. По приведенной ссылке я скачал исходники программы, и стал делать то что просят:
First download the appropriate release for your kernel from http://linuxwireless.org/en/users/Download : compat-wireless-old for kernels 2.6.22 up to 2.6.26, compat-wireless-stable for kernels >= 2.6.27.
To use AP functionality, the compat-wireless source code will need one slight modification. To do this, use your favorite text editor to open [b]compat-wireless-2.6/drivers/net/wireless/ath5/base.c [/b].
Find this block of code:
hw->wiphy->interface_modes =
BIT(NL80211_IFTYPE_STATION) |
BIT(NL80211_IFTYPE_ADHOC) |
BIT(NL80211_IFTYPE_MESH_POINT);
and add the line "BIT(NL80211_IFTYPE_AP) |" so it reads:
hw->wiphy->interface_modes =
BIT(NL80211_IFTYPE_STATION) |
BIT(NL80211_IFTYPE_ADHOC) |
BIT(NL80211_IFTYPE_AP)|
BIT(NL80211_IFTYPE_MESH_POINT);
Как оказалось, в скаченных мною исходниках данная строчка уже имеется и мне остается только скомпилировать и установить пакет. :D
5. Собираю и устанавливаю пакет, как описано здесь:
Selecting your driver
Extract:
Extract the content of the package:
tar jxvf compat-wireless-2.6.tar.bz2
If you know what driver you want you can use driver-select:
./scripts/driver-select - тут я выбрал свой драйвер ath5k (путь к нему - compat-wireless-2.6/drivers/net/wireless/ath5 )
Selecting your driver can reduce the amount of time to compile compat-wireless. It may also enable kernel compatibility down to older kernels. If you want to restore compat-wireless to enable all drivers again you can use:
./scripts/driver-select restore
If you do not see your driver in the supported list it means care has not been taken to ensure it works with driver-select and you must just build compat-wireless as a whole.
Building and installing
Build:
Build the latest Linux wireless subsystem:
cd compat-wireless-2.6
make
Install:
We use the updates/ directory so your distribution's drivers are left intact. By default depmod will search this directory first, but if you find that it does not then check that your depmod.conf file lists the search order correctly with updates appearing first (before built-in).
sudo make install
Uninstall:
This nukes our changes to updates/ so you can go back to using your distribution's supported drivers.
sudo make uninstall
Unload:
Since you might be replacing your old mac80211 and bluetooth drivers you should first try to unload all existing mac80211 and related drivers. Note also that broadcom, zydas, and atheros devices have old legacy drivers which you need to be sure are removed first. We provide a mechanism to unload all old and legacy drivers first so you should run to be sure:
sudo make unload
Последняя строчка удалит из системы старый драйвер и некоторые неиспользуемые.
6. После перезагрузки мой адаптер снова не работал, пока я не снес свой старый конфиг (тоже мудрил сидел) hostapd.conf и, как и просят здесь, не вписал в hostapd.conf его простейшую конфигурацию:
ssid=test
interface=wlan0
driver=nl80211
После перезапуска
[console]
service hostapd stop
service hostapd stop
[/console]
я увидел свою карту как точку доступа! :rolleyes:
[console]
mon.wlan0 Link encap:UNSPEC HWaddr F4-EC-38-A0-44-DA-00-
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:143738 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:17470932 (16.6 MiB) TX bytes:0 (0.0 B)
wlan0 Link encap:Ethernet HWaddr f4:ec:38:a0:44:da
inet6 addr: fe80::f6ec:38ff:fea0:44da/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:34 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:5239 (5.1 KiB)
[/console]
[console]
root@robby:~# iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
eth1 no wireless extensions.
wlan0 IEEE 802.11bg Mode:Master Frequency:2.427 GHz Tx-Power=20 dBm
Retry long limit:7 RTS thr=2347 B Fragment thr=2346 B
Power Management:on
mon.wlan0 IEEE 802.11bg Mode:Monitor Tx-Power=20 dBm
Retry long limit:7 RTS thr=2347 B Fragment thr=2346 B
Power Management:on
[/console]