Project

General

Profile

WiFiResearch » History » Revision 63

Revision 62 (Denis 'GNUtoo' Carikli, 02/06/2016 03:38 PM) → Revision 63/142 (Denis 'GNUtoo' Carikli, 02/06/2016 03:42 PM)

h1. WiFi 

 h2. Issue 

 On desktops and laptops, several WiFi chips don't require non-free firmwares to be loaded. 

 Several cases exist: 
 * The WiFi chip doesn't need a firmware, and the driver talks directly to the hardware (ath5k and ath9k compatible chips) 
 * The WiFi chip has a free software firmware (ath9k_htc, carl1970, and some b43 compatible chips) 
 * The WiFi chip has a non-free firmware in a flash chip and don't need loadable firmware. 

 On phones, the only WiFi chip that don't requires a non-free firmware that we know of is the OpenMoko FreeRunner wifi chip. The firmware is in a flash chip. 

 The idea here is to find ways to still get WiFi on Replicant Supported devices, without needing to load any non-free firmware. 

 h2. WiFi Drivers and Firmwares types 

 Either the firmware implements the WiFi operations (scanning, association, and so on), either the driver implements it. 

 h3. Firmware implementing the WiFi operations 

 This is also known as Hard-MAC.  
 An easy way to find out is to look into the WiFi driver Kconfig for "select CFG80211" or "depends CFG80211" 

 Example: 
 <pre> 
 config LIBERTAS 
         tristate "Marvell 8xxx Libertas WLAN driver support" 
         depends on CFG80211 
 [...] 
 </pre> 

 If it is implemented by the firmware, it often contains bugs which cannot be fixed by the community. That also severally limit the use case of such WiFi chip beyond its most common uses cases. 

 This can result in more help in getting a free software firmware to run on such chip. However the amount of work to re-implement such firmware may be bigger. 

 The best way to reimplement it would be to write a new driver taking care of such WiFi operations and to make the fimrware do the smallest amount of work possible. 

 h3. Driver implementing the WiFi operations 

 This is also known as Soft-MAC.  
 An easy way to find out is to look into the WiFi driver Kconfig for "select MAC80211" or "depends MAC80211" 

 Example: 
 <pre> 
 config WL1251 
         tristate "TI wl1251 driver support" 
         depends on MAC80211 
 [...] 
 </pre> 

 h2. Internal WiFi chips on devices currently targeted by Replicant 

 |_. Device |_. WiFi chip |_. driver(s) | 
 | Galaxy S |/3. Broadcom BCM4329 |/3. BCMDHD (cfg80211) | 
 | LG Optimus Black | 
 | Nexus S | 
 | Galaxy Nexus |/3. Broadcom BCM4330 |/3. | 
 | Galaxy Note | 
 | Galaxy S2 | 
 | Galaxy S3 | Broadcom BCM4334 | | 
 |/2. GTA04 |/2. Marvell 8686 (W2CBW003) | libertas_sdio(mainline, cfg80211) | 
 | libertas_tf_sdio(patches, mac80211) | 

 h2. Available Internal WiFi chips for smartphones and tablets 

 |_. Driver |_. Busses |_. Firmware |_. Issues | 
 | ath5k | PCI, PCIe, PCMCIA, AHB    | None | Busses? chip size? power consumption? | 
 | ath9k | PCI, PCIe, PCMCIA, AHB    | None | Busses? chip size? power consumption? | 
 | ath9k_htc | USB | Free firmware | Bus? chip size? power consumption? | 
 | carl9170 | USB | Free firmware | Bus? chip size? power consumption? | 
 | airo | PCI, PCMCIA | Non-free firmware on flash | ? | 

 h2. Internal WiFi chips on devices currently targeted by Replicant 



 h2. External Wifi solution 

 Most/All Replicant supported devices support USB OTG. With the proper (standard) cable, the USB port of the device can do USB host. 

 However devices differ a lot in the number of Milli-ampers they can deliver trough that USB port. Some phones also have USB host enabled by default in their kernel configuration, and some other require patching the kernel. 

 On Replicant kernels, USB WiFi drivers are probably not compiled in by default. So you will also need to recompile. 

 |_. Device |_. Replicant Kernel |_. Max mA | 
 | Galaxy Nexus | | | 
 | Galaxy Note | | | 
 | Galaxy Note 2 | | | 
 | Galaxy S | | | 
 | Galaxy S 2 | | | 
 | Galaxy S 3 | | | 
 | Galaxy Tab 2 7.0 | | | 
 | Galaxy Tab 2 10.1 | | | 
 | GTA04 | | | 
 | Nexus S | | | 
 | Optimus Black | |