The small linux problem thread

Well, it’s like I couldn’t figure out how to configure it or have the patience to do so. No unified config files makes things harder as it seems to be per device.

I need to be able to run 96k/24bit over optical SPDIF out of my machines. But when I installed the savoury1 PPA defaults, it doesn’t make any sense why there’s MORE lag in MPV.

Edit: Okay, all of that went completely over my head. I’m like Linus when he’s trying to figure out the Terminal in PopOS with all these new terms and settings being thrown at my face.

Like, what’s the difference between latency and buffer size? A simple .conf in /etc/pulse was easy for me to understand, but if it’s application specific routing of sample rate and buffer sizes, I don’t think many people will know how to change off the defaults.

Thanks, but no thanks for a LTS install. If I was running Fedora, Vanilla Arch or Manjaro, I would invest more in trying to learn it.

What I suspect happened to you is that pipewire got installed and screwed over your defaults. Pipewire will be the standard going forward and I see no reason not to make the jump today if possible, but yes, the more exotic your setup the greater the chance you will need to tweak some things.

This is the latest configuration docs: Config PipeWire · Wiki · PipeWire / pipewire · GitLab

The TLDR: Copy /usr/share/pipewire/pipewire.conf to either /etc/pipewire/pipewire.conf (for system wide config) or ~/config/pipewire/pipewire.conf (for user specific configuration). Then set these options as follows, make sure they are uncommented. This should take care of the first part of your problem.

default.clock.rate =            192000
default.clock.allowed-rates = [ 192000 ]
default.clock.min-quantum =     32
default.clock.max-quantum =     8192
default.clock.quantum =         1024

Make sure to restart pipewire to make the changes take effect (systemctl restart pipewire).

For the 24 bit part and from my understanding, pipewire should handle this natively, as in, if a sink gets a 24 bit sample but can only handle 16 bit, then this will get downcast to 16 bit. You can’t ever get better quality than your source provides you, even if your sink is capable of higher bitrates. It’s just like trying to enlarge a 1080p picture to a 1440p resolution - It will always be a bit janky no matter the amount of FSR and DLSS you throw at it.

Ah, let me try to explain these terms briefly, it will do you good in the long term regardless, if you are going to do any kind of live audio editing you need to know these things. There are five terms that are used when discussing sound: Bit depth, Frequency, Latency, Sample and Buffer.

A sound from the computer is simply a number of different samples played at a specific frequency. If your frequency (aka bit depth) is 44 kHz, then all samples are 1/44000 of a second long. For 192 kHz, it’s 1/192000 of a second long.

Latency is the time it takes the computer to process a sound, so the time from when it is received to when it actually plays. This obviously varies with how busy the PC is, OS scheduling and so on. Suffice to say sound latency is usually 10-25 milliseconds, often longer.

If we were to play a sound and have no buffer, any stutter in the computer would be noticeable - and the computer has tons of microstutters. Every 0.01s, for instance, the Linux kernel scheduler steps in and decides who gets to use the available CPUs the next 0.01 second. Add to that button presses, mouse clicks and network package interrupts, and you can see our stream would be interrupted rather rudely quite often. That’s why we have a sample buffer, which in this instance is a plain old FIFO pipe (aka queue).

The sample buffer is usually big enough to carry one full round trip of latency (e.g. 10-25 ms). But since the buffer is a FIFO, it will start at the front and go back - so the queue itself will guarantee a number of ms of latency. This guaranteed latency needs to be bigger than the processing latency, but not so big as to completely displace the sound.

Now to the million dollar question; if the buffer queue has 100 samples, on a frequency of 192 kHz, how much guaranteed latency will that be? Why, that would be 100/192000 seconds of latency. What is the best buffer size? Well, certainly not 64 000, as that would be 1/3 seconds of guaranteed latency - but not 1 either, as that would mean sound comes out completely chopped up and garbled. So, the buffer size is merely how many samples to store ahead, usually we want a couple of ms of buffer so 8 000 might be a good idea on a 192 kHz system.

That just about concludes the quick crash course about PC sound design. “Wait”, I hear you say, “What about Bit depth?” Well, that’s just how large each sample is. There are four common variants, 8, 16, 24 and 32. 8 is NES grade sound, 16 is CD music sound, 24 is what you usually use in professional editing and 32 is, well, past the diminishing returns, although could be interesting for some scientific use cases. As far as the PC goes, higher bit rate → slightly higher latency and much larger buffer size. :slight_smile:

I understand if you want to wait for now, however I still strongly recommend you read up on it as soon as possible, if you do anything even remotely close to audio processing on Linux. Pipewire will kill off PulseAudio completely by 2024, and will probably come as default as soon as Ubuntu 22.10 - maybe even 22.04, though that looks less likely right now.

The fact that it can handle everything required for remote input/output streams and screen sharing makes it the perfect companion to Wayland and libinput.

So I’m having a problem I haven’t seen brought up yet, and it’s rather frustrating. When I go to install Linux I receive the following error no matter if I’m creating a partition or doing a full wipe and install.

Installer Failed
The installer failed to create a partition table on INTEL [SSD]
---------------------------------------------------------
Create a new partition table (type: gpt) on `/dev/nvme1n1`
----------------------------------------------------------
Job: Create new partition table on device `/dev/nvme1n1'
----------------------------------------------------------
Command: sfdisk--wipe=always/dev/nvme1n1
----------------------------------------------------------

This probably has something to do with my laptop utilizing an Intel Optane 1TB drive for the primary hard drive and a 25GB drive for the OS. I’ve tried installing on both, and the error remains the same. So I’m at a loss on how to get Linux installed. I’ve updated all my drivers and verified my .iso files before trying to install from them. When booting from the USB drives everything functions normally.

Should we assume you’re installing arch based on your username?

I don’t recognize this output, but first thing I notice is that there are no spaces in sfdisk--wipe=always/dev/nvme1n1.

You seem to be passing it a partition instead of a disk, which is likely your issue.

sfdisk ... /dev/nvme1 for example would likely work, but you’re trying to pass it nvme1n1, you can however pass it in a partition number with the -N but that assumes you know what you’re doing.

2 Likes

I have a BCM43xx card and despite downloading Debian 11 (Bullseye)'s community build with proprietary software, it doesn’t come with Broadcom drivers. Using Ethernet is not an option.

Solus, Ubuntu, Zorin OS, PopOS!, Lubuntu, Manjaro, Fedora and (of course) Debian, none of them come with Broadcom drivers included. I used to use this old TP-Link USB WiFi card and despite it being unstable (for reasons I do not fully understand), I was able to use it to bootstrap my system to have Broadcom drivers installed.

That USB WiFI card has crapped out and (with Debian) I used to manage by installing the OS in a virtual machine and then using sudo apt-get install --download-only to get all the packages I need (I didn’t do this with a Live ISO because its overall package state differed from the installed version and I wanted to remove uncertainty).

I thought once I’m done with Debian, I could use said packages with any Debian-derivative and because of that, I trashed my Zorin OS dual boot that I’m using for Docker cause I use a Ryzentosh as my daily driver.

Any distro that comes with proprietary drivers (like Broadcom’s) and/or build-essentials (along with kernel headers and other stuff needed to build DKMS packages) installed from the get-go?

2 posts were merged into an existing topic: Figuring out how to add space to fedora partition

I upgraded to fedora 35. My DE got switched to Gnome. How do I re-enable cinnamon?
sudo dnf grouplist -v shows cinnamon as being installed, but not available. Am I SOL until cinnamon gets an update for Fedora 35 or did I forget to enable something?

The gdm login screen shows no options to switch desktops.

Available Environment Groups:
   Fedora Custom Operating System (custom-environment)
   Minimal Install (minimal-environment)
   Fedora Server Edition (server-product-environment)
   Fedora Workstation (workstation-product-environment)
   Fedora Cloud Server (cloud-server-environment)
   KDE Plasma Workspaces (kde-desktop-environment)
   Xfce Desktop (xfce-desktop-environment)
   LXDE Desktop (lxde-desktop-environment)
   LXQt Desktop (lxqt-desktop-environment)
   MATE Desktop (mate-desktop-environment)
   Sugar Desktop Environment (sugar-desktop-environment)
   Deepin Desktop (deepin-desktop-environment)
   Development and Creative Workstation (developer-workstation-environment)
   Web Server (web-server-environment)
   Infrastructure Server (infrastructure-server-environment)
   Basic Desktop (basic-desktop-environment)
   i3 desktop (i3-desktop-environment)
Installed Environment Groups:
   Cinnamon Desktop (cinnamon-desktop-environment)
Installed Groups:
   Container Management (container-management)
   LibreOffice (libreoffice)
   GNOME Desktop Environment (gnome-desktop)
   Fonts (fonts)
   Hardware Support (hardware-support)

installing switch desk and running switchdesk cinnamon, switchdesk cinnamon-desktop, and switchdesk cinnamon-desktop-environment
yields the following

Unknown desktop requested: cinnamon
Unknown desktop requested: cinnamon-desktop
Unknown desktop requested: cinnamon-desktop-environment

Have you logged out and checked the gear wheel :


The option to log into Cinnamon should be there

1 Like

seems I didn’t look hard enough. Probably doesn’t help that my login screen defaults to my vertical monitor so I have to turn my head sideways every time to read it

anyone know why the performance option (power setting plans) is missing in F35 on AMD CPU PCs?
intel PC
image

my AMD pc…
image

@wendell
have you noticed this too?

1 Like

There are 3 different power profiles, a “balanced” default mode, a “power-saver” mode, as well as a “performance” mode. The first 2 of those are available on every system. The “performance” mode is only available on select systems and is implemented by different “drivers” based on the system or systems it targets.

https://fedoraproject.org/wiki/Changes/Power_Profiles_Daemon

1 Like

oh ok so intel only

I don’t think it’s Intel or AMD specific. Likely it’s dependent on the system manufacturer providing a “Performance” power preset in UEFI BIOS and the power-profiles-daemon having a way to toggle that setting on or off.

doubt it has anything to do with UEFI …

my intel Z370M MB hasnt had a BIOS update since 2019 (has performance option)

but my x570 MB had one about 6 months ago… (no performance option)

If you’d like to read more, there is some documentation on the power-profile-daemon gitlab repo that’ll explain it better than I can.

1 Like

From my ~/.bashrc I don’t use gnome, so I don’t have that UI to check, but I’m on an AMD system and I can def change between at least the CPU governors. I’m not sure if that performance option actually changes anything more than this.

1 Like

I know it’s been a while, but I ended up changing the network device for the VMs to the Realtek option and that seems to have solved the issue. It’s been almost 2 weeks with no issues so far.

Edit: Related to Proxmox network device hang issue I’ve been having.

Is there a way to extend /etc/services with some custom service definitions? I hesitate to edit it manually to avoid collisions with updates. I’m thinking something like /etc/services.d or /usr/local/etc/services where I could override or add to definitions in /etc/services. Possible there is no accepted way of doing this, but figured I’d ask.