[Pkg-alsa-devel] Bug#770122: patch as workaround/solution

Jhonas Wernery jhony at go4more.de
Wed Nov 19 00:20:49 UTC 2014


I should add the solution:

I found a workaround on this site
https://bbs.archlinux.org/viewtopic.php?id=143744

It basically consists of a patch, installed as a service. I hope the
maintainers can use this to implement it into the main build so users
can achieve full sound support on Macbook 5,2 without the need to
manually add the patch.

Steps I did to fix the issue of no sound on headphones (following the
steps explained by helmuthdu in Post #7):

1. create a new service 
                        # nano /etc/systemd/system/alsa-fix.service
                        
with this input

[Unit]
Description=Fix headphone volume issue on MacBook5,2

[Service]
Type=oneshot
ExecStart=/bin/sh -c "python2 /etc/alsa_fix.py"

[Install]
WantedBy=multi-user.target

2. save the script from pezcurrel e.g. like /etc/alsa_fix.py

#!/usr/bin/env python2

import os
import struct
from fcntl import ioctl

def __ioctl_val(val):
  # workaround for OverFlow bug in python 2.4
  if val & 0x80000000:
    return -((val^0xffffffff)+1)
  return val

IOCTL_INFO = __ioctl_val(0x80dc4801)
IOCTL_PVERSION = __ioctl_val(0x80044810)
IOCTL_VERB_WRITE = __ioctl_val(0xc0084811)

def set(nid, verb, param):
  verb = (nid << 24) | (verb << 8) | param
  res = ioctl(FD, IOCTL_VERB_WRITE, struct.pack('II', verb, 0))

FD = os.open("/dev/snd/hwC0D0", os.O_RDONLY)
info = struct.pack('Ii64s80si64s', 0, 0, '', '', 0, '')
res = ioctl(FD, IOCTL_INFO, info)
name = struct.unpack('Ii64s80si64s', res)[3]
if not name.startswith('HDA Codec'):
  raise IOError, "unknown HDA hwdep interface"
res = ioctl(FD, IOCTL_PVERSION, struct.pack('I', 0))
version = struct.unpack('I', res)
if version < 0x00010000:        # 1.0.0
  raise IOError, "unknown HDA hwdep version"

# initialization sequence starts here...

set(0x15, 0x707,   0xc1) # 0x150707c1 (SET_PIN_WIDGET_CONTROL)

os.close(FD)

3. and the last thing (rebooted after this step for the changes to take
effect): 
                                # systemctl enable alsa-fix.service
-------------- next part --------------
A non-text attachment was scrubbed...
Name: alsa_fix.py
Type: text/x-python
Size: 1024 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-alsa-devel/attachments/20141119/7ec97ab6/attachment.py>
-------------- next part --------------
[Unit]
Description=Fix headphone volume issue on MacBook5,2

[Service]
Type=oneshot
ExecStart=/bin/sh -c "python2 /etc/alsa_fix.py"

[Install]
WantedBy=multi-user.target
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: This is a digitally signed message part
URL: <http://lists.alioth.debian.org/pipermail/pkg-alsa-devel/attachments/20141119/7ec97ab6/attachment.sig>


More information about the Pkg-alsa-devel mailing list