wi-fi карта broadcom bcm4318 и драйвер b43
Итак, на ноутбуке есть такая железка:
0a:03.0 Network controller: Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (rev 02) Subsystem: AMBIT Microsystem Corp. TravelMate 2410 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 96 Interrupt: pin A routed to IRQ 18 Region 0: Memory at d0100000 (32-bit, non-prefetchable) [=8K] Kernel driver in use: b43-pci-bridge Kernel modules: ssb
Если загрузиться с system rescue cd (live cd, основанный на gentoo), то она сходу цепляется и нормально работает. в логе пишется:
[ 1213.939113] b43-phy0: Loading OpenSource firmware version 410.31754 [ 1213.939120] b43-phy0: Hardware crypto acceleration not supported by firmware [ 1213.939123] b43-phy0: QoS not supported by firmware
lsmod показывает, что загружен модуль b43
на gentoo-wiki.com есть статья, описывающая установку этого драйвера. Там говорится, что необходимо поставить пакет b43-firmware из портажа.
Если так сделать в моей системе, то при команде ifconfig wlan0 up из-под терминала в иксах система напрочь отбрасывает копыта - даже sys_rq-комбинации не работают (в ядре они включены и обычно работают). Если же эту команду запустить из-под голой консоли, то система не виснет, на консоль выдаётся сообщение "Disabling IRQ #10", а в dmesg выдаётся следующее:
[ 203.313419] b43-phy0: Loading firmware version 478.104 (2008-07-01 00:50:23) [ 203.336788] b43-phy0 debug: Chip initialized [ 203.336934] b43-phy0 debug: 32-bit DMA initialized [ 203.336993] b43-phy0 debug: QoS enabled [ 203.354407] b43-phy0 debug: Wireless interface started [ 204.892206] irq 10: nobody cared (try booting with the "irqpoll" option) [ 204.892211] Pid: 976, comm: kworker/u:2 Not tainted 3.1.1-gentoo #6 [ 204.892214] Call Trace: [ 204.892224] [<c1041b1c>] ? __report_bad_irq.clone.6+0x14/0x7b [ 204.892230] [<c1041b23>] ? __report_bad_irq.clone.6+0x1b/0x7b [ 204.892234] [<c1041cd5>] ? note_interrupt+0x11e/0x18d [ 204.892239] [<c1040ddd>] ? handle_irq_event_percpu+0xe6/0xf7 [ 204.892243] [<c104216b>] ? unmask_irq+0x1a/0x1a [ 204.892248] [<c1040e07>] ? handle_irq_event+0x19/0x22 [ 204.892252] [<c10421d3>] ? handle_level_irq+0x68/0x7e [ 204.892255] <IRQ> [<c100318f>] ? do_IRQ+0x2b/0x68 [ 204.892264] [<c12089a9>] ? common_interrupt+0x29/0x30 [ 204.892270] [<c101e901>] ? __do_softirq+0x30/0xd0 [ 204.892274] [<c101e8d1>] ? local_bh_enable+0x69/0x69 [ 204.892277] <IRQ> [<c101eaa4>] ? irq_exit+0x31/0x7f [ 204.892283] [<c10031bc>] ? do_IRQ+0x58/0x68 [ 204.892287] [<c12089a9>] ? common_interrupt+0x29/0x30 [ 204.892302] [<c10f21e0>] ? ioread32+0x9/0x24 [ 204.892312] [<f8636a9b>] ? b43_bus_ssb_read32+0xb/0xc [b43] [ 204.892320] [<f86347f1>] ? b43_mac_suspend+0x74/0xbf [b43] [ 204.892328] [<f8638b87>] ? b43_gphy_op_pwork_15sec+0x8/0x17 [b43] [ 204.892336] [<f8636211>] ? b43_periodic_work_handler+0xf2/0x1f8 [b43] [ 204.892341] [<c1028040>] ? process_one_work+0x140/0x235 [ 204.892349] [<f863611f>] ? b43_controller_restart+0x2f/0x2f [b43] [ 204.892354] [<c10293b3>] ? worker_thread+0x12f/0x1df [ 204.892358] [<c1029284>] ? manage_workers.clone.33+0x17e/0x17e [ 204.892363] [<c102b70f>] ? kthread+0x62/0x67 [ 204.892368] [<c102b6ad>] ? kthread_worker_fn+0xd9/0xd9 [ 204.892372] [<c12089b6>] ? kernel_thread_helper+0x6/0xd [ 204.892374] handlers: [ 204.892379] [<f821d300>] sky2_intr [ 204.892383] [<f83c93b7>] azx_interrupt [ 204.892391] [<f815dbda>] usb_hcd_irq [ 204.892397] [<f815dbda>] usb_hcd_irq [ 204.892400] Disabling IRQ #10 [ 204.892907] b43-phy0 debug: Adding Interface type 2 [ 204.894958] ADDRCONF(NETDEV_UP): wlan0: link is not ready
первое, что можно заметить - то, что фирмварь не опенсорсная. Тут, в отличие от dmesg под system rescue cd, вообще не выдаётся её открытость-закрытость, а ещё на вроде как официальном сайте опенсорсной фирмвари http://www.ing.unibs.it/~openfwwf/ первый релиз приходится на 9й год, а тут фирмварь от 8-го года, ну и конечно, нельзя не заметить то, что вайфай в итоге не работает. Да, ещё стоит добавить, что включение-выключение опции irqpoll в grub.conf, затем reboot ничего не меняет.
А ещё на странице драйвера написано, что опенсорсная фирмварь поддерживает только чипы bcm4313, bcm43224, bcm43225, bcm4329, то есть мой bcm4318 вроде как поддерживаться не должен. Спрашивается: какого фига в system rescue cd он работает с опенсорсной фирмварью?
Как же в итоге-то поставить опенсорсную фирмварь и заставить её работать? Хотя нет, лучше так: Как же заставить просто работать эту говно-железку?
Да, ещё немного предыстории: Пока из портаж не был выброшен последний udev, не жалующийся на 2.6.31, что у меня слишком старое ядро - всё работало. То есть проблема связана именно с новыми ядрами, хотя в sytem rescue cd ядро 3.0.13
P.S. Broadcom - дерьмо. Не покупайте их железо!
- Для комментирования войдите или зарегистрируйтесь
.
Интересно...
Как соотносится версия твоего ядра с наличной на SysRescueCD?
Если пересобрать равную [или более свежую] версию с конфигом [ядра] от последнего?
:wq
--
Live free or die
ядро свежее
Спасибо за ответ.
Всё, что здесь описано применительно к основной системе, что на жёском диске ноутбука, сделано с использованием ядра 3.1.1, что свежее 3.0.13-std241-i586, что на system rescue cd. Однако, проявляется на всех ядрах >=2.6.32.
Насколько я понял, предлагается взять /proc/config.gz из system rescue cd, положить его в /usr/src/linux в разархивированном виде и под именем .config, собрать ядро и попробовать с ним? Я так попробую, но вряд ли это будет успешно.
.
Кстати, я не вполне уверен, что оно (
/proc/config.*
там (в SysRescueCD) есть.По крайней мере по воспоминаниям о результатах моего последнего опыта...
:wq
--
Live free or die
Я в это не верил, но оно
Я в это не верил, но оно таки-сработало!
с конфигом от system rescue cd. Правда загружает оно всё же ту фирмварю, что ставится из портажа, то есть, как я понимаю, проприетарную. Но это, в принципе, ладно - главное работает.
Теперь буду выяснять какие конкретно опции у меня были не так настроены методом постепенного приближения к своему конфигу ядра.
скорее всего дело в
скорее всего дело в
нужно будет добавить в вики, между прочим
Опять же, оба ядра (как
Опять же, оба ядра (как работающее с карточкой, так и не работающее) настрены на Voluntary :)
причина - CONFIG_SMP
Господа! Методом бисекции мне удалось найти виноватую в моих проблемах конфигурацию линукса. Этой конфигурацией оказалась CONFIG_SMP, отвечающая вроде как за поддержку множества процессоров. На моём лаптопе используется один одноядерный процессор, поэтому я эту опцию при настройке деактивировал. В System Rescue CD же она включена.
При изменении данной опции, автоматом изменяются ряд других, большинство из которых недоступны для изменения вручную. Поэтому несмотря на то что разница всего в одной галке, diff между этими конфигами довольно приличный. Со знаком > помечены опции, относящиеся к работающему с картой конфигу, а со знаком < - к неработающему:
Я совершенно ума не приложу как эта опция могла отразиться на работоспособности wi-fi карты. Может быть, это какой-то баг, который следует сообщить в багтрекер генту или даже линукса?
.
Товарищи!
Думаю, большой беды от вопроса в родном трекере с просьбой истолковать и/или послать в направлении правильного апстрима, не будет.
:wq
--
Live free or die
недавно развлекался с
недавно развлекался с аналогичной проблемой.
если я правильно понял, надо firmware залить в ядро.
искать где тут
-> Device Drivers
-> Generic Driver Options
-> Userspace firmware loading support (FW_LOADER [=y]
должно получиться как то так
CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"
CONFIG_EXTRA_FIRMWARE="brcm/bcm43xx-0.fw brcm/bcm43xx_hdr-0.fw"
Спасибо, в первую очередь
Спасибо, в первую очередь разберусь с этой опцией.
В обоих линуксах настройки
В обоих линуксах настройки одинаковы:
FW_LOADER=y
CONFIG_EXTRA_FIRMWARE=""
а CONFIG_EXTRA_FIRMWARE_DIR не определена.
Насколько я понял, эти опции сделаны на случай, если надо фирмварь прямо в бинарь линукса засунуть, а тут она грузится на ходу. Просто в одном случае почему-то безуспешно.
Так что дело не в этой опции.