[Replicant] Generic images? Was: PLEASE HELP Re: Compatibility Inquiry

Denis 'GNUtoo' Carikli GNUtoo at no-log.org
Tue Feb 21 10:04:38 UTC 2017


On Mon, 20 Feb 2017 11:01:02 +0100
Jan Mack <mack.3 at drei.at> wrote:

> Hello everybody,
Hi again,

> I would be very grateful, if somebody shared a similar interest and 
> could give me some advice...
> 
> I my understanding, I woul belive that replicant should work on any 
> android device, no? Even if not listed as "supported"?
Here supported means that support was added for the device.

It doesn't mean that all devices works out of the box, and that the
community provides some support for the devices.

When it is the case, projects usually mention(For instance: All devices
are supposed to work) it and often prefer using the word "tested" for
the devices they tested.

> Isn't it just like having a PC designed for Win XP/VISTA/7 on which
> you install and run another OS? Like linux or "XP black" for example?
On a PC you indeed don't need to have linux support each individual
model because of the way it's architectured:
- USB, PCI, PCI express devices have IDs, you can see them with lspci
  -nn or lsusb. Thanks to that, it is possible to auto-detect the
  hardware and load the apropriate drivers, and this is what GNU/Linux
  and the linux kenrel do.
- The hardware that have no IDs is described by the boot firmware
  trough ACPI.

That way it is possible to have code that is generic enough to run on
many computers. But even with that the linux kenrel has several ACPI
drivers.

However to do that, the boot firmware needs to support each computer.

The same considerations have to apply to "userspace drivers" too:
userspace modem "drivers" also need to detect which modem they are
talking to and load the apropriate modem "driver".

That said work has been done/is being done in that direction in
Replicant, but I've no idea yet how much generic the images are now or
will be:

The idea is to be able to use a mainline kernel with Replicant 6.0.
To do that code has to be written to add support for it, and that code
can be done in a very generic way.

Once this is done, assuming that the peripherals that are not handled
by linux have free software code to handle them, many things still
remain in the way:
- The code handling such peripherals, such as modem, is, at best,
  generic across the devices speaking the same protocol.
  We probably have no way to auto-detect the protocol yet.
- Recovery images are checking for a device-specific zip file. It is
  necessary in order to avoid writing the updates on the wrong
  partitions.
- WiFi and probably other peripherals too need to be handled in a
  non-device specific way.
- Probably many other things that I don't have in mind right now.
- Proprietary bootloaders that don't know how to deal with generic
  kernel images (zImage + dtb).

I also wonder if it's desirable to have generic images:
(+) It will bring Replicant to a wider range of devices witout
    requiring any work.
(+) It will probably promote Replicant a lot
(-) Images are probably bigger since we'd need to have the code
    handling all devices in the same image.
(-) It probably require more work than making device specific images,
    especially because Android expects the images to be device specific.

Denis.


More information about the Replicant mailing list