[Replicant] RepWifi: low-level, long-lived solution, Was: [PATCH v2] Fix "RepWifi connection not correctly reported to userspace apps" Issue #1792.

Denis 'GNUtoo' Carikli GNUtoo at no-log.org
Mon Sep 4 19:57:40 UTC 2017


On Sat, 05 Aug 2017 01:17:57 +0200
Fil <fil.bergamo at riseup.net> wrote:

> +        // TODO RepWifi extension. Remove when a low-level,
> long-lived solution is found.
Hi,

Background information:
-----------------------
As I understand about RepWifi:
- RepWifi is an Android application that, probably as root, connects to
  the WiFi network
- The patch "Fix "RepWifi connection not correctly reported to
  userspace apps" Issue #1792." makes the framework handle the
  connection reporting to applications interacting with it.

As I understand about Android architecture:
- Most/all Devices supported by Replicant 6.0 do use Linux kenrels with
  very heavy modifications inherited from the device or chips vendors
  (SOCs, WiFi chips, and so on).

  Such kernels often contains a corresponding WiFi driver that is
  written with portability and time to market in mind, allowing the
  WiFi chip vendor to respectively have a driver that can work across
  different operating system, and to be able to sell the respective
  chip soon enough.

  The downside of such approach, beside code quality, is that such
  drivers often do not only implement the standard userspace<->kernel
  API/ABI, and because of that they also need some code that is outside
  of such standard.

  This is where the Android framework comes into the picture: it
  abstract that to the system and indirectly the applications.

Thoughts and questions:
-----------------------
I guess it shouldn't be too hard to have the standard WiFi drivers
supported somehow either by writing a framework library for standard
WiFi driver or by using one that already exist and enabling it.

This leaves us with the question on how to handle multiple WiFi
interfaces.

I didn't look into the details on how the framework handles it. Does
someone knows its limitation in this area?

If the Android framework or default graphical user interface doesn't
support nor expect to have several WiFi interfaces at the same time, a
solution would be to have only one at the same time.

This would require:
- To be able to switch between several interfaces. Again here I don't
  know the limitations of the framework, I hope it can be done without
  having to restart the whole phone. I also wonder if it can deal with
  no WiFi interface and then an interface that appears.
- To be able to automatically trigger such switch.
  Several of the schemes below or any combination of them could be used
  to do that:
  - By using busybox's mdev[1] and some mdev scripts, to react to the
    insertion of an USB WiFi dongle.
  - By detecting the absence of non-free firmware (their patch are
    probably hardcoded in the WiFi drivers) and switching to the
    generic WiFi framework library.

References:
-----------
[1]Busybox udev's replacement. The idea of using busybox mdev is that
   it's self contained, and busybox is widely used on Android, even if
   it isn't shipped by default on all Android distributions.

Denis.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://lists.osuosl.org/pipermail/replicant/attachments/20170904/79941056/attachment.asc>


More information about the Replicant mailing list