Skip to content

Instantly share code, notes, and snippets.

@qw3r
Forked from tybenz/lenovo-mute-tut.md
Created July 17, 2013 22:10
Show Gist options
  • Save qw3r/6025004 to your computer and use it in GitHub Desktop.
Save qw3r/6025004 to your computer and use it in GitHub Desktop.

Revisions

  1. @tybenz tybenz renamed this gist May 21, 2013. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. @tybenz tybenz revised this gist May 21, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion gistfile1.md
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    Copied from askubuntu's [Enabling mic mute button and light on Lenovo Thinkpad](http://askubuntu.com/questions/125367/enabling-mic-mute-button-and-light-on-lenovo-thinkpads)
    #####Copied from askubuntu's [Enabling mic mute button and light on Lenovo Thinkpad](http://askubuntu.com/questions/125367/enabling-mic-mute-button-and-light-on-lenovo-thinkpads)

    There are two possible "hardware" indicators (to show that mute is on or off):

  3. @tybenz tybenz revised this gist May 21, 2013. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions gistfile1.md
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,5 @@
    Copied from askubuntu's [Enabling mic mute button and light on Lenovo Thinkpad](http://askubuntu.com/questions/125367/enabling-mic-mute-button-and-light-on-lenovo-thinkpads)

    There are two possible "hardware" indicators (to show that mute is on or off):

    The Power button light (green) will blink to show when mute is on
  4. @tybenz tybenz revised this gist May 21, 2013. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions gistfile1.md
    Original file line number Diff line number Diff line change
    @@ -3,7 +3,7 @@ There are two possible "hardware" indicators (to show that mute is on or off):
    The Power button light (green) will blink to show when mute is on
    The Mic mute button light (orange) will be on or off to show mute status (just like in Windows)

    Solution 2 requires a patched `thinkpad_acpi` kernel module, and is only recommended for advanced users who know what they are doing. This is because the patch is not included by the thinkpad_acpi developers by default, ([See this discussion for more details](http://comments.gmane.org/gmane.linux.drivers.platform.x86.devel/1962)).
    Solution 2 requires a patched `thinkpad_acpi` kernel module, and is only recommended for advanced users who know what they are doing. This is because the patch is not included by the `thinkpad_acpi` developers by default, ([See this discussion for more details](http://comments.gmane.org/gmane.linux.drivers.platform.x86.devel/1962)).

    ###Common Steps
    ----
    @@ -129,7 +129,7 @@ sudo apt-get install linux-headers-$(uname -r) build-essential
    mkdir ~/tpacpi && cd ~/tpacpi
    ```

    - Download the source file thinkpad_acpi.c from the Ubuntu Kernel git repository:
    - Download the source file `thinkpad_acpi.c` from the Ubuntu Kernel git repository:

    ```bash
    wget -Othinkpad_acpi.c "http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-$(lsb_release -sc).git;\
  5. @tybenz tybenz revised this gist May 21, 2013. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions gistfile1.md
    Original file line number Diff line number Diff line change
    @@ -190,6 +190,6 @@ sudo mv /where/you/built/it/tpacpi_micmute/thinkpad_acpi.ko $TPDIR/thinkpad_acpi
    - Switch to the "Input" tab.
    - Now have fun pressing the Mic Mute button, you should see it reflected in:

    1. The Mute checkbox in the window
    2. Notification bubbles (won't appear instantly if you press the Mic Mute more than once every few seconds!)
    3. Your chosen indicator: the blinking power button light or the built-in Mic Mute light.
    1. The Mute checkbox in the window
    2. Notification bubbles (won't appear instantly if you press the Mic Mute more than once every few seconds!)
    3. Your chosen indicator: the blinking power button light or the built-in Mic Mute light.
  6. @tybenz tybenz revised this gist May 21, 2013. 1 changed file with 9 additions and 1 deletion.
    10 changes: 9 additions & 1 deletion gistfile1.md
    Original file line number Diff line number Diff line change
    @@ -184,4 +184,12 @@ sudo mv /where/you/built/it/tpacpi_micmute/thinkpad_acpi.ko $TPDIR/thinkpad_acpi

    - Apart from your choice of indicator, you can also confirm mute via the following:

    ![](http://i.stack.imgur.com/Nkbip.png)
    ![](http://i.stack.imgur.com/Nkbip.png)

    - Click on the volume icon on the top right, and sound settings at the bottom:
    - Switch to the "Input" tab.
    - Now have fun pressing the Mic Mute button, you should see it reflected in:

    1. The Mute checkbox in the window
    2. Notification bubbles (won't appear instantly if you press the Mic Mute more than once every few seconds!)
    3. Your chosen indicator: the blinking power button light or the built-in Mic Mute light.
  7. @tybenz tybenz revised this gist May 21, 2013. 1 changed file with 38 additions and 11 deletions.
    49 changes: 38 additions & 11 deletions gistfile1.md
    Original file line number Diff line number Diff line change
    @@ -119,42 +119,69 @@ sudo service acpid restart

    - Install (or ensure) you have the headers and built tools for your currently running kernel with:

    ```bash
    sudo apt-get install linux-headers-$(uname -r) build-essential
    Make a temporary directory and change to it:
    ```

    - Make a temporary directory and change to it:

    ```bash
    mkdir ~/tpacpi && cd ~/tpacpi
    Download the source file thinkpad_acpi.c from the Ubuntu Kernel git repository:
    ```

    - Download the source file thinkpad_acpi.c from the Ubuntu Kernel git repository:

    ```bash
    wget -Othinkpad_acpi.c "http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-$(lsb_release -sc).git;\
    a=blob_plain;f=drivers/platform/x86/thinkpad_acpi.c;hb=HEAD"
    Patch it with (copy and paste the full line):
    ```

    - Patch it with (copy and paste the full line):

    ```bash
    sed -i -e 's/"tpacpi::thinkvantage",/"tpacpi::thinkvantage",\n\t"tpacpi::unknown_led4",\n\t"tpacpi::micmute",/g' -e 's/0x1081U/0x5081U/g' -e 's/0x1fffU/0x5fffU/g' thinkpad_acpi.c
    ```

    In the same folder where thinkpad_acpi.c has been downloaded, you will need a "Makefile". You can download it directly from this Pastebin, using:

    ```bash
    wget -OMakefile http://pastebin.com/raw.php?i=ybpnxeUT
    OR paste the below into a file called Makefile:
    ```

    - OR paste the below into a file called Makefile:

    ```bash
    obj-m += thinkpad_acpi.o

    all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

    clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
    Now type make to create the module; you will see a thinkpad_acpi.ko file in the folder when done.
    ```

    - Now type make to create the module; you will see a thinkpad_acpi.ko file in the folder when done.

    Test the patched module after loading it with:
    - Test the patched module after loading it with:

    ```bash
    sudo rmmod thinkpad_acpi && sudo insmod thinkpad_acpi.ko
    Now confirm that pressing the mic button will turn the orange mic light on/off AND the power light blinking/steady.
    ```

    - Now confirm that pressing the mic button will turn the orange mic light on/off AND the power light blinking/steady.

    If confirmed, do the following to replace your current thinkpad_acpi module:
    - If confirmed, do the following to replace your current `thinkpad_acpi` module:

    ```bash
    TPDIR=/lib/modules/$(uname -r)/kernel/drivers/platform/x86
    sudo mv $TPDIR/thinkpad_acpi.ko $TPDIR/thinkpad_acpi.ko.stock
    sudo mv /where/you/built/it/tpacpi_micmute/thinkpad_acpi.ko $TPDIR/thinkpad_acpi.ko
    Comment out or delete the power led lines in lenovo-micmute.sh
    ```

    - Comment out or delete the power led lines in lenovo-micmute.sh

    ###d. Testing

    - Apart from your choice of indicator, you can also confirm mute via the following:

    d. Testing
    Apart from your choice of indicator, you can also confirm mute via the following:
    ![](http://i.stack.imgur.com/Nkbip.png)
  8. @tybenz tybenz revised this gist May 21, 2013. 1 changed file with 46 additions and 22 deletions.
    68 changes: 46 additions & 22 deletions gistfile1.md
    Original file line number Diff line number Diff line change
    @@ -39,14 +39,17 @@ action=/etc/acpi/lenovo-mutemic.sh

    - Save and exit the editor.

    ---
    ###Choosing either the Power Light or Mic Mute indicators
    ---

    c-1. Mic-Mute script with Power Button indicator
    Do this if you want an easy solution and do not want to use the patched kernel module (see C-2).
    Open terminal, type gksudo gedit /etc/acpi/lenovo-mutemic.sh
    In the editor, paste:
    ###c-1. Mic-Mute script with Power Button indicator

    - Do this if you want an easy solution and do not want to use the patched kernel module (see C-2).
    - Open terminal, type `gksudo gedit /etc/acpi/lenovo-mutemic.sh`
    - In the editor, paste:

    ```
    #!/bin/bash
    INPUT_DEVICE="'Internal Mic'"
    YOUR_USERNAME="place_your_username_here"
    @@ -61,39 +64,60 @@ else
    -i microphone-sensitivity-high-symbolic "Mic ON"'
    echo "0 on" > /proc/acpi/ibm/led
    fi
    Replace value of INPUT_DEVICE variable with Capture if that is your input device name (leave all the ticks intact).
    ```

    - Replace value of INPUT_DEVICE variable with `Capture` if that is your input device name (leave all the ticks intact).

    - Replace value of YOUR_USERNAME variable with the account name of the user you want to send notifications to
    - Save and exit the editor.
    - Now run the following (from the terminal):

    Replace value of YOUR_USERNAME variable with the account name of the user you want to send notifications to
    Save and exit the editor.
    Now run the following (from the terminal):
    ```
    sudo chmod +x /etc/acpi/lenovo-mutemic.sh
    sudo service acpid restart
    Jump to the Testing section (d) to confirm that it works.
    c-2. Mic-mute with official Mic-mute Indicator Light
    Setting up the script
    Please do not use this method if you are not familiar with the terminal/shell.
    This will require compiling a patched thinkpad_acpi module and has been verified to work with Ubuntu Precise 12.04 and Quantal 12.10, kernels 3.2.0-23 and 3.2.0-24 and 3.5.0-21.
    Let's create the script first: /etc/acpi/lenovo-mutemic.sh should be as in section c-1, with the following additions:
    ```

    - Jump to the Testing section (d) to confirm that it works.

    Insert this line after the header (#!/bin/bash):
    ###c-2. Mic-mute with official Mic-mute Indicator Light

    #####Setting up the script

    - *Please do not use this method if you are not familiar with the terminal/shell.*
    - This will require compiling a patched `thinkpad_acpi` module and has been verified to work with Ubuntu Precise 12.04 and Quantal 12.10, kernels 3.2.0-23 and 3.2.0-24 and 3.5.0-21.
    - Let's create the script first: `/etc/acpi/lenovo-mutemic.sh` should be as in section c-1, with the following additions:
    - Insert this line after the header (#!/bin/bash):

    ```
    MICMUTE=/sys/devices/platform/thinkpad_acpi/leds/tpacpi::micmute/brightness
    After the first echo... line, insert:
    ```

    - After the first echo... line, insert:

    ```
    echo 1 > $MICMUTE
    And after the second echo... line, insert:
    ```

    - And after the second echo... line, insert:

    ```
    echo 0 > $MICMUTE
    You can find an example of what the full script should look like in this paste
    ```

    - You can find an example of what the full script should look like in this paste

    Then:
    - Then:

    ```
    sudo chmod +x /etc/acpi/lenovo-mutemic.sh
    sudo service acpid restart
    Confirm that pressing the mute button results in a blinking power light; pressing again gives a steady power light.
    ```

    - Confirm that pressing the mute button results in a blinking power light; pressing again gives a steady power light.

    #####Building, testing and installing the kernel module

    Building, testing and installing the kernel module
    Install (or ensure) you have the headers and built tools for your currently running kernel with:
    - Install (or ensure) you have the headers and built tools for your currently running kernel with:

    sudo apt-get install linux-headers-$(uname -r) build-essential
    Make a temporary directory and change to it:
  9. @tybenz tybenz revised this gist May 21, 2013. 1 changed file with 23 additions and 10 deletions.
    33 changes: 23 additions & 10 deletions gistfile1.md
    Original file line number Diff line number Diff line change
    @@ -8,26 +8,39 @@ Solution 2 requires a patched `thinkpad_acpi` kernel module, and is only recomme
    ###Common Steps
    ----

    a. Determining the Mic-Mute hotkey code and Mic input device
    Open terminal with Ctrl+Alt+T
    Run acpi_listen, and press the mute key
    Note the result, which should be something like: ibm/hotkey HKEY 00000080 0000101b
    ###a. Determining the Mic-Mute hotkey code and Mic input device

    Then run amixer scontrols, you should see one of the following in the output:
    - Open terminal with `Ctrl+Alt+T`
    - Run `acpi_listen`, and press the mute key
    - Note the result, which should be something like: `ibm/hotkey HKEY 00000080 0000101b`
    - Then run `amixer scontrols`, you should see one of the following in the output:

    ```
    Simple mixer control 'Internal Mic',0
    ```

    or

    ```
    Simple mixer control 'Capture',0
    ```

    Depending on what you see, "Internal Mic" or "Capture" is your input device.

    b. Create the Mic-Mute ACPI event handler
    Open terminal, type gksudo gedit /etc/acpi/events/lenovo-mutemic to open the editor.
    In the editor, paste in the following, where the first line should be the code shown in the previous section by acpi_listen:
    ###b. Create the Mic-Mute ACPI event handler

    - Open terminal, type `gksudo gedit /etc/acpi/events/lenovo-mutemic` to open the editor.
    - In the editor, paste in the following, where the first line should be the code shown in the previous section by `acpi_listen`:

    ```
    event=ibm/hotkey HKEY 00000080 0000101b
    action=/etc/acpi/lenovo-mutemic.sh
    Save and exit the editor.
    Choosing either the Power Light or Mic Mute indicators
    ```

    - Save and exit the editor.

    ###Choosing either the Power Light or Mic Mute indicators
    ---

    c-1. Mic-Mute script with Power Button indicator
    Do this if you want an easy solution and do not want to use the patched kernel module (see C-2).
  10. @tybenz tybenz revised this gist May 21, 2013. 1 changed file with 118 additions and 1 deletion.
    119 changes: 118 additions & 1 deletion gistfile1.md
    Original file line number Diff line number Diff line change
    @@ -3,4 +3,121 @@ There are two possible "hardware" indicators (to show that mute is on or off):
    The Power button light (green) will blink to show when mute is on
    The Mic mute button light (orange) will be on or off to show mute status (just like in Windows)

    Solution 2 requires a patched `thinkpad_acpi` kernel module, and is only recommended for advanced users who know what they are doing. This is because the patch is not included by the thinkpad_acpi developers by default, ([See this discussion for more details](http://comments.gmane.org/gmane.linux.drivers.platform.x86.devel/1962)).
    Solution 2 requires a patched `thinkpad_acpi` kernel module, and is only recommended for advanced users who know what they are doing. This is because the patch is not included by the thinkpad_acpi developers by default, ([See this discussion for more details](http://comments.gmane.org/gmane.linux.drivers.platform.x86.devel/1962)).

    ###Common Steps
    ----

    a. Determining the Mic-Mute hotkey code and Mic input device
    Open terminal with Ctrl+Alt+T
    Run acpi_listen, and press the mute key
    Note the result, which should be something like: ibm/hotkey HKEY 00000080 0000101b

    Then run amixer scontrols, you should see one of the following in the output:

    Simple mixer control 'Internal Mic',0
    or

    Simple mixer control 'Capture',0
    Depending on what you see, "Internal Mic" or "Capture" is your input device.

    b. Create the Mic-Mute ACPI event handler
    Open terminal, type gksudo gedit /etc/acpi/events/lenovo-mutemic to open the editor.
    In the editor, paste in the following, where the first line should be the code shown in the previous section by acpi_listen:
    event=ibm/hotkey HKEY 00000080 0000101b
    action=/etc/acpi/lenovo-mutemic.sh
    Save and exit the editor.
    Choosing either the Power Light or Mic Mute indicators

    c-1. Mic-Mute script with Power Button indicator
    Do this if you want an easy solution and do not want to use the patched kernel module (see C-2).
    Open terminal, type gksudo gedit /etc/acpi/lenovo-mutemic.sh
    In the editor, paste:

    #!/bin/bash
    INPUT_DEVICE="'Internal Mic'"
    YOUR_USERNAME="place_your_username_here"
    if amixer sget $INPUT_DEVICE,0 | grep '\[on\]' ; then
    amixer sset $INPUT_DEVICE,0 toggle
    echo "0 blink" > /proc/acpi/ibm/led
    su $YOUR_USERNAME -c 'DISPLAY=":0.0" notify-send -t 50 \
    -i microphone-sensitivity-muted-symbolic "Mic MUTED"'
    else
    amixer sset $INPUT_DEVICE,0 toggle
    su $YOUR_USERNAME -c 'DISPLAY=":0.0" notify-send -t 50 \
    -i microphone-sensitivity-high-symbolic "Mic ON"'
    echo "0 on" > /proc/acpi/ibm/led
    fi
    Replace value of INPUT_DEVICE variable with Capture if that is your input device name (leave all the ticks intact).

    Replace value of YOUR_USERNAME variable with the account name of the user you want to send notifications to
    Save and exit the editor.
    Now run the following (from the terminal):
    sudo chmod +x /etc/acpi/lenovo-mutemic.sh
    sudo service acpid restart
    Jump to the Testing section (d) to confirm that it works.
    c-2. Mic-mute with official Mic-mute Indicator Light
    Setting up the script
    Please do not use this method if you are not familiar with the terminal/shell.
    This will require compiling a patched thinkpad_acpi module and has been verified to work with Ubuntu Precise 12.04 and Quantal 12.10, kernels 3.2.0-23 and 3.2.0-24 and 3.5.0-21.
    Let's create the script first: /etc/acpi/lenovo-mutemic.sh should be as in section c-1, with the following additions:

    Insert this line after the header (#!/bin/bash):

    MICMUTE=/sys/devices/platform/thinkpad_acpi/leds/tpacpi::micmute/brightness
    After the first echo... line, insert:

    echo 1 > $MICMUTE
    And after the second echo... line, insert:

    echo 0 > $MICMUTE
    You can find an example of what the full script should look like in this paste

    Then:

    sudo chmod +x /etc/acpi/lenovo-mutemic.sh
    sudo service acpid restart
    Confirm that pressing the mute button results in a blinking power light; pressing again gives a steady power light.

    Building, testing and installing the kernel module
    Install (or ensure) you have the headers and built tools for your currently running kernel with:

    sudo apt-get install linux-headers-$(uname -r) build-essential
    Make a temporary directory and change to it:

    mkdir ~/tpacpi && cd ~/tpacpi
    Download the source file thinkpad_acpi.c from the Ubuntu Kernel git repository:

    wget -Othinkpad_acpi.c "http://kernel.ubuntu.com/git?p=ubuntu/ubuntu-$(lsb_release -sc).git;\
    a=blob_plain;f=drivers/platform/x86/thinkpad_acpi.c;hb=HEAD"
    Patch it with (copy and paste the full line):

    sed -i -e 's/"tpacpi::thinkvantage",/"tpacpi::thinkvantage",\n\t"tpacpi::unknown_led4",\n\t"tpacpi::micmute",/g' -e 's/0x1081U/0x5081U/g' -e 's/0x1fffU/0x5fffU/g' thinkpad_acpi.c
    In the same folder where thinkpad_acpi.c has been downloaded, you will need a "Makefile". You can download it directly from this Pastebin, using:

    wget -OMakefile http://pastebin.com/raw.php?i=ybpnxeUT
    OR paste the below into a file called Makefile:

    obj-m += thinkpad_acpi.o

    all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

    clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
    Now type make to create the module; you will see a thinkpad_acpi.ko file in the folder when done.

    Test the patched module after loading it with:

    sudo rmmod thinkpad_acpi && sudo insmod thinkpad_acpi.ko
    Now confirm that pressing the mic button will turn the orange mic light on/off AND the power light blinking/steady.

    If confirmed, do the following to replace your current thinkpad_acpi module:

    TPDIR=/lib/modules/$(uname -r)/kernel/drivers/platform/x86
    sudo mv $TPDIR/thinkpad_acpi.ko $TPDIR/thinkpad_acpi.ko.stock
    sudo mv /where/you/built/it/tpacpi_micmute/thinkpad_acpi.ko $TPDIR/thinkpad_acpi.ko
    Comment out or delete the power led lines in lenovo-micmute.sh

    d. Testing
    Apart from your choice of indicator, you can also confirm mute via the following:
  11. @tybenz tybenz created this gist May 21, 2013.
    6 changes: 6 additions & 0 deletions gistfile1.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,6 @@
    There are two possible "hardware" indicators (to show that mute is on or off):

    The Power button light (green) will blink to show when mute is on
    The Mic mute button light (orange) will be on or off to show mute status (just like in Windows)

    Solution 2 requires a patched `thinkpad_acpi` kernel module, and is only recommended for advanced users who know what they are doing. This is because the patch is not included by the thinkpad_acpi developers by default, ([See this discussion for more details](http://comments.gmane.org/gmane.linux.drivers.platform.x86.devel/1962)).