Samsung Modem
This is a technical page designed to see how to implement support for Samsung modems in postmarketOS. |
Samsung modems use three abstraction layers:
- Kernel interface (specific to each modem)
- This can be further divided into the power control of the modem, the kernel<->userspace interaction, and the kernel<->modem interaction
- Samsung IPC modem protocol (specific to Samsung devices)
- Radio Interface Layer
- On Android, this is via RIL, it could go via oFono on pmOS
The IPC protocol, libsamsung-ipc
, has been reimplemented as free software by Replicant.
There have been patches to add libsamsung-ipc support to ofono, a potential RIL for postmarketOS, but it doesn't seem like they were merged due to licensing issues which have now been resolved. libsamsung-ipc has since been almost entirely re-written, but the patches have been forward-ported at https://github.com/xc-racer99/ofono and https://github.com/xc-racer99/libsamsung-ipc
There is a tool called samsungipcd (packaged in pmOS), that emulates an AT-compatible modem on top of a Samsung modem (using libsamsung-ipc). This tool uses a pair of legacy BSD pseudoterminals to emulate a serial port, so in order to use it you must have CONFIG_LEGACY_PTYS
enabled in the kernel.
The kernel part of the driver for some Samsung modems has been ported to mainline, see discussion here. However if your modem is not an XMM626, you will have to use a downstream kernel to have working modem.