Известный факт, что настройка беспроводных сетей в линуксе — не самая простая задача. Проблемы возникают из-за отсутствия в дистрибутивах драйверов к адаптерам wi-fi и bluetooth. Ко многим адаптерам драйвера существуют только под Windows.
В своем блоге я опишу результат собственных изысканий по подъему wi-fi адаптера на ноутбуке HP Compac nx 7300 для дистрибутива Debian (etch). Стоит упомянуть, что вся информация актуальна на момент ноября 2008 года, и что все описанное ниже не претендует на «руководство», это лишь описание моих действий и результатов.
UPD: Внимание! В связи с выходом Debian 5.0 Lenny сначала прочитайте эту запись!
Гуглинг на тему моего wi-fi в Debian привел к замечательному описанию-руководству по поднятию беспроводной сети. В этом мануале рассказывается про установку драйверов для беспроводных адаптеров на базе чипсетов Broadcom 43xx и 1390. Вот как раз 4311 и установлен в ноутбук HP Compac nx7300.
Драйвера от Broadcom есть и под Linux, и под Windows. Для линукса есть даже 2 разных версии:
- Linux b43 / bcm43xx driver (начиная с ядра 2.6.24 его просто переименовали),
- Linux b43_legacy driver (отделен в ядре 2.6.24 для совместимости со старыми чипсетами).
Виндовый драйвер так же может работать в линуксе через известную программу NDISWrapper. Причем, забегая вперед, скажу, что именно с ним и пришлось работать.
Сначала требуется определить, какой сетевой адаптер используется. Как это сделать, написано в отдельном руководстве. Самый простой вариант — выполнить следующие команды:
update-pciids
lspci -nn
В выводе последней команды в конце у меня есть следующая строка:
10:00.0 Network controller [0280]: Broadcom Cor poration BCM4311 802.11b/g WLAN [14e4:4311] (rev 01)
Это и ест ь мой сетевой адаптер Broadcom BCM4311. Теперь пробуем заставить его работать. Стоит отметить, что до установки дров сетевой интерфейс wlan0 просто не существует, а диод на ноуте не горит и не включается кнопкой.
Установкой я занимался по порядку, описанному в статье. Принцип там такой: попробуйте сделать это, если не поможет, попробуйте это, если не поможет, попробуйте это и т.д.
Сразу отмечу, что ядро у меня 2.6.18 (т.е. меньше) 2.6.24, а значит b43_legacy и Native b43 driver рассматривать смысла нет вообще. Cтавим Native bcm43xx driver.
Руководство по установке этого драйвера начинается с этого места. Подзаголовки (option 1, 2, 3, 4, 5) — это этапные варианты установки драйвера. Последним пунктом идет установка Ndiswrapper’а. Я прошел все эти 6 уровней, адаптер заработал у меня только после установки Ndiswrapper’а. Если у вас не адаптер BCM4311 в связке с linux kernel 2.6 .18, рекомендую попробовать все варианты по порядку (пройти этот увлекательный к вест :), иначе можете сразу приступать к установке Ndiswrapper’а.
Если в конце концов у вас таки появилось устройство wlan0, поздравляю, драйвер установлен!
Но установить драйвер естественно мало. Надо еще настроить интерфейс. Так как я бродил несколькими обходными путями и произвел достаточно много действий при изучении этого вопроса, точно сейчас сказать сложно, какие из действий являются минимально-необходимыми. Но факт в том, что в файле /etc/networks/interfaces у меня сейчас следующие строки:
allow-hotplug wlan0
iface wlan0 inet static
wireless-essid ZyXEL
address 192.168.0.30
netmask 255.255.255.0
gateway 192.168.0.1
ZyXEL — точка доступа, IP понятны, вторая строка обозначает, что IP пр описаны статически, а не по DHCP. Так же есть файл /home/feedbee/wlan следующего содержания:
echo "Loading ndiswrapper..."
modprobe ndiswrapper
echo "Setting mode Managed..."
iwconfig wlan0 mode Managed
echo " -- Setting ESSID"
iwconfig wlan0 essid ZyXEL
echo " --Setting to channel 6..."
iwconfig wlan0 channel 6
echo " --Turning on managed mode..."
iwconfig wlan0 mode Managed
echo " --Setting encryption key"
iwconfig wlan0 key restricted E3374866EE
echo "Bringing up interface wlan0..."
ifconfig wlan0 up
echo "Disable interface eth0 to kill its routes. .."
ifconfig eth0 down
echo "--Setting routing..."
route add default wlan0
route add -net 81.25.32.0 netmask 255.255.255.0 gw 192.168.0.1 wlan0
Этот файл включает сетевой адаптер. Но до запуска файла адаптер дол жен быть включен физически, т.е. должен гореть синий диод на ноутбуке.
В этом файле все должно быть понятно, отмечу только следующие моменты. Последняя строка строго индивидуальна, она прописывает нужный для работы роут на провайдера. Вообще, после поднятия интерфейса wlan0 остаются старые роуты на eth0 и к ним добавляются новые на wlan0. В этом случае роутиговая система ядра пытается слать пакеты через eth0 даже в том случае, если сетевой кабель не подключен. Именно по этой причине в файле wlan гасится интерфейс eth0 (при этом роуты на него автоматически удаляются). Дефалтные роуты на wlan0 прописываются автоматически.
Строка iwconfig wlan0 key restricted E3 374866EE в файле обозначает, что используется WEP-шифрование. E3374866EE — это ключ, который введен на точке (в HEX-формате). Для WEP-64 это 10 шестнадцатеричных цифр, для WEP-128 — 26. Если шифрование не используется, эту строчку можно просто убрать.
Если интерфейс wlan0 и соединение с точкой доступа поднялись, но пакеты на сеть не ходят (хосты не пингуются), разбирайтесь с роутами.