h1. Samsung-ipc h2. Protocol Many smartphones and tablets made by Samsung uses the samsung-ipc. At least the following devices use that protocol: * Galaxy S II (GT-I9100) * Galaxy S III (GT-I9300) * Galaxy Note (GT-N7000) * Galaxy Note II (GT-N7100) * Galaxy Nexus (GT-I9250) * Galaxy Tab 2 7.0 GSM (GT-P3100) * Galaxy Tab 2 10.1 GSM (GT-P5100) * Galaxy Note 8.0 GSM (GT-N5100) But some are known to use a different protocol like: * Galaxy S III 4G (GT-I9305) * Galaxy Note II 4G (GT-N7105) h2. Replicant implementation The free software implementation is very flexible. 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. 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. This way kernel device manufacturers can completely break the kernel interfaces standards to improve time to market. For the modem the daemon that does the modem protocol abstraction is @rild@. The @rild@ daemon typically opens a library implementing the modem protocol. 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. 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). h2. Flexibility 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. See [[Upstream#Modem-support|Modem-support]] in the [[Upstream]] wiki pages for different ways of reusing libsamsung-ipc. h2. How easily to contribute to libsamsung-ipc or libsamsung-ril In the [[ContributorsMeetingJuly2019|Replicant contributors meetings of July 2019]], several presentations were done on Replicant's Samsung-ipc implementation. They can be found in the [[ContributorsMeetingJuly2019#Presentations|Presentations section]] of the [[ContributorsMeetingJuly2019|Replicant contributors meetings of July 2019]] page: * Replicant and modems: introduction * Replicant and modems: Samsung IPC The two presentations explain how the code architecture simply by following what happen in the actual code. 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. 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. h2. Rebases and history rewrite |_. Repository path |_. date | Tag for the old history |_. Changes | Rationale | | 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 * This also has been made to prevent similar mistakes from hapening again | | 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 | | 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 * This also has been made to prevent similar mistakes from hapening again |