Samsung-ipc » History » Version 14
Denis 'GNUtoo' Carikli, 01/01/2021 11:11 PM
sync with other date formats
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 | 7 | Denis 'GNUtoo' Carikli | h2. How easily 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 | 10 | Denis 'GNUtoo' Carikli | The two presentations explain how the code architecture simply by following what happen in the actual code. |
52 | |||
53 | The first presentation starts with a protocol that is much more simple and well known, the the second ones dives into the Replicant Samsung-IPC implementation by following what happens for some of its messages. |
||
54 | 5 | Denis 'GNUtoo' Carikli | |
55 | 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. |
||
56 | |||
57 | 11 | Denis 'GNUtoo' Carikli | h2. Rebases and history rewrite |
58 | 2 | Denis 'GNUtoo' Carikli | |
59 | 1 | Denis 'GNUtoo' Carikli | |_. Repository path |_. date | Tag for the old history |_. Changes | Rationale | |
60 | | 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 |
||
61 | * This also has been made to prevent similar mistakes from hapening again | |
||
62 | 14 | Denis 'GNUtoo' Carikli | | hardware/ril/samsung-ril | 01 January 2021 | replicant-6.0-0004-rc3 | Fixed the "2250038 Convert to use separate SIM status":https://git.replicant.us/replicant/hardware_replicant_libsamsung-ril/commit/?h=replicant-6.0-0004-rc3&id=2250038fe07e923daa9fc4118d92717d56137f64 commit message | * See the "e593f41 Convert to use separate SIM status":https://git.replicant.us/replicant/hardware_replicant_libsamsung-ril/commit/?id=e593f410d7c3f0924033e71c84dcb1ace32fd6a0 commit message for the rationale | |
63 | 1 | Denis 'GNUtoo' Carikli | | 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 |
64 | * This also has been made to prevent similar mistakes from hapening again | |