Intel Corporation PRO/Wireless 3945ABG

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Intel Corporation PRO/Wireless 3945ABG and the translation is 66% complete.
Other languages:

このガイドは、Linux を Intel Corporation PRO 3945ABG 無線カードとともに動作できるように設定する方法について記述しています。無線の設定自体はこのガイドの一部ではありません、そちらは Wifi を参照してください。





lspci を使って PCI ベースのハードウェアの中から探すことができます:

root #lspci -nnkv | sed -n '/Network/,/^$/p' | head -n -1
08:00.0 Network controller [0280]: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection [8086:4222] (rev 02)
        Subsystem: Hewlett-Packard Company PRO/Wireless 3945ABG [Golan] Network Connection [103c:135c]
        Flags: bus master, fast devsel, latency 0, IRQ 16
        Memory at e8000000 (32-bit, non-prefetchable) [size=4K]
        Capabilities: [c8] Power Management version 2
        Capabilities: [d0] MSI: Enable- Count=1/1 Maskable- 64bit+
        Capabilities: [e0] Express Legacy Endpoint, MSI 00
        Kernel driver in use: iwl3945
        Kernel modules: iwl3945


lshw を使ってすべてのハードウェア情報の中から探すことができます:

root #lshw
                description: Ethernet interface
                product: PRO/Wireless 3945ABG [Golan] Network Connection
                vendor: Intel Corporation
                physical id: 0
                bus info: pci@0000:08:00.0
                logical name: wlp8s0
                version: 02
                serial: 00:1b:77:b1:c8:8e
                width: 32 bits
                clock: 33MHz
                capabilities: pm msi pciexpress bus_master cap_list ethernet physical
                configuration: broadcast=yes driver=iwl3945 driverversion=4.1.8-gentoo firmware= ip= latency=0 link=yes multicast=yes
                resources: irq:16 memory:e8000000-e8000fff

IEEE 802.11

少なくとも cfg80211 (CONFIG_CFG80211) と mac80211 (CONFIG_MAC80211) を有功にしてください。

カーネル linux-4.19 の例
[*] Networking support  --->
    [*] Wireless  --->
        <M>   cfg80211 - wireless configuration API
        [ ]     nl80211 testmode command
        [ ]     enable developer warnings
        [ ]     cfg80211 certification onus
        [*]     enable powersave by default
        [ ]     cfg80211 DebugFS entries
        [ ]     support CRDA
        [ ]     cfg80211 wireless extensions compatibility
        <M>   Generic IEEE 802.11 Networking Stack (mac80211)
        [*]   Minstrel
        [*]     Minstrel 802.11n support
        [ ]       Minstrel 802.11ac support
              Default rate control algorithm (Minstrel)  --->
        [ ]   Enable mac80211 mesh networking (pre-802.11s) support
        -*-   Enable LED triggers
        [ ]   Export mac80211 internals in DebugFS
        [ ]   Trace all mac80211 debug messages
        [ ]   Select mac80211 debugging features  ----

Minstrel とその 802.11n サポートはrate control algorithmの1つです。いくつかのワイヤレスドライバーはこれを有効にしないといけないかもしれません。

wireless configuration API (CONFIG_CFG80211) をモジュールとしてビルド (<M>) するのではなく、カーネルに組み込む (<*>) 場合、ドライバが regulatory.db/lib/firmware からロードできず、規制ドメインサポートが機能しなくなるでしょう。CONFIG_CFG80211=m を設定するか、regulatory.dbregulatory.db.p7sCONFIG_EXTRA_FIRMWARE に設定してください。

iwl3945 device driver as module

Intel Corporation PRO/Wireless 3945ABG needs the iwl3945 driver aka iwlegacy. Search (/ in make menuconfig) shows where to find it:

カーネル linux-4.1 search results
Symbol: IWL3945 [=m]
 Type  : tristate
 Prompt: Intel PRO/Wireless 3945ABG/BG Network Connection (iwl3945)
     -> Device Drivers
       -> Network device support (NETDEVICES [=y])
 (1)     -> Wireless LAN (WLAN [=y])
   Defined at drivers/net/wireless/iwlegacy/Kconfig:37
   Depends on: NETDEVICES [=y] && WLAN [=y] && PCI [=y] && MAC80211 [=y]
   Selects: IWLEGACY [=m]

Set it as a module <M> as shown here. After changes on kernel configuration do not forget to rebuild the kernel.

カーネル linux-4.1 with modular drivers
Device Drivers  --->
  [*] Network device support  --->
    --- Network device support
      [*]   Wireless LAN  --->
        --- Wireless LAN
          < >   Marvell 8xxx Libertas WLAN driver support with thin firmware
          < >   Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards
          < >   Atmel at76c50x chipset  802.11b support
          < >   Atmel at76c503/at76c505/at76c505a USB cards
          < >   Intersil Prism GT/Duette/Indigo PCI/Cardbus (DEPRECATED)
          < >   USB ZD1201 based Wireless device support
          < >   Wireless RNDIS USB support
          < >   Realtek 8180/8185/8187SE PCI support
          < >   Realtek 8187 and 8187B USB support
          < >   ADMtek ADM8211 support
          < >   Simulated radio testing tool for mac80211
          < >   Marvell 88W8xxx PCI/PCIe Wireless support
          < >   Atheros Wireless Cards  ----
          < >   Broadcom 43xx wireless support (mac80211 stack)
          < >   Broadcom 43xx-legacy wireless support (mac80211 stack)
          < >   Broadcom IEEE802.11n PCIe SoftMAC WLAN driver
          < >   Broadcom IEEE802.11n embedded FullMAC WLAN driver
          < >   IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)
          < >   Intel PRO/Wireless 2100 Network Connection
          < >   Intel PRO/Wireless 2200BG and 2915ABG Network Connection
          < >   Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi)
          < >   Intel Wireless WiFi 4965AGN (iwl4965)
          <M>   Intel PRO/Wireless 3945ABG/BG Network Connection (iwl3945)
                  iwl3945 / iwl4965 Debugging Options  --->
          < >   Marvell 8xxx Libertas WLAN driver support
          < >   Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)
          < >   Softmac Prism54 support
          < >   Ralink driver support  ----
          < >   Realtek rtlwifi family of devices  ----
          [ ]   TI Wireless LAN support  ----
          < >   ZyDAS ZD1211/ZD1211B USB-wireless support
          < >   Marvell WiFi-Ex Driver
          < >   CW1200 WLAN support
          < >   Redpine Signals Inc 91x WLAN driver support

The help (which can be obtained by hitting the h in make menuconfig) on the Intel PRO/Wireless 3945ABG/BG ... line will show more details about the driver:

コード linux-4.1 help
 Select to build the driver supporting the:
 Intel PRO/Wireless 3945ABG/BG Network Connection
 This driver uses the kernel's mac80211 subsystem.
 In order to use this driver, you will need a microcode (uCode)
 image for it. You can obtain the microcode from:
 The microcode is typically installed in /lib/firmware. You can
 look in the hotplug script /etc/hotplug/firmware.agent to
 determine which directory FIRMWARE_DIR is set to when the script
 If you want to compile the driver as a module ( = code which can be
 inserted in and removed from the running kernel whenever you want),
 say M here and read <file:Documentation/kbuild/modules.txt>.  The
 module will be called iwl3945.

iwl3945 device driver built-in

In case the driver is built into the kernel (<*>) instead as a module (<M>), also the firmware needs to be built into the kernel.

カーネル linux-4.1 with built-in drivers
Device Drivers  --->
  Generic Driver Options  --->
    -*- Userspace firmware loading support
    [ ]   Include in-kernel firmware blobs in kernel binary
    (iwlwifi-3945-2.ucode) External firmware blobs to build into the kernel binary
    (/lib/firmware) Firmware blobs root directory
    [ ] Fallback user-helper invocation for firmware loading


The iwlwifi-3945-ucode- firmware (or later) is needed. It is available through the sys-kernel/linux-firmware package.

root #emerge --ask sys-kernel/linux-firmware


カーネルによって提供される eth0 や wlan0 のようなネットワークデバイス名は、通常は /lib/udev/rules.d/80-net-name-slot.rules での udev ルールによってシステムの起動時に変更されます (dmesg 参照)。

旧来の命名ルールを維持するには、/etc/udev/rules.d ディレクトリ内に、同じ名称のファイルを空で作成することで上書きします:

root #touch /etc/udev/rules.d/80-net-name-slot.rules

Check the setup

Module loading

modprobe should not return any errors:

root #modprobe iwl3945

More information about the driver module (such as the supported parameters) can be obtained by modinfo iwl3945:

user $modinfo iwl3945
filename:       /lib/modules/4.1.15-gentoo-r1/kernel/drivers/net/wireless/iwlegacy/iwl3945.ko
firmware:       iwlwifi-3945-2.ucode
license:        GPL
author:         Copyright(c) 2003-2011 Intel Corporation <>
version:        in-tree:s
description:    Intel(R) PRO/Wireless 3945ABG/BG Network Connection driver for Linux
srcversion:     A279E9C3E47A7F92078CA7C
alias:          pci:v00008086d00004227sv*sd*bc*sc*i*
alias:          pci:v00008086d00004222sv*sd*bc*sc*i*
alias:          pci:v00008086d00004227sv*sd00001014bc*sc*i*
alias:          pci:v00008086d00004222sv*sd00001044bc*sc*i*
alias:          pci:v00008086d00004222sv*sd00001034bc*sc*i*
alias:          pci:v00008086d00004222sv*sd00001005bc*sc*i*
depends:        iwlegacy
intree:         Y
vermagic:       4.1.15-gentoo-r1 SMP mod_unload 
parm:           antenna:select antenna (1=Main, 2=Aux, default 0 [both]) (int)
parm:           swcrypto:using software crypto (default 1 [software]) (int)
parm:           disable_hw_scan:disable hardware scanning (default 1) (int)
parm:           fw_restart:restart firmware in case of error (int)



After reboot, grep the dmesg output for 08:00.0, iwl3945 and wlp8s0:

user $dmesg | grep -i '08:00.0\|iwl3945\|wlp8s0'
[    0.148048] pci 0000:08:00.0: [8086:4222] type 00 class 0x028000
[    0.148099] pci 0000:08:00.0: reg 0x10: [mem 0xe8000000-0xe8000fff]
[    0.148419] pci 0000:08:00.0: PME# supported from D0 D3hot D3cold
[    0.148518] pci 0000:08:00.0: disabling ASPM on pre-1.1 PCIe device.  You can enable it with 'pcie_aspm=force'
[    7.198115] iwl3945: Intel(R) PRO/Wireless 3945ABG/BG Network Connection driver for Linux, in-tree:s
[    7.198118] iwl3945: Copyright(c) 2003-2011 Intel Corporation
[    7.198183] iwl3945 0000:08:00.0: can't disable ASPM; OS doesn't have ASPM control
[    7.252250] iwl3945 0000:08:00.0: Tunable channels: 13 802.11bg, 23 802.11a channels
[    7.252254] iwl3945 0000:08:00.0: Detected Intel Wireless WiFi Link 3945ABG
[    7.492257] iwl3945 0000:08:00.0 wlp8s0: renamed from wlan0
[    7.504225] systemd-udevd[278]: renamed network interface wlan0 to wlp8s0
[   15.828778] iwl3945 0000:08:00.0: loaded firmware version