EC25 » History » Revision 25
Revision 24 (laforge, 12/17/2016 06:36 PM) → Revision 25/33 (laforge, 12/17/2016 06:38 PM)
{{>toc}} h1. Quectel EC25 The Quectel EC25 is a LTE Modem Module manufactured by the Chinese Company Quectel. It is available as solder-type version but also as miniPCIe card. It is based around the Qualcomm MSM 9x70 and runs an [[Qualcomm_OE_MSM|OE OE based Linux distribution]] distribution on its internal Cortex-A5 core. This Linux on Cortex-A5 is what implements the USB device that you see from the host PC! Below testing has been made on an EC25-E Revision: EC25EFAR02A03M4G (according to ATI0 and the label on the device) h2. serial console In the EC25-E miniPCI that was analyzed, the serial console of bootloader and Linux appears to be active on pins 11+12 of the LGA module (DBG_RXD, DBG_TXD). The console is at 1.8V and at 115200bps. You can use something like [[mv-uart:|the Osmocom Multi-Voltage UART]] to interface an UART at 1.8V. h2. enabling adb h3. via serial console access the serial console of the device and enter the following commands <pre> echo 0 > /sys/class/android_usb/android0/enable echo adb,diag,serial,rmnet > /sys/class/android_usb/android0/functions echo 1 > /sys/class/android_usb/android0/enable </pre> at this point the usb device re-enumerates on the PC and has now 6 instead of 5 interfaces, in the following order: |_.Interface|_.Type|_.Driver|_.Purpose| |0|adb|-|adbd on USB host| |1|diag|-|diag software on host| |2|serial|qcserial|GPS| |3|serial|qcserial|AT commands| |4|serial|qcserial|AT commands| |5|rmnet|qmi_wwan|libqmi/qmicli| See [[Android_USB_Gadget]] for more information on configuration options of the USB gadget. *NOTE: If you use stock Linux, the drivers will have fixed assumptions as to which interface is used by what function! You need to patch your kernel to change that assumption, or ensure that the order of interfaces / interface numbers doesn't change* h2. processes h3. quectel_daemon seems to be primarily concerned with voice routing / alsa codec related bits, including playback of ringtones h3. atfwd_daemon implements Quectel specific extensions to the AT command interpreter (ATCOP) using the QMI framework to register them in the modem processor. See [[AT Commands]]. h3. Quec_WIFI_CLI h3. /usr/bin/time_daemon * get time from modem via qmi * get time from RTC <pre> Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_pre_init::Base = 0 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: ats_rtc_init: Time read from RTC -- year = 70, month = 0,day = 1 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Value read from RTC seconds = 700000 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_init_config: ATS_RTC initialized Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_pre_init::Base = 1 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Storage Name: ats_1 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Opening File: /data/time/ats_1 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: time_persistent_memory_opr:Genoff Read operation Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_pre_init::Base = 2 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Storage Name: ats_2 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Opening File: /data/time/ats_2 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: time_persistent_memory_opr:Genoff Read operation Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Unable to open filefor read Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_post_init:Error in accessing storage Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_pre_init::Base = 3 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Storage Name: ats_3 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Opening File: /data/time/ats_3 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: time_persistent_memory_opr:Genoff Read operation Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Unable to open filefor read Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_post_init:Error in accessing storage Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_pre_init::Base = 4 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Storage Name: ats_4 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Opening File: /data/time/ats_4 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: time_persistent_memory_opr:Genoff Read operation Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Unable to open filefor read Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_post_init:Error in accessing storage Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_pre_init::Base = 5 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Storage Name: ats_5 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Opening File: /data/time/ats_5 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: time_persistent_memory_opr:Genoff Read operation Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Unable to open filefor read Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_post_init:Error in accessing storage Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_pre_init::Base = 6 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Storage Name: ats_6 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Opening File: /data/time/ats_6 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: time_persistent_memory_opr:Genoff Read operation Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Unable to open filefor read Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_post_init:Error in accessing storage Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_pre_init::Base = 7 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Storage Name: ats_7 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Opening File: /data/time/ats_7 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: time_persistent_memory_opr:Genoff Read operation Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Unable to open filefor read Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_post_init:Error in accessing storage Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_pre_init::Base = 8 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Storage Name: ats_8 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Opening File: /data/time/ats_8 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: time_persistent_memory_opr:Genoff Read operation Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Unable to open filefor read Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_post_init:Error in accessing storage Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_pre_init::Base = 9 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Storage Name: ats_9 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Opening File: /data/time/ats_9 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: time_persistent_memory_opr:Genoff Read operation Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Unable to open filefor read Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_post_init:Error in accessing storage Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_pre_init::Base = 10 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Storage Name: ats_10 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Opening File: /data/time/ats_10 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: time_persistent_memory_opr:Genoff Read operation Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Unable to open filefor read Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_post_init:Error in accessing storage Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_pre_init::Base = 11 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Storage Name: ats_11 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Opening File: /data/time/ats_11 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: time_persistent_memory_opr:Genoff Read operation Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Unable to open filefor read Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_post_init:Error in accessing storage Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_init_config: Other bases initilized, exiting genoff_init Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_opr: Base = 1, val = 198101071560715, operation = 1 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff get for 1 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: rtc_get: Time read from RTC -- year = 70, month = 0,day = 1 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Value read from RTC seconds = 700000 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Value read from RTC seconds = 700000 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Final Time = 315965500246 Jan 1 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_boot_tod_init: Updating system time to sec=315965500, usec=246000 Jan 6 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_modem_qmi_init: Initiallizing QMI Jan 6 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_modem_qmi_init: qmi_client_get_service_list returned 0num_services 1 Jan 6 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_modem_qmi_init: Sending initial transaction to read time Jan 6 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Daemon:genoff_modem_qmi_init:Time received 315965500233 Jan 6 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_opr: Base = 1, val = 315965500233, operation = 0 Jan 6 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: rtc_get: Time read from RTC -- year = 70, month = 0,day = 1 Jan 6 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Value read from RTC seconds = 701000 Jan 6 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: new time 315965500233 Jan 6 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: delta 315964799233 genoff 315964799233 Jan 6 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_persistent_update: Writing genoff = 315964799233 to memory Jan 6 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Opening File: /data/time/ats_1 Jan 6 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: time_persistent_memory_opr:Genoff write operation Jan 6 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: Daemon:genoff_modem_qmi_init: offset 1 updated Jan 6 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_modem_qmi_init: Updating system time to sec=315965500, usec=233000 Jan 6 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: genoff_modem_qmi_init: Local Genoff update for base = 1 , rc = 0 Jan 6 00:11:40 mdm9607-perf user.err time_daemon_mdm:[1081]: starting with pid (1081) Jan 6 00:11:45 mdm9607-perf authpriv.notice login[1080]: ROOT LOGIN on '/dev/ttyHSL0' Jan 6 03:26:20 mdm9607-perf user.info quectel_daemon: [Max][CodeFlag] rc = 0 </pre> h3. /usr/bin/mbimd h3. /usr/bin/pdc_daemon h3. /usr/bin/diagrebootapp an application registering a DIAG command with /dev/diag. Once that diag command is received, it will write to @/dev/rebooterdev@ which will be picked up by reboot-daemon to actually do the reboot. Weird architecture. h3. /sbin/reboot-daemon strange minimalistic daemon that does a blocking read on @/dev/rebooterdev@ and issues a system("reboot") as soon as the read returns. h3. wlan_services h3. /usr/bin/qmi_ip_multiclient h3. eMBMs_TunnelingModule something related to eMBMS (evolved=LTE Multicast) h3. alsaucm_test h3. /usr/bin/quectel-remotefs-service * uses /dev/smd8 h3. /usr/bin/quectel_psm_aware h3. /usr/bin/quectel_monitor_daemon * reads from /sys/devices/4080000.qcom,mss/subsys1/quec_state h3. /usr/bin/quectel-gps-handle * uses /dev/ttyGS0 to print NMEA to host * uses /dev/smd7 to communicate with BB h3. /usr/bin/qmi_shutdown_modem something low power mode related, uses @qmi_simple_ril_test@ and data in /tmp/qmi-shutdown-modem/ h3. /usr/bin/netmgrd h3. /usr/bin/thermal-engine some kind of thermal management for the MSM SoC <pre> Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: Thermal daemon started Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: No target config file, falling back to '/etc/thermal-engine.conf' Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: devices_manager_init: Init Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: Unable to open /sys/class/kgsl Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: Number of gpus :0 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: Number of cpus :1 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: update_cpu_topology: Cluster info node not found/sys/module/msm_thermal/cluster_info Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: tmd_init_cluster_devs: No clusters found Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: vdd_rstr_init: Init KTM VDD RSTR enabled: 0 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: cpr_band_init: Could not read /sys/module/msm_thermal/cpr_band/curr_cpr_band Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: sensors_manager_init: Init Jan 1 00:11:36 mdm9607-perf user.err thermal-engine: bcl_setup: Unexpected node error Jan 1 00:11:36 mdm9607-perf user.err thermal-engine: add_tgt_sensors_set: Error adding bcl Jan 1 00:11:36 mdm9607-perf user.err thermal-engine: sensors_init: Error adding BCL TS Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: Loading configuration file /etc/thermal-engine.conf Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: Parsing section global Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: [PEAK_POWER_MONITOR] Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: #algo_type monitor Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: sampling 1000 sensor tsens_tz_sensor2 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds 110000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds_clr 105000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: actions cpu Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: action_info 400000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: [MODEM_MONITOR] Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: #algo_type monitor Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: sampling 1000 sensor tsens_tz_sensor2 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds 100000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds_clr 95000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: actions modem Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: action_info 2 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: [PA_MONITOR] Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: #algo_type monitor Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: sampling 1000 sensor tsens_tz_sensor2 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds 95000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds_clr 90000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: actions modem Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: action_info 1 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: [CX_MODEM_MONITOR] Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: #algo_type monitor Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: sampling 1000 sensor tsens_tz_sensor2 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds 110000 112000 115000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds_clr 105000 110000 112000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: actions modem_cx modem_cx modem_cx Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: action_info 1 2 3 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: [VDD_RSTR_MONITOR-TSENS4] Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: #algo_type monitor Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: sampling 1000 sensor tsens_tz_sensor4 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds 5000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds_clr 10000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: actions vdd_restriction Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: action_info 1 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: descending Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: [VDD_RSTR_MONITOR-TSENS3] Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: #algo_type monitor Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: sampling 1000 sensor tsens_tz_sensor3 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds 5000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds_clr 10000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: actions vdd_restriction Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: action_info 1 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: descending Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: [VDD_RSTR_MONITOR-TSENS2] Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: #algo_type monitor Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: sampling 1000 sensor tsens_tz_sensor2 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds 5000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds_clr 10000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: actions vdd_restriction Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: action_info 1 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: descending Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: [VDD_RSTR_MONITOR-TSENS1] Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: #algo_type monitor Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: sampling 1000 sensor tsens_tz_sensor1 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds 5000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds_clr 10000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: actions vdd_restriction Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: action_info 1 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: descending Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: [VDD_RSTR_MONITOR-TSENS0] Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: #algo_type monitor Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: sampling 1000 sensor tsens_tz_sensor0 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds 5000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: thresholds_clr 10000 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: actions vdd_restriction Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: action_info 1 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: descending Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: [SS-CPU] Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: #algo_type ss Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: sampling 65 sensor cpu0 device cpu Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: set_point 95000 set_point_clr 90000 time_constant 0 Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: vdd_restrict_qmi_request: MODEM req level(0) is recorded and waiting for completing QMI registration Jan 1 00:11:36 mdm9607-perf user.info thermal-engine: vdd_restrict_qmi_request: ADSP req level(0) is recorded and waiting for completing QMI registration Jan 1 00:11:37 mdm9607-perf user.info quectel_daemon: [Max][CodeFlag] rc = 0 Jan 1 00:11:37 mdm9607-perf user.info thermal-engine: MODEM thermal mitigation available. Jan 1 00:11:37 mdm9607-perf user.info thermal-engine: ACTION: MODEM - Pending request: pa mitigation succeeded for level 0. Jan 1 00:11:37 mdm9607-perf user.info thermal-engine: Mitigation:Modem:0 Jan 1 00:11:37 mdm9607-perf user.info thermal-engine: ACTION: MODEM - Pending request: cpuv_restriction_cold mitigation succeeded for level 0. Jan 1 00:11:37 mdm9607-perf user.info thermal-engine: Mitigation:VDD[MODEM-cpuv_restriction_cold]:0 Jan 1 00:11:37 mdm9607-perf user.info thermal-engine: ACTION: MODEM - Pending request: cx_vdd_limit mitigation succeeded for level 0. Jan 1 00:11:37 mdm9607-perf user.info thermal-engine: Mitigation:VDD[MODEM-cx_vdd_limit]:0 Jan 1 00:11:37 mdm9607-perf user.info thermal-engine: ACTION: MODEM - Pending request: modem mitigation succeeded for level 0. Jan 1 00:11:37 mdm9607-perf user.info thermal-engine: Mitigation:VDD[MODEM-modem]:0 </pre> h3. /usr/bin/qmuxd h3. /usr/bin/quectel_pcm_daemon related to alsa soc (asoc) codec configuration, uses /etc/auxpcm.conf h3. /usr/bin/qti rmnet/tethering related * /dev/dpl_ctrl * /dev/rmnet_ctrl h3. QCMAP_ConnectionManager related to WLAN/WWAN back-haul switching h3. QCMAP_CLI Program to configure QCMAP. Cnfiguration can also be done via web? <pre> Please select an option to test from the items listed below. 1. Display Current Config 49. Get UPnP Status 2. Delete SNAT Entry 50. Get DLNA Status 3. Add SNAT Entry 51. Get MDNS Status 4. Get SNAT Config 52. Get Station Mode Status 5. Set Roaming 53. Set DLNA Media Directory 6. Get Roaming 54. Get DLNA Media Directory 7. Delete DMZ IP 55. Set MobileAP/WLAN Bootup Config 8. Add DMZ IP 56. Get MobileAP/WLAN Bootup Config 9. Get DMZ IP 57. Enable/Disable IPV4 10. Set IPSEC VPN Passthrough 58. Get IPv4 State 11. Get IPSEC VPN Passthrough 59. Get Data Bitrate 12. Set PPTP VPN Passthrough 60. Set UPnP Notify Interval 13. Get PPTP VPN Passthrough 61. Get UPnP Notify Interval 14. Set L2TP VPN Passthrough 62. Set DLNA Notify Interval 15. Get L2TP VPN Passthrough 63. Get DLNA Notify Interval 16. Set Autoconnect Config 64. Add DHCP Reservation Record 17. Get Autoconnect Config 65. Get DHCP Reservation Records 18. Get WAN status 66. Edit DHCP Reservation Record 19. Add Firewall Entry 67. Delete DHCP Reservation Record 20. Enable/Disable M-DNS 68. Activate Hostapd Config 21. Enable/Disable UPnP 69. Activate Supplicant Config 22. Enable/Disable DLNA 70. Get Webserver WWAN access flag 23. Display Firewalls 71. Set Webserver WWAN access flag 24. Delete Firewall Entry 72. Enable/Disable ALG 25. Get WWAN Statistics 73. Set SIP server info 26. Reset WWAN Statistics 74. Get SIP server info 27. Get Network Configuration 75. Restore Factory Default Settings(** Will Reboot Device ) 28. Get NAT Type 76. Get Connected Device info 29. Set NAT Type 77. Get Cradle Mode 30. Enable/Disable Mobile AP 78. Set Cradle Mode 31. Enable/Disable WLAN 79. Get Prefix Delegation Config 32. Connect/Disconnect Backhaul 80. Set Prefix Delegation Config 33. Get Mobile AP status 81. Get Prefix Delegation Status 34. Set NAT Timeout 82. Set/Get Gateway URL 35. Get NAT Timeout 83. Enable/Disable DDNS 36. Set WLAN Config 84. Set DDNS Config 37. Get WLAN Config 85. Get DDNS Config 38. Activate WLAN 86. Enable/Disable TinyProxy 39. Set LAN Config 87. Get TinyProxy Status 40. Get LAN Config 88. Set DLNAWhitelisting 41. Activate LAN 89. Get DLNAWhitelisting 42. Get WLAN Status 90. Add DLNAWhitelistingIP 43. Enable/Disable IPV6 91. Delete DLNAWhitelistingIP 44. Set Firewall Config 92. Set UPNPPinhole State 45. Get Firewall Config 93. Get UPNPPinhole State 46. Get IPv6 State 94. Configure Active Backhaul Priority 47. Get WWAN Profile 95. Get Backhaul Priority 48. Set WWAN Profile 96. Teardown/Disable and Exit </pre> h3. ipacmdiag related to https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/data-ipa-cfg-mgr/ ? h3. ipacm_perf related to https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/data-ipa-cfg-mgr/ ? h3. psmd /dev/socket/psm h3. /sbin/adbd android debug bridge. h2. misc outputs h3. lsusb output <pre> Bus 001 Device 058: ID 2c7c:0125·· Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0· bDeviceProtocol 0· bMaxPacketSize0 64 idVendor 0x2c7c· idProduct 0x0125· bcdDevice 3.18 iManufacturer 1 Android iProduct 2 Android iSerial 0· bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 209 bNumInterfaces 5 bConfigurationValue 1 iConfiguration 0· bmAttributes 0xa0 (Bus Powered) Remote Wakeup MaxPower 500mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0· Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0· bInterfaceProtocol 0· iInterface 0· ** UNRECOGNIZED: 05 24 00 10 01 ** UNRECOGNIZED: 05 24 01 00 00 ** UNRECOGNIZED: 04 24 02 02 ** UNRECOGNIZED: 05 24 06 00 00 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x000a 1x 10 bytes bInterval 9 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0· bInterfaceProtocol 0· iInterface 0· ** UNRECOGNIZED: 05 24 00 10 01 ** UNRECOGNIZED: 05 24 01 00 00 ** UNRECOGNIZED: 04 24 02 02 ** UNRECOGNIZED: 05 24 06 00 00 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x85 EP 5 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x000a 1x 10 bytes bInterval 9 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 3 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 0· bInterfaceProtocol 0· iInterface 0· ** UNRECOGNIZED: 05 24 00 10 01 ** UNRECOGNIZED: 05 24 01 00 00 ** UNRECOGNIZED: 04 24 02 02 ** UNRECOGNIZED: 05 24 06 00 00 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x87 EP 7 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x000a 1x 10 bytes bInterval 9 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x86 EP 6 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x04 EP 4 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 4 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 255 Vendor Specific Class bInterfaceSubClass 255 Vendor Specific Subclass bInterfaceProtocol 255 Vendor Specific Protocol iInterface 0· Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x89 EP 9 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 9 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x88 EP 8 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x05 EP 5 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0· bDeviceProtocol 0· bMaxPacketSize0 64 bNumConfigurations 1 Device Status: 0x0000 (Bus Powered) </pre> h3. ps <pre> root@mdm9607-perf:/firmware/image# ps axuw PID USER TIME COMMAND 1 root 0:06 init [5] 2 root 0:00 [kthreadd] 3 root 0:02 [ksoftirqd/0] 4 root 0:04 [kworker/0:0] 5 root 0:00 [kworker/0:0H] 6 root 0:00 [kworker/u2:0] 7 root 0:00 [rcu_preempt] 8 root 0:00 [rcu_sched] 9 root 0:00 [rcu_bh] 10 root 0:00 [khelper] 11 root 0:00 [netns] 12 root 0:00 [perf] 13 root 0:00 [msm_watchdog] 14 root 0:00 [smd_channel_clo] 15 root 0:00 [smsm_cb_wq] 17 root 0:00 [deferwq] 19 root 0:00 [irq/52-cpr] 20 root 0:00 [mpm] 29 root 0:00 [writeback] 30 root 0:00 [crypto] 31 root 0:00 [bioset] 32 root 0:00 [kblockd] 33 root 0:00 [system] 34 root 0:00 [devfreq_wq] 35 root 0:00 [cfg80211] 36 root 0:00 [power_off_alarm] 37 root 0:00 [kswapd0] 38 root 0:00 [fsnotify_mark] 46 root 0:00 [glink_ssr_wq] 47 root 0:00 [apr_driver] 48 root 0:00 [k_hsuart] 49 root 0:00 [msm_serial_hs_0] 50 root 0:00 [msm_serial_hs_0] 51 root 0:00 [diag_real_time_] 52 root 0:00 [diag_wq] 53 root 0:00 [DIAG_USB_diag] 54 root 0:00 [diag_cntl_wq] 55 root 0:00 [diag_dci_wq] 56 root 0:00 [DIAG_SMD_MODEM_] 57 root 0:00 [DIAG_SMD_MODEM_] 58 root 0:00 [DIAG_SMD_MODEM_] 59 root 0:00 [DIAG_SMD_MODEM_] 60 root 0:00 [DIAG_SMD_MODEM_] 61 root 0:00 [DIAG_SMD_LPASS_] 62 root 0:00 [DIAG_SMD_LPASS_] 63 root 0:00 [DIAG_SMD_LPASS_] 64 root 0:00 [DIAG_SMD_LPASS_] 65 root 0:00 [DIAG_SMD_LPASS_] 66 root 0:00 [DIAG_SMD_WCNSS_] 67 root 0:00 [DIAG_SMD_WCNSS_] 68 root 0:00 [DIAG_SMD_WCNSS_] 69 root 0:00 [DIAG_SMD_WCNSS_] 70 root 0:00 [DIAG_SMD_WCNSS_] 71 root 0:00 [DIAG_SMD_SENSOR] 72 root 0:00 [DIAG_SMD_SENSOR] 73 root 0:00 [DIAG_SMD_SENSOR] 74 root 0:00 [DIAG_SMD_SENSOR] 75 root 0:00 [DIAG_SMD_SENSOR] 76 root 0:00 [DIAG_SOCKMODEM_] 77 root 0:00 [DIAG_SOCKMODEM_] 78 root 0:00 [DIAG_SOCKMODEM_] 79 root 0:00 [DIAG_SOCKMODEM_] 80 root 0:00 [DIAG_SOCKMODEM_] 81 root 0:00 [DIAG_SOCKLPASS_] 82 root 0:00 [DIAG_SOCKLPASS_] 83 root 0:00 [DIAG_SOCKLPASS_] 84 root 0:00 [DIAG_SOCKLPASS_] 85 root 0:00 [DIAG_SOCKLPASS_] 86 root 0:00 [DIAG_SOCKWCNSS_] 87 root 0:00 [DIAG_SOCKWCNSS_] 88 root 0:00 [DIAG_SOCKWCNSS_] 89 root 0:00 [DIAG_SOCKWCNSS_] 90 root 0:00 [DIAG_SOCKWCNSS_] 91 root 0:00 [DIAG_SOCKSENSOR] 92 root 0:00 [DIAG_SOCKSENSOR] 93 root 0:00 [DIAG_SOCKSENSOR] 94 root 0:00 [DIAG_SOCKSENSOR] 95 root 0:00 [DIAG_SOCKSENSOR] 96 root 0:00 [DIAG_CNTL_SOCKE] 97 root 0:00 [k_gserial] 98 root 0:00 [k_ipa_usb] 99 root 0:00 [uether] 100 root 0:00 [k_gbridge] 101 root 0:00 [therm_core:noti] 102 root 0:00 [therm_core:noti] 103 root 0:00 [therm_core:noti] 104 root 0:00 [therm_core:noti] 105 root 0:00 [therm_core:noti] 106 root 0:00 [irq/216-tsens_i] 107 root 0:00 [therm_core:noti] 108 root 0:00 [therm_core:noti] 109 root 0:00 [cfinteractive] 110 root 0:00 [irq/170-7824900] 111 root 0:00 [irq/155-mmc0] 112 root 0:03 [irq/253-7864900] 113 root 0:00 [irq/157-mmc1] 114 root 0:00 [usb_bam_wq] 115 root 0:00 [qsmd] 116 root 0:00 [ipv6_addrconf] 117 root 0:00 [msm_ipc_router] 118 root 0:00 [irq/441-modem] 119 root 0:00 [sysmon_wq] 120 root 0:00 [qmi_svc_event_w] 122 root 0:00 [bam_dmux_rx] 123 root 0:00 [bam_dmux_tx] 124 root 0:00 [ubi_bgt0d] 125 root 0:00 [ubi_bgt1d] 126 root 0:00 [k_bam_data] 127 root 0:00 [f_mtp] 129 root 0:00 [msm_thermal:fre] 130 root 0:00 [msm_thermal:the] 131 root 0:00 [ubifs_bgt0_0] 132 root 0:00 [IPCRTR] 133 root 0:00 [modem_IPCRTR] 186 root 0:00 [ubifs_bgt0_1] 195 root 0:00 /sbin/adbd 216 root 0:00 psmd 324 root 0:00 ipacm_perf 333 root 0:00 ipacmdiag 343 root 0:00 QCMAP_ConnectionManager /etc/mobileap_cfg.xml d 347 root 0:00 /usr/bin/qti 358 root 0:00 /sbin/tftp_server 359 root 0:00 /sbin/fs-scrub-daemon 377 root 0:00 /usr/bin/quectel_pcm_daemon 397 root 0:00 [sh] 435 root 0:00 /sbin/syslogd -n -C64 444 root 0:00 [k_gsmd] 445 root 0:00 [k_gbam] 459 root 0:00 /usr/bin/qmuxd 463 root 0:00 /usr/bin/thermal-engine 468 root 0:00 /usr/bin/netmgrd 497 root 0:00 /usr/bin/qmi_shutdown_modem 504 root 0:01 /usr/bin/quectel-gps-handle 518 root 0:00 /usr/bin/quectel_monitor_daemon 537 root 1:30 /usr/bin/quectel_daemon 544 root 0:00 /usr/bin/quectel_psm_aware 563 root 0:00 /usr/bin/quectel-remotefs-service 672 root 0:20 alsaucm_test 811 www-data 0:02 /usr/sbin/lighttpd -f /etc/lighttpd.conf 818 nobody 0:00 dnsmasq -i bridge0 -I lo -z --dhcp-range=bridge0,192.168. 824 root 0:00 eMBMs_TunnelingModule 828 root 0:00 /usr/bin/qmi_ip_multiclient /etc/qmi_ip_cfg.xml 887 root 0:00 wlan_services 1004 messageb 0:00 /usr/bin/dbus-daemon --system 1022 root 0:00 /sbin/reboot-daemon 1024 diag 0:02 /usr/bin/diagrebootapp 1029 root 1:24 /usr/bin/atfwd_daemon 1066 root 0:00 /usr/bin/pdc_daemon 1079 root 0:00 /usr/bin/mbimd 1080 root 0:00 -sh 1081 root 0:00 /usr/bin/time_daemon 1177 root 0:00 [kworker/0:1] 1202 root 0:00 [kworker/u2:1] 1205 root 0:09 [kworker/u2:2] 1206 root 0:02 [kworker/u2:3] 1213 root 0:00 [kworker/u2:4] 1233 root 0:00 ps axuw </pre>