Hi!
After a ton of requests from you guys, I finally decided to take the challenge to write a Voodoo Sound port for this WolfsonMicro WM8994 powered phone.
So I bought a device just for that, because it was just impossible without.
As stated previously, this phone don't have a proper sound driver, or at least not a Linux Kernel driver.
There is some kind of non-standard userspace audio implementation inside /system/bin/nvrm_daemon.
This daemon sends directly i2c commands via a NVIDIA proprietary API, which has an interface running as a bunch of foreign code in Kernel in order to access the hardware.
Why this port is a real technical challenge, requiring a fair share of reverse-engineering, lots of head-scratching and a very hacky state of mind?
Because it's not supposed to be possible. But, eh ^^
I have an Optimus 2x since a few days only so I don't have much experience about what needs to be improved, apart from the obvious:
- Sound quality.
- Headphone amp volume.
- Creepy speaker output.
As usual, most of my work is under GPL and Kernels developers/packagers are welcome re-using my patches.
If possible, I'll also write an in-app implementation, not requiring a patched kernel in Voodoo Control Plus.
You can follow the dev work here:
github.com/project-voodoo/linux_lge-p990/commits/froyo-voodoo-sound
I commit code real-time so if you're curious you don't have to wait for release to play with it!
PS: targets are Optimus 2X official and CyanogenMod, G2X official and CyanogenMod
After a ton of requests from you guys, I finally decided to take the challenge to write a Voodoo Sound port for this WolfsonMicro WM8994 powered phone.
So I bought a device just for that, because it was just impossible without.
As stated previously, this phone don't have a proper sound driver, or at least not a Linux Kernel driver.
There is some kind of non-standard userspace audio implementation inside /system/bin/nvrm_daemon.
This daemon sends directly i2c commands via a NVIDIA proprietary API, which has an interface running as a bunch of foreign code in Kernel in order to access the hardware.
Why this port is a real technical challenge, requiring a fair share of reverse-engineering, lots of head-scratching and a very hacky state of mind?
Because it's not supposed to be possible. But, eh ^^
I have an Optimus 2x since a few days only so I don't have much experience about what needs to be improved, apart from the obvious:
- Sound quality.
- Headphone amp volume.
- Creepy speaker output.
As usual, most of my work is under GPL and Kernels developers/packagers are welcome re-using my patches.
If possible, I'll also write an in-app implementation, not requiring a patched kernel in Voodoo Control Plus.
You can follow the dev work here:
github.com/project-voodoo/linux_lge-p990/commits/froyo-voodoo-sound
I commit code real-time so if you're curious you don't have to wait for release to play with it!
PS: targets are Optimus 2X official and CyanogenMod, G2X official and CyanogenMod
Last edited: