There are some problems with pygtk in the script (on Arch at least).
I solved it by running the main script with python2 and the other scripts it installs with python.
I managed to do it, but changes revert after rebooting. (Update: This
can be worked around; see the bottom of this post.)
I did it via a GUI in python called HDA Analyzer that can be fetched
and used from the ALSA website like the following:
wget -O run.py http://www.alsa-project.org/hda-analyzer.py
sudo python run.py (Their page doesn't say sudo, but if you don't do
it with sudo, it will download the scripts but fail to run them and
complain about privileges.)
Now this will make the GUI start, but its usage is not explained, and
it's not exactly newbie-friendly. So to make life easier I'll explain
how I did it. In my case, it was a matter of two clicks; the tricky
part was locating exactly what needs to be clicked.
(Note: You may explore all the nodes one by one, but don't modify
anything you don't understand. Any modification (e.g. ticking a
checkbox) becomes effective immediately; there's no apply button.)
The list contains many nodes called Node[0x##] followed by any of
AUD_OUT, AUD_IN, AUD_MIX, PIN and VENDOR. The only ones you have to
look in are the PIN ones.
There are multiple types of PIN nodes; the type we want will fill the
whole window with panels/control groups (It helps to stretch or
maximize the window), as in this screenshot. (The site prevented me
from inserting the image inline, sorry.)
Inside the Config Default field, some nodes will have in the first
line Jack Connection: N/A; we need the ones that say Jack Connection:
Jack as in the screenshot.
To change a Line-In to an output jack, look until you find the node
that says Jack Type: Line In. (And notice the Jack Location2: Rear and
Jack Color: Blue.)
Then, in the three checkboxes in the Widget Control group below,
uncheck IN and check OUT.
Using the same way, you can assign any of the front or rear jacks to
either input or output.
Now if you close the window, it will ask whether you want to revert
changes. Saying yes reverts them immediately; saying no keeps them but
only for this session.
If you want to keep your changes permanently, don't close HDA Analyzer
yet. Instead, click "Exp" (Export) at the bottom-left and use Save As
to write the python script to a file. Now copy that file to something
like /etc/hda-mods.py and edit /etc/rc.local as root (e.g. using
gksudo gedit /etc/rc.local) and append python /etc/hda-mods.py right
before exit 0, then save it and reboot. Your changes should survive.