Jun's Blog

Output, activities, memo and etc.

WirePlumber: How to set bluetooth earphones as a default audio

I have sometimes experienced that my Bluetooth earphones is not set by default. So, below is just my memo to do that on Fedora Linux.

$ rpm -qf /bin/wpctl
wireplumber-0.5.12-1.fc42.x86_64

$ wpctl status | grep -A5 "Sinks"
 ├─ Sinks:
 │  *   54. Built-in Audio Analog Stereo        [vol: 1.18]
 │      74. Jun's WF-C710N                      [vol: 0.40]
 │
 ├─ Sources:
 │      55. Built-in Audio Analog Stereo        [vol: 0.32]
--
 ├─ Sinks:
 │
 ├─ Sources:
 │  *   66. Framework Laptop 12 Webcam Module (V4L2)
 │
 ├─ Filters:

$ wpctl set-default 74

The WirePlumber page on ArchWiki is here.

Recover Fedora Linux 42 from the Live CD

Context

I installed Hyprland and Hyprlock[1][2] on Fedora Linux 42 on my Framework Laptop 12 as follows.

$ sudo dnf install hyprland
$ sudo dnf install hyprland-devel
$ sudo dnf copr enable solopasha/hyprland 
$ sudo dnf install hyprlock

Then, when restarting the OS, the GDM didn't start anymore.

Perhaps, I could try the different tty console by Ctrl + Alt + Fn (n >= 2).[3] However, maybe I wrongly typed the media key instead of F2.

I tried the single-user mode and emergency mode too. But I couldn't enter the console for that reason.

As a final way, I tried the way of mounting the root partition from the Fedora 42 Live CD. Fortunately, I had the USB memory of the Fedora Linux 42 installation media. So, I was able to use the Fedora 42 Live CD.

I should always have the live CD.

Recover Fedora Linux 42 from the Live CD

Mount the root partition with chroot

My disk is LUKS + BTRFS format. So, the steps to mount the root portion were tricky.

Ran the following commands to mount the LUKS crypt disk.

$ sudo crytptsetup luksOpen /dev/nvme0n1p3 luks-root
$ sudo mount /dev/mapper/luks-root /mnt

Then, checked the subvolumes of the mounted directory. This command is important.

$ sudo btrfs subvolume list /mnt
ID 256 gen 37464 top level 5 path root
ID 257 gen 37461 top level 5 path home
ID 258 gen 37461 top level 256 path root/var/lib/machines

Then mounted like this.

$ sudo mount -o subvol=root /dev/mapper/luks-root /mnt
$ sudo mount -o subvol=home /dev/mapper/luks-root /mnt/home
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys /mnt/sys
$ sudo mount --bind /run /mnt/run

Finally executed the chroot command, and entered the root partition of the disk.

$ sudo chroot /mnt

Fix on the mounted disk

Removed the problematic packages.

# dnf copr remove solopasha/hyprland

# dnf remove hyprlock

# dnf remove hyprland-devel

# dnf remove hyprland

I changed the login mode from graphical to multi-user to log in on the console.[4]

# systemctl get-default
graphical.target

# systemctl set-default multi-user.target

# systemctl get-default
multi-user.target

Finish

Exited the chroot.

# exit

Executed the following commands to clean.`

$ sudo umount -Rl /mnt
$ sudo cryptsetup luksClose luks-root
$ sudo reboot

Working on console

Sway didn't start at first.

$ sway
00:00:00.079 [wlr] [render/egl.c:288] EGL_EXT_platform_base not supported
00:00:00.079 [wlr] [render/egl.c:523] Failed to create EGL context
00:00:00.079 [wlr] [render/gles2/renderer.c;499] Could not initialize EGL
00:00:00.079 [wlr] [render/wlr_renderer.c:272] Could not initialize renderer
00:00:00.079 [sway/server.c:236] Failed to create renderer

After I tried several ways, I executed the dnf upgrade, and this solved the above error.

$ sudo dnf upgrade

Now the sway works from the console!

$ sway

References