RFC: undocumented binaries in /odm/bin

There are a bounce of undocumented binaries in /odm/bin folder. Searching by their name, I did not found anything relevant. Someone can shade some light on these:

~]# ls /odm/bin/*

/odm/bin/adpl                 /odm/bin/ims_rtp_daemon       /odm/bin/pm-proxy             /odm/bin/sct_service
/odm/bin/adsprpcd             /odm/bin/imsdatadaemon        /odm/bin/pm-service           /odm/bin/sensors.qcom
/odm/bin/cdsprpcd             /odm/bin/imsqmidaemon         /odm/bin/qrtr-ns              /odm/bin/sony-modem-switcher
/odm/bin/cnd                  /odm/bin/imsrcsd              /odm/bin/qseecomd             /odm/bin/sscrpcd
/odm/bin/cnss-daemon          /odm/bin/irsc_util            /odm/bin/qti                  /odm/bin/ta_qmi_service
/odm/bin/dpmQmiMgr            /odm/bin/mlog_qmi_service     /odm/bin/rmt_storage          /odm/bin/tad_static
/odm/bin/dpmd                 /odm/bin/netmgrd              /odm/bin/rtspclient           /odm/bin/tftp_server
/odm/bin/hvdcp_opti           /odm/bin/pd-mapper            /odm/bin/rtspserver

/odm/bin/hw:
android.hardware.keymaster@4.0-service-qti      vendor.somc.hardware.miscta@1.0-service
qcrild                                          vendor.somc.hardware.modemswitcher@1.0-service

From: ODM Bölümleri  |  Android Open Source Project

These programs fall under the ‘board-specific daemons’ category, and you’ll have to ask Sony and Qualcomm what they do.

For example, “QSEE” is the Qualcomm Secure Execution Environment", a kernel driver for that is e.g. here, and qseecomd is a program to set up/interact with that kernel subsystem.

IMS has to do with calling and various media tasks in relation to that, see e.g. Внедрение ИСМ  |  Android Open Source Project.

As to why those are there, you’ll have to familiarize yourself with the basic Sailfish OS Architecture which will teach you that hardware specific stuff is re-used from AOSP or similar Android projects, and it follows that those things coming from the Android vendors are used in the core layer (the HAL) between hardware, the kernel, and the rest of the system.

4 Likes

TL;DR is don’t worry about them, even if undocumented due to their proprietary nature, they are essential yet innocent binaries.

Here’s some (very little) extra light on some of them:

  • adsprpcd: audio related, routes sound between audio subsystem and the modem subsystem.
  • cdsprpcd: communication with the camera DSP.
  • The above mentioned executables’ libraries are also used for sscrpcd: communication with the sensors DSP.
  • cnd + cnss-daemon: used for Wi-Fi.
  • irsc_util: used for QMI/modem connection (sets up IPC router and its configs).
  • netmgrd: used for networking (think IPA driver).
  • sct_service: “SCT QMI service”, likely Sony specific.
  • rmt_storage: used by modem subsystem to work with modem partitions, gets very angry on Sonys when sct_service is not available.
  • tad_static: probably a statically linked version of the classic Trim Area daemon which is Sony-specific, works with modem files.
  • miscta + modemswitcher: again Sony-specific and modem related; not sure about modemswitcher as it is not used after edo devices, but it seems to pick up modem configurations from the firmware partition
  • qcrild: RIL daemon offered by qcom, used for everything telephony.
  • keymaster: works with cryptographic keys and interacts with the TEE to store them… you can read more about it here.
4 Likes