Project

General

Profile

Samsung-ipc » History » Revision 7

Revision 6 (Denis 'GNUtoo' Carikli, 02/15/2020 12:53 AM) → Revision 7/14 (Denis 'GNUtoo' Carikli, 02/15/2020 12:53 AM)

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 make it way easier 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 for some Samsung-IPC 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 

 |_. 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 | 
 | 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 |