For the best information on Subaru Steering Wheel Controls, David Carter (svxDC on most of the forums) is the guru. His website is a wealth of information. Much of what I know about the audio steering wheel controls was gathered from his website or his posts on the forums.
His website is available here: http://ae64.com/
That being said, there are some built-in issues with adding an aftermarket headunit to a Subaru and wanting your steering wheel controls to work properly.
The main problem is that Subaru (and their contract headunit manufacturers) designed their controls and their headunits to work together. Aftermarket headunit manufacturers (even the ones that make OEM units for Subaru) did not necessarily use the same control programming, hence why aftermarket steering wheel controllers like the Metra Axxess ASWC have programmable functions.
While the Metra unit also has an auto-program function, it can me programmed manually to customize functions.
Here is a short writeup that I did to try to explain the problem with the signals sent by the OEM SWCs and how headunits “read” and interpret those signals:
Aftermarket steering wheel control adapters are not necessarily programmed to control the same functions as the stock controller while in all modes. This is due to custom programming by Subau. The Subaru programming actually makes sense- but the aftermarket HUs that accept steering wheel controls do not “see” the same commands for all of the buttons while in different modes.
The ASWC is just a translating box. It translates the up/down buttons to the up/down input of an aftermarket radio. Optionally you can customize that to translate those buttons to the preset skip up/down function. What car is sending the signals is irrelevant.
The factory HU has clearly been programmed in such a way that it takes a certain signal (actually, 2 or them) from the up/down buttons on the SWCs and translates that signal to perform functions that are NOT performed by the same buttons on the face of the HU.
What the ASWC will do is to send one signal per button, redardless of what mode the headunit is in. Thus, I needed to find a HU in which all of the functions that I want (preset skip and track skip) are performed by the same button on the HU. I was able to do so in the Clarion CX609, but other head units may or may not “see” signals from the ASWC in the same manner.
5 buttons on the Subaru SWCs
On the factory SWS, those might correspond to a particular set of pulses (think Morse code).
Mode = _ _ .
+ = _ . _
– = . _ .
^ = . . _
V = _ . .
Now, on the stock HU (and all aftermarket), they may see _ _ . and know to switch modes. Easy enough.
They may also see _ . _ and . _ . and see volume up and down, respectively. Aftermarket HUs see the same. So far, so good.
Within each mode, we see the variation. On the stock HU, . . _ means next track AND next (numerical) preset, while _ . . tells the stock HU previous track or numerically lower preset. This is because Subaru designed the HU to accept those signals to do what they wanted the HU to do when it received signals from those buttons.
Aftermarket HU manufacturers did not think about OEM steering wheel controls when designing their interface. For them, the input that changes tracks (normally a left/right movement or button) may also be the same command that puts the tuner in “seek” or “tune” mode, as opposed to the command that changes presets (which is nornally an up/down command- a command that typically tells an aftermarket HU to change discs or folders when in media mode).
The same commands that would tell the HU to skip track seem to tell the radio to seek or tune, while the command to change presets seems to tell the HU to change folders or tracks.
I know that this does not do much to solve the problem with aftermarket headunits and aftermarket steering wheel controllers, but it might help to explain why the problem exists.