# p54 "cannot find firmware"

## alex.blackbit

hi,

i have a

```
00:0e.0 Network controller: Intersil Corporation ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (rev 01)
```

and want to use the software p54 driver.

i believe that i have all the necessary options in my kernel (2.6.26-gentoo-r2):NL80211MAC80211P54_COMMONP54_PCI

i took the <=2.6.28 PCI firmware image (lmac_2.7.0.0.arm) from the prim54 website and put it as "isl3886" under /lib/firmware.

on reboot i got

```
0000:00:0e.0 (prism54pci): cannot find firmware (isl3886)

ACPI: PCI interrupt for device 0000:00:0e.0 disabled

prism54pci: probe of 0000:00:0e.0 failed with error -2
```

what have i done wrong?

any ideas welcome, thanks in advance.

EDIT:

i tried building P54_COMMON and P54_PCI as modules and get

```
firmware: requesting isl3886

p54: LM86 firmware

p54: FW rev 2.7.0.0 - Softmac protocol 4.1

0000:00:0e.0 (prism54pci): Cannot read eeprom!

ACPI: PCI interrupt for device 0000:00:0e.0 disabled

prism54pci: probe of 0000:00:0e.0 failed with error -22

Error: Driver 'prism54pci' is already registered, aborting...
```

which is a different phenomenon now. ?!?!

----------

## needlern1

I'm struggling with getting a prism54 mini-pci card working. I'm about to post my own problem.

 *Quote:*   

> i took the <=2.6.28 PCI firmware image (lmac_2.7.0.0.arm) from the prim54 website and put it as "isl3886" under /lib/firmware.

 

You don't mention what kernel version you're currently using, but I note that you downloaded the driver for a kernel equal to or greater than 2.6.28. I think I saw an earlier post of yours that had you with a 2.6.25.x kernel.

You may have downloaded the wrong version.

I note, also, that your Intersil card is an isl3890, as is mine. I do see that your kernel is requesting isl3886. Initially I re-named mine to isl3886, but my kernel-2.6.25-gentoo-r7 requested isl3890. So I re-named mine to isl3890 and it was happier than before.

Hope some of this helps.

Bill

----------

## alex.blackbit

okay, let's clear some things up.

"<=2.6.28" is of course nonsense.

the choices are: "<=2.6.27 (2.13.1.0.arm)" and ">=2.6.28 (lmac_2.7.0.0.arm)". i have 2.6.26-gentoo-r2.

i took the file lmac_2.7.0.0.arm. is that wrong?

i tried to build the driver(s) as modules and straced the loading. i did not see any open calls on a file in /lib/firmware.

how did you find out that your kernel wanted a file named isl3890?

i will rename the file and reboot. let"s see...

----------

## alex.blackbit

i tried with isl3886 and isl3890. same result with in-kernel driver.

i think it is worth trying out building the driver as a module and loading it with isl3890.

----------

## alex.blackbit

okay, i always get the same messages in the kernel log except when i have the file "isl3886" and the driver built as a module (Cannot read eeprom!).

what else could i try?

----------

## needlern1

[quote] i have 2.6.26-gentoo-r2. i took the file lmac_2.7.0.0.arm. is that wrong?[quote]

That's the correct firmware.

 *Quote:*   

> how did you find out that your kernel wanted a file named isl3890?

 

dmesg

[/code]eth1: resetting device...

eth1: uploading firmware...

eth1: firmware version: 2.7.0.0

eth1: firmware upload complete

Though it does not show now, several re-boots back it did ask for isl3890. Probably when I had it named isl3886.

I've seen another post http://islsm.org/pipermail/users/2007-August/000024.htmlthat indicates the prism54 should be blacklisted, so that it does not load. Thereby, loading the p54 driver. I'm going to figure out how to setup a blacklist file and try it.

Bill

----------

## alex.blackbit

i do not have the fullmac prism54 driver either as module or in-kernel.

so this shouldn't be an issue. or did you mean something different?

----------

## needlern1

OK, some progress made on my end. The blacklist did not work for me, as the prism54 module was already loaded before the /etc/modprobe.d/blacklist file came up.

For the hell of it I downloaded the 2.13.1.0.arm (for the >=2.6.28 kernel). Renamed it isl3886, moved it to /lib/firmware, backed up the 2.7.0.0.arm version that was already there and rebooted.

dmesg now shows

```
p54: LM86 firmware

p54: FW rev 2.13.1.0 - Softmac protocol 5.5

phy0: Selected rate control algorithm 'pid'

phy0: hwaddr 00:60:b3:1e:c9:d9, isl3890
```

and lsmod

```
p54pci                 10560  0

p54common              12096  1 p54pci

rsrc_nonstatic         10816  1 yenta_socket

pcmcia_core            36316  3 pcmcia,yenta_socket,rsrc_nonstatic

pcspkr                  2816  0

k8temp                  5120  0

hwmon                   2656  1 k8temp

mac80211 
```

and best of all, iwconfig finally shows a wireless card

```
hb1 ~ # iwconfig

lo        no wireless extensions.

eth0      no wireless extensions.

wmaster0  no wireless extensions.

wlan0     IEEE 802.11g  ESSID:""

          Mode:Managed  Channel:0  Access Point: Not-Associated

          Tx-Power=0 dBm

          Retry min limit:7   RTS thr:off   Fragment thr=2352 B

          Encryption key:off

          Link Quality:0  Signal level:0  Noise level:0

          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0

          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
```

Now I'm going to see if I can get configured.

I'll be back.

Bill

----------

## alex.blackbit

i tried the >=2.6.28 firmware too, "Cannot read eeprom!"

----------

## alex.blackbit

i switched to vanilla-sources-2.6.28-rc6.

now i get

```
p54pci 0000:00:0e.0: PCI INT A -> Link[LNKB] -> GSI 11 (level, low) -> IRQ 11

p54pci 0000:00:0e.0: firmware: requesting isl3886

p54: LM86 firmware

p54: FW rev 2.13.1.0 - Softmac protocol 5.5

p54: unknown eeprom code : 0x1

p54: unknown eeprom code : 0x1007

p54: unknown eeprom code : 0x1008

p54: unknown eeprom code : 0x1100

p54: unknown eeprom code : 0x3

p54: unknown eeprom code : 0x1905

phy0: hwaddr 00:04:e2:80:ee:66, MAC:isl3890 RF:Duette3

phy0: Selected rate control algorithm 'pid'

Adding 979956k swap on /dev/sda2.  Priority:-1 extents:1 across:979956k

eth0: Link is down

eth0: Link is up, running at 100Mbit full-duplex

eth1: Link is down

eth1: Link is up, running at 100Mbit full-duplex

p54pci 0000:00:0e.0: firmware: requesting isl3886

p54pci 0000:00:0e.0: firmware: requesting isl3886
```

the "unknown eeprom code" lines are ugly, but at least i get the net device wlan0

```
wlan0     IEEE 802.11bg  ESSID:"blackbit"  

          Mode:Managed  Frequency:2.422 GHz  Access Point: Not-Associated   

          Tx-Power=-1 dBm   

          Retry min limit:7   RTS thr:off   Fragment thr=2352 B   

          Encryption key:off

          Power Management:off

          Link Quality:0  Signal level:0  Noise level:0

          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0

          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
```

that is better than nothing.

unfortunately i am still not lucky with hostapd (nl80211), but that's a different story.

----------

## bus_drivr

I have one of these working on current gentoo-sources

2.6.32-gentoo-r7

wlan0     IEEE 802.11bg  ESSID:"Davespace"  

          Mode:Managed  Frequency:2.437 GHz  Access Point: 00:1C:10:9C:32:87   

          Bit Rate=1 Mb/s   Tx-Power=20 dBm   

          Retry  long limit:7   RTS thr:off   Fragment thr:off

          Encryption key:off

          Power Management:off

          Link Quality=70/70  Signal level=-1 dBm  

          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0

          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

says encryption key off tho ..not able to use iwpriv to set it to on. using wpq2 on router and it connects fine

random david # dmesg | grep p54

[    7.508482] kobject: 'p54common' (ffffffffa001e560): kobject_add_internal: parent: 'module', set: 'module'

[    7.559041] kobject: 'holders' (ffff88003b79c990): kobject_add_internal: parent: 'p54common', set: '<NULL>'

[    7.559161] kobject: 'p54common' (ffffffffa001e560): kobject_uevent_env

[    7.559203] kobject: 'p54common' (ffffffffa001e560): fill_kobj_path: path = '/module/p54common'

[    7.559672] kobject: 'notes' (ffff88003b79c550): kobject_add_internal: parent: 'p54common', set: '<NULL>'

[    7.652288] kobject: 'p54pci' (ffffffffa002e830): kobject_add_internal: parent: 'module', set: 'module'

[    7.658194] kobject: 'holders' (ffff88003b72ce58): kobject_add_internal: parent: 'p54pci', set: '<NULL>'

[    7.658255] kobject: 'p54pci' (ffffffffa002e830): kobject_uevent_env

[    7.658295] kobject: 'p54pci' (ffffffffa002e830): fill_kobj_path: path = '/module/p54pci'

[    7.661441] kobject: 'notes' (ffff88003b72cbb0): kobject_add_internal: parent: 'p54pci', set: '<NULL>'

[    7.661673] kobject: 'p54pci' (ffff88003c591b58): kobject_add_internal: parent: 'drivers', set: 'drivers'

[    7.661790] p54pci 0000:00:09.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17

[    7.661816] p54pci 0000:00:09.0: enabling Mem-Wr-Inval

[    7.662110] p54pci 0000:00:09.0: firmware: requesting isl3886pci

[    7.834516] phy0: p54 detected a LM86 firmware

[    7.834519] p54: rx_mtu reduced from 3240 to 2376

[    8.586759] p54pci 0000:00:09.0: DMA-API: device driver tries to free an invalid DMA memory address

[    8.586762] Modules linked in: snd_timer snd_page_alloc k8temp(+) p54pci(+) i2c_viapro p54common floppy

[    8.586824]  [<ffffffffa002d26f>] pci_unmap_single+0x72/0x7b [p54pci]

[    8.586829]  [<ffffffffa002d975>] p54p_check_tx_ring+0x9c/0xd6 [p54pci]

[    8.586834]  [<ffffffffa002da44>] p54p_interrupt+0x95/0x10b [p54pci]

[    9.822321] p54pci 0000:00:09.0: is registered as 'phy0'

[    9.825386] kobject: 'drivers' (ffff88003b79c880): kobject_add_internal: parent: 'p54pci', set: '<NULL>'

[    9.825469] kobject: 'p54pci' (ffff88003c591b58): kobject_uevent_env

[    9.825510] kobject: 'p54pci' (ffff88003c591b58): fill_kobj_path: path = '/bus/pci/drivers/p54pci'

the line number starting with 8 shows all is not right tho

random david # lspci -v | grep controller

00:09.0 Network controller: Intersil Corporation ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (rev 01)

00:0a.0 Multimedia audio controller: Creative Labs CA0106 Soundblaster

00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 7 :Cool: 

01:00.0 VGA compatible controller: nVidia Corporation G73 [GeForce 7600 GS] (rev a2) (prog-if 00 [VGA controller])

 lspci -v | grep SMC

	Subsystem: Standard Microsystems Corp [SMC] SMC2802W Wireless PCI Adapter

----------

## bus_drivr

15.999570] p54pci 0000:00:09.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17

[   15.999591] p54pci 0000:00:09.0: enabling Mem-Wr-Inval

[   15.999752] p54pci 0000:00:09.0: firmware: requesting isl3886pci

[   16.357638] phy0: p54 detected a LM86 firmware

[   16.357641] p54: rx_mtu reduced from 3240 to 2376

[   17.271915] p54pci 0000:00:09.0: is registered as 'phy0'

With kernel 2.34.1

----------

## bus_drivr

ACCEPT_KEYWORDS="~amd64" provided a firmware-ebuild that worked with the current kernel 

Card is SMC 2802W

----------

## bus_drivr

david@random ~ $ dmesg | grep p54

p54pci 0000:00:09.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17

p54pci 0000:00:09.0: firmware: requesting isl3886pci

phy0: p54 detected a LM86 firmware

p54: rx_mtu reduced from 3240 to 2376

p54pci 0000:00:09.0: is registered as 'phy0'

david@random ~ $ dmesg | grep phy0

phy0: p54 detected a LM86 firmware

phy0: FW rev 2.13.12.0 - Softmac protocol 5.9

phy0: cryptographic accelerator WEP:YES, TKIP:YES, CCMP:YES

phy0: hwaddr xx.xx.xx.xx, MAC:isl3890 RF:Duette3

phy0: Selected rate control algorithm 'minstrel'

p54pci 0000:00:09.0: is registered as 'phy0'

david@random ~ $

----------

