FreeCalypso > hg > freecalypso-reveng
comparison compal/audio/omr-guide @ 379:a760a5eeed65
compal/audio/omr-guide: another avenue of investigation
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Sun, 10 Oct 2021 19:53:35 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 378:82fb5a70c9fd | 379:a760a5eeed65 |
|---|---|
| 1 When a C139 phone is booted up with a headset jack serial cable already | |
| 2 inserted, it behaves in an interesting manner: if you *don't* perform the | |
| 3 **16379# step, rvinterf running on the host won't see any output from the phone | |
| 4 beyond a little bit on boot, but if you send an omr command through fc-tmsh, | |
| 5 you get a response! The same behaviour occurs if you first boot the phone | |
| 6 normally with nothing in the headset jack, then insert the serial cable. It | |
| 7 looks like the electrical switch inside the phone is still set to connect the | |
| 8 headset jack to the UART, but the firmware suppresses its continuous trace | |
| 9 output beyond TM responses. | |
| 10 | |
| 11 Using this omr method, I was able to read the same DSP API words which we have | |
| 12 previously read via tfc139 break-in method; the bytes read via omr out of DSP | |
| 13 API memory locations corresponding to FIR coefficients and AEC config match what | |
| 14 we got via tfc139 break-in followed by fc-loadtool peeking. | |
| 15 | |
| 16 Now comes the next ambitious part: we know that oabbr is broken in Compal's fw | |
| 17 and thus can't be used to read ABB registers, but at least in TI's reference fw | |
| 18 the writes to Iota VBC registers are done via the DSP, rather than via the MCU | |
| 19 to ABB interface. Does Compal's fw do likewise? Can we read out DSP API words | |
| 20 through which these VBC registers are written? Let's give it a try! We need | |
| 21 to begin by calculating the absolute addresses which we will need to read via | |
| 22 omr: | |
| 23 | |
| 24 DSP NDB start address is 0xFFD001A8 | |
| 25 | |
| 26 d_vbctrl1 addr: 0xFFD001A8 + 0x44 = 0xFFD001EC | |
| 27 d_vbctrl2 addr: 0xFFD001A8 + 0x2E = 0xFFD001D6 | |
| 28 d_vbuctrl addr: 0xFFD001A8 + 0x34 = 0xFFD001DC | |
| 29 d_vbdctrl addr: 0xFFD001A8 + 0x36 = 0xFFD001DE | |
| 30 | |
| 31 Result: the bytes read out via omr do match what we got earlier by breaking in | |
| 32 with tfc139 and reading the ABB registers via abbr in fc-loadtool! This | |
| 33 observation gives us hope: if we do build the special hardware hack for | |
| 34 connecting to UART signal contact pads without going through the headset jack, | |
| 35 then there is a good chance that we will be able to use omr to read out the | |
| 36 firmware's audio settings for the handheld mode. Furthermore, if we don't | |
| 37 trigger the switch into headset mode and if we don't kill the fw with tfc139, | |
| 38 then we may be able to do omr readouts while the fw is running with a SIM, | |
| 39 connected to a GSM network, and making a call - a confidence boost for the | |
| 40 audio settings, plus we may be able to figure out how volume control works. |
