The story so far: I'd like to have a completely
silent PC that can act, among other things, as a Wifi
access point. The DreamPlug I
bought is supposed to have a Wifi chipset, but—apparently due to
Marvell's greed and/or stupidity—,
Linux does not support it in access
point mode. So I bought a Wifi USB dongle
(TP-LINK model TL-WN422G) with a chipset (Atheros AR9271)
that is known to be well supported by Linux (ath9k_htc
module) even in access point mode. And, indeed, it works when I plug
it in. End of the story? Nay, for a new villain now enters the
scene: USB resets.
For here is the problem: I wrote that the dongle works when I
plug it in. If, however, I reboot the DreamPlug while
the dongle is plugged in (and if the latter has been initialized by
Linux), Wifi no longer works after the reboot (ath9k_htc
fails to initialize the dongle, providing the following uninformative
error message: Target is unresponsive
). When it gets
into that state, no software operation I could try can get it to work
again (hot or warm reboots, targeted USB resets, nothing
will do): only physically unplugging and replugging the dongle, or
power-cycling the DreamPlug, will make it work again. Completely
reproducible.
It is maddening, in fact, and it makes little
sense: if the ath
modules are unloaded and loaded again,
no problem is caused (that doesn't solve the problem, but it doesn't
cause it either). However, if they have been loaded, even if
they are properly unloaded before reboot, no matter how the reboot is
performed short of a power-cycle, the dongle stops working. (At my
lovebird's suggestion, I even tried kexec
to see whether
it amounts to a reset, but I was unable to get it to boot the kernel,
so I can report nothing there.)
I have tried all conceivable ways to provoke a cold USB reset, ideally to suspend or power off the dongle (and the dongle alone), but a “simple” USB reset such as provided by this program does not help, and I've been unable to cause Linux to power off the dongle completely (I suspect the DreamPlug's USB controller isn't capable of power management of this sort, and this might, in fact, be a partial cause of the problem).
This is killing me. I felt so close to having something which I would be satisfied with, I was so happy to confirm the dongle worked… that when it stopped working I thought I had been cheated of a rightfully deserved victory over adversity (OK, I may be painting the picture a tad too colorful there, but I was—and I still am—furious).
I asked for
help on
the linux-wireless mailing-list, but I don't really think I'll get
any: for one thing, it seems more of a USB problem than a
Wifi problem (but I doubt anybody on the USB subsystem
would be interested), and for another, the problem is too complicated
to gather real attention (it's not it doesn't work
, it's it
doesn't work after a reboot
and may be tied to a specific dongle
or a specific USB host). And I'm pretty pessimistic as
to whether anything can be done: if the USB host adapter
is fucked up and does something weird on reset, it's fucked up, that's
all there is to it and it can't be changed.
And I don't know what to do now. I've ordered another dongle having the same chipset, in the forlorn hope that maybe it's a problem with the USB interface of that specific dongle that will not occur with a different model, but I don't really believe it. I'm afraid it all I'll end up doing is to keep my noisy PC and stash the embarrassing DreamPlugs somewhere (in the vague hope that eventually Marvell might come to their senses and provide master mode support under Linux for their chipset).
Update: Turns out the problem isn't as bad as I thought: see a later entry for details.