← Back to team overview

ubuntu-phone team mailing list archive

Re: FM Radio info collection

 

On Thu, Dec 3, 2015 at 1:36 AM, sturmflut <sturmflut@xxxxxxxxxxxxxx> wrote:
> Dear list,
>
> I've been looking at the necessary pieces for FM radio support, and I
> hope somebody can correct me, but it looks more complicated than I expected.
>

We discussed this topic lengthily on the list some time ago :) It's
not like we don't want to
support FM radio, but the lack of a common Android HAL for FM radio
access would force us to
maintain an FM radio abstraction ourselves (more on that below). In
addition, most of the device-specific
radio apps require elevated privileges to run as they directly access
the FM radio HW (not multiplexed by a system service).

> For some reason Android doesn't have an FM radio API and leaves it up to
> the manufacturers to come up with something. I've looked at several
> devices, among them the bq Aquaris E4.5, and every SoC manufacturer
> seems to have a different opinion on how to do it.
>
> Some ship no FM radio at all.
>
> Some seem to ship drivers for the Linux V4L subsystem.
>
> MediaTek (Aquaris E4.5 and E5) decided to implement custom kernel
> drivers with a custom character device (/dev/fm) and custom ioctl
> commands. There seem to be userspace libraries (libfm*) including a JNI
> wrapper in /system/lib of the Android container on our Ubuntu phones.
>
> Because there is no standard API, there are no generic FM radio apps for
> Android, and pretty much every manufacturer ships a custom app for his
> own SoC(s) and/or device(s).
>
>
> I'll try to come up with a piece of C code for the command line that can
> at least initialize and tune the FM radio on the Aquaris E4.5 and E5.
> The long-term goal could be to turn this into plugins for an extended
> media-hub.
>

If you are interested in helping to enable the functionality, the
correct chain for integrating the feature would be:

[1.] Add a (potentially limited) API to lp:platform-api, that exposes
a simple common C interface to the Ubuntu side.
[2.] Provide an implementation of the API in platform-api/android (see
http://bazaar.launchpad.net/~phablet-team/platform-api/trunk/files/head:/android/)
[2.1] Provide a dummy fallback implementation for devices that do not
support FM radio of any kind.
[3.] Expose the respective hardware functionality to media-hub.
Multiple ways are possible, but we would need to significantly adjust
the interfaces
to support fm radio semantics (switching stations, rds, automatic scans etc.)
[4.] Adjust Qt's radio abstraction and come up with a Ubuntu Touch
specific backend implementation, that either:
  [4.1] Leverages the API in [1.] directly (would require any app to
have special privileges in accessing the system).
  [4.2] Leverages the API in [3.] (which is the clean way of
integration FM radio support).

For starters, [1.], [2.], [2.1] and [4.1] should be good enough to get started.

Cheers,

  Thomas


>
> cheers,
> Simon
>
> --
> Mailing list: https://launchpad.net/~ubuntu-phone
> Post to     : ubuntu-phone@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~ubuntu-phone
> More help   : https://help.launchpad.net/ListHelp


Follow ups

References