athn0: bad ROM checksum 0x2c64

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

athn0: bad ROM checksum 0x2c64

Sebastian Reitenbach
Hi,

got a cheap TP-Link TL-WN821N, which shows up as Atheros AR7015 under Windows 10.

athn0 at uhub3 port 3 configuration 1 interface 0 "ATHEROS USB WLAN" rev 2.00/2.02 addr 5
athn0: failed loadfirmware of file athn-open-ar7010 (error 2)
athn0: could not load firmware
athn0 at uhub3 port 3 configuration 1 interface 0 "ATHEROS USB WLAN" rev 2.00/2.02 addr 5
athn0: bad ROM checksum 0x2c64
athn0: could not read ROM
athn0: could not attach chip

usbdevs -v:
addr 05: 0cf3:7015 ATHEROS, USB WLAN
         high speed, power 500 mA, config 1, rev 2.02, iSerial 12345
         driver: athn0

Just wanted to make sure I don't miss anything, don't see that chpset somehow
listed in athn(4) page, so guess this is just not supported yet?

cheers,
Sebastian

Reply | Threaded
Open this post in threaded view
|

Re: athn0: bad ROM checksum 0x2c64

Sebastian Reitenbach


Sent from my iPhone

> On 9. Feb 2019, at 18:56, Sebastian Reitenbach <[hidden email]> wrote:
>
> Hi,
>
> got a cheap TP-Link TL-WN821N, which shows up as Atheros AR7015 under Windows 10.
>
> athn0 at uhub3 port 3 configuration 1 interface 0 "ATHEROS USB WLAN" rev 2.00/2.02 addr 5
> athn0: failed loadfirmware of file athn-open-ar7010 (error 2)
> athn0: could not load firmware

Damn, forgot to mention that between above and below dmesg output I ran fw_update to fetch Athen firmware, then below on second insertion of the device i get the bad ROM checksum. That is on i386, amd64 and mips64el.

> athn0 at uhub3 port 3 configuration 1 interface 0 "ATHEROS USB WLAN" rev 2.00/2.02 addr 5
> athn0: bad ROM checksum 0x2c64
> athn0: could not read ROM
> athn0: could not attach chip
>
> usbdevs -v:
> addr 05: 0cf3:7015 ATHEROS, USB WLAN
>         high speed, power 500 mA, config 1, rev 2.02, iSerial 12345
>         driver: athn0
>
> Just wanted to make sure I don't miss anything, don't see that chpset somehow
> listed in athn(4) page, so guess this is just not supported yet?
>
> cheers,
> Sebastian
>

Reply | Threaded
Open this post in threaded view
|

Re: athn0: bad ROM checksum 0x2c64

Stefan Sperling-5
In reply to this post by Sebastian Reitenbach
On Sat, Feb 09, 2019 at 06:56:45PM +0100, Sebastian Reitenbach wrote:

> Hi,
>
> got a cheap TP-Link TL-WN821N, which shows up as Atheros AR7015 under Windows 10.
>
> athn0 at uhub3 port 3 configuration 1 interface 0 "ATHEROS USB WLAN" rev 2.00/2.02 addr 5
> athn0: failed loadfirmware of file athn-open-ar7010 (error 2)
> athn0: could not load firmware
> athn0 at uhub3 port 3 configuration 1 interface 0 "ATHEROS USB WLAN" rev 2.00/2.02 addr 5
> athn0: bad ROM checksum 0x2c64
> athn0: could not read ROM
> athn0: could not attach chip

>
> usbdevs -v:
> addr 05: 0cf3:7015 ATHEROS, USB WLAN
>          high speed, power 500 mA, config 1, rev 2.02, iSerial 12345
>          driver: athn0
>
> Just wanted to make sure I don't miss anything, don't see that chpset somehow
> listed in athn(4) page, so guess this is just not supported yet?

Please try this device on a another USB port and/or another machine.
There's a long-standing bug where these devices don't work on some
USB host controllers with our drivers, in particular ehci(4).

Last I tried plugging an athn(4) behind a hub, it would not work at all.

Reply | Threaded
Open this post in threaded view
|

Re: athn0: bad ROM checksum 0x2c64

Sebastian Reitenbach
Hi Stefan,

Am Sonntag, Februar 10, 2019 11:06 CET, Stefan Sperling <[hidden email]> schrieb:

> On Sat, Feb 09, 2019 at 06:56:45PM +0100, Sebastian Reitenbach wrote:
> > Hi,
> >
> > got a cheap TP-Link TL-WN821N, which shows up as Atheros AR7015 under Windows 10.
> >
> > athn0 at uhub3 port 3 configuration 1 interface 0 "ATHEROS USB WLAN" rev 2.00/2.02 addr 5
> > athn0: failed loadfirmware of file athn-open-ar7010 (error 2)
> > athn0: could not load firmware
> > athn0 at uhub3 port 3 configuration 1 interface 0 "ATHEROS USB WLAN" rev 2.00/2.02 addr 5
> > athn0: bad ROM checksum 0x2c64
> > athn0: could not read ROM
> > athn0: could not attach chip
>
> >
> > usbdevs -v:
> > addr 05: 0cf3:7015 ATHEROS, USB WLAN
> >          high speed, power 500 mA, config 1, rev 2.02, iSerial 12345
> >          driver: athn0
> >
> > Just wanted to make sure I don't miss anything, don't see that chpset somehow
> > listed in athn(4) page, so guess this is just not supported yet?
>
> Please try this device on a another USB port and/or another machine.
> There's a long-standing bug where these devices don't work on some
> USB host controllers with our drivers, in particular ehci(4).
>
> Last I tried plugging an athn(4) behind a hub, it would not work at all.
>

 I tried that device on my amd64 desktop, as well as on a i386, and mips64el notebook.
It's the same bad ROM checksum error I get on all three of them.

I've another athn stick which works well on all three:
athn0 at uhub3 port 3 configuration 1 interface 0 "ATHEROS USB2.0 WLAN" rev 2.00/1.08 addr 5
athn0: AR9271 rev 1 (1T1R), ROM rev 13, address e8:de:27:15:9e:5e

The non-working one shows up as AR7015 in Windows, but I don't see a AR7015 chipset
mentioned in athn(4), therefore I wanted to verify, if that particular chipset is actually
supported by our athn(4) at all?

cheers,
Sebastian

Reply | Threaded
Open this post in threaded view
|

Re: athn0: bad ROM checksum 0x2c64

Stefan Sperling-5
On Sun, Feb 10, 2019 at 11:50:35AM +0100, Sebastian Reitenbach wrote:
> The non-working one shows up as AR7015 in Windows, but I don't see a AR7015 chipset
> mentioned in athn(4), therefore I wanted to verify, if that particular chipset is actually
> supported by our athn(4) at all?

Indeed, it looks like our athn(4) driver does not support this device
properly. My guess is that the driver should be using ar9287_attach()
instead of ar9285_attach() for this device.

What happens when you try this diff with the non-working device?
(This diff will break devices which are already working, that is expected.)

Index: athn.c
===================================================================
RCS file: /cvs/src/sys/dev/ic/athn.c,v
retrieving revision 1.99
diff -u -p -r1.99 athn.c
--- athn.c 26 Apr 2018 12:50:07 -0000 1.99
+++ athn.c 10 Feb 2019 13:15:28 -0000
@@ -196,7 +196,7 @@ athn_attach(struct athn_softc *sc)
  error = ar9285_attach(sc);
 #if NATHN_USB > 0
  else if (AR_SREV_9271(sc))
- error = ar9285_attach(sc);
+ error = ar9287_attach(sc);
 #endif
  else if (AR_SREV_9287(sc))
  error = ar9287_attach(sc);




Reply | Threaded
Open this post in threaded view
|

Re: athn0: bad ROM checksum 0x2c64

Sebastian Reitenbach
Am Sonntag, Februar 10, 2019 14:19 CET, Stefan Sperling <[hidden email]> schrieb:

> On Sun, Feb 10, 2019 at 11:50:35AM +0100, Sebastian Reitenbach wrote:
> > The non-working one shows up as AR7015 in Windows, but I don't see a AR7015 chipset
> > mentioned in athn(4), therefore I wanted to verify, if that particular chipset is actually
> > supported by our athn(4) at all?
>
> Indeed, it looks like our athn(4) driver does not support this device
> properly. My guess is that the driver should be using ar9287_attach()
> instead of ar9285_attach() for this device.
>
> What happens when you try this diff with the non-working device?
> (This diff will break devices which are already working, that is expected.)

I get the same bad ROM checksum message with the broken device,
and indeed, the device that worked before, now gives the same bad ROM checksum
message when I insert it. It only give a different checksum:
previously working device: 0x2243
non-working device: 0x2c64

cheers,
Sebastian

>
> Index: athn.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/ic/athn.c,v
> retrieving revision 1.99
> diff -u -p -r1.99 athn.c
> --- athn.c 26 Apr 2018 12:50:07 -0000 1.99
> +++ athn.c 10 Feb 2019 13:15:28 -0000
> @@ -196,7 +196,7 @@ athn_attach(struct athn_softc *sc)
>   error = ar9285_attach(sc);
>  #if NATHN_USB > 0
>   else if (AR_SREV_9271(sc))
> - error = ar9285_attach(sc);
> + error = ar9287_attach(sc);
>  #endif
>   else if (AR_SREV_9287(sc))
>   error = ar9287_attach(sc);
>
>
>
>