LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Networking (http://www.linuxquestions.org/questions/linux-networking-3/)
-   -   Problems with Toshiba C655-S5049 and Atheros AR9285 wireless controller (http://www.linuxquestions.org/questions/linux-networking-3/problems-with-toshiba-c655-s5049-and-atheros-ar9285-wireless-controller-830525/)

rootboy 09-05-2010 10:17 PM

Problems with Toshiba C655-S5049 and Atheros AR9285 wireless controller
 
Hi Guys,

I've installed Ubuntu 10.4 on a Toshiba Satellite C655-S5049 laptop and cannot get the laptop to connect via WiFi.

It has an Atheros AR9285 Wireless Network Adapter (PCI-Express), which does *say* that it is connected (while at Starbucks), but I can't get any throughput (via FireFox, ping, etc).

This was while I was trying to connect to the free WiFi at Starbucks, and the guy at the next table over was having no problems whatsoever. So it isn't a Starbucks problem...

I then took the laptop to work and tried to connect it to the WiFi there. This isn't an open network, so I had to configure it with not only the SSID, the password, the wireless security, and IP settings as well. I have a work laptop which is running Ubuntu 10.4 (which is what I am using at the moment), so I was able to copy the settings from that laptop.

Trying to connect to the work network eventually gives me a timeout and a request for the password (which I have quadruple-checked to make sure that it is correct).

I am currently connected to a wired network where I am doing a network install of OpenSuSE in the hopes that it has a better driver for this card.

Any thoughts?


Thanks!

jschiwal 09-06-2010 02:28 AM

I have the same wireless device on my netbook, which I am using now.
I am using SuSE 10.3. I think you may need to upgrade to SuSE 10.2 or newer for this wireless device to be detected. It uses the same ath9k kernel module, but, IIRC, your kernel's ath9k module may not support this model.

I think that I had upgraded to a newer kernel back when I bought this netbook and was using 10.1.
/sbin/lspci will list the devices. Note the pci address for the atheros device. Then run /sbin/lscpi -n to list the manufacturer code. If you have your kernel source installed, scan through the
/lib/modules/$(uname -r)/source/drivers/net/wireless/ath/hw.h file.
Code:

#define ATHEROS_VENDOR_ID      0x168c

#define AR5416_DEVID_PCI        0x0023
#define AR5416_DEVID_PCIE      0x0024
#define AR9160_DEVID_PCI        0x0027
#define AR9280_DEVID_PCI        0x0029
#define AR9280_DEVID_PCIE      0x002a
#define AR9285_DEVID_PCIE      0x002b
#define AR2427_DEVID_PCIE      0x002c

If the device isn't listed, it is a kernel version problem.

rootboy 09-06-2010 04:47 PM

Okay, I just now did a "serious" install of OpenSuSE 10.3 on my friends' laptop (one with the partitions setup the way that I wanted them, and the packages I thought that he could use). I executed the commands that you suggested and found the controller at: 03:00.0. And running /sbin/lspci -n gives me: "03:00.0 0280: 168c:002b (rev 01)". This will now be the distro that he uses. ;>

Digging through the sources does not come up with a "hw.h" file in the location you pointed me to, but it does show up in .../wireless/ath/ath9k/hw.h. And inside this file it does include the #define statement that you listed (#define AR9285_DEVID_PCIE 0x002b).

Running dmesg | grep 9285 comes up with this:

[ 11.910086] phy0: Atheros AR9285 Rev:2 mem=0xf9080000, irq=11

So the system "sees" it okay, but judging by all of the irq faults in dmesg, the kernel seems to be having some problems setting irq's. I found this using dmesg:

[ 11.550124] ath9k 0000:03:00.0: can't find IRQ for PCI INT A: probably buggy MP table

I just rebooted the PC with acpi=off, and while the blasted thing booted up better, and quicker, it still won't connect. However, the "Scan" feature on the Wireless setup tool found our two networks here at work, and the applet shows the relative strength of the signal. This is weird...


Thanks for the help!



BTW, I like your little tip in your sig "man -Tps <topic> | okular -" Handy :)

jschiwal 09-06-2010 08:31 PM

There are less drastic acpi kernel boot options then noacpi. I find often that nolapic will fix hardware boot problems. It sounds like you have a very buggy bios. You might want to see if there is a firmware update available on the toshiba website.

Code:

        acpi=                [HW,ACPI,X86]
                        Advanced Configuration and Power Interface
                        Format: { force | off | ht | strict | noirq | rsdt }
                        force -- enable ACPI if default was off
                        off -- disable ACPI if default was on
                        noirq -- do not use ACPI for IRQ routing
                        ht -- run only enough ACPI to enable Hyper Threading
                        strict -- Be less tolerant of platforms that are not
                                strictly ACPI specification compliant.
                        rsdt -- prefer RSDT over (default) XSDT

                        See also Documentation/power/pm.txt, pci=noacpi

        acpi_apic_instance=        [ACPI, IOAPIC]
                        Format: <int>
                        2: use 2nd APIC table, if available
                        1,0: use 1st APIC table
                        default: 0

        acpi_backlight=        [HW,ACPI]
                        acpi_backlight=vendor
                        acpi_backlight=video
                        If set to vendor, prefer vendor specific driver
                        (e.g. thinkpad_acpi, sony_acpi, etc.) instead
                        of the ACPI video.ko driver.

        acpi.debug_layer=        [HW,ACPI,ACPI_DEBUG]
        acpi.debug_level=        [HW,ACPI,ACPI_DEBUG]
                        Format: <int>
                        CONFIG_ACPI_DEBUG must be enabled to produce any ACPI
                        debug output.  Bits in debug_layer correspond to a
                        _COMPONENT in an ACPI source file, e.g.,
                            #define _COMPONENT ACPI_PCI_COMPONENT
                        Bits in debug_level correspond to a level in
                        ACPI_DEBUG_PRINT statements, e.g.,
                            ACPI_DEBUG_PRINT((ACPI_DB_INFO, ...
                        The debug_level mask defaults to "info".  See
                        Documentation/acpi/debug.txt for more information about
                        debug layers and levels.

                        Enable processor driver info messages:
                            acpi.debug_layer=0x20000000
                        Enable PCI/PCI interrupt routing info messages:
                            acpi.debug_layer=0x400000
                        Enable AML "Debug" output, i.e., stores to the Debug
                        object while interpreting AML:
                            acpi.debug_layer=0xffffffff acpi.debug_level=0x2
                        Enable all messages related to ACPI hardware:
                            acpi.debug_layer=0x2 acpi.debug_level=0xffffffff

                        Some values produce so much output that the system is
                        unusable.  The "log_buf_len" parameter may be useful
                        if you need to capture more output.

        acpi_display_output=        [HW,ACPI]
                        acpi_display_output=vendor
                        acpi_display_output=video
                        See above.

        acpi_irq_balance [HW,ACPI]
                        ACPI will balance active IRQs
                        default in APIC mode

        acpi_irq_nobalance [HW,ACPI]
                        ACPI will not move active IRQs (default)
                        default in PIC mode

        acpi_irq_isa=        [HW,ACPI] If irq_balance, mark listed IRQs used by ISA
                        Format: <irq>,<irq>...

        acpi_irq_pci=        [HW,ACPI] If irq_balance, clear listed IRQs for
                        use by PCI
                        Format: <irq>,<irq>...

        acpi_no_auto_ssdt        [HW,ACPI] Disable automatic loading of SSDT

        acpi_no_initrd_override                [KNL,ACPI]
        acpi_no_initramfs_override        [KNL,ACPI]
                        Disable loading custom ACPI tables from the initramfs

        acpi_os_name=        [HW,ACPI] Tell ACPI BIOS the name of the OS
                        Format: To spoof as Windows 98: ="Microsoft Windows"

        acpi_osi=        [HW,ACPI] Modify list of supported OS interface strings
                        acpi_osi="string1"        # add string1 -- only one string
                        acpi_osi="!string2"        # remove built-in string2
                        acpi_osi=                # disable all strings

        acpi_pm_good        [X86]
                        Override the pmtimer bug detection: force the kernel
                        to assume that this machine's pmtimer latches its value
                        and always returns good values.

        acpi_sci=        [HW,ACPI] ACPI System Control Interrupt trigger mode
                        Format: { level | edge | high | low }

        acpi_serialize        [HW,ACPI] force serialization of AML methods

        acpi_skip_timer_override [HW,ACPI]
                        Recognize and ignore IRQ0/pin2 Interrupt Override.
                        For broken nForce2 BIOS resulting in XT-PIC timer.

        acpi_sleep=        [HW,ACPI] Sleep options
                        Format: { s3_bios, s3_mode, s3_beep, s4_nohwsig,
                                  old_ordering, s4_nonvs, sci_force_enable }
                        See Documentation/power/video.txt for information on
                        s3_bios and s3_mode.
                        s3_beep is for debugging; it makes the PC's speaker beep
                        as soon as the kernel's real-mode entry point is called.
                        s4_nohwsig prevents ACPI hardware signature from being
                        used during resume from hibernation.
                        old_ordering causes the ACPI 1.0 ordering of the _PTS
                        control method, with respect to putting devices into
                        low power states, to be enforced (the ACPI 2.0 ordering
                        of _PTS is used by default).
                        s4_nonvs prevents the kernel from saving/restoring the
                        ACPI NVS memory during hibernation.
                        sci_force_enable causes the kernel to set SCI_EN directly
                        on resume from S1/S3 (which is against the ACPI spec,
                        but some broken systems don't work without it).

        acpi_use_timer_override [HW,ACPI]
                        Use timer override. For some broken Nvidia NF5 boards
                        that require a timer override, but don't have HPET

        acpi_enforce_resources=        [ACPI]
                        { strict | lax | no }
                        Check for resource conflicts between native drivers
                        and ACPI OperationRegions (SystemIO and SystemMemory
                        only). IO ports and memory declared in ACPI might be
                        used by the ACPI subsystem in arbitrary AML code and
                        can interfere with legacy drivers.
                        strict (default): access to resources claimed by ACPI
                        is denied; legacy drivers trying to access reserved
                        resources will fail to bind to device using them.
                        lax: access to resources claimed by ACPI is allowed;
                        legacy drivers trying to access reserved resources
                        will bind successfully but a warning message is logged.
                        no: ACPI OperationRegions are not marked as reserved,
                        no further checks are performed.

Also make sure that acpid is running, as well as hald.

rootboy 09-07-2010 02:15 AM

Quote:

Originally Posted by jschiwal (Post 4089895)
There are less drastic acpi kernel boot options then noacpi. I find often that nolapic will fix hardware boot problems. It sounds like you have a very buggy bios. You might want to see if there is a firmware update available on the toshiba website.

Yeah, that was the first thing that I did. The laptop has the current BIOS already installed.


Quote:

Originally Posted by jschiwal (Post 4089895)
Code:

        acpi=                [HW,ACPI,X86]
                        Advanced Configuration and Power Interface
                        Format: { force | off | ht | strict | noirq | rsdt }
                        force -- enable ACPI if default was off
                        off -- disable ACPI if default was on
                        noirq -- do not use ACPI for IRQ routing
                        ht -- run only enough ACPI to enable Hyper Threading
                        strict -- Be less tolerant of platforms that are not
                                strictly ACPI specification compliant.
                        rsdt -- prefer RSDT over (default) XSDT

                        See also Documentation/power/pm.txt, pci=noacpi

        acpi_apic_instance=        [ACPI, IOAPIC]
                        Format: <int>
                        2: use 2nd APIC table, if available
                        1,0: use 1st APIC table
                        default: 0

        acpi_backlight=        [HW,ACPI]
                        acpi_backlight=vendor
                        acpi_backlight=video
                        If set to vendor, prefer vendor specific driver
                        (e.g. thinkpad_acpi, sony_acpi, etc.) instead
                        of the ACPI video.ko driver.

        acpi.debug_layer=        [HW,ACPI,ACPI_DEBUG]
        acpi.debug_level=        [HW,ACPI,ACPI_DEBUG]
                        Format: <int>
                        CONFIG_ACPI_DEBUG must be enabled to produce any ACPI
                        debug output.  Bits in debug_layer correspond to a
                        _COMPONENT in an ACPI source file, e.g.,
                            #define _COMPONENT ACPI_PCI_COMPONENT
                        Bits in debug_level correspond to a level in
                        ACPI_DEBUG_PRINT statements, e.g.,
                            ACPI_DEBUG_PRINT((ACPI_DB_INFO, ...
                        The debug_level mask defaults to "info".  See
                        Documentation/acpi/debug.txt for more information about
                        debug layers and levels.

                        Enable processor driver info messages:
                            acpi.debug_layer=0x20000000
                        Enable PCI/PCI interrupt routing info messages:
                            acpi.debug_layer=0x400000
                        Enable AML "Debug" output, i.e., stores to the Debug
                        object while interpreting AML:
                            acpi.debug_layer=0xffffffff acpi.debug_level=0x2
                        Enable all messages related to ACPI hardware:
                            acpi.debug_layer=0x2 acpi.debug_level=0xffffffff

                        Some values produce so much output that the system is
                        unusable.  The "log_buf_len" parameter may be useful
                        if you need to capture more output.

        acpi_display_output=        [HW,ACPI]
                        acpi_display_output=vendor
                        acpi_display_output=video
                        See above.

        acpi_irq_balance [HW,ACPI]
                        ACPI will balance active IRQs
                        default in APIC mode

        acpi_irq_nobalance [HW,ACPI]
                        ACPI will not move active IRQs (default)
                        default in PIC mode

        acpi_irq_isa=        [HW,ACPI] If irq_balance, mark listed IRQs used by ISA
                        Format: <irq>,<irq>...

        acpi_irq_pci=        [HW,ACPI] If irq_balance, clear listed IRQs for
                        use by PCI
                        Format: <irq>,<irq>...

        acpi_no_auto_ssdt        [HW,ACPI] Disable automatic loading of SSDT

        acpi_no_initrd_override                [KNL,ACPI]
        acpi_no_initramfs_override        [KNL,ACPI]
                        Disable loading custom ACPI tables from the initramfs

        acpi_os_name=        [HW,ACPI] Tell ACPI BIOS the name of the OS
                        Format: To spoof as Windows 98: ="Microsoft Windows"

        acpi_osi=        [HW,ACPI] Modify list of supported OS interface strings
                        acpi_osi="string1"        # add string1 -- only one string
                        acpi_osi="!string2"        # remove built-in string2
                        acpi_osi=                # disable all strings

        acpi_pm_good        [X86]
                        Override the pmtimer bug detection: force the kernel
                        to assume that this machine's pmtimer latches its value
                        and always returns good values.

        acpi_sci=        [HW,ACPI] ACPI System Control Interrupt trigger mode
                        Format: { level | edge | high | low }

        acpi_serialize        [HW,ACPI] force serialization of AML methods

        acpi_skip_timer_override [HW,ACPI]
                        Recognize and ignore IRQ0/pin2 Interrupt Override.
                        For broken nForce2 BIOS resulting in XT-PIC timer.

        acpi_sleep=        [HW,ACPI] Sleep options
                        Format: { s3_bios, s3_mode, s3_beep, s4_nohwsig,
                                  old_ordering, s4_nonvs, sci_force_enable }
                        See Documentation/power/video.txt for information on
                        s3_bios and s3_mode.
                        s3_beep is for debugging; it makes the PC's speaker beep
                        as soon as the kernel's real-mode entry point is called.
                        s4_nohwsig prevents ACPI hardware signature from being
                        used during resume from hibernation.
                        old_ordering causes the ACPI 1.0 ordering of the _PTS
                        control method, with respect to putting devices into
                        low power states, to be enforced (the ACPI 2.0 ordering
                        of _PTS is used by default).
                        s4_nonvs prevents the kernel from saving/restoring the
                        ACPI NVS memory during hibernation.
                        sci_force_enable causes the kernel to set SCI_EN directly
                        on resume from S1/S3 (which is against the ACPI spec,
                        but some broken systems don't work without it).

        acpi_use_timer_override [HW,ACPI]
                        Use timer override. For some broken Nvidia NF5 boards
                        that require a timer override, but don't have HPET

        acpi_enforce_resources=        [ACPI]
                        { strict | lax | no }
                        Check for resource conflicts between native drivers
                        and ACPI OperationRegions (SystemIO and SystemMemory
                        only). IO ports and memory declared in ACPI might be
                        used by the ACPI subsystem in arbitrary AML code and
                        can interfere with legacy drivers.
                        strict (default): access to resources claimed by ACPI
                        is denied; legacy drivers trying to access reserved
                        resources will fail to bind to device using them.
                        lax: access to resources claimed by ACPI is allowed;
                        legacy drivers trying to access reserved resources
                        will bind successfully but a warning message is logged.
                        no: ACPI OperationRegions are not marked as reserved,
                        no further checks are performed.

Also make sure that acpid is running, as well as hald.

Okay, it looks like I've got some options to try out. Like you said, nuking acpi is a bit drastic, it does get the <censored> machine to behave a bit better, but still no Wireless.

I found this link:

http://forums.opensuse.org/english/g...-problems.html (post #2)

Which led me to the patched kernel (to fix the Toshiba BIOS problems). I installed it, and Yast created the kernel, etc, but didn't follow through with running grub-install so that I could boot it up with the new kernel. Trying to run Yast's Boot Manager within Yast, would cause the Boot Manager to hang at 33% completion. Trying to run grub manually didn't work (I forget what the error was, but it amounted to not being able to locate the drive in the BIOS).

Sooo, I noticed that Ubuntu 10.10 beta is out, and it has the kernel that I needed, so (after about six tries - they don't call it beta for nothing), I managed to get that installed.

Still no WiFi, but it does connect to eth0, which is way better than nothing.

I'm going to try connecting to WiFi using the traditional manner next (ifup) to see if I can work around whatever bugs are left with the WiFi controller.

But right now, it's off to bed. 13 hours in front of a POS Toshiba is enough for anyone. :)


I'll look at the acpi options (tomorrow?) and see if I can be more selective as to what I'm man-handling.


Thanks again for all of your help. :)


All times are GMT -5. The time now is 01:23 PM.