Pages
Developer Documentation
On this page

Kernel layer

The kernel side isn't part of SonicDE, but an overview helps in understanding the higher levels of the stack.

The mobile interface supports devices running a mainline Linux kernel. See Porting a new device.

Mobile devices have a component called the WWAN modem. In a modular system, the modem is a distinct submodule, typically soldered to the board or mounted in an mPCIe slot, where it uses only the embedded USB bus and power. In modern proprietary phone SoCs, the modem may be a couple of chips rather than a distinct module and may use other interfaces. In many smartphone SoCs, part of the modem has been a processor core on the same die as the application processor, communicating through proprietary on-chip interfaces and shared memory.

Among other things, such as USB and voice support, the kernel needs to support the protocols of the Radio Interface Layer (RIL). Depending on the modem's manufacturer, this could be a serial (TTY) interface in legacy mode with AT commands, a more modern protocol such as MBIM or QRTR with QMI commands, or something else.

For example, the PinePhone has a Quectel EG25 modem connected to its main ARM SoC by USB. The modem can be accessed with QMI commands over USB, thanks to support in the mainline kernel.

Mainlined SDM845 smartphones such as the OnePlus 6 have a modem exposed as a remote processor of the SoC. It also works with QMI, through the QRTR interface, and is supported by the kernel.

Kernel drivers don't handle a protocol such as QMI themselves. They export it as a character device, so that userland can handle it.

See also

Adapted for SonicDE from develop.kde.org/docs/packaging/plasma-mobile/telephony/kernel-layer/ by Alexey Andreyev, Carl Schwan, Mikhail Zolotukhin, licensed under CC BY-SA 4.0.

Edit this page on GitHub

We use cookies to personalize content and to analyze our traffic. Please decide if you are willing to accept cookies from our website.