Subscribe to our RSS news feed
AAPL 199.94 (-1.25)

SOLVED: CX20549 (Conexant Venice) headphone output (also for other AppleAzaliaAudio.kext cards without headphones), Using Reggie SE to enable Headphones
***
  • Group: Members
  • Posts: 120
  • Joined: 9-May 08
  • Member No.: 227,853
SOLVED (at the bottom of the original post)

// Original

While searching for a solution to turn on headphones for the CX20549 (Conexant Venice), I stumbled upon a solution for the ALC269 on the Ipis Forum (OS X on EeePCs):

http://ipis-osx.wikidot.com/forum/t-100527...ternal-speakers

The solution used there was to send verbs (or commands) to the driver through the developer utility called reggie_se. They turn on the headphone controls, turn on the headphone amplifier, and turn off the internal speakers to get audio.

For a beginning demonstration, people with CX20549 can try this:

CODE
sudo reggie_se -D PhysAddr -w 0x0103b080 -a 0xf4500060 -B 32
sudo reggie_se -D PhysAddr -w 1 -a 0xf4500068 -B 32


This should turn off your speakers. (adjusting the volume or a reboot will bring everything back)

The way this works is you send a verb to the 0x60 offset (called the Immediate Command Output Interface) in the device memory address (which can be found in the IORegExplorer or through ioreg). Then you activate that command by sending 1 to the 0x68 offset (Immediate Command Status). A verb is a 32-bit sting that has the following structure:

Bits 31:28 are the Codec Address (0000 in our case, I think), bits [27:20] is the NID (in your codec dump), and then bits [19:0] is the verb command. Those last 20 bits are what are important, they are the command. For example the verb command 70500 sets the power state to D0 (to control power states you use the 0x705, followed by the state data and preceded by the Codec Address and NID). For example, if I want to set the headphones in CX20549 to the D0 state we do the following:

CODE
sudo reggie_se -D PhysAddr -w 0x01170500 -a 0xf4500060 -B 32
sudo reggie_se -D PhysAddr -w 1 -a 0xf4500068 -B 32


If you do that for the first time (after a reboot lets say) you should hear a pop in your headphones (perhaps indicating that they were not powered on before as calling this command again does nothing). Note the Codec Address (CAd) is 0x0, NID is 0x11, verb ID 0x705 and D0 state 0x00. There are more verb commands and you can read about them in the High Definition Audio Specifications on Intel's site (Google it). The ones I think we need to concern ourselves with are:

Power State: 0x705
EAPD/BTL: 0x70c
Volume Knob Control: 0x70f
Pin Widget Control: 0x707
Amplifier Gain/Mute: 0x3 (followed by 16 bits instead of 8)

Now, I have been unable to switch over to the headphone output just yet. CX20549 seems significantly different to ALC269. For example the ALC269 has an EAPD pin on the headphone widget, but the CX20549 does not. I am also at at a loss of being able to turn on the internal speakers through reggie_se after turning them off. In fact, both the 0x3b000 (should turn on speakers) and 0x3b080 (should mute speakers) commands turn internal speakers off (for some odd reason I have not found out yet). I have not tried using Get commands yet, because I hoped everything was in the Linux codec dump, but it may not be. My biggest success is with the pop on the headphone Power State setting.

Any ideas or help with this would be appreciated. Also, if anyone with a EeePC with ALC269 could upload a Linux Codec dump, that would be great. The dump I found seems to be a bit odd and is poorly formatted

//

Solution:

This is a temporary solution to get headphones to output on the CX20549 (The commands below work for SubSysID 0x103C30CD and might be different for other SubSystem ID's If you have your codec dump, try getting the right NID's for your specific version and the correct memory address). Make sure AppleAzaliaAudio.kext is installed and you get output through your speakers. Also, you must install CHUD tools (or the entire Development Tools package). Run these commands in terminal:

CODE
sudo reggie_se -D PhysAddr -w 0x01170500 -a 0xf4500060 -B 32
sudo reggie_se -D PhysAddr -w 1 -a 0xf4500068 -B 32
sudo reggie_se -D PhysAddr -w 0x011707c0 -a 0xf4500060 -B 32
sudo reggie_se -D PhysAddr -w 1 -a 0xf4500068 -B 32
sudo reggie_se -D PhysAddr -w 0x0113b020 -a 0xf4500060 -B 32
sudo reggie_se -D PhysAddr -w 1 -a 0xf4500068 -B 32


If you want the commands to turn off the speakers as well, add this:

CODE
sudo reggie_se -D PhysAddr -w 0x0103b080 -a 0xf4500060 -B 32
sudo reggie_se -D PhysAddr -w 1 -a 0xf4500068 -B 32


(Note: I have reason to believe that if you get errors about not being able to write to that address, it could be the result of using a non-vanilla kernel that blocks this type of memory editing)

Also, note that you cannot use the standard volume controls to make the headphones louder. If you use the standard volume controls (if you make anything louder in them) you will turn on the internal speakers again if you turned them off (tell me if this doesn't work). To change volumes in headphones you have to use this command:

sudo reggie_se -D PhysAddr -w 0x0113b0xx -a 0xf4500060 -B 32

where xx is between 00 and 80 (80 is mute, but anything right below 80 is very loud). 00 is very very quiet (this was actually my original problem, I just couldn't hear that I turned the headphones on, or the speakers back on).

If you have problems turning you speakers back on, run this:

sudo reggie_se -D PhysAddr -w 0x0103b0xx -a 0xf4500060 -B 32

where xx is between 00 and 80 (80 is mute anything right below 80 is very loud , 00 is very quiet).

Note, that all this resets after reboot and sleep.

There is a problem however; I think pushing the Amplifiers like we are doing with these commands produces shitty quality, so there has to be another way to control volume without hurting the quality. Anyway, please test and tell me if I need to clarify anything, or if this even makes sense.
PM Profile Card
Go to the top of the page
+ Quote Post

Posts in this topic
- Memorial   SOLVED: CX20549 (Conexant Venice) headphone output (also for other AppleAzaliaAudio.kext cards without headphones)   Dec 22 2008, 10:32 AM
- - Zip McOccup   Thanks! Real nice progress!   Dec 23 2008, 12:11 PM
- - mehdymehdy   QUOTE (Memorial @ Dec 22 2008, 10:32 AM) ...   Jan 13 2009, 12:12 PM
|- - Memorial   QUOTE (mehdymehdy @ Jan 13 2009, 05:12 AM...   Jan 23 2009, 12:16 AM
- - maquiavelo69   hell yes dont worry theres always someone to tell ...   Jan 25 2009, 03:46 PM
|- - mehdymehdy   QUOTE (maquiavelo69 @ Jan 25 2009, 03:46 ...   Mar 11 2009, 10:13 AM
- - Memorial   If I have time in the next few weeks I might patch...   Jan 28 2009, 11:20 AM
- - dell700m   Doesn't work for me. Thinkpad R61. Conexant V...   Feb 23 2009, 05:39 PM
- - Memorial   What happens?   Mar 10 2009, 11:19 PM
- - thechumdinger   Hey Memorial, I tried both reggie_se turn off spea...   Mar 19 2009, 01:55 PM
- - dell700m   same as thechumdinger. Followed the instructions, ...   Mar 20 2009, 03:14 PM
- - Memorial   Can you guys get Linux codec dumps for me? Does tu...   Mar 27 2009, 08:40 AM
- - marreco   This is mine codec dump could u post the especifie...   Mar 30 2009, 07:57 PM
- - thechumdinger   I could not turn off the speakers either... (I hav...   Mar 30 2009, 09:45 PM
- - dell700m   my linux codec dump - Thinkpad R61 Codec: Conexant...   Mar 30 2009, 11:48 PM
- - Memorial   Ok. So the dumps don't seem to be the problem....   Mar 31 2009, 11:17 PM
- - dell700m   My ioreg dump. HDEF@1B <class IOPCIDevice, re...   Apr 5 2009, 02:34 AM
- - DPyro   Will this work with AppleHDA? I just got everythin...   Apr 5 2009, 07:41 PM
- - linguini6699   @Memorial You, sir, are amazing. I don't have...   Apr 6 2009, 03:31 AM
|- - dell700m   linguini6699 Your hardware ID says you have a CX20...   Apr 6 2009, 04:50 AM
- - Memorial   Dpyro. This can be adopted to other drivers, theor...   Apr 6 2009, 05:57 AM
- - DPyro   Well, my sound works perfectly with warm boot meth...   Apr 6 2009, 02:03 PM
- - dell700m   Memorial, About the shell script part, i made mys...   Apr 6 2009, 02:22 PM
- - Memorial   Sounds great Dell700m. Dpyro, AppleHDA should sti...   Apr 6 2009, 08:58 PM
|- - DPyro   QUOTE (Memorial @ Apr 6 2009, 04:58 PM) S...   Apr 6 2009, 09:11 PM
- - Memorial   Ok, sounds weird. So you don't get any sound w...   Apr 7 2009, 05:40 AM
- - DPyro   Ok, so which commands would I send to get sound? ...   Apr 7 2009, 05:21 PM
|- - JLN   Hi DPyro, I just want to double check with you ab...   May 16 2009, 12:53 PM
- - linguini6699   @Dell700m Thanks for the reply... I found that po...   Apr 7 2009, 06:24 PM
- - dell700m   Tested and confirmed, VoodooHDA works for Conexant...   Apr 14 2009, 10:11 PM
- - Memorial   Just as an update. There are reports of VoodooHDA ...   Apr 16 2009, 12:35 AM
- - Memorial   Wait? An actual MacBook? Everything should work. I...   Jun 2 2009, 06:23 AM

Reply to this topic Start new topic

1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 

RSS Lo-Fi Version Time is now: 22nd November 2009 - 01:16 PM