Even if my machines are all on a 64 bit architecture, I am using the 32 bit Skype version, as suggested. Recently, my laptops and workstation accidentally initiated the installation of the update 7 of Linux Mint Debian Edition. As a result, Skype audio was broken (again, sigh…). It took me an amount of research and trial-and-error to find the right combination of fixes that made things work (eh yes, one fix only was not enough 🙂
For starters, the package libasound2-plugins:i386 must be installed. And, as reported in several places (including Mint forums) you’ll need to fix PulseAudio’s configuration as follows:
in the file /etc/pulse/default.pa the line
load-module module-udev-detect
must be changed in
load-module module-udev-detect tsched=0
You’ll then need to restart pulseaudio. Try to kill it with:
pulseaudio -k
and verify that it’s actually down with:
pgrep -lf pulseaudio
(or pgrep -u your_username -lf pulseaudio in case you’re not the only active user of the system).
If it’s not gone, try to kill it again until it goes away. Then run
pulseaudio --start
and test: Skype should be working fine now.
Is it possible to teach CFEngine to apply this fix? Of course it is! This bundle does the job:
bundle agent fix_skype_audio {
 files:
     "/etc/pulse/default.pa"
    classes  => if_repaired("pulseaudio_skype_fix_applied"),
    edit_line => replace_line("\s*load-module module-udev-detect\s*",
               "load-module module-udev-detect tsched=0") ;
 packages:
     "libasound2-plugins:i386"
   package_policy => "add",
   package_method => apt ;
 reports:
   pulseaudio_skype_fix_applied::
     "Pulseaudio fix applied, please restart pulseaudio!" ;
}
# Replace the content of a line matching the regex (anchored)
bundle edit_line replace_line(regex,content)
{
 replace_patterns:
     "^($(regex))$"
         replace_with => value("$(content)"),
         comment => "Search and replace string";
}
You’ll need to have the CFEngine standard libraries included in the inputs to make this work. Note that I preferred to just get a warning instead of letting CFEngine restart my pulseaudio. I prefer to choose myself the right moment to do that, so a warning is enough.
Enjoy!