Pages

Saturday, April 11, 2026

How to Record Teams & Chrome Audio on macOS

How to Record Teams & Chrome Audio on macOS

Recording Teams, Chrome & Mic on macOS

Recording professional meetings or technical demos on a Mac is notoriously tricky because macOS doesn't allow internal audio capture by default. This guide shows you how to use BlackHole 2ch to route audio perfectly.

The Goal

Capture Teams audio, Chrome audio, and your Jabra Mic simultaneously while hearing everything through your headset.


Step 1: Create the "Ear" Device (Multi-Output)

This allows sound to play in your headset and go to the recorder at the same time.

  • Open Audio MIDI Setup (Applications > Utilities).
  • Click the + icon and select Create Multi-Output Device.
  • Check BlackHole 2ch (First) and Jabra Headset (Second).
  • Set Master Device to Jabra Headset.
  • Check Drift Correction for BlackHole 2ch.

Step 2: Create the "Record" Device (Aggregate)

This merges your mic and system audio into one virtual stream.

  • Click + and select Create Aggregate Device.
  • Check BlackHole 2ch (Channels 1-2).
  • Check Jabra Headset (Channel 3).
  • Check Drift Correction for the Jabra.

Step 3: App Configuration

Application Setting Selection
macOS System Sound Output Multi-Output Device
Microsoft Teams Speaker Multi-Output Device
Microsoft Teams Microphone Jabra Headset (Direct)
Recording App (QuickTime) Microphone Input Aggregate Device
⚠️ Pro-Tip: The Volume Lock
macOS disables volume keys for Multi-Output devices. Set your Jabra volume to 100% before switching the system output to the Multi-Output device to ensure the recording isn't quiet.

Troubleshooting: Silent Recordings?

If your level meters aren't moving in QuickTime or Audio MIDI Setup, try the "Nuclear Reset":

Restart the Audio Engine:
Open Terminal and type: sudo killall coreaudiod.
This force-restarts the macOS audio daemon and usually clears any "clogged" virtual pipes.

Note: Always verify your settings in System Settings > Privacy > Microphone to ensure your recording app has permission to access the audio streams.

Saturday, February 28, 2026

MX Master 3S - Mac-like Button Configuration on Fedora Linux

OVERVIEW

--------

Configured the Logitech MX Master 3S mouse to mimic default macOS

button behavior using logiops — a userspace driver for Logitech devices.


PREREQUISITES

-------------

- logiops package installed:

    sudo dnf install logiops


- Enable and start the logid service:

    sudo systemctl enable logid

    sudo systemctl start logid



BUTTON MAPPING (Mac → Linux equivalent)

----------------------------------------

  Thumb button (tap)       → GNOME Activities overlay  (like Mission Control)

  Thumb + swipe Up         → Show all windows           (like Exposé)

  Thumb + swipe Down       → Show desktop               (Super+D)

  Thumb + swipe Left       → Switch to left workspace   (like swipe between desktops)

  Thumb + swipe Right      → Switch to right workspace

  Back button              → Browser / app Back

  Forward button           → Browser / app Forward

  Button behind scroll     → Toggle SmartShift (ratchet ↔ free-spin)

  Scroll wheel             → Smooth hi-res scroll       (like macOS smooth scroll)

  SmartShift               → Auto mode-switch at threshold 30



STEPS

-----


1. Backup existing config (if any):

   sudo cp /etc/logid.cfg /etc/logid.cfg.bak



2. Write the new config to /etc/logid.cfg:

   sudo nano /etc/logid.cfg

   (or use the config block below)



3. Paste the following configuration:


-------- /etc/logid.cfg --------

devices: (

{

  name: "MX Master 3S";


  smartshift:

  {

    on: true;

    threshold: 30;

  };


  hiresscroll:

  {

    hires: true;

    invert: false;

    target: false;

  };


  dpi: 1750;


  buttons: (

    {

      # Gesture/Thumb button

      cid: 0xc3;

      action =

      {

        type: "Gestures";

        gestures: (

          {

            direction: "None";

            mode: "OnRelease";

            action =

            {

              type: "Keypress";

              keys: ["KEY_LEFTMETA"];

            };

          },

          {

            direction: "Up";

            mode: "OnRelease";

            action =

            {

              type: "Keypress";

              keys: ["KEY_LEFTMETA", "KEY_W"];

            };

          },

          {

            direction: "Down";

            mode: "OnRelease";

            action =

            {

              type: "Keypress";

              keys: ["KEY_LEFTMETA", "KEY_D"];

            };

          },

          {

            direction: "Left";

            mode: "OnRelease";

            action =

            {

              type: "Keypress";

              keys: ["KEY_LEFTCTRL", "KEY_LEFT"];

            };

          },

          {

            direction: "Right";

            mode: "OnRelease";

            action =

            {

              type: "Keypress";

              keys: ["KEY_LEFTCTRL", "KEY_RIGHT"];

            };

          }

        );

      };

    },

    {

      # Back button

      cid: 0x53;

      action =

      {

        type: "Keypress";

        keys: ["KEY_BACK"];

      };

    },

    {

      # Forward button

      cid: 0x56;

      action =

      {

        type: "Keypress";

        keys: ["KEY_FORWARD"];

      };

    },

    {

      # Button behind scroll wheel

      cid: 0xc4;

      action =

      {

        type: "ToggleSmartshift";

      };

    }

  );

});

-------- end of config --------



4. Restart the logid service to apply:

   sudo systemctl restart logid



5. Verify no errors:

   journalctl -u logid -n 20 --no-pager


   Expected output (no WARN/ERROR lines):

     [INFO] Device found: MX Master 3S on /dev/hidrawX:255



BUTTON CID REFERENCE (MX Master 3S)

-------------------------------------

  0xc3  → Thumb / Gesture button

  0xc4  → Button behind scroll wheel (mode shift)

  0x53  → Back button

  0x56  → Forward button



NOTES

-----

- KEY_LEFTSUPER is NOT a valid keycode in logiops — use KEY_LEFTMETA instead.

- If the mouse is not detected, check: journalctl -u logid -f

- Config file location: /etc/logid.cfg

- Backup location:      /etc/logid.cfg.bak

- logiops docs:         https://github.com/PixlOne/logiops

Fixing DisplayLink Connection Issues on Linux Kernel 6.18

If you recently performed a full system upgrade and found your DisplayLink monitors stopped working, the culprit is likely a compatibility gap between the Linux Kernel and the "evdi" driver.

When the Linux Kernel updates (in this case, from 6.17 to 6.18), the internal rules for how hardware communicates with software often change. If the driver isn't updated to match these new rules, it fails to "build," leaving your external monitors disconnected.

THE PROBLEM: WHY THE BUILD FAILED

The transition to Kernel 6.18 introduced changes to the Direct Rendering Manager (DRM) subsystem. The older evdi version (1.14.9) was written using instructions that the new Kernel no longer recognizes.

Specific technical errors included:

Missing "struct_mutex": A component the driver expected to find in the Kernel is gone.

API Changes: Functions used to create "framebuffers" (the images sent to your screen) now require different technical arguments.


THE SOLUTION: STEP-BY-STEP FIX


To resolve this, we manually upgrade the evdi driver to version 1.14.15, which contains the necessary code fixes for Kernel 6.18.

STEP 1: CONFIRM THE FAILURE

Check your logs to ensure the error matches the DRM API changes:


cat /var/lib/dkms/evdi/1.14.9/build/make.log


STEP 2: DOWNLOAD THE UPDATED SOURCE

We need the source code for v1.14.15 (released Feb 2026).


cd /tmp
curl -sL https://api.github.com/repos/DisplayLink/evdi/tarball/v1.14.15 \
-o evdi-1.14.15.tar.gz
tar xzf evdi-1.14.15.tar.gz


STEP 3: REMOVE THE BROKEN MODULE

Clear the old, incompatible version from the DKMS tree:


dkms remove evdi/1.14.9 --all


STEP 4: INSTALL THE NEW SOURCE

Move the updated files into the system source directory:


mkdir -p /usr/src/evdi-1.14.15

cp -r /tmp/DisplayLink-evdi-/module/ /usr/src/evdi-1.14.15/


STEP 5: UPDATE THE VERSION CONFIG

Tell DKMS that this folder contains version 1.14.15:


sed -i 's/PACKAGE_VERSION=.*/PACKAGE_VERSION="1.14.15"/' /usr/src/evdi-1.14.15/dkms.conf


STEP 6: BUILD AND INSTALL

Compile the driver specifically for your new 6.18 kernel:


dkms add evdi/1.14.15

dkms build evdi/1.14.15

dkms install evdi/1.14.15


RESULTS AND VERIFICATION


After running the installation, verify that the module is correctly loaded:


dkms status evdi


You should see: "evdi/1.14.15, ... installed".


Once you reboot your computer, the new Kernel will load the functional driver, and your DisplayLink displays should activate normally.


SUMMARY NOTES

REBOOT: A full restart is required to switch to the new kernel and driver.

PACKAGING: This was a manual fix. If your Linux distribution (like Fedora or Ubuntu) releases an official updated DisplayLink RPM/DEB package later, it is recommended to install that to stay on the standard update path.

SYSTEM STABILITY: This fix specifically addresses the build errors. If you experience flickering, ensure you haven't disabled any critical power management settings.