Netgear wireless won't init on ASUS laptop

2004-10-11
2013-04-08
  • Dean Townsley
    Dean Townsley
    2004-10-11

    I just got a Netgear MA401 pccard, which should be
    supported well in linux (prism 2 chipset).  I'm
    trying to put it in an ASUS laptop with a TI 1131,
    but it refuses to work.  So just for kicks I stuck
    it in another laptop and it worked fine!  This
    happens even with the same kernel and pcmcia
    modules on both laptops.  And I have another
    network card (a linksys ne clone) that works fine
    in the ASUS.

    So I'm thinking that maybe the wireless drivers
    are okay, and are just tickling something strange
    about the chipset.  I've put more logs below,
    but it dies with:

    kernel: eth0: failed to initialize firmware (err = -16)
    kernel: orinoco_cs: register_netdev() failed
    kernel: orinoco_lock() called with hw_unavailable (dev=c82f8800)
    cardmgr[201]: get dev info on socket 1 failed: Resource temporarily unavailable

    Best I can tell the first is the real error, but
    turning on debug, even in the orinoco driver
    doesn't give much more info.  On the laptop that
    works I get
    kernel: eth0: Looks like an Intersil firmware version 0.8.3
    among other happy messages.

    I've tried updating to the latest kernel (2.4.27)
    and the latest pcmcia packages (3.2.8) and it does
    exactly the same thing.  I'm not sure what to try
    next.  The fact that the card works in another
    laptop makes me unsure.  Any suggestions?

    Thanks,
    -Dean

    More info:
    kernel: Linux PCMCIA Card Services 3.2.8
    kernel:   kernel build: 2.4.27 #3 Thu Oct 7 12:19:28 PDT 2004
    kernel:   options:  [pci] [cardbus] [apm]
    kernel: Intel ISA/PCI/CardBus PCIC probe:
    kernel: PCI: Found IRQ 11 for device 00:0a.0
    kernel: PCI: Sharing IRQ 11 with 00:02.0
    kernel: PCI: Found IRQ 11 for device 00:0a.1
    kernel:   TI 1131 rev 01 PCI-to-CardBus at slot 00:0a, mem 0x10000000
    kernel:     host opts [0]: [pci + serial irq] [pci irq 11] [lat 64/176] [bus 1/4]
    kernel:     host opts [1]: [pci + serial irq] [pci irq 11] [lat 64/176] [bus 5/8]
    kernel:     ISA irqs (scanned) = 3,4,7,10,15 PCI status changes
    cardmgr[607]: watching 2 sockets
    cardmgr[608]: starting, version is 3.2.3
    cardmgr[608]: socket 0: Intersil PRISM2 11 Mbps Wireless Adapter
    kernel: cs: memory probe 0xa0000000-0xa0ffffff: clean.
    cardmgr[608]: executing: 'modprobe orinoco_cs'
    kernel: orinoco.c 0.13e (David Gibson <hermes@gibson.dropbear.id.au> and others)
    kernel: orinoco_cs.c 0.13e (David Gibson <hermes@gibson.dropbear.id.au> and others)
    kernel: cs: IO port probe 0x0100-0x04ff: excluding 0x200-0x207 0x220-0x22f 0x290-0x297 0x330-0x337 0x370-0x37f 0x388-0x38f 0x398-0x39f 0x3c0-0x3df 0x4d0-0x4d7
    kernel: cs: IO port probe 0x0800-0x08ff: clean.
    kernel: cs: IO port probe 0x0a00-0x0aff: clean.
    kernel: cs: IO port probe 0x0c00-0x0cff: clean.
    kernel: eth0: failed to initialize firmware (err = -16)
    kernel: orinoco_cs: register_netdev() failed
    kernel: orinoco_lock() called with hw_unavailable (dev=c6fcc800)
    cardmgr[608]: get dev info on socket 0 failed: Resource temporarily unavailable

     
    • David Hinds
      David Hinds
      2004-10-11

      I would suspect an IO port or interrupt conflict.  The problem is, the orinoco driver reports these errors before it reports what resources it has used to configure the card, so there isn't a trivial way to figure out what resources are at faut.

      I'd try chopping down the default IO port resources, and try excluding interrupts starting from 3 and working your way up.

      -- Dave

       
    • Dean Townsley
      Dean Townsley
      2004-10-12

      Hi Dave,
      Thanks for the advice but still no luck.

      I upgraded to the most recent orinoco driver
      (0.15rc1) and tried all sorts of ioport settings,
      with an interrupt that works for the other network
      card.  I tried turning off all the stuff I could
      in bios.  I stuck in a printk in the orinoco
      driver to tell me what ioport it got from cs:
        /* This reserves IO space but doesn't actually enable it */
        CFG_CHECK(RequestIO, pcmcia_request_io(link->handle, &link->io));
      + printk(KERN_DEBUG "orinoco link->io.BasePort1 now 0x%04x\n",
                                      link->io.BasePort1);

      It acts as I expect, and I've tried 0x100, 0x140
      0x180, 0x400 none of which should have anything
      on them as far as I know.

      I noticed something else weird:
      # cardctl status
      Socket 0:
        3.3V 16-bit PC Card
        function 0: [ready], [bat low]
      Socket 1:
        no card

      I'm not sure what that bat low is there for, as
      it's not there with the linksys card that works
      fine.

      Finally, below more logs with debugging.

      Anything else I should try?  I guess it still
      could be some really strange conflict that I
      can't seem to diagnose.

      Thanks,
      -Dean

      cardmgr[1325]: initializing socket 0
      kernel: ds_ioctl(socket 0, 0x8004640b, 0xbffff568)
      kernel: cs: memory probe 0xa0000000-0xa0ffffff: clean.
      kernel: ds_ioctl(socket 0, 0xc0206404, 0xbffff568)
      kernel: ds_ioctl(socket 0, 0xc2946406, 0xbffff568)
      kernel: ds_ioctl(socket 0, 0xc2946407, 0xbffff568)
      kernel: ds_ioctl(socket 0, 0xc0206404, 0xbffff568)
      kernel: ds_ioctl(socket 0, 0xc2946406, 0xbffff568)
      kernel: ds_ioctl(socket 0, 0xc2946407, 0xbffff568)
      kernel: ds_ioctl(socket 0, 0xc0206404, 0xbffff568)
      kernel: ds_ioctl(socket 0, 0xc2946406, 0xbffff568)
      kernel: ds_ioctl(socket 0, 0xc2946407, 0xbffff568)
      kernel: ds_ioctl(socket 0, 0xc00c6409, 0xbffff55c)
      kernel: i82365: GetStatus(0) = 0x11e0
      cardmgr[1325]: socket 0: Intersil PRISM2 11 Mbps Wireless Adapter
      cardmgr[1325]:   product info: "NETGEAR MA401 Wireless PC", "Card", "Version 01.00", ""
      cardmgr[1325]:   manfid: 0x0156, 0x0002  function: 6 (network)
      cardmgr[1325]: executing: 'modprobe orinoco_cs'
      kernel: orinoco 0.15rc1STA (David Gibson <hermes@gibson.dropbear.id.au>, Pavel Roskin <proski@gnu.org>, et al)
      kernel: orinoco_cs 0.15rc1STA (David Gibson <hermes@gibson.dropbear.id.au>, Pavel Roskin <proski@gnu.org>, et al)
      kernel: ds: register_pccard_driver('orinoco_cs')
      kernel: ds_ioctl(socket 0, 0xc050643c, 0x806d290)
      kernel: bind_request(0, 'orinoco_cs')
      kernel: cs: IO port probe 0x0140-0x01ff: clean.
      kernel: cs: IO port probe 0x0400-0x04ff: excluding 0x4d0-0x4d7
      kernel: cs: IO port probe 0x0800-0x08ff: clean.
      kernel: cs: IO port probe 0x0a00-0x0aff: clean.
      kernel: cs: IO port probe 0x0c00-0x0cff: clean.
      kernel: orinoco link->io.BasePort1 now 0x0140
      kernel: i82365: SetSocket(0, flags 0x200, Vcc 33, Vpp 0, io_irq 0, csc_mask 0x80)
      kernel: i82365: SetSocket(0, flags 0x220, Vcc 33, Vpp 0, io_irq 10, csc_mask 0x80)
      kernel: eth0: failed to initialize firmware (err = -16)
      kernel: orinoco_cs: register_netdev() failed
      kernel: i82365: SetSocket(0, flags 0x200, Vcc 33, Vpp 0, io_irq 0, csc_mask 0x80)
      kernel: orinoco_lock() called with hw_unavailable (dev=c857b800)
      kernel: ds_ioctl(socket 0, 0xc050643d, 0x806d290)
      last message repeated 9 times
      cardmgr[1325]: get dev info on socket 0 failed: Resource temporarily unavailable
      kernel: ds_ioctl(socket 0, 0x4050643f, 0x806d290)
      kernel: unbind_request(0, 'orinoco_cs')
      kernel: ds_poll(socket 0)
      kernel: ds_poll(socket 1)

       
      • David Hinds
        David Hinds
        2004-11-07

        You should follow up with the orinoco driver maintainer.  I don't even know what the particular errors (like "err = -16") actually mean.

        -- Dave