Samsung-ipc » History » Version 5
Denis 'GNUtoo' Carikli, 02/15/2020 12:51 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 | 4 | Denis 'GNUtoo' Carikli | h2. In depth documentation |
44 | |||
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 | |