Samsung-ipc » History » Version 6
Denis 'GNUtoo' Carikli, 02/15/2020 12:53 AM
| 1 | 1 | Denis 'GNUtoo' Carikli | h1. Samsung-ipc |
|---|---|---|---|
| 2 | |||
| 3 | 3 | Denis 'GNUtoo' Carikli | h2. Protocol |
| 4 | |||
| 5 | Many smartphones and tablets made by Samsung uses the samsung-ipc. |
||
| 6 | |||
| 7 | At least the following devices use that protocol: |
||
| 8 | * Galaxy S II (GT-I9100) |
||
| 9 | * Galaxy S III (GT-I9300) |
||
| 10 | * Galaxy Note (GT-N7000) |
||
| 11 | * Galaxy Note II (GT-N7100) |
||
| 12 | * Galaxy Nexus (GT-I9250) |
||
| 13 | * Galaxy Tab 2 7.0 GSM (GT-P3100) |
||
| 14 | * Galaxy Tab 2 10.1 GSM (GT-P5100) |
||
| 15 | * Galaxy Note 8.0 GSM (GT-N5100) |
||
| 16 | |||
| 17 | But some are known to use a different protocol like: |
||
| 18 | * Galaxy S III 4G (GT-I9305) |
||
| 19 | * Galaxy Note II 4G (GT-N7105) |
||
| 20 | |||
| 21 | h2. Replicant implementation |
||
| 22 | |||
| 23 | The free software implementation is very flexible. |
||
| 24 | |||
| 25 | The protocol and most of the logic is implemented in [[libsamsung-ipc]], which enables to reuse it for other operating system (like GNU/Linux) or with different software stack. |
||
| 26 | |||
| 27 | In Android, hardware abstraction is not done by the Linux kernel. Instead applications are developed against the Android framework which uses hardware abstraction daemons to do the hardware abstraction. |
||
| 28 | |||
| 29 | This way kernel device manufacturers can completely break the kernel interfaces standards to improve time to market. |
||
| 30 | |||
| 31 | For the modem the daemon that does the modem protocol abstraction is @rild@. The @rild@ daemon typically opens a library implementing the modem protocol. |
||
| 32 | |||
| 33 | In order to make the design modular, the library opened by the rild daemon is not libsamsung-ipc, but libsamsung-ril which is in charge of creating implementing the interface between Android's rild and libsamsung-ipc. |
||
| 34 | |||
| 35 | So we have: rild <-> [[libsamsung-ril]] <-> [[libsamsung-ipc]] <-> Linux kernel (currently based on Samsung's modified Linux kernels that are specific to a very small number of devices). |
||
| 36 | |||
| 37 | h2. Flexibility |
||
| 38 | |||
| 39 | Having the modem protocol implemented in libsamsung-ipc enables to reuse it in very different software architectures. For instance there have been patches to use it with ofono. |
||
| 40 | |||
| 41 | See [[Upstream#Modem-support|Modem-support]] in the [[Upstream]] wiki pages for different ways of reusing libsamsung-ipc. |
||
| 42 | |||
| 43 | 6 | Denis 'GNUtoo' Carikli | h2. How to make it way easier to contribute to libsamsung-ipc or libsamsung-ril |
| 44 | 4 | Denis 'GNUtoo' Carikli | |
| 45 | In the [[ContributorsMeetingJuly2019|Replicant contributors meetings of July 2019]], several presentations were done on Replicant's Samsung-ipc implementation. |
||
| 46 | |||
| 47 | They can be found in the [[ContributorsMeetingJuly2019#Presentations|Presentations section]] of the [[ContributorsMeetingJuly2019|Replicant contributors meetings of July 2019]] page: |
||
| 48 | * Replicant and modems: introduction |
||
| 49 | * Replicant and modems: Samsung IPC |
||
| 50 | |||
| 51 | 5 | Denis 'GNUtoo' Carikli | The two presentations explain how the code architecture simply by following what happen in the actual code for some Samsung-IPC messages. |
| 52 | |||
| 53 | So it's a good idea to look at them if you intend to contribute to libsamsung-ipc or libsamsung-ril and that you are not used to dive deep into huge piles of unknown code. |
||
| 54 | |||
| 55 | 2 | Denis 'GNUtoo' Carikli | h2. Rebases |
| 56 | |||
| 57 | 1 | Denis 'GNUtoo' Carikli | |_. Repository path |_. date | Tag for the old history |_. Changes | Rationale | |
| 58 | | hardware/ril/samsung-ril | 24 July 2019 | replicant-6.0-0003 | Pointed replicant-6.0 to master | * See the "libsamsung-ril/libsamsung-ipc: delete or sync master branch? Was: [PATCH 6/6] Fix undefined references to MD5_{Init, Update, Final} ":https://lists.osuosl.org/pipermail/replicant/2019-June/001950.html thread |
||
| 59 | * This also has been made to prevent similar mistakes from hapening again | |
||
| 60 | | external/libsamsung-ipc | 24 July 2019 | replicant-6.0-0003 | Pointed replicant-6.0 to master | * See the "libsamsung-ril/libsamsung-ipc: delete or sync master branch? Was: [PATCH 6/6] Fix undefined references to MD5_{Init, Update, Final} ":https://lists.osuosl.org/pipermail/replicant/2019-June/001950.html thread |
||
| 61 | * This also has been made to prevent similar mistakes from hapening again | |