FreeCalypso > hg > freecalypso-reveng
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. |