Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 168752 - net-wireless/ipw3945 fails to find Intel Wireless device w/ >=gentoo-sources-2.6.19-r5
Summary: net-wireless/ipw3945 fails to find Intel Wireless device w/ >=gentoo-sources-...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Unspecified (show other bugs)
Hardware: AMD64 Linux
: High major (vote)
Assignee: Christian Heim (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-02-28 16:30 UTC by Art N.
Modified: 2012-06-08 12:58 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
Kernel configuration (kernel-config-x86_64-2.6.19-gentoo-r5,50.05 KB, text/plain)
2007-02-28 18:12 UTC, Art N.
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Art N. 2007-02-28 16:30:20 UTC
Intel ipw3945 fails to load and the driver seems unable to detect the device.  Kernel version is gentoo-sources-2.6.19-r5, and I followed the wiki guide found at http://gentoo-wiki.com/HARDWARE_ipw3945  I've also tried the driver with kernel version 2.6.20 with the same results.

#lspci
00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (rev 03)
00:01.0 PCI bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port (rev 03)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02)
00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #3 (rev 02)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #4 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller AHCI (rev 02)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)
01:00.0 VGA compatible controller: nVidia Corporation G70 [GeForce Go 7600] (rev a1)
02:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
05:00.0 Ethernet controller: Intel Corporation 82573L Gigabit Ethernet Controller
07:05.0 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller
07:05.1 Class 0805: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 19)
07:05.2 System peripheral: Ricoh Co Ltd Unknown device 0843 (rev 01)
07:05.3 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 0a)
07:05.4 System peripheral: Ricoh Co Ltd xD-Picture Card Controller (rev 05)

#emerge -av ipw3945 wireless-tools wpa_supplicant

#modprobe ipw3945
 * Starting ipw3945d ...
chown: cannot access `/sys/bus/pci/drivers/ipw3945/00*/cmd': No such file or directory
chmod: cannot access `/sys/bus/pci/drivers/ipw3945/00*/cmd': No such file or directory               

or 

#/etc/init.d/ipw3945d start
* Starting ipw3945d ...
chown: cannot access `/sys/bus/pci/drivers/ipw3945/00*/cmd': No such file or directory
chmod: cannot access `/sys/bus/pci/drivers/ipw3945/00*/cmd': No such file or directory              

#iwconfig 
lo        no wireless extensions.

eth0      no wireless extensions.

#



Reproducible: Always

Steps to Reproduce:
1.Compiled kernel with proper kernel options
2.Install ipw3945 Intel Wireless driver (ipw3945)
3.Start the ipw3945 daemon (/etc/init.d/ipw3945.d)

Actual Results:  
* Starting ipw3945d ...
chown: cannot access `/sys/bus/pci/drivers/ipw3945/00*/cmd': No such file or directory
chmod: cannot access `/sys/bus/pci/drivers/ipw3945/00*/cmd': No such file or directory

Expected Results:  
Working wireless interface.

The wireless kill switch on the front of the laptop is switched to the on position.
Comment 1 Art N. 2007-02-28 18:12:47 UTC
Created attachment 111595 [details]
Kernel configuration
Comment 2 Art N. 2007-02-28 18:14:08 UTC
#ipw3945d
ipw3945d - regulatory daemon
Copyright (C) 2005-2006 Intel Corporation. All rights reserved.
version: 1.7.22
2007-02-28 01:13:01: ERROR: Could not find Intel PRO/Wireless 3945ABG Network Connection
Comment 3 Art N. 2007-03-02 22:59:07 UTC
I tried modifying the ipw3945d in modules.conf and modprobe.conf using the aforementioned option:

Changed from:

install ipw3945 /sbin/modprobe --ignore-install ipw3945; sleep 0.5; /etc/init.d/ipw3945d start
remove ipw3945 /etc/init.d/ipw3945d stop; /sbin/modprobe -r --ignore-remove ipw3945

to:
install ipw3945 /sbin/modprobe --ignore-install ipw3945; sleep 0.5; ipw3945d --pid-file=/var/run/ipw3945d/ipw3945d.pid
remove ipw3945 /etc/init.d/ipw3945d stop; /sbin/modprobe -r --ignore-remove ipw3945

If I try and run the ipw3945 daemon (/etc/init.d/ipw3945d or ipw3945d) I get the output:

# ipw3945d
ipw3945d - regulatory daemon
Copyright (C) 2005-2006 Intel Corporation. All rights reserved.
version: 1.7.22
2007-03-02 05:57:17: ERROR: Could not find Intel PRO/Wireless 3945ABG Network Connection

# dmesg | grep ipw
ipw3945: Intel(R) PRO/Wireless 3945 Network Connection driver for Linux, 1.2.0dmpr
ipw3945: Copyright(c) 2003-2006 Intel Corporation
ipw3945: Detected Intel PRO/Wireless 3945ABG Network Connection
ipw3945: ipw3945.ucode load failed: Reason -2
ipw3945: Could not read microcode: -2
ipw3945: probe of 0000:02:00.0 failed with error -2

Still no luck with wireless.

Comment 4 Cornelius Weig 2007-03-04 17:48:55 UTC
Before anything else you should get the microcode working.
- is the microcode properly installed? (/lib/firmware for me)
- is the filesystem where the firmware lies readable at boot-time, i.e. not compiled as module?
Comment 5 Art N. 2007-03-04 18:30:37 UTC
It appears that the firmware is located in the correct place, and when I emerged hotplug, this is where it noted firmware should be stored for loading.

ls /lib/firmware
ipw3945.ucode

Just to rule out filesystem / boot device support, I recompiled the kernel with the proper serial ATA devices with the monolithic option.  ETX3 (root file system) support was compiled in the kernel monolithically.  The rest of the kernel configuration is pretty much the standard "genkernel all" with the exception of the SATA support and ieee80211 generic support.  Still no luck with the ipw3945 device, and according to dmesg, the microcode still seems to not be loading:

#dmesg | grep ipw
ipw3945: Intel(R) PRO/Wireless 3945 Network Connection driver for Linux, 1.2.0dmpr
ipw3945: Copyright(c) 2003-2006 Intel Corporation
ipw3945: Detected Intel PRO/Wireless 3945ABG Network Connection
ipw3945: ipw3945.ucode load failed: Reason -2
ipw3945: Could not read microcode: -2
ipw3945: probe of 0000:02:00.0 failed with error -2
 
Comment 6 Art N. 2007-03-04 22:49:29 UTC
I'm not sure if this is directly relevant to the microcode problem, but I did notice alternating behavior between the ipw3945 modules loaded by /etc/modules.autoload/kernel-2.6 at bootup and the ip3945d daemon started by /etc/init.d/ipw3945d which is also started at boot.  I noticed that either the daemon or module fail to load or start every other boot.  For example, during the first boot, the module will load successfully, and the daemon will fail.  However, during the subsequent boot, the module will report a failure to load during the boot process, and the daemon will appear to start successfully.  If the module loads succesfully, the daemon returns the following output during the boot process:

* The pidfile (/var/run/ipw3945d/ipw3945d.pid) is still present.
 * Please check that the daemon isn't running!
 * Starting ipw3945d ...
chown: cannot access `/sys/bus/pci/drivers/ipw3945/00*/cmd': No such file or directory
chmod: cannot access `/sys/bus/pci/drivers/ipw3945/00*/cmd': No such file or directory
/sbin/ipw3945d already running.                                           [ !! ]

Also, even if the module reports that it failed to load at bootup, the ip3945 module and firmware_class module still seem to be loading:

#lsmod
Module                  Size  Used by
rtc                    14496  0
ipw3945               207652  0
firmware_class         15616  1 ipw3945
tg3                   110852  0
e1000                 122944  0
nfs                   237360  0
lockd                  71088  1 nfs
sunrpc                174536  2 nfs,lockd
jfs                   166608  0
raid10                 27392  0
raid1                  27264  0
raid0                  12288  0
dm_mirror              25984  0
dm_mod                 64336  1 dm_mirror
ata_piix               22280  0
ahci                   26372  2
libata                112288  2 ata_piix,ahci
sbp2                   30084  0
ohci1394               38856  0
ieee1394              104824  2 sbp2,ohci1394
sl811_hcd              17664  0
usbhid                 55328  0
ff_memless             10376  1 usbhid
ohci_hcd               25092  0
uhci_hcd               28816  0
usb_storage            88128  0
ehci_hcd               33928  0
usbcore               144808  7 sl811_hcd,usbhid,ohci_hcd,uhci_hcd,usb_storage,ehci_hcd


Comment 7 Cornelius Weig 2007-03-05 03:03:25 UTC
you said, that "ipw3945d start" alternates between two failures from boot to boot. Does
dmesg | grep ipw
change too, or is it always the same?
Comment 8 Art N. 2007-03-05 03:12:35 UTC
dmesg | grep ipw reports the same error output regardless of the alternating boot failures.  

ipw3945: Intel(R) PRO/Wireless 3945 Network Connection driver for Linux,
1.2.0dmpr
ipw3945: Copyright(c) 2003-2006 Intel Corporation
ipw3945: Detected Intel PRO/Wireless 3945ABG Network Connection
ipw3945: ipw3945.ucode load failed: Reason -2
ipw3945: Could not read microcode: -2
ipw3945: probe of 0000:02:00.0 failed with error -2

Removing the ipw3945 module and ipw3945d daemon from auto-loading at boot, and loading them manually also reports the same microcode error in dmesg.  
Comment 9 Art N. 2007-03-05 07:40:02 UTC
It works!  

1.) emerge hotplug
2.) nano -w /etc/hotplug/firmware.agent
3.)FIRMWARE_DIR=/lib/firmware --> FIRMWARE_DIR/lib64/firmware
4.) modprobe -r ipw3945
5.) modprobe ip3945

I think the root of the problem was caused by selecting a non-multilib profile when following the Gentoo amd64 handbook.  /lib/firmware and /lib64/firmware both contain ipw3945-ucode, but by default hotplug-base searches /lib/firmware and cannot load the 32-bit firmware due to the non-multilib profile selection (I'm not really sure about this)...

Thanks for your help Cornelius.
Comment 10 Art N. 2007-03-05 08:56:53 UTC
Guess I was wrong.  After a reboot, ipw3945 reverted back to failing to load the microcode.  /lib/firmware and /lib64/firmware in /etc/hotplug/firmware.agent doesn't seem to matter.  What consistently makes the device work is re-emerging udev-104-r11.  After emerging udev-104-r11, the module will load, and iwconfig will return eth1.  After rebooting, the module fails to load, and will not successfully load until udev-104-r11 is re-emerged.  
Comment 11 Cornelius Weig 2007-03-05 18:50:23 UTC
if you want to check, if a config file changes after the first use of udev, then run the commands (as root)
mkdir ~/test; for x in `equery f udev | grep -v -e doc -e man`; do cp -i $x ~/test/; done
and afterwards
for x in `equery f udev | grep -v -e doc -e man`; do diff $x ~/test/`basename $x` ; done
this reveal any change in udev-configs (libvolume_id.so will differ because there are two filed with the same name)
Comment 12 Art N. 2007-03-05 21:23:39 UTC
I was able to the narrow the problem down to udevd not properly starting at boot.  The problem was resolved by emerging a newer version of sys-apps/baselayout and its dependencies (sysinitv, etc...).  I also added the gentoo=nodevfs parameter to the kernel boot line in grub.conf.  It looks like that fixed everything.  It even found some other devices that I have to figure out what they do :) 

Thanks again for your help.

-
Art