[DEV] [Huawei U8160/U8180] CyanogenMod 7.2.0-RC1 U8160 Port (14th August 2012)

Search This thread

killwaz

Senior Member
Dec 13, 2011
171
8
i usually leave my phone on charger all night while sleeping , and some times when i unplug it i get 99% charge instead of 100% :/ does that mean my battery is saying its goodbyes ? xD
 

Soyos

Senior Member
Feb 3, 2012
76
8
Had plugged in my charger the whole night, unplugged it this morning, and 6 hours later I have 89% only, never touched it, with the latest 20120427.
 

Sim@o

Senior Member
Mar 31, 2012
62
3
Ehm, ehm, ehm.... :( You was right.... sorry! I did a mistake writing the audio filter.. it happen when you do things in hurry :)
THIS audiofilter actually boosts the right device (the older boosted the AUDIO HANDSET instead. This time I tested it and it is possible to notice the difference.
If someone wants to play with it, this is the added line:


C3,AUDFMT EQ, FFFF,0006,0190,0001,016A,0006,02EE,0003,016A,0006,03F8,0003,016A,0006,0BB8,0003,016A,0006,0FA0,0003,016A,0006,1770,0003,016A,0006,1B58,0003,016A,0006,1F40,0002,016A,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

The words in red contains the gain in db. The filter is set for a flat response with a +6 db gain. Enjoy!

How can I install this?
 

matthew0286

New member
May 8, 2012
1
0
Change Graphics

Hi All,

I'am new of this forum but I use this rom for a long time.
The rom is very stable and powerful.
I would like to know if you can change the look of notification area when MIUI,
and if possible change the menu icon color in the next versions?

(forum.nexus-lab.com/hacks-e-modding-nexus-one/4568-rom-cyanogenmod-7-1-0-con-alcune-piccole-modifiche.html)

best
 

ac1953

Senior Member
Jan 28, 2012
162
116
Mola di Bari
Here´s the file in attached. Thx .



Ok, I am sorry. I use the word Negative but I mean observation. If on the overs release the system said I was with 70/80 mb of free memory I dont have any reason to doubt about it. If now It said I have 30mb of free memory it s just a fact. NO NEGATIVE impact because of it. Just like I said This release is the best ever you made (with the help of ac1953 ;)).

Noob, I just finished to analyze your log and I found something strange:

root 490 2 0 0 c00b80e4 00000000 S kdmflush
root 502 2 0 0 c00b80e4 00000000 S kcryptd_io
root 489 2 0 0 c02cf348 00000000 S loop0
root 503 2 0 0 c00b80e4 00000000 S kcryptd
root 539 2 0 0 c02cf348 00000000 S loop2
root 540 2 0 0 c00b80e4 00000000 S kdmflush
root 541 2 0 0 c00b80e4 00000000 S kcryptd_io
root 542 2 0 0 c00b80e4 00000000 S kcryptd
root 599 2 0 0 c02cf348 00000000 S loop4
root 600 2 0 0 c00b80e4 00000000 S kdmflush
root 601 2 0 0 c00b80e4 00000000 S kcryptd_io
root 602 2 0 0 c00b80e4 00000000 S kcryptd
root 612 2 0 0 c02cf348 00000000 S loop5
root 613 2 0 0 c00b80e4 00000000 S kdmflush
root 614 2 0 0 c00b80e4 00000000 S kcryptd_io
root 615 2 0 0 c00b80e4 00000000 S kcryptd
root 624 2 0 0 c02cf348 00000000 S loop6
root 625 2 0 0 c00b80e4 00000000 S kdmflush
root 626 2 0 0 c00b80e4 00000000 S kcryptd_io
root 627 2 0 0 c00b80e4 00000000 S kcryptd
root 650 2 0 0 c02cf348 00000000 S loop7
root 651 2 0 0 c00b80e4 00000000 S kdmflush
root 652 2 0 0 c00b80e4 00000000 S kcryptd_io
root 653 2 0 0 c00b80e4 00000000 S kcryptd
root 864 2 0 0 c02cf348 00000000 S loop8
root 865 2 0 0 c00b80e4 00000000 S kdmflush
root 866 2 0 0 c00b80e4 00000000 S kcryptd_io
root 867 2 0 0 c00b80e4 00000000 S kcryptd
root 1053 2 0 0 c02cf348 00000000 S loop9
root 1058 2 0 0 c00b80e4 00000000 S kdmflush
root 1059 2 0 0 c00b80e4 00000000 S kcryptd_io
root 1060 2 0 0 c00b80e4 00000000 S kcryptd
root 1359 2 0 0 c02cf348 00000000 S loop10
root 1366 2 0 0 c00b80e4 00000000 S kdmflush
root 1367 2 0 0 c00b80e4 00000000 S kcryptd_io
root 1368 2 0 0 c00b80e4 00000000 S kcryptd
root 1796 2 0 0 c02cf348 00000000 S loop11
root 1806 2 0 0 c00b80e4 00000000 S kdmflush
root 1807 2 0 0 c00b80e4 00000000 S kcryptd_io
root 1808 2 0 0 c00b80e4 00000000 S kcryptd
root 2018 2 0 0 c02cf348 00000000 S loop12
root 2022 2 0 0 c00b80e4 00000000 S kdmflush
root 2023 2 0 0 c00b80e4 00000000 S kcryptd_io
root 2025 2 0 0 c00b80e4 00000000 S kcryptd
root 2171 2 0 0 c02cf348 00000000 S loop13
root 2181 2 0 0 c00b80e4 00000000 S kdmflush
root 2183 2 0 0 c00b80e4 00000000 S kcryptd_io
root 2184 2 0 0 c00b80e4 00000000 S kcryptd
root 2338 2 0 0 c02cf348 00000000 S loop14
root 2340 2 0 0 c00b80e4 00000000 S kdmflush
root 2341 2 0 0 c00b80e4 00000000 S kcryptd_io
root 2342 2 0 0 c00b80e4 00000000 S kcryptd
root 2344 2 0 0 c02cf348 00000000 S loop15
root 2345 2 0 0 c00b80e4 00000000 S kdmflush
root 2346 2 0 0 c00b80e4 00000000 S kcryptd_io
root 2347 2 0 0 c00b80e4 00000000 S kcryptd
root 2393 1 672 72 c00a4e1c afd0c60c S sh
root 6000 2 0 0 c02cf348 00000000 S loop16
root 6001 2 0 0 c00b80e4 00000000 S kdmflush
root 6002 2 0 0 c00b80e4 00000000 S kcryptd_io
root 6003 2 0 0 c00b80e4 00000000 S kcryptd
root 10210 2 0 0 c02cf348 00000000 S loop3
root 10211 2 0 0 c00b80e4 00000000 S kdmflush
root 10212 2 0 0 c00b80e4 00000000 S kcryptd_io
root 10213 2 0 0 c00b80e4 00000000 S kcryptd
root 10423 2 0 0 c02cf348 00000000 S loop18
root 10424 2 0 0 c00b80e4 00000000 S kdmflush
root 10425 2 0 0 c00b80e4 00000000 S kcryptd_io
root 10426 2 0 0 c00b80e4 00000000 S kcryptd
root 10436 2 0 0 c02cf348 00000000 S loop19
root 10437 2 0 0 c00b80e4 00000000 S kdmflush
root 10438 2 0 0 c00b80e4 00000000 S kcryptd_io
root 10439 2 0 0 c00b80e4 00000000 S kcryptd
root 10456 2 0 0 c02cf348 00000000 S loop20
root 10457 2 0 0 c00b80e4 00000000 S kdmflush
root 10458 2 0 0 c00b80e4 00000000 S kcryptd_io
root 10459 2 0 0 c00b80e4 00000000 S kcryptd
root 12369 2 0 0 c02cf348 00000000 S loop17
root 12370 2 0 0 c00b80e4 00000000 S kdmflush
root 12371 2 0 0 c00b80e4 00000000 S kcryptd_io
root 12372 2 0 0 c00b80e4 00000000 S kcryptd
root 16123 2 0 0 c02cf348 00000000 S loop21
root 16124 2 0 0 c00b80e4 00000000 S kdmflush
root 16125 2 0 0 c00b80e4 00000000 S kcryptd_io
root 16126 2 0 0 c00b80e4 00000000 S kcryptd
root 16176 2 0 0 c02cf348 00000000 S loop22
root 16177 2 0 0 c00b80e4 00000000 S kdmflush
root 16178 2 0 0 c00b80e4 00000000 S kcryptd_io
root 16179 2 0 0 c00b80e4 00000000 S kcryptd

All these running processes are not present when you install a fresh ROM (as example, I don't have its in my phone) and its resources drain could be the reason of the audio bottleneck.

So, I have a few questions to you:

1) Do you use some program like A2SD or something like that to move the apps on the SD?
2) Could you tell me the applications you have on your phone? If possible list me the applications on the main memory and the applications on the SD (if any)

I cannot be sure, but I have the idea your configuration is not optimized. It seems that you still have something coming from old installs. If possible, at this
point, the best thing would be perform a fresh install with full wipe and then reinstall only the needed programs (you can find all the installed apk under /data/app.)

---------- Post added at 03:25 PM ---------- Previous post was at 03:11 PM ----------

Hi All,

I'am new of this forum but I use this rom for a long time.
The rom is very stable and powerful.
I would like to know if you can change the look of notification area when MIUI,
and if possible change the menu icon color in the next versions?

(forum.nexus-lab.com/hacks-e-modding-nexus-one/4568-rom-cyanogenmod-7-1-0-con-alcune-piccole-modifiche.html)

best

You can theme the ROM and change about what you want. This ROM has to be intended as vanilla ROM. For instance you can find some nice ICS theme googling around. I don't know if someone developed a theme MIUI-like, but you can search for it
P.S.
Check this one http://xdaforums.com/showthread.php?t=1189723
 
Last edited:

psyke83

Inactive Recognized Developer
Mar 29, 2011
1,267
3,959
Noob, I just finished to analyze your log and I found something strange:

root 490 2 0 0 c00b80e4 00000000 S kdmflush
root 502 2 0 0 c00b80e4 00000000 S kcryptd_io
root 489 2 0 0 c02cf348 00000000 S loop0
root 503 2 0 0 c00b80e4 00000000 S kcryptd
root 539 2 0 0 c02cf348 00000000 S loop2
root 540 2 0 0 c00b80e4 00000000 S kdmflush
root 541 2 0 0 c00b80e4 00000000 S kcryptd_io
root 542 2 0 0 c00b80e4 00000000 S kcryptd
root 599 2 0 0 c02cf348 00000000 S loop4
root 600 2 0 0 c00b80e4 00000000 S kdmflush
root 601 2 0 0 c00b80e4 00000000 S kcryptd_io
root 602 2 0 0 c00b80e4 00000000 S kcryptd
root 612 2 0 0 c02cf348 00000000 S loop5
root 613 2 0 0 c00b80e4 00000000 S kdmflush
root 614 2 0 0 c00b80e4 00000000 S kcryptd_io
root 615 2 0 0 c00b80e4 00000000 S kcryptd
root 624 2 0 0 c02cf348 00000000 S loop6
root 625 2 0 0 c00b80e4 00000000 S kdmflush
root 626 2 0 0 c00b80e4 00000000 S kcryptd_io
root 627 2 0 0 c00b80e4 00000000 S kcryptd
root 650 2 0 0 c02cf348 00000000 S loop7
root 651 2 0 0 c00b80e4 00000000 S kdmflush
root 652 2 0 0 c00b80e4 00000000 S kcryptd_io
root 653 2 0 0 c00b80e4 00000000 S kcryptd
root 864 2 0 0 c02cf348 00000000 S loop8
root 865 2 0 0 c00b80e4 00000000 S kdmflush
root 866 2 0 0 c00b80e4 00000000 S kcryptd_io
root 867 2 0 0 c00b80e4 00000000 S kcryptd
root 1053 2 0 0 c02cf348 00000000 S loop9
root 1058 2 0 0 c00b80e4 00000000 S kdmflush
root 1059 2 0 0 c00b80e4 00000000 S kcryptd_io
root 1060 2 0 0 c00b80e4 00000000 S kcryptd
root 1359 2 0 0 c02cf348 00000000 S loop10
root 1366 2 0 0 c00b80e4 00000000 S kdmflush
root 1367 2 0 0 c00b80e4 00000000 S kcryptd_io
root 1368 2 0 0 c00b80e4 00000000 S kcryptd
root 1796 2 0 0 c02cf348 00000000 S loop11
root 1806 2 0 0 c00b80e4 00000000 S kdmflush
root 1807 2 0 0 c00b80e4 00000000 S kcryptd_io
root 1808 2 0 0 c00b80e4 00000000 S kcryptd
root 2018 2 0 0 c02cf348 00000000 S loop12
root 2022 2 0 0 c00b80e4 00000000 S kdmflush
root 2023 2 0 0 c00b80e4 00000000 S kcryptd_io
root 2025 2 0 0 c00b80e4 00000000 S kcryptd
root 2171 2 0 0 c02cf348 00000000 S loop13
root 2181 2 0 0 c00b80e4 00000000 S kdmflush
root 2183 2 0 0 c00b80e4 00000000 S kcryptd_io
root 2184 2 0 0 c00b80e4 00000000 S kcryptd
root 2338 2 0 0 c02cf348 00000000 S loop14
root 2340 2 0 0 c00b80e4 00000000 S kdmflush
root 2341 2 0 0 c00b80e4 00000000 S kcryptd_io
root 2342 2 0 0 c00b80e4 00000000 S kcryptd
root 2344 2 0 0 c02cf348 00000000 S loop15
root 2345 2 0 0 c00b80e4 00000000 S kdmflush
root 2346 2 0 0 c00b80e4 00000000 S kcryptd_io
root 2347 2 0 0 c00b80e4 00000000 S kcryptd
root 2393 1 672 72 c00a4e1c afd0c60c S sh
root 6000 2 0 0 c02cf348 00000000 S loop16
root 6001 2 0 0 c00b80e4 00000000 S kdmflush
root 6002 2 0 0 c00b80e4 00000000 S kcryptd_io
root 6003 2 0 0 c00b80e4 00000000 S kcryptd
root 10210 2 0 0 c02cf348 00000000 S loop3
root 10211 2 0 0 c00b80e4 00000000 S kdmflush
root 10212 2 0 0 c00b80e4 00000000 S kcryptd_io
root 10213 2 0 0 c00b80e4 00000000 S kcryptd
root 10423 2 0 0 c02cf348 00000000 S loop18
root 10424 2 0 0 c00b80e4 00000000 S kdmflush
root 10425 2 0 0 c00b80e4 00000000 S kcryptd_io
root 10426 2 0 0 c00b80e4 00000000 S kcryptd
root 10436 2 0 0 c02cf348 00000000 S loop19
root 10437 2 0 0 c00b80e4 00000000 S kdmflush
root 10438 2 0 0 c00b80e4 00000000 S kcryptd_io
root 10439 2 0 0 c00b80e4 00000000 S kcryptd
root 10456 2 0 0 c02cf348 00000000 S loop20
root 10457 2 0 0 c00b80e4 00000000 S kdmflush
root 10458 2 0 0 c00b80e4 00000000 S kcryptd_io
root 10459 2 0 0 c00b80e4 00000000 S kcryptd
root 12369 2 0 0 c02cf348 00000000 S loop17
root 12370 2 0 0 c00b80e4 00000000 S kdmflush
root 12371 2 0 0 c00b80e4 00000000 S kcryptd_io
root 12372 2 0 0 c00b80e4 00000000 S kcryptd
root 16123 2 0 0 c02cf348 00000000 S loop21
root 16124 2 0 0 c00b80e4 00000000 S kdmflush
root 16125 2 0 0 c00b80e4 00000000 S kcryptd_io
root 16126 2 0 0 c00b80e4 00000000 S kcryptd
root 16176 2 0 0 c02cf348 00000000 S loop22
root 16177 2 0 0 c00b80e4 00000000 S kdmflush
root 16178 2 0 0 c00b80e4 00000000 S kcryptd_io
root 16179 2 0 0 c00b80e4 00000000 S kcryptd

Those entries are probably indicative of applications that have secure storage (/mnt/asec) mounted. You may have never seen this simply because you don't have any applications that take advantage of this feature.
 

Ripper003

Senior Member
Oct 21, 2011
76
9
@ac1953
It was an internal DSP problem, disabled the equalizer I had set and no more crackling though it does seem an odd problem to get from a seemingly simple change :/ I'll flash your ROM and see if it achieves the same problem though if you're still interested?
 

ac1953

Senior Member
Jan 28, 2012
162
116
Mola di Bari
Those entries are probably indicative of applications that have secure storage (/mnt/asec) mounted. You may have never seen this simply because you don't have any applications that take advantage of this feature.

Maybe... Googling I have found that It could also depend from applications moved to SD card. The strange thing is that in the list of running processes there are only the standard processes (+ these ones, of course). This is the reason why I asked for the application list. If you remember, Noob told us something about a free memory loss (from 60 Mb to 30 Mb) after the install, and this bring me to think to some SD card management SW. I can be wrong, of course, :D but I think you agree with me that the malfunction is very strange... a sound loss every 3 seconds.. It seems due to a system periodic overload or to some strange data exchange with the SD resulting in a system slow down. But it is only matter to wait for the response :)
 

noob pirate

Member
Mar 11, 2012
26
4
Noob, I just finished to analyze your log and I found something strange:
.........................................................................................................................................................................................................................
All these running processes are not present when you install a fresh ROM (as example, I don't have its in my phone) and its resources drain could be the reason of the audio bottleneck.

So, I have a few questions to you:

1) Do you use some program like A2SD or something like that to move the apps on the SD?
2) Could you tell me the applications you have on your phone? If possible list me the applications on the main memory and the applications on the SD (if any)

I cannot be sure, but I have the idea your configuration is not optimized. It seems that you still have something coming from old installs. If possible, at this
point, the best thing would be perform a fresh install with full wipe and then reinstall only the needed programs (you can find all the installed apk under /data/app.)

---------- Post added at 03:25 PM ---------- Previous post was at 03:11 PM ----------



.........................................................

I hope the file helps. If you need the apk file I can send them .
 

Attachments

  • app_list.txt
    2.7 KB · Views: 28
Last edited:

mspeed162

Senior Member
Jan 16, 2012
311
28
U8180 Stock rom needed

Hi, can anyone please provide me a working link for downloading U8180 stock rom....
 

Codeman666

Senior Member
Mar 19, 2012
58
7
Thanks, I skipped that post! Downloaded and installed, will test and report back ASAP (at work atm)

So I had some time to test the audio/headphone patch on the latest build.
It definitely fixed the volume problem, however... the sound seems completely different while using the same EQ settings as I did before.
It seems to be lacking some of the low and low-mid frequencies, meaning the volume is ok again but I seem to have lots some of the bass.

As I fiddled with the frequencies in the EQ in the DSP Manager the left lowest (of the 6 possible frequencies) doesnt seem to change anything as I toggle it up or down. All the other frequencies respond as expected when tweaked.
(I'm using in-ear headphones btw so I always get good audible bass frequencies compared to regular headphones)

Also I dont know if I mentioned before but the latest build still seems to be missing the "groups" tab from "Phone/Call log/Contacts/Favorites" menu in the dialer/contacts.
 

ac1953

Senior Member
Jan 28, 2012
162
116
Mola di Bari
So I had some time to test the audio/headphone patch on the latest build.
It definitely fixed the volume problem, however... the sound seems completely different while using the same EQ settings as I did before.
It seems to be lacking some of the low and low-mid frequencies, meaning the volume is ok again but I seem to have lots some of the bass.

As I fiddled with the frequencies in the EQ in the DSP Manager the left lowest (of the 6 possible frequencies) doesnt seem to change anything as I toggle it up or down. All the other frequencies respond as expected when tweaked.
(I'm using in-ear headphones btw so I always get good audible bass frequencies compared to regular headphones)

Also I dont know if I mentioned before but the latest build still seems to be missing the "groups" tab from "Phone/Call log/Contacts/Favorites" menu in the dialer/contacts.

The filter parameters are the Huawei stock ROM original parameters. I have another U8160 still with stock ROM inside, that I use for comparative tests: it sounds exactly in the same way. To have a good bass response, you would need a larger speakerphone (or, at least, a better one). Last patch only lowers volume by 6 db without add any further processing, so the question is: when you speak about a different audio response, what is the reference version? Take in mind that previous driver version had a dirty bug that, in fact didn't allow a right processing of sound. At the moment the filter file instructs the internal DSP of MSM7225 to apply the following three digital filters:

- EQ Filter - a simple equalization filter (http://en.wikipedia.org/wiki/Equalization)
- ADRC filter - (see http://en.wikipedia.org/wiki/Dynamic_range_compression)
- IIR filter (see http://en.wikipedia.org/wiki/Infinite_impulse_response)

If you open the AudioFilter.csv, you will find the following line:


C1,AUDFMT EQ, FFFF,FFFB,0190,0001,016A,FFFB,02EE,0003,016A,0001,03F8,0003,016A,0000,0BB8,0003,016A,0000,0FA0,0003,016A,0000,1770,0003,016A,0000,1B58,0003,016A,0000,1F40,0002,016A,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

First three words give:
- the device to wich the filter must be applied (C is for EQ, 1 for speakerphone)
- the filter verbose name
- the on/off flag (0 if the filter doesn't be applied, FFFF otherwise)

The following data must be interpretated four words at a time:
- the first word is the gain in DB
- the second word is the center frequency to process
- the third word is the type of the DSP processing (not documented)
- the fourth word is the quality factor (bandwith to wich the filter is applied)

Splitting the line, data are as follow:
FFFB,0190,0001,016A, Gain=-5 db freq= 400 hz
FFFB,02EE,0003,016A, Gain=-5 db freq= 750 hz
0001,03F8,0003,016A, Gain= 1 db freq = 1016 hz
0000,0BB8,0003,016A, Gain= 0 db freq = 3000 hz
0000,0FA0,0003,016A, Gain= 0 db freq = 4000 hz
0000,1770,0003,016A, Gain= 0 db freq = 6000 hz
0000,1B58,0003,016A, Gain= 0 db freq = 7000 hz
0000,1F40,0002,016A Gain= 0 db freq = 8000 hz

so, in effect, Huawei compressed the low frequencies, maybe to mask the speakerphone response. If you want, you can modify the filter, disable it or delete the full line, having a quite 'flat' response. To have exactly the same frequency response you have on headphone, you need to disable all the filters (or delete the AudioFilter itself), but take in mind that this could repropose the audio distortion. Hope this info will be useful to everybody
 
Last edited:

bk109

Senior Member
Aug 28, 2011
654
192
Dublin,Ireland
So I had some time to test the audio/headphone patch on the latest build.
It definitely fixed the volume problem, however... the sound seems completely different while using the same EQ settings as I did before.
It seems to be lacking some of the low and low-mid frequencies, meaning the volume is ok again but I seem to have lots some of the bass.

As I fiddled with the frequencies in the EQ in the DSP Manager the left lowest (of the 6 possible frequencies) doesnt seem to change anything as I toggle it up or down. All the other frequencies respond as expected when tweaked.
(I'm using in-ear headphones btw so I always get good audible bass frequencies compared to regular headphones)

Also I dont know if I mentioned before but the latest build still seems to be missing the "groups" tab from "Phone/Call log/Contacts/Favorites" menu in the dialer/contacts.
Yeah,I noticed the same issue with the sound as well and I'm probably gonna revert to the old audio filter as I need decent headphone performance way more than decent speaker (I've started to use the huawei lately as my exercise multimedia player ;) )

@ac1953

Thanks for the info on how the audio filter .csv is structured, but at least for now I'll do the lazy way and just revert using that .zip file as a template for a flashable update and I just might post it here for others that want to go back to the way things were... Of course,that's provided flashing the .zip doesn't explode my phone OR gives birth to skynet

Here's a flashable zip with the old .csv if you prefer the old headphone 'sound' ;)
 

Attachments

  • u8160-earPhone.zip
    130.1 KB · Views: 21
Last edited:
  • Like
Reactions: Codeman666

Top Liked Posts

  • There are no posts matching your filters.
  • 123
    CyanogenMod 7.2.0-RC1 "u8160" Port
    Latest release: v1.5 [20120814]
    Latest Google Apps package: 20110828


    Hey folks,

    This is a port of Cyanogen 7.2.0-RC1 (based on Android Gingerbread 2.3.7) for the Vodafone Smart VF858 (Huawei U8160) and Huawei X1 (U8180). The current port status is stable - all hardware is working correctly, but see post #2 for any known issues.

    Pre-requisites:
    • ClockworkMod Recovery. The easiest method to flash ClockworkMod Recovery is via the ROM Manager application. See post #2 for more details.
    • Install the GooManager application from the Play store.

    Installation (updating from older CM7 build):
    • Open the GooManager application.
    • Select the Check for rom updates option.
    • Click on the notification for the available update and then click the Download button.
    • When the download finishes, enter recovery and install the update package followed by the Google Apps package.

    Installation (first time/new users):
    • Open the GooManager application.
    • Navigate to psyke83 -> roms -> u8160.
    • Click on the build you wish to install from the list.
    • If needed, click the Download Gapps button to download the Google Apps package. The most recent (and most suitable) version will always be selected for you automatically.
    • Click on the Download button to download the rom.
    • Once the download(s) are complete, reboot into recovery and install the update package, followed by the Google Apps package.
    • Important: if you are updating from a stock or custom ROM, choose the data wipe option before rebooting.

    Releases / Changelog:
    • 1.5 (20120814):
      • Updated CyanogenMod source
      • Undo modification to camera's maximum megapixel resolution for U8180 users (due to crashes)
      • Switch to using newer U8180 proprietaries by default
      • Add-on packages for USB host mode kernel, wpa_supplicant 5 and 6 (for users to test for any differences with wifi stability; base ROM uses v6 by default), U8160 and U8180 proprietaries (to test for any changes in functionality with wifi, camera and RIL).

    • 1.4 (final) (20120802):
      • Hotfix 2: kernel: revert aps-12d change due to problems with proximity sensor; update 02setuphardware script to modify camera's maximum megapixel resolution on per-device basis (2mp for U8160, 3mp for U8180).
      • Hotfix 1: kernel: add early suspend/resume hooks to aps-12d light sensor driver, disable unused adp5587 keypad driver; remove 1600x1200 resolution filter from Camera app; add ro.config.PicMaxSize=2mp property to build.prop, which should limit libcamera's support to 1600x1200 resolution and therefore prevent camera crashes for certain users.
      • Updated CyanogenMod source
      • Consolidate all fixes from 1.4RC release + hotfixes.
      • Remove RomManager from default installation. Why? I no longer distribute ROMs/updates using it, and debug logging from the app suggests that it may have potential memory leaks issues. My phone now reports 45-60MB (60-75MB without Google Sync activated) free on average after removal of this package. If RomManager is still installed after upgrading to this release, it means that you have a local update installed, which you can uninstall just like a regular user app.
      • Re-introduce Adriano Carrata's patches: fix PIN entry in airplane mode; add workaround for apps which specify an invalid pixel format (i.e. Sygic).
      • Enable speex encoder support.
      • Implement additional patch for security issue CVE-2011-3874. Note: this vulnerability is supposed to be patched in the framework already, but the exploit test case still reports the exploit as being available. This patch may only fix the false-positive result of the exploit test. Either way, it's useful.

    • 1.4 RC1 (20120729):
      • *Note: I'm provisionally marking this as a release candidate, as I've made a lot of changes to the kernel that may have unforeseen effects for certain users. If there aren't major problems, this will be renamed to the final 1.4 release.
      • Hotfix 5: removed akm8973 driver (not used after all), added mma8452 driver, more kernel optimizations.
      • Hotfix 4: added akm8973 driver (for real this time), fixed init.rc script to set U8180 model automatically, small kernel configuration optimizations.
      • Hotfix 3: added fixed wifi driver to solve issues with power saving mode and resume from idle (I had forgot to include this since hotfix 1 - whoops); added akm8973 and s5ksca drivers back into kernel to fix accelerometer and camera sensors for U8180 (and some U8160) users; fixed video camera mode; removed automatic reodexing option from U8160Parts (too hacky); removed U8180 branding option from U8160Parts (ro.product.model is now adjusted for U8180 users automatically on every boot).
      • Hotfix 2: fix U8160 (synaptics_i2c_rmi_1564) driver
      • Hotfix 1: re-added missing drivers and kernel config for U8180; fixed issue in which wifi would get held in maximum power saving mode under certain circumstances.
      • md5: 936cc309fe0a87c01091cbd0ee5edd9c
      • Updated CyanogenMod source
      • Kernel: reworked from scratch for stability (there were some errors in my previous CodeAurora merge); fixed some issues with Huawei-specific USB code; disabled Huawei virtual CD-ROM USB driver; fixed compass driver; removed Huawei wakelock/suspend code that was causing "unknown_wakeups" wakelocks to be generated, possibly draining battery; removed many unnecessary drivers & some debug options from default kernel configuration.
      • Wifi: Updated bcm4329 driver - adapted from clean android-msm.2.6.39 sources, including patches from Nvidia and Huawei to support our device properly; using wpa_supplicant_6 with combo scan enabled, including a fix for resume from idle. Summary: wireless should now work on all channels (>11 had issues before), hidden SSIDs work properly, and resume from idle works properly.
      • Removed USB host support from default kernel (will package separately)
      • Disable compcache (ramzswap) by default
      • Changed ramzswap, CIFS and TUN (vpn) drivers to modules, moved dhd.ko from boot image to /system to reduce memory footprint of kernel.

    • 1.3 (20120625):
      • md5: aabb0add99abcec1ceebb5588242358f
      • Updated CyanogenMod source.
      • Add U8160Parts settings application. New options available via Settings -> Device settings: ROM re-odexing [not recommended for people already using some form of app2sd], attenuation of speaker, headset, FM radio, Kernel Samepage Merging, Swap, Generate bug report. Removed madconfig script.
      • Testing some patches by ac1953: automatic resume of music after interruption by incoming call; fix FM radio pop, ensure that last used frequency is properly tuned on cold start of FM app (including my change); enable workaround for invalid PixelFormat 8 (fixes Sygic).
      • libaudio: add FM audio attenuation support, fix minimum in-call volume causing sound to mute completely.
      • Resolve battery drain cause by kernel configuration in previous release (CONFIG_FB_EARLYSUSPEND has issues with suspend in Gingebread).
      • Revert to original bcm4329 driver (from Huawei U8180 source drop) with increased dhd_watchdog_ms period; disable combo scanning in supplicant to fix hidden networks; ensure that dhcpcd server is always stopped when wpa_supplicant is stopped. Testing to see if this improves battery usage, and/or resolves the problem with connecting to networks beyond channel 11.

    • [release candidate] (20120616):
      • Updated CyanogenMod source.
      • Kernel: disable framebuffer console (ANDROID text), instead transitioning directly from egg-timer (or bootsplash image, if installed) to CyanogenMod bootanimation - may improve battery
      • Kernel: enable USB Host mode (support modules are installed to /system/lib/modules/) - needs testing from users with OTG adaptors
      • Kernel: enable Kernel Samepage Merging, switch from console-based earlysuspend to framebuffer-based earlysuspend - may improve battery
      • New libaudio from Adriano Carrata with audio attenuation support, improved AudioFilter.csv - completely solves audio distortion
      • Switch to open source gralloc module (fixed - video decoders now work properly)
      • Fix issue in which framebuffer earlysuspend could sometimes cause the screen not to wake properly.

    • v1.2 (20120403):
      • Updated CyanogenMod source.
      • New kernel (based on latest CodeAurora froyo_almond branch).
      • Enable workaround to reduce audio distortion at higher volume levels.
      • Completely fixed instability/freezes related to USB tethering.
      • Various patches for memory leaks and minor bugs from gerrit.

    • v1.1 (20120317):
      • Hotfix 1: disable CGROUPS, fix wireless suspend stability issue
      • Updated CyanogenMod source - version 7.2.0-RC1
      • Cherry-picked various patches from gerrit to fix issues with core binaries/libraries (dalvik, bionic, zlib, etc.)
      • Kernel: reverted to stable 2.6.32.9 kernel due to issues with battery consumption. Note: CGROUPS is still enabled, but the Application Not Responding issue on first boot seems to be fixed
      • Kernel: disabled OTG support due to battery consumption issues (will package a separate kernel for interested testers)
      • Kernel: updated pmem driver, fixed issues with smartassV2 & interactiveX CPU governors
      • Wifi: stability patch for bcm4329 driver
      • wpa_supplicant_6: wait for control interface monitor to be brought up before starting. Improves reliability of wireless when reconnecting from idle.
      • libaudio: fix for minimum in-call volume being incorrectly muted in certain cases (such as on speakerphone)
      • GPS: use worldwide SUPL server by default
      • Compcache: back to 18%
      • ADWLauncher: lock action buttons by default (helps avoid cases in which users accidentally detach the icons for these buttons)
      • Change scrolling cache setting to further improve scrolling speed

    • v1.0 (20120227):
      • Known issue: you may see the message "process system is not responding" after unlock on first boot. This is due to CGROUPS being enabled in the kernel (and also happens with the stock kernel - it's not a problem with my updates). You can safely disregard the message as no harm will be done.
      • Hotfix 1test1 [8th March]: Changes to kernel to fix battery drain - please test.
      • Updated CyanogenMod source.
      • Kernel: now using version 2.6.32.57 (Code Aurora's froyo_almond updates + upstream's longterm 2.6.32.y updates merged)
      • Kernel: new bcm4329 wifi driver, which should fix reconnect from idle for hidden networks
      • Kernel config: enabled CGROUPS, tweaks to improve battery usage
      • Scrolling cache tweak.

    • v0.9 (20120203):
      • Hotfix 4test5 [21 Feb]: Revert longterm patches due to random reboot issue.
      • Hotfix 4test4 [21 Feb]: Kernel: fix screen not turning back on from suspend, other small fixes.
      • Hotfix 4test3 [20 Feb]: Kernel: rebased to CodeAurora froyo_almond branch & merged longterm 2.6.32.57 changes, updated wifi source driver.
      • Hotfix 3 [12 Feb]: Kernel: more stable config (enabled ARMv6 K extensions which stops USB errors; fix for U8180 key issues).
      • Hotfix 2 [10 Feb]: Fix call audio via Bluetooth headset; disabled AHB overclocking due to instability during USB tethering (and possibly also during other activities); wifi module now built from source to improve reliability; updated wpa_supplicant_6 to use combo scanning; re-enabled SCHED_HRTICK in config (it wasn't the cause of instability).
      • Hotfix 1: Fix audio routing issues that were causing problems with the mic and headset detection during calls. This may or may not affect the Bluetooth headset bug - please let me know.
      • Updated CyanogenMod source (almost 7.2.0-RC1).
      • Performance: disable scrolling cache (prevents lag)
      • Performance/battery: disable ICS rotation animation (it's slow and causes instability; ICS transition animations are still working smoothly)
      • Performance/battery: updated android staging kernel drivers from 2.6.35 kernel (notably bringing improvements to the lowmemorykiller driver)
      • Performance/stability: moved to stable copybit version
      • Stability: rebuilt kernel using 4.4.3 toolchain from CM7 source.
      • Stability: kernel audio driver patches to prevent rare blackscreen during incoming calls/low memory conditions
      • Stability: further updates to latest CAF libaudio version with FM routing code added. Bluetooth calling should work again, but needs testing.
      • Battery: added 2g/3g mobiledata switch option (allows you to use the mobiledata statusbar button to switch between 2g/3g network modes).
      • Fancy: enable electron beam animation for screen off by default (performance is satisfactory)
      • Reverted SIM lock change that was causing people to have problems with certain SIM cards.
      • FM: fixed audio routing (headphones will not longer malfunction if you use the speaker and then exit the FM app); prevent frequencies out of bounds being used; allow looping between the top/bottom of the frequency bands.
      • Improved mac address generator script to prevent errors for certain devices.
      • Increased default compcache memory allocation to 26%.
      • Miscellaneous code cleanups.
      • Now distributed via ROM Manager with a greatly simplified installation procedure.

    • v0.8 - 26 January 2012:
      • Updated CyanogenMod source (still 7.2.0-RC0).
      • Fix for rare issue where notification area items can get "stuck", causing notifications to malfunction.
      • Now includes ICS rotation and transition animations (merged officially into CM7.2)
      • Wifi: disable wpa_supplicant_6's combo scan to fix reconnect/hidden SSID issues
      • Bluetooth: disable master mode to increase reliability with some peripherals
      • libaudio: code cleanup (based on rmcc's geeksphone zero); removed dependency on proprietary liba2dp.so
      • ADWLauncher: allow rotation of home screen by default
      • Kernel: re-enable multitouch support (oops)
      • Init: reduce default mmcblk0 readahead from 2MB -> 258KB to avoid potential lag.
      • The phone is no longer restricted when network locked and using a different SIM card.
      • Small cleanups.

    • v0.7 - 22 January 2012:
      • Updated CyanogenMod source (still 7.2.0-RC0).
      • Kernel stability fix (disabled SCHED_HRTICK due to instability/random reboot issue).
      • MAC addresses for Bluetooth and wifi are now accurate.
      • Improved Bluetooth audio.conf based on this bug report. This should improve Bluetooth stability with audio peripherals.
      • Reduced default compcache memory usage from 18% -> 10% to reduce potential lag.
      • Reduce LatinIME landscape keyboard key height (.25in -> .23in)
      • Use automatic brightness setting by default.

    • v0.6 - 29 December 2011:
      • Hotfix 2 [31 December 2011]: Updated "madconfig" script. You can now run adb shell madconfig u8180 to activate U8180 ROM branding that will survive future ROM upgrades (of my own release).
      • Hotfix 1 [31 December 2011]: Updated kernel (further stability fixes, added interactiveX cpu scheduler, unlocked overclock frequencies up to 768Mhz); updated libaudio to increase buffer size (this improves smoothness of apps using audio - e.g., Gensoid can now play games at full 50/60fps in landscape with no visual stuttering @633Mhz, whereas before it would stutter constantly); renamed tethering device from usb -> rndis (cosmetic fix); tweaked LatinIME keyboard to use .23in key height (down from .26in).
      • Updated CyanogenMod source (7.2.0-RC0).
      • Kernel: rebuilt using latest stable linaro gcc release: 4.5-2011.11
      • Kernel: fixed phone freeze issue when USB tethering is interrupted. This change also seems to reduce general system lag that was being caused by a conflict in the USB drivers.
      • Kernel: fixed "back" softkey alignment.
      • Kernel: fixed touchscreen right edge sensitivity issue (portrait).
      • Renamed wifi device from eth0 -> wlan0 for better consistency.
      • Re-enabled surface dithering by default; it has been reported that font rendering is improved with this option enabled, and I don't see much performance impact when enabled.
      • Experimental build.prop tweak to enable 3mp camera support (untested).

    • v0.5 - 10 November 2011:
      • Updated CyanogenMod source.
      • Partial fix for third-party camera apps (e.g. barcode scanners).

    • v0.4 - 21 October 2011:
      • Hotfix 2 [23 October 2011]: Updated device permissions. This fixes the sound recorder and camcorder.
      • Hotfix 1 [21 October 2011]: Reverted to v5 wpa_supplicant. This solves the issue in which wifi refuses to connect to hidden SSIDs.
      • Updated CyanogenMod source.
      • Included some patches to bring further improvements to 2D graphics & general system performance.
      • Patched framework to swap volume controls when the phone is rotated 90 degrees.
      • Improve USB transfer speed while in UMS (USB Mass Storage) mode.
      • Fix some graphical corruption on widgets in stock Camera app.
      • Other small fixes.

    • v0.3 - 10 October 2011:
      • Updated CyanogenMod source - final 7.1 release.
      • Improved 2D rendering speed.
      • Switched to EU GPS servers.
      • Fixed headset/media control keys.
      • Re-enabled automatic brightness.

    • v0.2 - 3 October 2011:
      • Hotfix 3 [6 October 2011]: Kernel: reverted to stable compcache (ramzswap) driver. Framework: disabled JNI debugging -this fixes force-close errors in some applications such as TapFish, and increases overall system performance.
      • Hotfix 2 [4 October 2011]: Kernel: improved multitouch driver to fix touchscreen accuracy (especially soft keys), improved haptic feedback, fix to zram module. Small fixes to libaudio (the distortion is not yet resolved, however).
      • Hotfix 1 [3 October 2011]: Kernel: added compcache (zram.ko) module, reduced boot delay, unlocked 729Mhz frequency, small bugfixes. Framework: enable compcache by default (18% RAM usage, customizable in CyanogenMod Settings - Performance -> Compcache RAM Usage.)
      • Updated CyanogenMod source: now based on Gingerbread version 2.3.7.
      • Kernel now supports under/overclock from 30Mhz - 710Mhz (min/max frequency is set to 30Mhz - 600Mhz by default, so you must manually activate the higher frequencies via Settings -> CyanogenMod Settings -> Performance -> CPU settings). Thanks to estebanSannin. NOTE: My phone is very unstable at 691Mhz, and freezes immediately at 710Mhz. I am providing these higher frequencies just in case your phone has better tolerance for overclocking. I accept no responsibility for any damage caused as a result of overclocking.
      • FM Radio app: fixed seeking (left/right arrows).
      • Disabled automatic brightness (it potentially avoids battery drain, and never worked anyway). Thanks to tas0s for the tip.
      • Enable workaround to prevent corruption issues if you use the Simple2EXT app2sd app.
      • Reverted Gallery app to 2D version, due to lack of hardware 3D acceleration on our phone.
      • Added compatibility with sebastian404's ClockworkMod port. You can now install this ROM using his CWM recovery (as well as my own).
      • Improved FM volume calculation, reduced overall volume & small fixes to audio code.
      • Various small bugfixes.

    • v0.1 - 12 September 2011:
      • Hotfix 1 [18 September 2011]: Boot: removed custom lowmemorykiller tweaks; kernel: various updates (smartassV2, TinyRCU, Simple and V(R) IO schedulers), bugfixes and optimizations, changed default scheduler to Simple IO; libaudio: code cleanup; Framework: enabled hardware-accelerated 2D rendering.
      • First release. All hardware appears to be working correctly.

    Source Code:
    33
    Getting started with ROM Manager & ClockworkMod
    Skip to Part B if you have already rooted your phone.
    • a) Rooting your phone
      • Go to Settings -> Applications -> Development. Enable the option USB debugging, and wait for the debugging drivers to be automatically installed onto your PC.
      • On your PC, download the latest release of super1click.
      • Run super1click and click the Root button. Follow all of the prompts given by the application, but make sure that you choose yes to the prompt on whether to install busybox.
      • Continue to the next part when your phone is successfully rooted.
    • b) Installing ROM Manager & ClockworkMod
      • Install ROM Manager from the Google Play store.
      • Open the ROM Manager application. Choose the option Flash ClockworkMod Recovery, and confirm the phone model as Huawei U8160.
      • After downloading the recovery image, a Superuser prompt will ask you for permission for the application to have root access. You should Allow this action.
      • ClockworkMod should now be flashed to your phone.

    Known issues
    • Excessive bass/distortion at >70% volume - workaround in v1.2.

    Technical details:
    • Kernel 2.6.32:
      • CPU & AHB overclock supported up to 768Mhz, but default frequencies (122-600Mhz) are used by default for safety/stability reasons
      • Built-in support for CIFS, TUN, compcache (ramzswap)
      • Multitouch Synaptics touchscreen driver
      • Added extra CPU schedulers: interactiveX, smartassV2 (default)
      • Added extra IO schedulers: BFQ, VIO, SIO (default)
      • Updated Android staging drivers from 2.6.35 kernel
      • Patches to improve CyanogenMod compatibility (e.g. USB tethering)
      • Various other stability & performance patches.

    Before you ask...
    I have no interest or intention to further "mod" the ROM with any kind of hacks or customizations (like custom apps, themes, Swype, etc.). My only aim is to have a 100% stable port of Cyanogen code. Any such requests will be ignored.

    Reporting bugs
    You must follow these instructions exactly, or I will ignore your requests. Provide the following information:
    • The version of the ROM you are using (to confirm that you have the latest release)
    • Report any customizations you have made to the ROM (themes, system apps, etc.)
    • Describe the problem clearly, including steps on how I can reproduce the issue.
    • Provide a logcat from your system taken just after the issue has occurred. To take a logcat, you enter this command from your PC: adb shell logcat -d >c:\logcat.txt. Copy and paste this log to pastebin.com, and provide the link.
    • If I ask you to re-test the issue after a data-wipe, do the following: reboot into ClockworkMod, perform a full backup, then data-wipe, reboot and retest the issue, giving a new log if necessary. You can then reboot into ClockworkMod and restore your data backup.

    Alternate download location: I would prefer if everybody used the ROM Manager application to download & install my ROMs. If you need to download from the PC, however, you can use this link.
    12
    Troubleshooting Battery:

    In order to help me to troubleshoot issues with battery usage, please follow these instructions:

    • Charge your phone to 100% battery.
    • Use your phone normally for as long as possible (ideally, 12 hours) without plugging the phone into your PC or main charger for the entire test period.
    • When the test period has ended, plug in the phone and immediately take a "dumpstate" log:
      Code:
      adb shell dumpstate >dumpstate-u81x0-yournickname.log
    • Upload the log file to pastebin.com or multiupload.com
    • Provide a brief summary of your general usage during the test period, such as: wifi usage and sleep policy, 3g/data usage, approx time spent on calls/games/idle, any information you may think is helpful to troubleshoot battery drains.
    12
    U8160 audio fix

    Hi,
    in the attachment you will find an AudioFilter.csv modified to enable the IIR and the ADRC on the main speaker. The overall audio quality has been tested instrumentally vs the stock ROM and appears to be improved a lot.
    The original file is in /system/etc and must be substituted with this one after to have renamed it from AudioFilter.txt to AudioFilter.csv.
    I suggest to use Root Explorer or adb to execute the sustitution. You will find detailed instructions in the forum, because the topic has already been covered. Every comment will be welcome.
    11
    The psyke's ROM sister is born!

    Well..... after a long time (job) I am happy to return on this forum with a little gift for all the friends. Starting from yesterday is available at the following address:

    http://xdaforums.com/showthread.php?t=1729925&highlight=ac1953

    my personal build of CM7. Often I think to my ROM as the psyke's one sister :D .... similar but not equal. Psyke's one is the BIG SISTER.... without its wonderful job (thanks Conn) I wouldn't never focus my interest on Android. My ROM, on the other hand, has many improvements over the standard CM7 framework not available in any other CM7 ROM (don't worry psyke... I plan to publish soon ALL the patches I did on github.... if only I will have the time to do it :laugh:.... I changed A LOT of modules, hi) but, by choice, uses an old but very stable psyke's kernel, dated 2012/04/26. But, it is better, I think, to describe the ROM characteristics.

    GENERAL DATA
    Cyano sources updated to 2012/09/09

    KERNEL
    Psyke83 kernel dated 2012/04/26


    USER INTERFACE
    • Signal level bars color changing depending from signal level (7.2 source code fix)
    • Device parameters configuration exported in a dedicated application under settings (as psyke's ROM, but different application and parameters)
    • ICS/Jelly Beans extra wallpapers available in the wallpapers choice menu
    • ICS theme (developed by me) integrated in the Theme Chooser

    FRAMEWORK
    • Fix PIN entry in airplane mode;
    • WiFi signal level visualization synchronized with the true signal even when the phone starts with WiFi ON and a network is available
    • Data connection disabled after a full wipe to avoid unwanted charges
    • Call ring synchronized with the screen switch ON
    • Removed bug causing ringer sound distortion (skip of audio filtering)
    • Audio reference levels programmable for speaker, headphone and bluetooth channels (u8160 device settings)
    • Audio redirection to bluetooth headphone (u8160 device settings)
    • Workaround for apps which specify an invalid pixel format (i.e. Sygic)
    • Lists visualization bug removed (initial dots overlapped to text)


    CYANO APPS
    • MUSIC - Sound Start/Stop synchronized with incoming/outgoing calls
    • FM RADIO - Tuning/frequency visualization synchronization and switch on scratch removed (approach a little bit optimized)
    • SMS/MMS - Added button (and logic) to search and select multiple recipients
    • CONTACTS - Removed a 'no image scaling' bug I discovered when an icon is added to a contact
    • PHONE - Added the capability to assign an icon to its own contact. This icon will then be visualized from the system during conversations

    As you can see, my choice has been to optimize and extend the framework layer, leaving to psyke the kernel. As result you will have now the opportunity to choose between the two BEST ROMs today available for u8160, each with its peculiar characteristics, both to highest possible level for this device. Enjoy!