3 февр. 2008 г.

wi-fi via D-link G520 + ndiswrapper

Итак, сегодня наша задача - научить игуану (openSuSE 10.2 на базе ядра 2.6.18.2-34) работать с сетевой беспроводной картой D-Link Air-Plus G520, что построена на чипе RaLink RT61. Вроде в начальных условиях не соврал. Дальше проверим.
Считаем что карточка у нас успешна подключена в свободный PCI-слот и приветливо подмигивает одним из двух своих зеленых глазков. Замигает второй - задача решена. Сразу хочу сказать, что ядро 2.6.18.2-34 можно дополнить модулем wlan-ng-kmp, которые можно отыскать в репозитории openSuSE для соответствующих версий ядра. Этот модуль содержит свободные реализации драйверов для ралинковских чипсетов. В принципе, их можно найти в инете и скопмилить самостоятельно. Хотя бы вот по этому примеру.
Честно говоря, у меня они компилиться не захотели принципиально. Пробовал и модуль для ядра на их основе ставить - система работала до первого обращения к устройству - потом все зависало намертво. Более того, загрузить потом ее тоже было весьма проблематично, из-за того же первого обращения к сетевухе ;) Короче говоря, из всех решений наиболее оперативное, надежное и адекватно работающее - это настройка с использованием родных win-драйверов и разработки проекта ndiswrapper. Правда не знаю, как у них обстоят дела с прикручиванием wep/wpa/wpa2 шифрования (пока не занимался этим вопросом), но вроде можно ;).
Но приступим... Для начала убедимся, что сетевка у нас рабочая и на аппаратном уровне системой видится (требуются права суперпользователя). Ага, есть, и именно то, что нужно. Теперь со спокойной душой топаем на хоумпагу проекта ndiswrapper и загружаем исходники. Или - в любимый репозиторий пакетов и там ищем уже готовую rpm-ку. Неважно. Тут одна небольшая ремарка.
Проект достаточно быстро развивается, и некоторые релизы, в которых к примеру объявлена поддержка свежих версий ядраили еще какие новшества или исправления, на каких-то системах будут собираться, на каких-то нет. По крайней мере я перепробовал несколько версий, и остановился на 1,81 (на момент написания статьи актуальна 1,89). Так что если сорцы не компилятся или пакет не хочет устанавливаться, требуя непонятные зависимости и конфликтуя с половиной системы - есть резон попробовать другую сборку.
Итак, скачали распаковали и make install && make clean или rpm -i ... В первом случае (я его использовал) выйдет что-то вроде этого:
Как видно из скрина, whereis отдает нам местоположение ndiswrapper'a, значит все установилось хорошо. Далее нам потребуется .inf-файл драйвера сетевки. У меня он находится на CD (netrt61g.inf), шедшем в комплекте с девайсом. Устанавливаем драйвер командой
ndiswrapper -i /path/to/your/inf-file
(ключи можно посмотреть с помощью ndiswrapper -h). Далее проверяем корректность установки:
# ndiswrapper -l
netrt61g : driver installed
device (1814:0302) present
Усе гут! Теперь подгрузим модуль ядра и запишем в modprobe конфигурацию установленного драйвера.
# modprobe ndiswrapper
# ndiswrapper -m
adding "alias wlan0 ndiswrapper" to /etc/modprobe.d/ndiswrapper
Все, теперь ОС вполне может работать с картой. Осталось лишь "ввести ее на параллельную работу с сетью". Отрываем YaST - Сетевые устройства - Сетевая плата и наблюдаем пока следующую картину
Жмем добавить и попадаем в меню ручного добавления сетевого устройства. Заполняем нужные поля согласно скриншоту
Затем Далее, и попадаем в окно уже специфических настроек wi-fi карточки.

Тут остановлюсь подробнее. Доступно 3 режима работы wi-fi модуля в системе - Главная (ваш модуль работает как точка доступа), Управляемая (или режим инфраструктуры, когда есть внешная АР, то есть точка доступа) или Ad-hoc (так называемая одноранговая сеть без АР). Как раз третий нам и нужен, ибо точки доступа поблизости нет, а режим Главный ndiswrapper'ом не поддерживается. Ставим Ad-hoc.
ESSID - уникальное имя вашей wi-fi сети, не зная его, к сети не подключиться. Методы аутенфикации доступны как с шифрованием (wpa/wep), так и без него, но с общим ключом (значение которого нужно знать для допуска в сеть, он вводится в следующей строке) или с открытым (то бишь - велкам все). Берем общий ключ, ставим режим его ввода ASCII и вводим 5 или 13 (ограничения режима) символов. Настройки Эксперта в принципе можно не изменять, для умолчального запуска устроит.
Ну и все. Теперь применяем все изменения и получаем на выходе вполне функционирующий беспроводной интерфейс wlan0 c заданными параметрами.
Что и требовалось получить. Теперь, чтобы соединиться с данным компьютером по wi-fi с другой машины, нужно лишь просканить окружающее пространство на наличие сети и подключиться к ней, введя соответствующие ключ и essid и прописав в настройках сетевой карты IP-адрес той же подсети. Ну а если поднять DHCP-сервер, то последнее действие будет не нужно. ;) Но это уже совсем другая история, которую я расскажу в следующий раз.