QMI-RIL » History » Version 8
Wolfgang Wiedmeyer, 06/23/2017 07:35 PM
dependencies
1 | 1 | Wolfgang Wiedmeyer | h1. QMI-RIL |
---|---|---|---|
2 | |||
3 | This page covers development efforts to create a "Radio Interface Layer":https://en.wikipedia.org/wiki/Radio_Interface_Layer (RIL) for modems that use the Qualcomm MSM Interface (QMI) protocol. The work is currently carried out for the Galaxy S 3 4G (I9305) which has a Qualcomm MDM9615 modem. The Galaxy Note 2 4G (t0lte) uses the same modem and this device could be supported as well in Replicant when the QMI-RIL is ready. We will hopefully identify further candidates that have an isolated modem using the QMI protocol and for which Replicant support could be added. Among the non-Android devices, the iPhone 5 is one that "uses the MDM9615 modem":https://www.theiphonewiki.com/wiki/MDM9615 as well. |
||
4 | 2 | Wolfgang Wiedmeyer | |
5 | 6 | Wolfgang Wiedmeyer | "relevant thread on libqmi mailing list":https://lists.freedesktop.org/archives/libqmi-devel/2017-February/002089.html |
6 | |||
7 | 2 | Wolfgang Wiedmeyer | h2. Modem boot |
8 | |||
9 | When the MDM9615 modem is activated, it first boots into a download mode. There, firmware, bootloaders and EFS files are uploaded to the modem via a serial interface. The used protocol is called SAHARA and it is a proprietary protocol developed by Qualcomm. The protocol covers various functionalities. We will likely only need to implement a very small subset that is responsible for transferring firmware and other files to the modem and possibly synchronising changes to EFS files with the filesystem. |
||
10 | |||
11 | 3 | Wolfgang Wiedmeyer | Qualcomm provides the proprietary tool kickstart for uploading the files to the modem. It is run by the daemon qcks. The options qcks supplies to kickstart show which files need to be transferred: |
12 | 2 | Wolfgang Wiedmeyer | <pre> |
13 | /system/bin/ks -v -w /data/cp_log/ -p /dev/ttyUSB0 -f 0 -r 21 -s 2:/firmware/image/amss.mbn -s 6:/firmware/image/apps.mbn -s 8:/firmware/image/dsp1.mbn -s 11:/firmware/image/osbl.mbn -s 12:/firmware/image/dsp2.mbn -s 21:/firmware/image/sbl1.mbn -s 22:/firmware/image/sbl2.mbn -s 23:/firmware/image/rpm.mbn -s 28:/firmware/image/dsp3.mbn -s 16:/tombstones/qcks/efs1.bin -s 17:/tombstones/qcks/efs2.bin -s 20:/tombstones/qcks/efs3.bin -s 29:/tombstones/qcks/acdb.bin |
||
14 | 1 | Wolfgang Wiedmeyer | </pre> |
15 | 3 | Wolfgang Wiedmeyer | |
16 | Logcat and dmesg output of the upload: attachment:ks_logcat, attachment:ks_dmesg |
||
17 | 4 | Wolfgang Wiedmeyer | |
18 | "libopenpst":https://github.com/openpst/libopenpst can be used as a reference to implement the file upload and as documentation about the protocol. The "kernel":https://git.replicant.us/replicant/kernel_samsung_smdk4412 itself can be checked for the different boot modes. |
||
19 | |||
20 | h2. QMI protocol |
||
21 | |||
22 | 5 | Wolfgang Wiedmeyer | "libqmi":https://www.freedesktop.org/wiki/Software/libqmi/ is a library that implements the QMI protocol and it will be used for implementing the RIL. libqmi needs the cdc-wdm and qmi_wwan kernel drivers for communicating with the modem. These are backported to the smdk4412 kernel on the "qmi branch":https://code.fossencdi.org/kernel_samsung_smdk4412.git/log/?h=qmi. The branch is not yet merged into the replicant-6.0 branch because one commit sets SELinux to permissive. This is more convenient for development. |
23 | 7 | Wolfgang Wiedmeyer | |
24 | h2. Cross-compiling libqmi for Android on ARM |
||
25 | |||
26 | These instructions can be used to build libqmi and include it in an image for the Galaxy S 3 4G. See the [[GalaxyS3I9305Build|build instructions for the Galaxy S 3 4G]] for building the image. |
||
27 | |||
28 | 8 | Wolfgang Wiedmeyer | h3. Dependencies |
29 | |||
30 | <pre> |
||
31 | apt-get install groff |
||
32 | </pre> |
||
33 | |||
34 | 7 | Wolfgang Wiedmeyer | h3. Getting the source code |
35 | |||
36 | <pre> |
||
37 | git clone https://anongit.freedesktop.org/git/libqmi.git external/libqmi |
||
38 | git clone https://git.savannah.gnu.org/git/libiconv.git external/libiconv -b v1.15 |
||
39 | git clone https://github.com/libffi/libffi external/libffi -b v3.2.1 |
||
40 | git clone https://git.savannah.gnu.org/git/gettext.git external/gettext -b v0.19.8.1 |
||
41 | git clone https://github.com/GNOME/glib external/glib -b 2.52.3 |
||
42 | </pre> |