comparison compal/audio/omr-from-ds @ 381:ca75ac283888

compal/audio: analysis of handheld mode omr readouts made by Das Signal
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 09 Nov 2021 18:49:09 +0000
parents
children
comparison
equal deleted inserted replaced
380:a66cb88c5f77 381:ca75ac283888
1 On 2021-11-09 long-time FreeCalypso community member Das Signal contributed a
2 set of omr readouts from a C139 phone operating in handheld (as opposed to
3 headset) audio mode, made by way of wires soldered to UART connection pads
4 inside the battery compartment. Raw data here:
5
6 https://www.freecalypso.org/pipermail/community/2021-November/000829.html
7
8 The post from DS includes only fc-tmsh output but not command input;
9 for better readability and understanding, here are the same readouts
10 interleaved with the commands that produced them:
11
12 - before the call
13
14 >omr ffd001ec 2
15 omr 00: 90 02
16 >omr ffd001d6 2
17 omr 00: 16 00
18 >omr ffd001dc 4
19 omr 00: 8E 01 8C 19
20 >omr ffd00238 2
21 omr 00: C7 03
22 >omr ffd0084a 10
23 omr 00: 01 00 14 00 CC 4C AD 59 00 75 00 00 00 10 00 10
24 >omr ffd00908 3e
25 omr 00: 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00
26 omr 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
27 omr 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
28 omr 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00
29 >omr ffd00946 3e
30 omr 00: E7 FF 22 00 35 00 F1 FF 09 00 FF FF 80 FF 23 00
31 omr 10: BD FF 40 00 2A 01 BD FF C1 03 09 01 1D E1 8F 3F
32 omr 20: 1D E1 09 01 C1 03 BD FF 2A 01 40 00 BD FF 23 00
33 omr 30: 80 FF FF FF 09 00 F1 FF 35 00 22 00 E7 FF
34
35 - during the call
36
37 >omr ffd001ec 2
38 TM3 memread error: 41 0F 4E
39 >omr ffd001d6 2
40 omr 00: 16 00
41 >omr ffd001dc 4
42 omr 00: 0E 6A 4C 0A
43 >omr ffd00238 2
44 omr 00: 46 02
45 >omr ffd0084a 10
46 omr 00: 01 00 14 00 CC 4C AD 59 00 75 00 00 00 10 00 10
47 >omr ffd00908 3e
48 omr 00: 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00
49 omr 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50 omr 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
51 omr 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00
52 >omr ffd00946 3e
53 omr 00: E7 FF 22 00 35 00 F1 FF 09 00 FF FF 80 FF 23 00
54 omr 10: BD FF 40 00 2A 01 BD FF C1 03 09 01 1D E1 8F 3F
55 omr 20: 1D E1 09 01 C1 03 BD FF 2A 01 40 00 BD FF 23 00
56 omr 30: 80 FF FF FF 09 00 F1 FF 35 00 22 00 E7 FF
57
58 - after the call
59
60 >omr ffd001ec 2
61 omr 00: 90 02
62 >omr ffd001d6 2
63 omr 00: 16 00
64 >omr ffd001dc 4
65 omr 00: CE 62 4C 1A
66 >omr ffd00238 2
67 omr 00: C7 03
68 >omr ffd0084a 10
69 omr 00: 01 00 14 00 CC 4C AD 59 00 75 00 00 00 10 00 10
70 >omr ffd00908 3e
71 omr 00: 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00
72 omr 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
73 omr 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
74 omr 30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00
75 >omr ffd00946 3e
76 omr 00: E7 FF 22 00 35 00 F1 FF 09 00 FF FF 80 FF 23 00
77 omr 10: BD FF 40 00 2A 01 BD FF C1 03 09 01 1D E1 8F 3F
78 omr 20: 1D E1 09 01 C1 03 BD FF 2A 01 40 00 BD FF 23 00
79 omr 30: 80 FF FF FF 09 00 F1 FF 35 00 22 00 E7 FF
80
81 Analysis:
82
83 Read of d_vbctrl1 during the call failed for some reason (the returned error
84 code is E_CHECKSUM - perhaps the TM3 omr command packet got corrupted?),
85 whereas before and after the call we got 0x0290. Shifting right by 6 bits, we
86 get 0x00A as the actual VBCTRL1 register value. This reading is indeed
87 consistent with handheld audio mode, as opposed to headset.
88
89 d_vbctrl2: we got 0x0016 on all 3 reads. Shifting right by 6 bits, we get 0x000
90 as the actual VBCTRL2 register value. This reading is once again consistent
91 with handheld audio mode.
92
93 d_vbuctrl: we got 0x018E before the call, 0x6A0E during the call and 0x62CE
94 after the call. The corresponding VBUCTRL register values are 0x006, 0x1A8 and
95 0x18B, respectively. Tabulating:
96
97 Time point d_vbuctrl VBUCTRL Sidetone UL PGA
98 ----------------------------------------------------------------------
99 before the call 0x018E 0x006 -5 dB 0 dB
100 during the call 0x6A0E 0x1A8 -23 dB 2 dB
101 after the call 0x62CE 0x18B -20 dB 5 dB
102
103 d_vbdctrl: we got 0x198C before the call, 0x0A4C during the call and 0x1A4C
104 after the call. The corresponding VBDCTRL register values are 0x066, 0x029 and
105 0x069, respectively. Tabulating:
106
107 Time point d_vbdctrl VBDCTRL Volume ctrl DL PGA
108 ----------------------------------------------------------------------
109 before the call 0x198C 0x066 -6 dB 0 dB
110 during the call 0x0A4C 0x029 0 dB 3 dB
111 after the call 0x1A4C 0x069 -6 dB 3 dB
112
113 d_aec_ctrl: got 0x0246 during the call or 0x03C7 outside of a call.
114
115 AEC parameter words: same as in the headset mode, no change with call state.
116
117 AEC configuration appears to be almost exactly the same between handheld and
118 headset modes, the only difference being in the NS level bits (d_aec_ctrl[6:5]):
119 0x40 in handheld mode, 0x20 in headset mode.
120
121 UL FIR coefficients: identity transform.
122
123 DL FIR coefficients: got an actual filter this time, no change with call state:
124
125 omr 00: E7 FF 22 00 35 00 F1 FF 09 00 FF FF 80 FF 23 00
126 omr 10: BD FF 40 00 2A 01 BD FF C1 03 09 01 1D E1 8F 3F
127 omr 20: 1D E1 09 01 C1 03 BD FF 2A 01 40 00 BD FF 23 00
128 omr 30: 80 FF FF FF 09 00 F1 FF 35 00 22 00 E7 FF
129
130 Translating into 16-bit words:
131
132 0xFFE7 0x0022 0x0035 0xFFF1 0x0009 0xFFFF 0xFF80 0x0023
133 0xFFBD 0x0040 0x012A 0xFFBD 0x03C1 0x0109 0xE11D 0x3F8F
134 0xE11D 0x0109 0x03C1 0xFFBD 0x012A 0x0040 0xFFBD 0x0023
135 0xFF80 0xFFFF 0x0009 0xFFF1 0x0035 0x0022 0xFFE7
136
137 The same extracted coefficients have been written into handheld-dl-fir in the
138 format accepted by fir2freq analysis tool. For the nsteps argument to fir2freq,
139 I usually specify 40, so that the frequency response is computed in 100 Hz
140 steps.