Discussion:
Netgear WG311v3 - Marvell 88w8355 "Libertas"
Julian Calaby
2008-03-02 11:19:54 UTC
Permalink
Hi,

I'm not sure if this is the correct place to ask this, but here goes.

I have recently obtained a Netgear WG311v3 card, under the
misunderstanding that it was an atheros card. (though I have no idea
how I managed to do that)

Following some random FAQ, I have this card working reliably, for the
moment, using ndiswrapper, which is more than suitable for my needs.

However I yearn for more.

I have discovered here:
http://users.linpro.no/janl/hardware/wifi.html
that this card appears to use a Marvel 88w8355 "Libertas" chipset.
However I have not yet confirmed the exact chip used on my card.

I believe variants of this chip, are supported on SDIO, (8385, 8686)
USB (8388) and CompactFlash (8385) using the libertas driver.

Annoyingly I can find no information on this chip, or anything related
to it, and I have heard that Marvel has been relatively uninterested
in supporting these chips on Linux.

I also note that this chip appears to have been designed exclusively
for the embedded market, and as such, my card is somewhat rare, which
has probably contributed to the lack of any interest in a pci driver.

I can also find no information on a pci version of the libertas
driver, only a proposal which appeared to go nowhere due to lack of
documentation. I also cannot find any information on any linux support
for this card outside of using ndiswrapper.

As such, I am considering reverse engineering the pci interface for
this chipset, and hopefully linking it up with the existing libertas
driver.

I was hoping to use the ndiswrapper driver as a starting point, using
it as a black box to see how it talks to the PCI card. (possibly
hacking together a OS level PCI sniffer) and hopefully, what I'll see
will match up to what's going on in the libertas driver for similar
tasks, and then I should be able to write the necessary code (or
specifications) to do this.

I am also concerned about any possible legal ramifications of this
reverse engineering. Is it all right for me to do this, providing that
I treat the ndiswrapper driver as a black box? or am I too close to
non-free code to have my code be untainted?

I also must point out that this will be my first reverse engineering
project of this scale, and I am inexperienced in linux drivers in
general - however I see it as a good way to learn.

Thanks,
--
Julian Calaby

Email: julian.calaby-***@public.gmane.org
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-***@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Dan Williams
2008-03-02 15:33:36 UTC
Permalink
Post by Julian Calaby
Hi,
I'm not sure if this is the correct place to ask this, but here goes.
I have recently obtained a Netgear WG311v3 card, under the
misunderstanding that it was an atheros card. (though I have no idea
how I managed to do that)
Following some random FAQ, I have this card working reliably, for the
moment, using ndiswrapper, which is more than suitable for my needs.
However I yearn for more.
http://users.linpro.no/janl/hardware/wifi.html
that this card appears to use a Marvel 88w8355 "Libertas" chipset.
However I have not yet confirmed the exact chip used on my card.
I think you mean "88w8335" actually. The Netgear WG311v3 uses the
Marvell 88w8335 chipset.
Post by Julian Calaby
I believe variants of this chip, are supported on SDIO, (8385, 8686)
USB (8388) and CompactFlash (8385) using the libertas driver.
Correct; the existing Libertas driver (perhaps somewhat mis-named)
supports only the FullMAC variants of the libertas family.

The other, lower-numbered chips in the libertas family (8335, 8310, etc)
are all more softmac parts and not supported by the existing libertas
driver.
Post by Julian Calaby
Annoyingly I can find no information on this chip, or anything related
to it, and I have heard that Marvel has been relatively uninterested
in supporting these chips on Linux.
Correct; Marvell isn't that interested in supporting the older libertas
family chips in Linux (ie, anything < 8388 actually). They have
expressed interest in getting their TopDog 802.11n solution working in
Linux however.
Post by Julian Calaby
I also note that this chip appears to have been designed exclusively
for the embedded market, and as such, my card is somewhat rare, which
has probably contributed to the lack of any interest in a pci driver.
I can also find no information on a pci version of the libertas
driver, only a proposal which appeared to go nowhere due to lack of
documentation. I also cannot find any information on any linux support
for this card outside of using ndiswrapper.
There's an existing vendor net80211-based driver for the 8335 here:

http://git.infradead.org/?p=users/dwmw2/marvell-db64660-2.6.12.6.git;a=tree;f=drivers/net/wireless/marvell_softap;h=566585b308d53a7006814c77dedae73cc919cbef;hb=HEAD

There's also some reverse-engineered bits here:

http://www.saillard.org/linux/mrv8k/

and the mac80211 port of mrv8k here:

http://david.woodhou.se/mrv.tar.gz

though the last one here panic-ed in the interrupt handler when I tried
it last on 2.6.22.
Post by Julian Calaby
As such, I am considering reverse engineering the pci interface for
this chipset, and hopefully linking it up with the existing libertas
driver.
Don't link up with the existing libertas driver, they are just too
different (softmac vs. fullmac).
Post by Julian Calaby
I was hoping to use the ndiswrapper driver as a starting point, using
it as a black box to see how it talks to the PCI card. (possibly
hacking together a OS level PCI sniffer) and hopefully, what I'll see
will match up to what's going on in the libertas driver for similar
tasks, and then I should be able to write the necessary code (or
specifications) to do this.
I am also concerned about any possible legal ramifications of this
reverse engineering. Is it all right for me to do this, providing that
I treat the ndiswrapper driver as a black box? or am I too close to
non-free code to have my code be untainted?
I'd say first, try to whip the existing mrv8k-mac80211 port into shape
and you probably won't have to worry much about the legal ramifications.
You can look at the GPL-ed vendor driver (from the git I posted) for
pointers about hardware-specific stuff, but after the 8388 driver
experience, I'd strongly advocate writing a driver from scratch (or
basing off mrv8k) and not using existing Marvell vendor drivers as a
starting point.

Dan


--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-***@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Julian Calaby
2008-03-02 22:01:28 UTC
Permalink
Post by Dan Williams
Post by Julian Calaby
Hi,
I'm not sure if this is the correct place to ask this, but here goes.
I have recently obtained a Netgear WG311v3 card, under the
misunderstanding that it was an atheros card. (though I have no idea
how I managed to do that)
Following some random FAQ, I have this card working reliably, for the
moment, using ndiswrapper, which is more than suitable for my needs.
However I yearn for more.
http://users.linpro.no/janl/hardware/wifi.html
that this card appears to use a Marvel 88w8355 "Libertas" chipset.
However I have not yet confirmed the exact chip used on my card.
I think you mean "88w8335" actually. The Netgear WG311v3 uses the
Marvell 88w8335 chipset.
Oh, ok, I stand corrected, I stupidly didn't read the chip (apart from
noticing the stylised M) before thwacking it into my machine.
Post by Dan Williams
Post by Julian Calaby
I believe variants of this chip, are supported on SDIO, (8385, 8686)
USB (8388) and CompactFlash (8385) using the libertas driver.
Correct; the existing Libertas driver (perhaps somewhat mis-named)
supports only the FullMAC variants of the libertas family.
The other, lower-numbered chips in the libertas family (8335, 8310, etc)
are all more softmac parts and not supported by the existing libertas
driver.
Oh.

That sucks, I'd thought that this was just another Libertas part,
given the website mentioned above.

Well, that explains why the "Libertas" parts supported by the current
kernel require firmware and why the ndiswrapper driver I'm using
doesn't.
Post by Dan Williams
Post by Julian Calaby
I can also find no information on a pci version of the libertas
driver, only a proposal which appeared to go nowhere due to lack of
documentation. I also cannot find any information on any linux support
for this card outside of using ndiswrapper.
http://git.infradead.org/?p=users/dwmw2/marvell-db64660-2.6.12.6.git;a=tree;f=drivers/net/wireless/marvell_softap;h=566585b308d53a7006814c77dedae73cc919cbef;hb=HEAD
http://www.saillard.org/linux/mrv8k/
http://david.woodhou.se/mrv.tar.gz
though the last one here panic-ed in the interrupt handler when I tried
it last on 2.6.22.
Cool! =)
Post by Dan Williams
Post by Julian Calaby
As such, I am considering reverse engineering the pci interface for
this chipset, and hopefully linking it up with the existing libertas
driver.
Don't link up with the existing libertas driver, they are just too
different (softmac vs. fullmac).
Fair enough, I'll leave that be then.
Post by Dan Williams
Post by Julian Calaby
I was hoping to use the ndiswrapper driver as a starting point, using
it as a black box to see how it talks to the PCI card. (possibly
hacking together a OS level PCI sniffer) and hopefully, what I'll see
will match up to what's going on in the libertas driver for similar
tasks, and then I should be able to write the necessary code (or
specifications) to do this.
I am also concerned about any possible legal ramifications of this
reverse engineering. Is it all right for me to do this, providing that
I treat the ndiswrapper driver as a black box? or am I too close to
non-free code to have my code be untainted?
I'd say first, try to whip the existing mrv8k-mac80211 port into shape
and you probably won't have to worry much about the legal ramifications.
You can look at the GPL-ed vendor driver (from the git I posted) for
pointers about hardware-specific stuff, but after the 8388 driver
experience, I'd strongly advocate writing a driver from scratch (or
basing off mrv8k) and not using existing Marvell vendor drivers as a
starting point.
Ok, will do. I'm not sure I'm up to writing a full driver, so I'll try
to get mvr8k working on my box, then probably call back here for help.

Either way though, thanks for all the info and pointers. I'll check
them out tonight.
Post by Dan Williams
Dan
Thanks,
--
Julian Calaby

Email: julian.calaby-***@public.gmane.org
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-***@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Dan Williams
2008-03-03 00:55:13 UTC
Permalink
Post by Julian Calaby
Post by Dan Williams
Post by Julian Calaby
Hi,
I'm not sure if this is the correct place to ask this, but here goes.
I have recently obtained a Netgear WG311v3 card, under the
misunderstanding that it was an atheros card. (though I have no idea
how I managed to do that)
Following some random FAQ, I have this card working reliably, for the
moment, using ndiswrapper, which is more than suitable for my needs.
However I yearn for more.
http://users.linpro.no/janl/hardware/wifi.html
that this card appears to use a Marvel 88w8355 "Libertas" chipset.
However I have not yet confirmed the exact chip used on my card.
I think you mean "88w8335" actually. The Netgear WG311v3 uses the
Marvell 88w8335 chipset.
Oh, ok, I stand corrected, I stupidly didn't read the chip (apart from
noticing the stylised M) before thwacking it into my machine.
Post by Dan Williams
Post by Julian Calaby
I believe variants of this chip, are supported on SDIO, (8385, 8686)
USB (8388) and CompactFlash (8385) using the libertas driver.
Correct; the existing Libertas driver (perhaps somewhat mis-named)
supports only the FullMAC variants of the libertas family.
The other, lower-numbered chips in the libertas family (8335, 8310, etc)
are all more softmac parts and not supported by the existing libertas
driver.
Oh.
That sucks, I'd thought that this was just another Libertas part,
given the website mentioned above.
Well, that explains why the "Libertas" parts supported by the current
kernel require firmware and why the ndiswrapper driver I'm using
doesn't.
The 8335 still requires firmware. Lots of the windows drivers embed the
firmware into the .sys or .dll files, whereas on Linux embedding
firmware into the driver is quite frowned upon.

dan
Post by Julian Calaby
Post by Dan Williams
Post by Julian Calaby
I can also find no information on a pci version of the libertas
driver, only a proposal which appeared to go nowhere due to lack of
documentation. I also cannot find any information on any linux support
for this card outside of using ndiswrapper.
http://git.infradead.org/?p=users/dwmw2/marvell-db64660-2.6.12.6.git;a=tree;f=drivers/net/wireless/marvell_softap;h=566585b308d53a7006814c77dedae73cc919cbef;hb=HEAD
http://www.saillard.org/linux/mrv8k/
http://david.woodhou.se/mrv.tar.gz
though the last one here panic-ed in the interrupt handler when I tried
it last on 2.6.22.
Cool! =)
Post by Dan Williams
Post by Julian Calaby
As such, I am considering reverse engineering the pci interface for
this chipset, and hopefully linking it up with the existing libertas
driver.
Don't link up with the existing libertas driver, they are just too
different (softmac vs. fullmac).
Fair enough, I'll leave that be then.
Post by Dan Williams
Post by Julian Calaby
I was hoping to use the ndiswrapper driver as a starting point, using
it as a black box to see how it talks to the PCI card. (possibly
hacking together a OS level PCI sniffer) and hopefully, what I'll see
will match up to what's going on in the libertas driver for similar
tasks, and then I should be able to write the necessary code (or
specifications) to do this.
I am also concerned about any possible legal ramifications of this
reverse engineering. Is it all right for me to do this, providing that
I treat the ndiswrapper driver as a black box? or am I too close to
non-free code to have my code be untainted?
I'd say first, try to whip the existing mrv8k-mac80211 port into shape
and you probably won't have to worry much about the legal ramifications.
You can look at the GPL-ed vendor driver (from the git I posted) for
pointers about hardware-specific stuff, but after the 8388 driver
experience, I'd strongly advocate writing a driver from scratch (or
basing off mrv8k) and not using existing Marvell vendor drivers as a
starting point.
Ok, will do. I'm not sure I'm up to writing a full driver, so I'll try
to get mvr8k working on my box, then probably call back here for help.
Either way though, thanks for all the info and pointers. I'll check
them out tonight.
Post by Dan Williams
Dan
Thanks,
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-***@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Julian Calaby
2008-03-03 04:06:34 UTC
Permalink
Post by Dan Williams
Post by Julian Calaby
Well, that explains why the "Libertas" parts supported by the current
kernel require firmware and why the ndiswrapper driver I'm using
doesn't.
The 8335 still requires firmware. Lots of the windows drivers embed the
firmware into the .sys or .dll files, whereas on Linux embedding
firmware into the driver is quite frowned upon.
Yeah, I discovered that the mrv8k driver still requires firmware,
despite there being no actual file in the windows driver that I can
point to as being the firmware image.

Thanks,
--
Julian Calaby

Email: julian.calaby-***@public.gmane.org
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-***@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Dan Williams
2008-03-03 15:28:37 UTC
Permalink
Post by Julian Calaby
Post by Dan Williams
Post by Julian Calaby
Well, that explains why the "Libertas" parts supported by the current
kernel require firmware and why the ndiswrapper driver I'm using
doesn't.
The 8335 still requires firmware. Lots of the windows drivers embed the
firmware into the .sys or .dll files, whereas on Linux embedding
firmware into the driver is quite frowned upon.
Yeah, I discovered that the mrv8k driver still requires firmware,
despite there being no actual file in the windows driver that I can
point to as being the firmware image.
It's likely embedded into the sys file, try:

http://www.saillard.org/linux/mrv8k/files/mrv8k_extract_fw.c

to extract the firmware from a supported driver file. At least one
versoin of WG311v3 driver seems to be supported there ("NETGEAR
WG311v3", "3.1.1.7") for extracting the firmware from.

Dan


--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-***@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Julian Calaby
2008-03-03 21:32:18 UTC
Permalink
Post by Dan Williams
Post by Julian Calaby
Post by Dan Williams
Post by Julian Calaby
Well, that explains why the "Libertas" parts supported by the current
kernel require firmware and why the ndiswrapper driver I'm using
doesn't.
The 8335 still requires firmware. Lots of the windows drivers embed the
firmware into the .sys or .dll files, whereas on Linux embedding
firmware into the driver is quite frowned upon.
Yeah, I discovered that the mrv8k driver still requires firmware,
despite there being no actual file in the windows driver that I can
point to as being the firmware image.
http://www.saillard.org/linux/mrv8k/files/mrv8k_extract_fw.c
to extract the firmware from a supported driver file. At least one
versoin of WG311v3 driver seems to be supported there ("NETGEAR
WG311v3", "3.1.1.7") for extracting the firmware from.
Thought as much, I've already downloaded it, and will be trying it out tonight.

Thanks,

(sorry for the dupe, hit the wrong button)
--
Julian Calaby

Email: julian.calaby-***@public.gmane.org
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-***@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Loading...