Project

General

Profile

EC20 Linux

Kernel Version

It is using a modified version of a Qualcomm_Kernel which is available from https://source.codeaurora.org/quic/femto/kernel/msm

$ for rev in `git tag | grep \^LNX.LE.2`; do patchsize=$(git diff -w $rev | wc -l); echo $patchsize $rev; done
19247 LNX.LE.2.0-23056-9x15
19188 LNX.LE.2.0-23060-9x15
19188 LNX.LE.2.0-23061-9x15
127972 LNX.LE.2.0-23115-9x15

based on this we can see that the EC20 is using a LNX.LE.2.0-23060-9x15 derived version with about 19k lines of residual diff of Quectel specific changes.

SMD

root@9615-cdp:/sys/kernel/debug/smd# cat tbl
name=DS cid=0 ch type=0 xfer type=1 ref_count=2
name= cid=0 ch type=0 xfer type=0 ref_count=0
name= cid=0 ch type=0 xfer type=0 ref_count=0
name= cid=0 ch type=0 xfer type=0 ref_count=0
name=MSGR_SMD_P1 cid=4 ch type=11 xfer type=2 ref_count=2
name=MSGR_SMD_P0 cid=5 ch type=11 xfer type=2 ref_count=2
name=IPCRTR cid=6 ch type=1 xfer type=2 ref_count=1
name=IPCRTR cid=7 ch type=2 xfer type=2 ref_count=1
name=sys_mon cid=8 ch type=1 xfer type=2 ref_count=1
name=DIAG_CNTL cid=9 ch type=1 xfer type=2 ref_count=2
name=DIAG cid=10 ch type=1 xfer type=2 ref_count=2
name=apr_audio_svc cid=11 ch type=1 xfer type=2 ref_count=1
name=apr_voice_svc cid=12 ch type=2 xfer type=2 ref_count=2
name=apr_apps2 cid=13 ch type=1 xfer type=2 ref_count=1
name=RPCRPY_CNTL cid=14 ch type=0 xfer type=2 ref_count=2
name=IPCROUTER cid=15 ch type=0 xfer type=0 ref_count=1
name=SSM_RTR cid=16 ch type=0 xfer type=2 ref_count=1
name=sys_mon cid=17 ch type=0 xfer type=2 ref_count=1
name=DIAG_2 cid=18 ch type=0 xfer type=2 ref_count=2
name=DIAG_CNTL cid=19 ch type=0 xfer type=2 ref_count=2
name=DIAG cid=20 ch type=0 xfer type=2 ref_count=2
name=apr_voice_svc cid=21 ch type=0 xfer type=2 ref_count=1
name=DATA1 cid=22 ch type=0 xfer type=2 ref_count=2
name=DATA2 cid=23 ch type=0 xfer type=2 ref_count=2
name=DATA3 cid=24 ch type=0 xfer type=2 ref_count=2
name=DATA4 cid=25 ch type=0 xfer type=2 ref_count=2
name=DATA11 cid=26 ch type=0 xfer type=1 ref_count=2
name=DATA40 cid=27 ch type=0 xfer type=2 ref_count=2
name=DATA40_CNTL cid=28 ch type=0 xfer type=2 ref_count=2
name=DATA8 cid=29 ch type=0 xfer type=2 ref_count=2
name=DATA5_CNTL cid=30 ch type=0 xfer type=2 ref_count=2
name=DATA6_CNTL cid=31 ch type=0 xfer type=2 ref_count=2
name=DATA7_CNTL cid=32 ch type=0 xfer type=2 ref_count=2
name=DATA8_CNTL cid=33 ch type=0 xfer type=2 ref_count=2
name=GPSNMEA cid=34 ch type=0 xfer type=2 ref_count=2
root@9615-cdp:/sys/kernel/debug/smd# cat ch 
ch00:   OPENED(0000/0000) dcCiwrsb <->   OPENED(0000/0000) dCciwrsB :  2000
ch04:   OPENED(12944/12944) DCCiwrsB <->   OPENED(12312/12312) DCCiwrsB :  8000
ch05:   OPENED(0000/0000) DCCiwrsb <->   OPENED(28712/28712) DCCiwrsB : 10000
ch06:   OPENED(1872/1872) DCCiwrsB <->   OPENED(0216/0216) DCCiwrsB :  2000
ch07:   CLOSED(0000/0000) dcciwrsb <->  OPENING(0000/0000) DCCiwrSb :  2000
ch08:   CLOSED(0000/0000) dcciwrsb <->  OPENING(0000/0000) DCCiwrSb :   400
ch09:   OPENED(0952/0952) DCCiwrsb <->   OPENED(0438/0438) DCCiwrsB :   400
ch10:   OPENED(0000/0000) DCCiwrsb <->   OPENED(0000/0000) DCCiwrsb :  2000
ch11:   CLOSED(0000/0000) dcciwrsb <->  OPENING(0000/0000) DCCiwrSb :  2000
ch12:   OPENED(0000/0000) DCCiwrsb <->   OPENED(0000/0000) DCCiwrsb :  2000
ch13:   CLOSED(0000/0000) dcciwrsb <->  OPENING(0000/0000) DCCiwrSb :  2000
ch14:   OPENED(0412/0412) DCCiwrsB <->   OPENED(0140/0140) DCCiwrsB :   400
ch15:   CLOSED(0000/0000) dcciwrsb <->  OPENING(0000/0000) DCCiwrSb :  2000
ch16:   CLOSED(0000/0000) dcciwrsb <->  OPENING(0000/0000) DCCiwrSb :  2000
ch17:   CLOSED(0000/0000) dcciwrsb <->  OPENING(0000/0000) DCCiwrSb :   400
ch18:   OPENED(0000/0000) DCCiwrsb <->   OPENED(0000/0000) DCCiwrsb :  2000
ch19:   OPENED(0952/0952) DCCiwrsb <->   OPENED(0370/0370) DCCiwrsB :   400
ch20:   OPENED(0000/0000) DCCiwrsb <->   OPENED(0000/0000) DCCiwrsb :  2000
ch21:   CLOSED(0000/0000) dcciwrsb <->  OPENING(0000/0000) DCCiwrSb :  2000
ch22:   CLOSED(0000/0000) dcciwrsb <->  OPENING(0000/0000) dCciwrSb :  2000
ch23:   OPENED(0000/0000) dcCiwrsb <->   OPENED(0000/0000) dCciwrsb :  2000
ch24:   OPENED(0000/0000) DCCiwrsb <->   OPENED(0000/0000) dCciwrsb :  2000
ch25:   CLOSED(0000/0000) dcciwrsb <->  OPENING(0000/0000) dCciwrSb :  2000
ch26:   CLOSED(0000/0000) dcciwrsb <->  OPENING(0000/0000) dCciwrSb :  2000
ch27:   CLOSED(0000/0000) dcciwrsb <->  OPENING(0000/0000) dcciwrSb :  2000
ch28:   OPENED(0000/0000) DCCiwrsb <->   OPENED(0000/0000) DCCiwrsB :  2000
ch29:   CLOSED(0000/0000) dcciwrsb <->  OPENING(0000/0000) dcciwrSb :  2000
ch30:   OPENED(0266/0266) DCCiwrsB <->   OPENED(0807/0807) DCCiwrsB :   400
ch31:   OPENED(0237/0237) DCCiwrsB <->   OPENED(0415/0415) DCCiwrsB :   400
ch32:   OPENED(0237/0237) DCCiwrsB <->   OPENED(0415/0415) DCCiwrsB :   400
ch33:   OPENED(0237/0237) DCCiwrsB <->   OPENED(0415/0415) DCCiwrsB :   400
ch34:   OPENED(0000/0000) DCCiwrsb <->   OPENED(0000/0000) dCciwrsb :  2000

ASOC

root@9615-cdp:/sys/kernel/debug/asoc# cat dais
rt5616-aif1
null-codec-dai
null-codec-dai
null-codec-dai
null-codec-dai
null-codec-dai
null-codec-dai
null-codec-dai
null-codec-dai
null-codec-dai
null-codec-dai
null-codec-dai
null-codec-dai
null-codec-dai
msm-dai-stub
DTMF_RX_HOSTLESS
SEC_I2S_RX_HOSTLESS
MI2S_TX_HOSTLESS
VoLTE
VOICE_STUB
AUXPCM_HOSTLESS
HDMI_HOSTLESS
AFE-PROXY
INT_FM_HOSTLESS
SLIMBUS0_HOSTLESS
MultiMedia4
MultiMedia3
VoIP
CS-VOICE
MultiMedia2
MultiMedia1
msm-dai-q6.32771
msm-dai-q6.32772
msm-dai-q6.32773
msm-dai-q6.13
msm-dai-q6.12
msm-dai-q6.3
msm-dai-q6.2
msm-dai-q6.225
msm-dai-q6.241
msm-dai-q6.240
msm-dai-q6.224
msm-dai-q6.5
msm-dai-q6.4
msm-dai-q6.1
msm-dai-q6.0
msm-dai-q6.12289
msm-dai-q6.12288
msm-dai-q6.16385
msm-dai-q6.16384
msm-stub-tx
msm-stub-rx
root@9615-cdp:/sys/kernel/debug/asoc# cat platforms 
msm-pcm-hostless
msm-pcm-afe
msm-pcm-routing
msm-multi-ch-pcm-dsp
msm-pcm-dsp
msm-host-pcm-voice
msm-pcm-dtmf
msm-voip-dsp
msm-pcm-voice
snd-soc-dummy

BAM

root@9615-cdp:/sys/kernel/debug/bam_dmux# cat tbl
ch00  local open=Y  remote open=Y
ch01  local open=Y  remote open=Y
ch02  local open=Y  remote open=Y
ch03  local open=Y  remote open=Y
ch04  local open=N  remote open=N
ch05  local open=N  remote open=N
ch06  local open=N  remote open=N
ch07  local open=N  remote open=N
ch08  local open=N  remote open=N
root@9615-cdp:/sys/kernel/debug/bam_dmux# cat log
<DMUX> timestamp FLAGS [Message]
FLAGS:
        D: 1 = Power collapse disabled
        R: 1 = in global reset
        P: 1 = BAM is powered up
        A: 1 = BAM initialized and ready for data

        V: 1 = Uplink vote for power
        U: 1 = Uplink active
        W: 1 = Uplink Wait-for-ack
        A: 1 = Uplink ACK received
        #: >=1 On-demand uplink vote
        D: 1 = Disconnect ACK active
<DMUX> 2.068151990 drPa vuwa0D bam_dmux_smsm_cb: 0x00000000 -> 0x0800802b
<DMUX> 2.068182511 drPa vuwa0D bam_dmux_smsm_cb: init
<DMUX> 2.068213031 drPa vuwa0D grab_wakelock: ref count = 0
<DMUX> 2.068213031 drPa vuwa0D vote_dfab
<DMUX> 2.072150159 drPa vuwa0D toggle_apps_ack: apps ack 0->1
<DMUX> 2.072333281 drPA vuwa0D grab_wakelock: ref count = 1
<DMUX> 2.072363802 drPA vuwa0D handle_bam_mux_cmd: opening cid 0 PC disabled
<DMUX> 2.072913168 DrPA vUwa0D handle_bam_mux_cmd: opening cid 1 PC disabled
<DMUX> 2.073157331 DrPA vUwa0D handle_bam_mux_cmd: opening cid 2 PC disabled
<DMUX> 2.073401494 DrPA vUwa0D handle_bam_mux_cmd: opening cid 3 PC disabled
<DMUX> 2.135632534 DrPA vUwa0D release_wakelock: ref count = 2
<DMUX> 3.072424842 DrPA vUwa0D ul_powerdown: powerdown
<DMUX> 3.072455363 DrPA vUwa0D release_wakelock: ref count = 1
<DMUX> 3.072455363 DrPA vuwa0D unvote_dfab
<DMUX> 4.041233022 DrPA vuwa0D bam_dmux_smsm_cb: 0x08008029 -> 0x0800a02b
<DMUX> 4.041263542 DrPA vuwa0D bam_dmux_smsm_cb: already processed this state
<DMUX> 10.602899433 DrPA vuwa0D grab_wakelock: ref count = 0
<DMUX> 10.602929954 DrPA vuwa0D vote_dfab
<DMUX> 10.603479320 DrPA vUwa0D notify_all: cid=0, event=2, data=0
<DMUX> 11.603815044 DrPA vUwa0D ul_timeout: pkt written 1
<DMUX> 12.606409276 DrPA vUwa0D ul_powerdown: powerdown
<DMUX> 12.606439796 DrPA vUwa0D release_wakelock: ref count = 1
<DMUX> 12.606439796 DrPA vuwa0D notify_all: cid=0, event=3, data=0
<DMUX> 12.606470317 DrPA vuwa0D notify_all: cid=1, event=3, data=0
<DMUX> 12.606470317 DrPA vuwa0D notify_all: cid=2, event=3, data=0
<DMUX> 12.606500837 DrPA vuwa0D notify_all: cid=3, event=3, data=0
<DMUX> 12.606500837 DrPA vuwa0D unvote_dfab
/

QESCAPE

  • the u_smd.c file of the USB Gadget for SMD-based serial port forwarding is extended by Quectel.
  • it introduces a work queue that is scheduled in case of +++ detction on the AT command port: qescape_handle()
  • whenever +++ escaping is detected, a sysfs property /proc/sys/kernel/qmodem_mode is set
  • this property is picked up in userspace by quec_bridge and quectel_daemon
  • there also a shared memory data structure with remote spinlock for some coordination with the modem processor. See struct quectel_escape
  • there are three different modes: MODEM_MODE_CMD, MODEM_MODE_AT_DATA, MODEM_MODE_MODEM_DATA
Add picture from clipboard (Maximum size: 48.8 MB)