[Gta04-owner] advocacy: which bits of the gta04 are non-free?

Dr. H. Nikolaus Schaller hns at goldelico.com
Fri Aug 3 12:33:11 CEST 2012


Hi,

Am 03.08.2012 um 12:02 schrieb joakim at verona.se:

> When advocating the GTA04 I need to understand which bits are non-free.

thanks for asking this question.

> Could you help me correct my current understanding of the issues?
> 
> - Wifi requires a non-free blob to work, and non-free drivers, but you
>  don't need wifi to use the device. If you dont load the firmware blob
>  the wifi hw does nothing.  There are attempts at free drivers.

The driver is free and part of the kernel sources at drivers/net/wireless.
It is called "libertas" [1] and uses the SDIO driver to download the firmware.

The chip needs indeed a non-free firmware (found e.g. in Debian non-free)
from Marvell.

There has been some work done by OLPC to analyse and rewrite this
firmware but activities ceased approx. 3 years ago. Maybe nobody smart
enough was willing to spend enough time (and money). See [2] for
some links.

> - The 3D display driver needs non-free SGX drivers, but you can use it
>  in 2D mode with free drivers.  There are attempts at free drivers for
>  the 3D bits.

The display even works without any graphics acceleration in framebuffer
mode. QtMoko directly runs on the framebuffer and X11-neon is also
pretty fast. I.e. the device is useable whithout any acceleration.

Only the GPU (PowerVR SGX) needs drivers. They are free (i.e. GPLed)
and usually found in drivers/gpu/pvr if they were integrated. But afaik,
there is no kernel tree for the GTA04 including them yet. See also [3].

There are again non-free blobs sent into the GPU through these drivers.
This is sort of a Mini-OS running on the GPU to facilitate data transfer
(i.e. shader pipelines).

Then, to use them, there are non-free OpenGL libraries provided through
Texas Instruments that communicate with the GPU through some /dev
and ioctl() to translate the OpenGL activites into a rendering command.
The GPU can also access the main memory through DMA and finally
writes the rendered image into the framebuffer.

There is a project aiming to reverse engineer how these drivers work
and how the GPU works [2]. The final step would be to write a OpenGL
compatible library matching some community maintained open "firmware".

> - The WWAN coprocessor needs a firmware blob that you upload via
>  USB. The coprocessor doesnt have access to the memory of the main CPU.

No, there is no upload. It just presents itself as a USB compliant device
with 5 tty ports. The kernel driver is included in the kernel.org since I think
2.6.31.

There appears to be an interface to download *new* firmware into the
devices, but AFAIK this needs to run on a Windows system and some
very tricky setup (virtual COM ports etc.).

Hope this clarifies the status.

Of course we try to improve the situation, but we are limited in availability
of chips that run without non-free firmware. And even if they exist(ed)
we must be able to purchase them at reasonable cost and they must
fit into the design constraints. So we have to compromise between
having a limited set of non-free components and having the
functions at all.

I think it is still more freedom for the user to choose between instaling
or not installing the non-free firmware than removing WiFi at all. Or
choosing a TI OMAP variant without GPU. I.e. we provide the option
and the user can choose ho far he wants to go.

Nikolaus

[1]: http://linuxwireless.org/en/users/Drivers/libertas
[2]: http://projects.goldelico.com/p/gta04-main/issues/310/
[3]: http://projects.goldelico.com/p/gta04-kernel/issues/325/
[4]: http://powervr.gnu.org.ve/doku.php?id=start


More information about the Gta04-owner mailing list