Показаны сообщения с ярлыком broadcom. Показать все сообщения
Показаны сообщения с ярлыком broadcom. Показать все сообщения

понедельник, 26 апреля 2010 г.

Настройка Wifi на нетбуке HP Mini 501 под Tiny Core Linux

Пару месяцев назад приобрёл себе новый нетбук. Дефолтный SLED меня не порадовал своей тормознутостью, захотелось чего-нибудь быстрого и экзотичного. И вот на welinux наткнулся на заметку про Tiny Core. Понравилось, поставил, столнулся с проблемой неработающего Wifi. Начал копать и откопал.




Для начала нужно определить название Wifi чипа.
Для этого используем lspci. В Tiny Core по умолчанию этой команды нет, необходимо установить пакет pci-utils.
Анализируем вывод и находим такую строчку:

08:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g (rev 01)

Из неё делаем вывод, что чип у нас broadcom bcm4312.
Далее идем на linuxwireless.org и читаем мануал.
Пишут там следующее

lspci -vnn | grep 14e4

08:00.0 Network controller [0280]: Broadcom Corporation BCM4312 802.11b/g [14e4:4315] (rev 01)

Отсюда можно узнать точную модель. В данном случае "4315".
На сайте есть таблица, по которой можно понять поддерживается ли ваш чип и какой версией ядра.
Напротив моего чипа в таблице было следующее:

supported 2.6.32 and later

А ядро по умолчанию в Tiny Core 2.6.29. "Надо собрать своё" - догадался Штирлиц.
Будем собирать. Для сборки нам понадобится, как минимум, gcc и make. Их надо поставить через пакетный менеджер.
Качаем с kernel.org текущее стабильное ядро.

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.2.tar.bz2
tar xf linux-2.6.33.2.tar.bz2
cd linux-2.6.33.2

Качаем стандартный для Tiny Core конфиг ядра тут. (Main - Downloads - Current Release - src), кладем в папку с исходниками ядра и переименовываем в ".config"

wget http://distro.ibiblio.org/pub/linux/distributions/tinycorelinux/2.x/release/src/config-2.6.29.1-tinycore
mv config-2.6.29.1-tinycore .config

Далее включаем конфигуратор, правим, если что нужно править(я ничего не трогал), выходим, перезаписываем .config и приступаем к сборке.

make menuconfig
make
make bzImage
make modules
make INSTALL_MOD_PATH=./mod_dir modules_install


Собранные модули нужно добавить в initrd следующим образом(инструкция[eng]:

mkdir extract
cp /mnt/sda1/boot/tinycore.gz ./extract
cd extract
zcat tinycore.gz | sudo cpio -i -H newc -d
rm -rf lib/modules/2.6.29.1-tinycore
cp -r ../mod_dir/lib/modules/2.6.33.2-tinycore ./
cd ..
sudo depmod -b extract 2.6.29.1-tinycore
sudo ldconfig -r extract
find extract| sudo cpio -o -H newc | gzip -2 > ../tinycore.gz
advdef -z4 tinycore.gz

Всё собрано, осталось перенести в нужное место и подготовить загрузчик.

cp tinycore.gz /mnt/sda1/boot/tinycore2.gz
cp arch/x86/boot/bzImage /mnt/sda1/boot/bzImage2

Далее открываем /mnt/sda1/boot/grub/menu.lst любым редактором и добавляем туда.

title tinycore2
kernel /boot/bzImage_tr quiet
initrd /boot/tinycore2.gz

Сохраняем, перезагружаемся.
После перезагрузки набираем iwconfig.
Должен появиться наш интерфейс.
Но и это еще не всё!
Еще нам нужна прошивка. Cтавим из репозитория b43-fwcutter. А потом делаем так(тоже с linuxwireless)

wget http://mirror2.openwrt.org/sources/broadcom-wl-4.150.10.5.tar.bz2
tar xjf broadcom-wl-4.150.10.5.tar.bz2
cd broadcom-wl-4.150.10.5/driver
sudo b43-fwcutter wl_apsta_mimo.o
sudo mkdir /lib/firmware
sudo cp -r b43 /lib/firmware/

Ну и перезагружаем модуль:

sudo rmmod b43
sudo modprobe b43

Далее "sudo wicd-start" ну и wicd-curses, например. Где и видим-таки наши долгожданные сети.
Проверил, работает, не ломается при переходе в suspend и обратно. В общем всё супер.
В качестве бонуса после пересборки ядра заработала прокрутка на тачпаде, с которой достаточно долго ковырялся до этого.



Продолжение...