[Assist] wireless drivers

Denis 'GNUtoo' Carikli GNUtoo at no-log.org
Sat Jan 3 10:07:14 GMT 2015

On Mon, 29 Dec 2014 09:08:25 +0000
Binh-Khoi Nguyen <khoi at member.fsf.org> wrote:

> I already use a USB one, I was just wondering whether I could replace 
> the Wifi card. I'll do my own research then :)
If you're very good technically you may be able to do it.

There are two approaches:
1) Flashing a patched BIOS: This is very risky: Often the flashing
   utilities are non-free, and they differ from flashrom in what they
   do. So the risk of bricking the laptop is very high.

   Once bricked you have to dissemble most of the laptop, and reflash
   the BIOS chip with an external programmer, you need another
   computer, the flasher, and something like a pomona clip.
   Of course you'd have to look if the requirement above match your
   case, some laptop have different chips formats.

   I tried this approach on my x60 in order to be able to keep using
   my ath9k with the BIOS: I needed it to spot some differences
   between coreboot and the BIOS. It ended up with a brick because
   the proprietary flashing tool was assembling BIOS pieces together,
   and instead I used flashrom's as-is. I recovered from it of course.

2) Making the wifi card give PCI ids that are in the whitelist.
   I looked rapidly at it for someone else's laptop.
   On the internet, many people reported some success with this, but
   with intel wifi chips(sic).
   Now we don't care about intel wifi chips, instead we want to
   use the atheros ones.
   Now I didn't find a way to do it from GNU/Linux.

   Example with a pc-card ath5k that I have available right now:
   > # ethtool -e wlan3
   > Cannot get EEPROM data: Operation not supported

   I can't even read the eeprom data, because the kernel driver doesn't
   support that. Reading and writing the eeprom trough ethtool does work
   with some other wifi drivers. Here what the driver needs:
   static const struct ethtool_ops foo_ethtool_ops = {
     .get_eeprom_len = foo_ethtool_get_eeprom_len,
     .get_eeprom = foo_ethtool_get_eeprom, // probably for reading
     .set_eeprom = foo_ethtool_set_eeprom, // probably for writing

   On the 3.18 (retrivied with git grep inside drivers/net/wireless):
   Wifi drivers having the set_eeprom: ipw2200 
   Wifi driver having the get_eeprom: ipw2200 ath9k libertas

   Now I didn't investigate other means:
   2a) I didn't look if some specific eeprom driver was used or could be
   used to do that.
   2b) I didn't try dumping the eeprom, modifying it and writing it
   back with an external flasher.
   3b) Using other internal connectors than the usual mini-pcie
   connector reserved for the wifi card. Maybe extra mini-pci connector
   or internal usb connector could be used to avoid the BIOS whitelist
   However you should also consider the antenna: if you succeed
   to connect to the antennas that are in the screen, you should be

Since having an internal wifi card is very convenient, it may be worth
investigating it more.

Advantages/disadvantages of internal(PCI) and external(USB) cards:
USB wifi cards have more probability to break:
 * You may forget it on the laptop and it can break during
 * If the card is big and that you move with the laptop around in
   buildings or outside, it may break due to a collision with
   something stripping it out of the USB port, and breaking or the
   card, the USB port or both.

Internal cards takes no space outside and usually have a very good
With USB cards:
-> or you choose a small one and it doesn't have a good signal
-> or you choose a big one with a good antenna and you do look strange
   with a big antenna:
   For instance when you are at a bus stop, with a wifi cards and a
   huge antenna, using the shell when trying to download and compile
   some software, and that you listen to some electronic music, people
   look at you very strangely, trying to figure out what you are doing.

However with an USB card, you can know for sure that the wifi is off by
removing the card, it also produces no heat inside the laptop.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <https://lists.parabola.nu/pipermail/assist/attachments/20150103/b329e49b/attachment.bin>

More information about the Assist mailing list