[Q] Routing GSM module's sound - Android Q&A, Help & Troubleshooting

Dear all,
I'm working on custom hardware built on Amlogic AML8726-MX SoC. I have the board working with Android 4.2.1 compiled with telephony support. We use standalone GSM module from Telit and I successfully implemented RIL and I'm able to make or receive calls. Unfortunately I'm stucked with routing the audio. The module has digital i2s interface and I connected it through I2S<->USB Audio converter to the SoC.
So now I have two Alsa devices - one is dedicated to analog interfaces (speaker, headphones, microphone) and is working in android applications. The second one represents USB audio and I'm able to use that on kernel level with command line interface. Now I need to to connect these two together to be able to play the voice call using analog interface.
Is there please anyone who can point me into right direction? I'm experienced in kernel development, but going into higher levels is new for me. Can such thing be done just by altering audio_policy.conf and related files or the issue is much more complicated that I expected?
best regards
Jan

Related

[Q] [dev] Changing audio route

Hi all,
How to change the default audio route destination (to bluetooth headset)? I mean programatically, on a rooted phone. I have an SGS (with MIUI 1.11.11) and the available audio to BT headset router programs don't work in the desired way.
Actually there may be some linux related instruction to be done from console.
I am also interested in previligised (root) instruction that do that.
Regars,
Robert

[Q] What is the state of external audio input on Android?

Hello,
I'm trying to get higher quality audio input (sample width and conditioning, don't care about sampling rate above 32k) than is available through the microphone jack and was looking for an overview of where the development of such capabilites stands today. From what I gather:
Android 3.1 (maybe 3.2) added some support for USB Audio, though I can find almost no details on the capabilities. I can't post links, but a post on computeraudiophile with google search terms "usb audio enabled galaxy s3" claims support for a bunch of USB DACs on the Galaxy S3, but there is no mention of using the ADC.
Android 4.1 added support for USB audio docks -- these are generally (as far as I can find) speaker systems with a USB cable -- which only support audio output.
Software such as USB Audio Recorder Pro can record from a number of devices but this is of no use to a developer wishing to get the data into a separate application.
Lots of devices have HDMI ports but I found nothing about anyone managing HDMI input.
I can't find any such device for Bluetooth, but also nothing suggesting that it isn't possible. If so, can anyone speculate on audio quality limitations?
Now, I understand that the vast majority of users who want USB audio want output so it can go to their speakers, but there are some who need the other direction (or both...). Can anyone more familiar with the subject comment on the state of external audio input on Android devices?
Thanks,
Ben

Android USB Multichannel Audio Routing

Hi All,
I have been searching about this topic for months I cannot find a method to use 6 channel usb dac or HDMI Audio output on Android. I dont want surround sound at all, but I would like to use my phone as the infotainment engine. However I should be able to route notification/phone audio to a specific channel lets say front left. I checked android hal service for related interfaces but configuration files doesnt really show clearly how can I implement this.
Are there any kind of example of this? Can you please advice me how can I do it. Even if I can manage to make one stereo pcm output for media + mono pcm output for notifications and calls that should be enough too. I can do the rest with a microcontroller.
One more question I heard few times androids audio mixer layer is so crappy that makes jitter on pcm signals, how is your experiences? For instance qualcomm based socs have integrated dsp why phone developers gets benefit from it?
Thanks
Hi, mbt28 did you manage to find a solution for this?
I'm searching for exactly the same solution, to somehow output digital stream (containing multiple audio tracks) to a DAC, which will then convert it to multiple analog tracks.
Kasparas
I've got multichannel analog output working on my H96 Max V58 tvbox, with a Startech 7.1 channel USB soundcard. It's got Android TV OS 12. I had to edit /vendor/etc/usb_audio_policy_configuration.xml to add the necessary info. I'm attaching a diff with my changes. The changes are just based on what I saw for the HDMI policy. I haven't tried to get the digital channels working on this device yet but that might be nice to try later too.
The reason I deleted some text from the header comment was to keep the overall filesize the same as the original. On my box /vendor is mounted from /dev/block/dm-1 and even though it's an ext4 filesystem, you can't edit any files on it because the FS has no free blocks left. So I had to overwrite the file by finding its byte offset in the block device image instead. If you can edit the policy file on your box, you can ignore that part of the diff.
PS: this is the USB soundcard I used https://www.amazon.com/StarTech-com-7-1-USB-Sound-Card/dp/B002LM0U2S
It works OK except its USB jack is flaky, doesn't always get a good connection. I have to jiggle the cable sometimes to get it to power on, but then it works.
PPS: I just checked, the SPDIF out works as-is, carrying the front left/right audio.

[MOD][DSP] simpleDSP installation into MTCD/E inside (ImprovedSound)

simpleDSP installation into MTCD/E inside (ImprovedSound)
after in the summer of 2017 I disasseble the MTCB/C MCU firmware, I decided to try to improve the sound of these head units and bought a DSP test card based on the low-cost ADAU1401/1701 chip and started experiments with it to solve all the flaws in the sound settings of the Chinese head units.
In February 2018, Chinese vendors began the first sales of MTCE head units with internal DSP modules installed based on the ADAU1701 chip. A detailed analysis showed that the new hardware version of the head unit does not differ much from the previous one based on the sound processor BD3702, so I can try adding this module to me myself, because the Chinese refused to separately sell the DSP module for me.
[fig.1] photo of the main board of the new MTCE head unit with built-in DSP module
View attachment 4561586
[fig.2] photo of the main board of a typical MTCD/E head unit with a sound processor
View attachment 4561611
[fig.3] screenshot of the fake 9-band EQ of a typical MTCD/E head unit with a sound processor
View attachment 4561612
[fig.4] electrical circuit schematic of the sound processor of a typical MTCD/E head unit
View attachment 4561619
[fig.5] electrical circuit schematic of the sound switch of a typical MTCD/E head unit
View attachment 4561621
[fig.6] photo of the PX3(1GB) CPU coreboard of a typical MTCD/E head unit
View attachment 4561630
[fig.7] photo of the PX3/PX5 CPU coreboard of a typical MTCD/E head unit
View attachment 4561637
[fig.8] sigmaDSP ADAU1701 LQFP48 pinout
View attachment 4561645
[fig.9] sigmaDSP ADAU1401/1701 test board
View attachment 4561646
[fig.10] electrical circuit schematic of the ADAU1701 test board
View attachment 4561651
[fig.11] chinese built-in DSP ADAU1701 sub board
View attachment 4562327
As a result of comparing the MCU firmwares of the head units with the sound processor and with the integrated DSP module, we see that the same firmware is used.
When analyzing the behavior of the MCU firmware, it is found that after the start, it first polls the I2C bus on the sound processor chip and if it answers its own address, the head unit operates normally. If there is no sound processor, i.e. it does not respond to its own address, then the DSP chip is polled. If the DSP chip responds to its own address, then the head unit is already operating in the mode of improved sound with a real 15-band equalizer.
The sound processor chip BD37033 is powered by a 9-volt voltage source, and the AMS1117-3.3 stabilizer is used on the sigmaDSP test board, which allows operation from a voltage of up to 15 volts, so connect the DSP test board to the voltage of the sound processor chip on the main board. Disconnect from the I2C-bus of the MCU chip of the sound processor BD37033 and instead connect to the DSP chip ADAU1401/1701.
A real check showed that the software support of the DSP is in the MCU firmware from version 2.72 and higher and in Android builds versions 6.0.1, 7.1.2 and 8.0 and this mod is compatible with most MTCD/E head units
[fig.12] screenshot of the real 15-band EQ of a modified MTCD/E head unit with a DSP inside
View attachment 4562339
Since there is no electrical circuit schematic of the Chinese DSP module, then compare visually the board of the Chinese embedded DSP module with the DSP test board. The test board uses a onboard 12.288MHz crystal oscillator for clocking, and there is no resonator on the Chinese board and uses an 11.296MHz external clock from the CPU coreboard (I2S bit clock frequency for the sampling rate frequency of 44.1kHz).
Unsolder the crystal oscillator from the DSP test board, find the output of the clock signal on the CPU coreboard and provide a master clock signal to the 32-pin chip of the DSP chip ADAU1401/1701.
I and most my friends in the car listen only digital sounds from Android and analog sound from the FM radio tuner, so in the simplest version of the upgrade can do without using an analog audio switch that will simplify the finalization of the head unit.
On the new PX3/PX5 coreboards there are an additional 4 pins on which the I2S digital audio signals are output. These signals are connected to the DSP test board (the MCLKI signal of the external clock was already connected a little earlier).
[fig.13] digital I2S sound output from CPU coreboard
View attachment 4562387
On the older PX3(1GB) coreboars not are an additional pins for external output, but the I2S digital audio output can be founded on the onboard Wolfson audio codec chip pins. However, I have not connected such a coreboard yet and I do not know about real software compatibility with the Android build of version 5.1.1, but I suppose that this should be possible without much additional effort, but need to try...
[fig.14] digital I2S sound output from CPU to Wolfson audiocodec on coreboard
View attachment 4562396
Digital signals from Android sources must be connected to ADAU1401/1701 as follows:
-- Master CLOCK to 32 pin (MCLK) throu 100 Ohm resistor;
-- SDATA to 11 pin (MP0);
-- BLCK to 9 pin (MP5);
-- LRCLK to 8 pin (MP4)
The DSP chip has two built-in ADCs, so the analogue sound from the FM radio tuner can be connected to the sound processor pins as follows:
-- FM-R (pin 10) to 2 pin (ADC0);
-- FM-L (pin 11) to 4 pin (ADC1)
The DSP chip has four built-in DACs, so analog audio output can be connected for the power amplifier input to the sound processor pins as follows:
-- FR (pin 23) to 46 pin (DAC3);
-- FL (pin 22) to 45 pin (DAC2);
-- RR (pin 21) to 44 pin (DAC1);
-- RL (pin 20) to 43 pin (DAC0)
If do not need an additional output for an external subwoofer, then this is enough to enjoy improved sound due to the presence of a full 15-band equalizer, the ability to set delays, etc. (see screenshots at the end of this post), else if need to connect the external subwoofer, need to add the I2S DAC chip ES7144LV and connect it as follows:
-- Master CLOCK to pin 4 (CLKIN);
-- SDATA (MP6 pin 15) to pin 1;
-- SCLK (MP11 pin 19) to pin 2;
-- LRCLK (MP10 pin 16) to pin 3
[fig.15] electrical cuircuit schematic of the I2S DAC
View attachment 4562429
[fig.16] wire connections
View attachment 4564796
Verification showed that the improved sound is excellent
[fig.17]
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
[fig.18]
[fig.19]
[fig.20]
reserv1
reserv2
You are missing some pics there
[11]
[12]
[13]
in the process of filling information
[digital I2S sound output from CPU to Wolfson audiocodec on coreboard]
[digital I2S sound output from CPU coreboard]
[screenshot of the real 15-band EQ of a modified MTCD/E head unit with a DSP inside]
[...]
Xorit said:
You are missing some pics there
Click to expand...
Click to collapse
I did not forget these pictures, I just did not have time to cook them for posting in the thread -- coming soon...
cs-x(RU) said:
As a result of comparing the MCU firmwares of the head units with the sound processor and with the integrated DSP module, we see that the same firmware is used.
When analyzing the behavior of the MCU firmware, it is found that after the start, it first polls the I2C bus on the sound processor chip and if it answers its own address, the head unit operates normally. If there is no sound processor, i.e. it does not respond to its own address, then the DSP chip is polled. If the DSP chip responds to its own address, then the head unit is already operating in the mode of improved sound with a real 15-band equalizer.
Click to expand...
Click to collapse
Please correct me
The 7floor mod just re-routes and cuts some traces to control the in-build DSP directly and if i got it correct, people got full access to the DSP after.
You say that in the boot process the MCU polls it's hardware interfaces and if it detects the internal DSP it operates in "normal" mode.
Could this normal mode be modified to remove the config restriction and fully control the internal DSP? Or instead boot in "improved" mode?
// In my car (Opel Astra J) the HU is heavily mounted inside the dash and it's not fun to rip the whole thing apart every time.
Also I have a DVD drive installed and the space inside the silverbox is super limited due to that.
Or is this a "prove of concept" for people who don't have an in-built DSP and just a "stage" before you come up with a software solution? (You mentioned that in the other thread)
Xorit said:
Please correct me
The 7floor mod just re-routes and cuts some traces to control the in-build DSP directly and if i got it correct, people got full access to the DSP after.
You say that in the boot process the MCU polls it's hardware interfaces and if it detects the internal DSP it operates in "normal" mode.
Could this normal mode be modified to remove the config restriction and fully control the internal DSP? Or instead boot in "improved" mode?
// In my car (Opel Astra J) the HU is heavily mounted inside the dash and it's not fun to rip the whole thing apart every time.
Also I have a DVD drive installed and the space inside the silverbox is super limited due to that.
Or is this a "prove of concept" for people who don't have an in-built DSP and just a "stage" before you come up with a software solution? (You mentioned that in the other thread)
Click to expand...
Click to collapse
English is not native to me, so I apologize if I misunderstood you, but head units now have two options - with a sound processor and with a built-in DSP.
All the features of the sound processor are determined by the specific chip BD3702 / 37534/37033, etc, soldered on the HU mainboard. Since some of the audio presets are fixed in the MCU firmware, some do not like this sound and they want to customize it to their preferences. This can be achieved either by modifying the MCU firmware, or by direct control of the sound processor, for example, as in 7floor mod, but the audio capabilities are still low functional and are limited by the sound processor chip itself.
The possibilities of DSP for sound are very huge and diverse, but the Chinese sellers do not sell it separately for MTCD/E head units, so I suggested an alternative option by purchasing an affordable low-cost inexpensive DSP test board on Aliexpress and installing it inside the head unit to get a very improved sound, because all the software support has already been present and verified in the Android builds of versions from 6.0.1 to 8.0 and only need to connect the electrical circuits to the main board correctly.
I did it in practice and checked that it really works and it improves the sound very much, sorry, but if I did not answer your questions, please clarify them again for my understanding (my English is very pour)
cs-x(RU) said:
English is not native to me, so I apologize if I misunderstood you, but head units now have two options - with a sound processor and with a built-in DSP.
All the features of the sound processor are determined by the specific chip BD3702 / 37534/37033, etc, soldered on the HU mainboard. Since some of the audio presets are fixed in the MCU firmware, some do not like this sound and they want to customize it to their preferences. This can be achieved either by modifying the MCU firmware, or by direct control of the sound processor, for example, as in 7floor mod, but the audio capabilities are still low functional and are limited by the sound processor chip itself.
The possibilities of DSP for sound are very huge and diverse, but the Chinese sellers do not sell it separately for MTCD/E head units, so I suggested an alternative option by purchasing an affordable low-cost inexpensive DSP test board on Aliexpress and installing it inside the head unit to get a very improved sound, because all the software support has already been present and verified in the Android builds of versions from 6.0.1 to 8.0 and only need to connect the electrical circuits to the main board correctly.
I did it in practice and checked that it really works and it improves the sound very much, sorry, but if I did not answer your questions, please clarify them again for my understanding (my English is very pour)
Click to expand...
Click to collapse
Nah you got me completly right there and I fully understood what you wrote. (not a native english myself )
So basically this MOD provided by you is an alternative method of "super-improving" the sound with a standard car sound system (speaker connected to the radio directly).
This, because if you have a factory amp like bose preinstalled or you have already upgraded the sound system with a DSP/amp you don't want to have the audio processed in the HU, but rather have clean signals to your installed DSP in the car.
Let me shortcut:
version 1: add DSP board for standard sound system to be improved (THIS THREAD)
version 2: have full control of the standard sound processor already present to get rid of the MCU presets. (MY IDEA)
For me personally it would be super great to just have the 7floor mod in software. My factory amp does all the audio magic, but I need more control of the HU output and it would totally be enough to control the TDA7388 PDF file
This is my Witson seller MX HU W2-V5754
cs-x(RU) Could you share a picture of the installed ADAU1401/1701 chip in your unit, give us an idea what were looking at?, It all makes sense to me now.
Also in there a new amplifer.apk with the 15 band eq that you show in fig. 17 to fig. 20?
Octane70 said:
cs-x(RU) Could you share a picture of the installed ADAU1401/1701 chip in your unit, give us an idea what were looking at?, It all makes sense to me now.
Also in there a new amplifer.apk with the 15 band eq that you show in fig. 17 to fig. 20?
Click to expand...
Click to collapse
In the summer of 2017 I bought this DSP test board for experimentation and subsequent installation in my MTCC head unit, but a significant software change was needed, so I suspended these works before the New Year 2018, and put a test card in the garage.
In April 2018 I decided to go back to the experiments to connect the test board to the MTCE head unit, but for a long time I could not find the card in the garage and was able to find it only last week. Immediately my friend asked me to install this DSP test board in his head unit, so I lasted all last Saturday and checked it on his head unit, but did not do the photo, and on Sunday he installed in the car and now I can not take the photo. Therefore, I can only sketch and specify the soldering points on the main board, but I'm going to do the next modification with the sound switch and ordered another DSP test board on Aliexpress.
A new apk with the 15 band eq that shown in fig. 17 to fig. 20 already present in the original Chinese Android build versions from 6.0.1 to 8.0 for MTCE head units and do not need to add anything yourself, since to activate the improved equalizer mode, it is sufficient only that the MCU firmware detects a DSP chip on the I2C bus and sends the command to the Android device
Xorit said:
This, because if you have a factory amp like bose preinstalled or you have already upgraded the sound system with a DSP/amp you don't want to have the audio processed in the HU, but rather have clean signals to your installed DSP in the car.
For me personally it would be super great to just have the 7floor mod in software. My factory amp does all the audio magic, but I need more control of the HU output
Click to expand...
Click to collapse
I have plans to try to make a completely software solution similar to 7floor, but without soldering, but so far there is no time for such experiments, becouse need to debug everything well
For your case, can do it simply - set the zero frequency response and prevent it from changing, and only your external amplifier with DSP can control any frequency response (very small changes in the MCU firmware code needed and not need in Android build)
cs-x(RU) said:
I have plans to try to make a completely software solution similar to 7floor, but without soldering, but so far there is no time for such experiments, becouse need to debug everything well
For your case, can do it simply - set the zero frequency response and prevent it from changing, and only your external amplifier with DSP can control any frequency response (very small changes in the MCU firmware code needed and not need in Android build)
Click to expand...
Click to collapse
Would you maybe provide a version to test in the other thread? Would be happy to try!
No need to rush things tho!
Many thanks!
Will this mod work on an Intel Sofia mtcd unit? Thanks in advance
brickbeats said:
Will this mod work on an Intel Sofia mtcd unit? Thanks in advance
Click to expand...
Click to collapse
I do not know, because I do not have Intel Sofia and can not test -- tested only on Rockchip PX5 with Android 8.0 and on Rockchip PX3 with Android 7.1.2 and on Rockchip PX5 with Android 6.0.1, not tested on Rockchip PX3 with Android 5.1.1
Octane70 said:
cs-x(RU) Could you share a picture of the installed ADAU1401/1701 chip in your unit, give us an idea what were looking at?, It all makes sense to me now.
Click to expand...
Click to collapse
added wire connection (see fig.16) in the first post of the topic
P.S.
the chip of the sound processor can not be removed from the main board, but then you must unsolder its SDA and SCL pins (26 and 25 pin of the BD37033)
This looks very interesting. Out of interest is there a solution to get additional analogue audio? I use the aux input as well?
I use dab most of the time so could potentially do without fm if there was not an option to switch the analogue audio as well
Ben.suffolk said:
This looks very interesting. Out of interest is there a solution to get additional analogue audio? I use the aux input as well?
I use dab most of the time so could potentially do without fm if there was not an option to switch the analogue audio as well
Click to expand...
Click to collapse
in the current implementation there is one digital input for sounds from Android applications and one analog input for other sounds without a switch. Since I and my friends are listening to FM radio, I made the connection just for it. If you need another analog source, then instead of FM radio you can connect either AUX-input or DAB-radio according to your desire.
I ordered another same DSP test board on Aliexpress and in the next implementation I plan to add an analog audio switcher for the possibility of programmatically selecting any of the sound sources
cs-x(RU) said:
in the current implementation there is one digital input for sounds from Android applications and one analog input for other sounds without a switch. Since I and my friends are listening to FM radio, I made the connection just for it. If you need another analog source, then instead of FM radio you can connect either AUX-input or DAB-radio according to your desire.
I ordered another same DSP test board on Aliexpress and in the next implementation I plan to add an analog audio switcher for the possibility of programmatically selecting any of the sound sources
Click to expand...
Click to collapse
Ok great,
I assume that there must be a switcher built into the MTCE units with DSP, and I see your schematic for a switcher in the first post, but I will wait until you have figured out what it connects to so it works to switch the sources.
As it happens DAB is USB, so will be audio via the Android card (Digital), so I can use Aux and Digital, just meaning I don't have a fall back to FM if I loose DAB. Thats ok for the moment, and I'll upgrade to switched later.
Thanks for this mod.
Mind posting some pics of the board installed?
Thankyou so much for posting this, this is exactly what I have been looking for to improve sound quality of my unit. I have already ordered an ADAU1401 eval board.
I just wanted to confirm, if I add the ES7144LV as described, will I be able to control the sub channel selerately using the amp app on the unit without any additional modification?
Also, I am correct in thinking that if I make the correct electrical modifications the app will automatically identify the changes and I will not need to make any software changes?
Would it be possible to get a higher quality picture of where to connect the pins? I am finding the text hard to read in certain areas.
Thanks again!

Starting with Android 12, multicasting to a group of BLE audio headphones is supported. How this can be achieved?

Connecting 2 Bluetooth devices at once to your android device and stream audio simultaneously for both of them.
combined audio device routing https://source.android.com/docs/core/audio/combined-audio-routing
in aosp source code page it is mentioned about ble audio supporting multiple audio sink devices.... https://developer.android.com/guide/topics/connectivity/ble-audio/overview
Is there any details on how to achieve this. Please help me on this
The feature is called Auracast. Not everything you'll find in the AOSP is implemented in your firmware. Apart from that this features needs Bluetooth 5.2.
WoKoschekk said:
The feature is called Auracast. Not everything you'll find in the AOSP is implemented in your firmware. Apart from that this features needs Bluetooth 5.2.
Click to expand...
Click to collapse
We are trying to build AOSP 12 in RPI4 and enable Dual audio Bluetooth is that possible is there any reference

Categories

Resources