FORUMS
Remove All Ads from XDA

MTC Sound: controlling BD37xxx Sound Processors in MTCB Head Units (RK3066/3188)

236 posts
Thanks Meter: 179
 
By 7floor, Senior Member on 27th October 2015, 06:52 PM
Post Reply Email Thread
Direct control of Sound Processor for Microntek Head Units based on RK3066/RK3188 processors.
HuiFei, KGL, KLD, JY, and similar, generally discussed here: http://forum.xda-developers.com/andr...d-unit-general

WARNING! The hardware modification described in this topic, while being simple enough, still requires you to have at least average soldering skills and appropriate soldering iron that allows soldering of very small SMD components. Sample of suitable soldering iron is shown on the photo:
Click image for larger version

Name:	soldering-iron.jpg
Views:	22144
Size:	179.6 KB
ID:	3526337
Also, you will need a multimeter, any cheap one with buzzer will be sufficient.
There is an excellent post by @JEMShoe, a must read: http://forum.xda-developers.com/show...5&postcount=39

The goal of the modification

Microntek Car Head Units based on RK3066 / RK3188 processors have so called Sound Processor IC made by ROHM, the BD37xxxx family.

This sound processor has the following functions:
- Three-band parametric equalizer with adjustments of gain in range -20dB – +20dB, frequency and Q-factor of the filter in each band.
- Configurable loudness module with gain in range from 0dB to +20dB, and adjustment of filter frequency and the level of high frequencies suppression.
- Setting of subwoofer output, including selection of signal source, cut-off frequency, phase, and gain.
For more detailed technical information please refer to the datasheet: BD37534FV datasheet.zip

In stock implementation, this IC is controlled by another 8051-based controller (called MCU) which controls all the onboard hardware, such as display, hardware buttons, BT module, video switch, etc. The way it controls the Sound Processor IC is very limited and in some aspects wrong:
- Instead of 3-band parametric equalizer, we have a 9-band graphical one, with strange logic – each of three groups of three bands controls a single hardware band, averaging their values; and the adjustments range is only +-10dB.
- Loudness compensation does not use a built-in hardware circuit, but just adds some bass and treble, which is a way not the same.
- Subwoofer output is fixed and cannot be configured.

The MTC Sound module allows for direct control of all the built-in function the Sound Processor directly from Android, overcoming limitations of stock implementation, and allowing to tune the sound quality to the best, with only minor hardware modifications.
Besides of that, in stock implementation, equalizer presets apply to any input, be it System, Radio, DVD etc. My experience tells me that it is desirable to have a separate equalizer settings per input. The Radio sounds differently than Media Player or DVD, so it needs to be adjusted differently.
In addition, a Preamp value that can be found in Factory settings was pulled for live adjustment. It is needed to equalize the volume of different inputs.

The software part

Click image for larger version

Name:	1.equalizer.jpg
Views:	23572
Size:	85.9 KB
ID:	3520697Click image for larger version

Name:	2.balance.jpg
Views:	19210
Size:	68.8 KB
ID:	3520698Click image for larger version

Name:	3.settings.jpg
Views:	13400
Size:	74.5 KB
ID:	3725891
The software can be installed without hardware modification, but it will not work. It can be used for evaluation, though, to see how it looks like and what settings it has.
Make sure you have a rooted device, the Xposed framework installed, and you have some file manager that allows for file manipulations in system folders. I recommend the "Root Explorer".
Find the files mentioned below in this archive: system-files.zip
1. Copy libjnidispatch.so to /system/lib and set permissions to 644.
2. Check if you have files i2c-0 .. i2c-4 under /dev directory. If they exist (typical for RK3188) skip step 3 and proceed to 4; if they don't exist (typical for RK3066) proceed to step 3.
3. Copy i2c-dev.ko to /system/lib/modules and set permissions to 644.
4. Download MTC Sound plugin from the Xposed repository (http://repo.xposed.info/module/com.sevenfloor.mtcsound) and install it. It will appear in modules in Xposed Installer, enable it there and reboot.
5. After reboot, go to Xposed Installer, and check its Log. Watch for line "The Sound Control Status is:" (see below for possible statuses).
The software brings the new Equalizer which will replace the stock one, and also it will be launched by hardware EQ button (if your unit has one).

The statuses that can be displayed in the Xposed log:
- No patch detected – either module is not active in Xposed, or device was not rebooted after activation.
- mcu,No device driver i2c-dev – you have device which requires i2c-dev.ko driver, and you forgot to copy it where needed or set permissions (see step 3 above).
- mcu,Exception com/sevenfloor/mtcsound/I2cBus$CLib – you forgot to copy libjnidispatch.so or set permissions.
- No access to /dev/i2c-?; <some additional info> - despite existence of driver, failed to access i2c bus programmatically. Normally should never happen, but if happened, contact me for further investigation.
- mcu,Error in write() 11 (no response from i2c slave) – programmatic access to i2c bus works well, but Sound Processor does not respond. Need to check soldering. Maybe there's no contact where is has to be, or you shortened something, or you messed with the wires making them wrong way around.
- mcu,Error in write() 110 (no response from i2c slave) – same as above.
- i2c,Channel x (x is a number) – everything is good, enjoy your sound.

Note
Starting from version 1.9.0, due to massive re-implementation of initialization logic, the statuses mostly change their texts.
But they still have the same meaning as above, thus can be understood easily.
Additionally, initialization steps are logged in details to system log with tag 'mtcsound' (viewed with apps like CatLog).

The hardware part

Click image for larger version

Name:	circuit-en.jpg
Views:	16658
Size:	96.6 KB
ID:	3703215
Please see the circuit diagram above.
Basically what we need to do is to re-route the I2C control bus of Sound Processor from the MCU to the Android Board.
Find a 28-pin IC marked BD37<whatever>. It has a key - small dot or circle near the 1st pin. Pins are counted from that key dot, counter-clockwise.
So that find pins 25 and 26, and using a multimeter, trace resistors connected to these pins, somewhere around the chip.
Unsolder these resistors - this way you'll break connection to the MCU that needs to be broken.
Keep the resistors, or throw them away if you plan to use new ones (e.g. bigger, easier to manipulate - not only SMD resistors may be used but also those with wired pins).
Now find a 28-pin IC marked WM8731S, and with multimeter, trace resistors connected to its pins 24 and 23. The same rule for pin counting applies.
Don't unsolder these resistors. Solder wires to their opposite ends.
Other ends of wires solder to the resistors that you unsoldered (or to others you had for replacement), and opposite pins of the resistors solder to the pads that are connected to the BD37xxx chip.
So that you will have the following traces:
WM8731S pin 24 - resistor - wire - resistor - BD37xxx pin 25
WM8731S pin 23 - resistor - wire - resistor - BD37xxx pin 26
After soldering, carefully check the circuit with the multimeter.
WARNING! Later in this thread, users who already done the mod share their experience, photos, drawings, etc.
When doing the mod yourself, ALWAYS read this my post and refer to the diagram above.
Use pictures from others to get an idea where the components are located, but think yourself, don't blind-follow others work.

Mini-FAQ

Q: So will the sound be much better after this modification, is it worthly at all?
A: It will not make your hardware parts like amplifier and other audio circuits any better. But it will allow you to fine tune the sound to the best that can be achieved with all the features of the Sound Processor, which is not available in the stock. Many people say they get "incredible sound". I would say that I managed to tune mine to be "much better"

Q. Would your software be useful without the HW modification part?
A. No. In future, such a possibility might become available. Other developer works on MCU patch, and when/if he finish his work, I will update my software to work thru his modified MCU, so that without a HW mod. As I see the picture, it will take not less than a couple of months.

Q. Please help me with the HW modification for my device XXX / YYY / ZZZ
A. I'm not familiar with other devices than mine, and, unfortunately, I've got not very helpful pictures of my work. So if you can't follow above instructions yourself, then please wait for more experienced users with units like yours, when they do modifications and share their photos.

Q. I've done the HW mod, and the software gives me the status "i2c,Channel x", which indicates success. I have sound from the Radio, but not from the Android / Media player. What's wrong?
A. Some people reported an issue with the resistors at the WM8731S chip. They're fragile and can be easily fried/broken when soldering wires to them. The WM8731S chip is the Audio Codec for Android and with broken I2C control circuit you'll get no sound from Android. Please check with the multimeter and replace one or both that are broken. Use 1 kOhm resistors suitable by size.

Q. I've got the status as follows: mcu,No access to /dev/i2c-?; su exit code 1
A. Have you installed the SuperSU or one of similar super user managers? SuperSU has the option to allow SU during boot - just enable it and reboot.

Q. Why the feature X doesn't work exactly as it worked in stock unit, or doesn't work at all? When will you fix it?
A. As the MCU does not control the Sound Processor anymore, I had to re-implement many stock features in my software from a scratch. Example is the GPS application sound switch/mix. There are some other stock features that were not implemented -- either they are impossible to implemented, or I was not aware of their existence, or I just don't want to implement them because consider them not important. Anyways, ask for a specific feature in this thread, and at least I'll answer, whether it will be implemented and how soon.

Q. You said that some features are impossible to implement. What these features are?
A. Anything related to Sound control by the MCU alone, before Android gets loaded, for sure. Not sure what this may include, maybe something related to parking sensors beeps? Did this ever existed in stock? Other features except that also may appear impossible to implement or too hard to ever try to do that.

Q. Where on your Equalizer are the sound presets like Pop/Jazz/Rock? And why my hardware EQ button which was switching these presets earlier, now just executes the Equalizer app?
A. This is a good example of a feature that I consider unimportant and will never implement. These presets are nothing than a marketing bu11$41t and have nothing in common with a quality sound. Period.

Xposed Repository link

http://repo.xposed.info/module/com.sevenfloor.mtcsound

Links to how-to posts by users who have already made the mod.

KLD by @dazza007
http://forum.xda-developers.com/showpost.php?p=63520630

JY by @JEMShoe
http://forum.xda-developers.com/showpost.php?p=63712823

JY-UQ128 by @JrFaust
http://forum.xda-developers.com/showpost.php?p=65587419

KGL by @Tutti-frutti:
http://forum.xda-developers.com/showpost.php?p=64460726

---
My other work:
- Xposed Volume Bar: http://forum.xda-developers.com/show....php?t=3246360
The Following 30 Users Say Thank You to 7floor For This Useful Post: [ View ] Gift 7floor Ad-Free
 
 
27th October 2015, 08:06 PM |#2  
Senior Member
Thanks Meter: 74
 
More
I think I fully understand what you are trying to do now. I will try to attempt this this weekend if I can find the time. It would be helpful if you at least called out the resistor numbers, but I think that was brought up in the main HU thread. I will try to post good pictures as I go. This doesn't seem all that bad now that you have a well-worded explanation (or maybe you already had this explanation before and I never noticed).

The goal is to have the sound processor be controlled by the android processor, not the MCU. Makes sense now
27th October 2015, 08:28 PM |#3  
OP Senior Member
Thanks Meter: 179
 
More
Quote:
Originally Posted by Hisma

It would be helpful if you at least called out the resistor numbers

They are different on different Head Unit brands. My unit does not have any component numbers on the PCB at all.
Quote:
Originally Posted by Hisma

This doesn't seem all that bad now that you have a well-worded explanation (or maybe you already had this explanation before and I never noticed).

These explanations were spread over a number of my posts in the general discussion thread, as answers to people's questions. So I've decided to gather them to this thread.
27th October 2015, 10:02 PM |#4  
Member
Thanks Meter: 6
 
More
A suggestion to refine the instructions
"• mcu,Error in write() 110 (no response from i2c slave) – same as above." - can you add a note whether the connections/wires are the wrong way around?
27th October 2015, 10:31 PM |#5  
OP Senior Member
Thanks Meter: 179
 
More
Quote:
Originally Posted by dazza007

A suggestion to refine the instructions
"• mcu,Error in write() 110 (no response from i2c slave) – same as above." - can you add a note whether the connections/wires are the wrong way around?

Done But dont ask me to list every single mistake one can make soldering just two wires - there's so much possibilities!
By the way, could you please copy your post with photos of how you done the HW mod from general thread to this one? It would be helpful for others for sure.
27th October 2015, 11:30 PM |#6  
Member
Thanks Meter: 6
 
More
so here are some images of the 7 floor modification and some less technical descriptions of what to do
The following is for a WM8731S and BD37033FV

You need 2x 1k ohm resistors, a good quality clean soldering iron, solder, flux and a steady hand!

On the android board - Solder wire to resistor R268 and R49 that connects to the WM8731S these are pin 23/4
Attachment 3520439

Attachment 3520440

On the main board find the resistors r70/1 and remove them these connect to the mcu chip and you are removing the connection to the mcu but the pin out furthest away from the label has a connection to the BD37033FV sound processor pins 25/6

Attachment 3520441
solder a connection onto the pinouts furthest away from to the label. Ensure that there is no connection between pinouts where you removed the resistor and soldered in the new wire

connect the wire you have just soldered to the original wire you solder using a 1k ohm resistor (to replace the resistors you removed)
Ensuring that you have the following connections:

R268 - R71
R49 - R70

Using a multimeter ensure that you have nearly 2 k ohms resistance through the resistor R268 to connection R71 and through R49 and R70

Ensure you have 2k resistance through the resistor R268 to connection to the chip BD37033FV
and R49 too to the other pin on the chip
the pins 25/6 on the sound processor are the third and fourth in from the top left.
The Following 2 Users Say Thank You to dazza007 For This Useful Post: [ View ] Gift dazza007 Ad-Free
28th October 2015, 08:56 AM |#7  
Senior Member
Thanks Meter: 37
 
More
@7floor, may I know GPS switch/mix features work on waze? I just done the mod back to orig on yesterday & can't test it.
28th October 2015, 09:02 AM |#8  
OP Senior Member
Thanks Meter: 179
 
More
Quote:
Originally Posted by lysiong

@7floor, may I know GPS switch/mix features work on waze? I just done the mod back to orig on yesterday & can't test it.

I don't even know what's waze is
OK, I'll check it and tell if it works.
The Following User Says Thank You to 7floor For This Useful Post: [ View ] Gift 7floor Ad-Free
28th October 2015, 10:11 AM |#9  
Senior Member
Thanks Meter: 37
 
More
@7floor, if the GPS switch/mix features working, will I be able to adjust the mixing ratio or just the GPS voice switch over only?
28th October 2015, 05:23 PM |#10  
OP Senior Member
Thanks Meter: 179
 
More
Quote:
Originally Posted by lysiong

@7floor, if the GPS switch/mix features working, will I be able to adjust the mixing ratio or just the GPS voice switch over only?

So I confirm that it works for Waze, and it works just like in stock, i.e. you may use swith option, or you may use variable-level mixing option.
The Following User Says Thank You to 7floor For This Useful Post: [ View ] Gift 7floor Ad-Free
29th October 2015, 01:48 AM |#11  
Senior Member
Thanks Meter: 37
 
More
Quote:
Originally Posted by 7floor

So I confirm that it works for Waze, and it works just like in stock, i.e. you may use swith option, or you may use variable-level mixing option.

@7floor, where do I set which application will have the GPS switch/mix features? is it still the same place in setting > GPS? or it is determine by your EQ application? the mixing option also set in setting > GPS or in your application? if HU detect a reverse signal, will it be able to mute or set attenuation as stock?
Post Reply Subscribe to Thread

Tags
bd37, mtc sound, rk3066, rk3188, sound processor

Guest Quick Reply (no urls or BBcode)
Message:
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes