You are not logged in.
Mirage is very light and good
$ apt show mirage
Package: mirage
Version: 0.11.1-1+b6
The version number is telling.
$ mirage
(mirage:13910): Gtk-CRITICAL **: 17:26:25.051: gtk_buildable_add_child: assertion 'iface->add_child != NULL' failed
(mirage:13910): Gtk-CRITICAL **: 17:26:25.085: gtk_buildable_add_child: assertion 'iface->add_child != NULL' failed
One may want to install the "DevelopmentSnapshot" of wxMaxima, because the "stable versions" of wxMaxima (available in Devuan/Debian repositories) are so buggy that they are impossible to use.
The "DevelopmentSnapshot" of wxMaxima seems to work on Devuan 5 Daedalus. It looks usable, although, of course, there still a lot of bugs.
The package of wxMaxima (DevelopmentSnapshot) is available in Arch Linux AUR repository:
_https://aur.archlinux.org/packages/wxmaxima
_https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=wxmaxima
Therefore, it is not difficult to build a Debian package of the "DevelopmentSnapshot".
$ inxi -b | grep Host -A1
Host: devuan Kernel: 6.1.0-33-amd64 arch: x86_64 bits: 64 Desktop: MATE
v: 1.26.0 Distro: Devuan GNU/Linux 5 (daedalus)
Install "build-essential", build dependencies, etc.:
sudo apt install build-essential debhelper
sudo apt install libwxgtk3.2-dev xvfb netcat-openbsd xauth desktop-file-utils appstream-util libwxgtk-webview3.2-dev libwebkit2gtk-4.0-dev
sudo apt install fakeroot dpkg-repack git sed tree maxima appstream pandoc po4a imagemagick doxygen texlive-xetex
man CMake
_https://cmake.org/cmake/help/latest/manual/cmake.1.html
Creating debian packages — CMake
_https://karthikkalyanaraman.medium.com/creating-debian-packages-cmake-e519a0186e87
Download portable CMake v4.0.1:
https://github.com/Kitware/CMake/releases/download/v4.0.1/cmake-4.0.1-linux-x86_64.tar.gz
The manual for portable CMake is here:
https://dev1galaxy.org/viewtopic.php?id=7161
Clone the source from git:
mkdir Build_wxmaxima_25.01.0_GIT
cd Build_wxmaxima_25.01.0_GIT
git clone https://github.com/wxmaxima-developers/wxmaxima.git
$ ls
wxmaxima
$ cmake --version
cmake version 3.25.1
export PATH="$HOME/.CTools/cmake-4.0.1/bin:$PATH"
$ cmake --version
cmake version 4.0.1
1. Generate the Project Buildsystem
cmake \
-S wxmaxima \
-B build \
-DCMAKE_BUILD_TYPE=None \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_CXX_STANDARD=14 \
-DCMAKE_CXX_COMPILER=g++ \
-DwxWidgets_CONFIG_EXECUTABLE=/usr/bin/wx-config \
-Wno-dev
$ ls -1
build
wxmaxima
2. Build the Project
cmake --build build
3. Install wxMaxima to a sub-folder "WXMDIR"
DESTDIR="WXMDIR" cmake --install build
$ ls -1
build
wxmaxima
WXMDIR
$ du -sh WXMDIR
16M WXMDIR
$ du -s WXMDIR
15752 WXMDIR
$ tree -a -L 3 WXMDIR
WXMDIR
└── usr
├── bin
│ └── wxmaxima
└── share
├── applications
├── bash-completion
├── doc
├── icons
├── locale
├── man
├── metainfo
├── mime
├── pixmaps
└── wxMaxima
Open fakeroot console:
$ fakeroot
# mkdir -pv ./WXMDIR/DEBIAN
mkdir: created directory './WXMDIR/DEBIAN'
Create "DEBIAN/control":
# nano ./WXMDIR/DEBIAN/control
# cat ./WXMDIR/DEBIAN/control
Package: wxmaxima
Version: 25.01.0-1
Architecture: amd64
Maintainer: $USER
Installed-Size: 16M (≈15752)
Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 11), libwxbase3.2-1 (>= 3.2.2+dfsg), libwxgtk-webview3.2-1 (>= 3.2.2+dfsg), libwxgtk3.2-1 (>= 3.2.1+dfsg-2), maxima
Recommends: maxima-doc, fonts-inter, fonts-inter-variable
Suggests: fonts-jsmath, texlive-latex-extra, ibus-gtk3
Section: math
Priority: optional
Homepage: http://wxmaxima-developers.github.io/wxmaxima/
Description: GUI for the computer algebra system Maxima
wxMaxima is a graphical user interface for the computer algebra system
Maxima. It eases the use of Maxima by making most of its commands available
through a menu system and by providing input dialogs for commands that
require more than one argument. It also implements its own display engine
that outputs mathematical symbols directly instead of depicting them with
ASCII characters.
.
wxMaxima also features 2D and 3D inline plots, simple animations, mixing of
text and mathematical calculations to create documents, exporting of input
and output to TeX, and a browser for Maxima's manual including command index
and full text searching.
Source: https://github.com/wxMaxima-developers/wxmaxima
Generate DEBIAN/md5sums
# cd WXMDIR
# find . -type f -not -path "./DEBIAN/*" -exec md5sum {} + | sort -k 2 | sed 's/\.\/\(.*\)/\1/' > DEBIAN/md5sums
# ls -1 DEBIAN
control
md5sums
# cd ../
Build the Debian package:
# dpkg-deb -b WXMDIR wxmaxima_25.01.0-1-devuan5_amd64-git.deb
dpkg-deb: building package 'wxmaxima' in 'wxmaxima_25.01.0-1-devuan5_amd64-git.deb'.
# ls *.deb
wxmaxima_25.01.0-1-devuan5_amd64-git.deb
Exit fakeroot console
# exit
exit
Check the "info":
$ dpkg --info *git.deb
new Debian package, version 2.0.
size 4236464 bytes: control archive=928 bytes.
1249 bytes, 24 lines control
Package: wxmaxima
Version: 25.01.0-1
Architecture: amd64
...
sudo dpkg -i wxmaxima_25.01.0-1-devuan5_amd64-git.deb
$ wxmaxima --version
wxMaxima 25.01.0-DevelopmentSnapshot (Git version: 8de10d448)
$ apt info wxmaxima
Package: wxmaxima
Version: 25.01.0-1
Status: install ok installed
...
dpkg-repack
DESCRIPTION dpkg-repack creates a .deb file out of a Debian package that has already been installed on your system. If any changes have been made to the package while it was unpacked (e.g. conffiles files in /etc modified), the new package will inherit the changes. (There are exceptions to this, including changes to configuration files that are not conffiles, including those managed by ucf(1).) This utility can make it easy to copy packages from one computer to another, or to recreate packages that are installed on your system, but no longer available elsewhere. Note: dpkg-repack will place the created package in the current directory.
It can create a Debian package from the installed one (e.g. wxMaxima)
$ dpkg -l | grep wxmaxima
ii wxmaxima 25.01.0-1 amd64 GUI for the computer algebra system Maxima
$ fakeroot -u dpkg-repack wxmaxima
dpkg-deb: building package 'wxmaxima' in './wxmaxima_25.01.0-1_amd64.deb'.
$ ls
wxmaxima_25.01.0-1_amd64.deb
Extract "control-information" from the package:
$ dpkg-deb -e wxmaxima_25.01.0-1_amd64.deb
$ ls -1
DEBIAN
wxmaxima_25.01.0-1_amd64.deb
$ tree -a DEBIAN
DEBIAN
├── control
└── md5sums
See also:
Recreate Debian Binary Packages That Are Already Installed On A System
_https://ostechnix.com/recreate-debian-binary-packages-that-are-already-installed-on-a-system/
Creating debian packages — CMake
_https://karthikkalyanaraman.medium.com/creating-debian-packages-cmake-e519a0186e87
There is a belief that knowledge liberates from ignorance. Perhaps, wxMaxima may help semi-deaf Linux users to understand something about resampling and the Gibbs phenomenon. Although, of course, mathematics might be a problem, because pulseaudio is likely to damage the brain in a severe and irreversible manner. Hearing loss and dementia are doomed to follow.
Hearing Loss and Dementia | The Audiology Center
_https://www.myaudiologycenter.com/untreated-hearing-loss-risks-and-dementia/
_https://en.wikipedia.org/wiki/Maxima_(software)
Maxima is a powerful software package for performing computer algebra calculations in mathematics and the physical sciences._https://en.wikipedia.org/wiki/Maxima_(software)#Interfaces
wxMaxima is high-quality graphical front-end using the wxWidgets framework. wxMaxima provides a cell structure similar to the Mathematica notebook.[Wikibooks] Maxima
_https://en.wikibooks.org/wiki/MaximaMaxima by Example
_https://home.csulb.edu/~woollett/mbe.html
_https://home.csulb.edu/~woollett/index.html
$ inxi -b | grep Host -A1
Host: devuan Kernel: 6.1.0-33-amd64 arch: x86_64 bits: 64 Desktop: MATE
v: 1.26.0 Distro: Devuan GNU/Linux 5 (daedalus)
Source Package: wxmaxima (24.02.1-1)
_https://packages.debian.org/source/testing/wxmaxima
Download wxMaxima:
wxmaxima_24.02.1-1.dsc
wxmaxima_24.02.1.orig.tar.gz
wxmaxima_24.02.1.orig.tar.gz.asc
wxmaxima_24.02.1-1.debian.tar.xz
Source: wxmaxima
Build-Depends: debhelper-compat (= 13), cmake (>= 3.4) | cmake3, libwxgtk3.2-dev, xvfb, netcat-openbsd, xauth, desktop-file-utils, appstream-util, libwxgtk-webview3.2-dev
To build wxmaxima (24.02.1-1), we need cmake (>= 3.4).
$ cmake --version
cmake version 3.25.1
CMake v4.0.1
https://github.com/Kitware/CMake/releases/tag/v4.0.1
Download portable CMake v4.0.1:
https://github.com/Kitware/CMake/releases/download/v4.0.1/cmake-4.0.1-linux-x86_64.tar.gz
$ ls
cmake-4.0.1-linux-x86_64.tar.gz
mkdir -v $HOME/.CTools
tar -zxvf cmake*.tar.gz -C $HOME/.CTools
$ ls $HOME/.CTools
cmake-4.0.1-linux-x86_64
mv $HOME/.CTools/cmake-4.0.1-linux-x86_64 $HOME/.CTools/cmake-4.0.1
$ ls $HOME/.CTools/
cmake-4.0.1
$ ls -1 $HOME/.CTools/cmake-4.0.1
bin
doc
man
share
You can open a file manager in the cmake folder and investigate the content
caja $HOME/.CTools/cmake-4.0.1
How to use portable CMake v4.0.1
export PATH="$HOME/.CTools/cmake-4.0.1/bin:$PATH"
$ cmake --version cmake version 4.0.1
Install compilers, build dependencies, etc.:
sudo apt install build-essential debhelper libwxgtk3.2-dev xvfb netcat-openbsd xauth desktop-file-utils appstream-util libwxgtk-webview3.2-dev
You may want to install devscripts and a sort of AI assistant:
sudo apt install devscripts command-not-found
sudo update-command-not-found
EXAMPLES:
$ mmk-build-deps
Command 'mmk-build-deps' not found, did you mean:
command 'mk-build-deps' from deb devscripts
Try: sudo apt install <deb name>
$ gbp
Command 'gbp' not found, but can be installed with:
sudo apt install git-buildpackage
Now we can build wxMaxima.
$ ls -1
wxmaxima_24.02.1-1.debian.tar.xz
wxmaxima_24.02.1-1.dsc
wxmaxima_24.02.1.orig.tar.gz
wxmaxima_24.02.1.orig.tar.gz.asc
Unpack the source:
dpkg-source -x *.dsc
$ ls -1
wxmaxima-24.02.1
wxmaxima_24.02.1-1.debian.tar.xz
wxmaxima_24.02.1-1.dsc
wxmaxima_24.02.1.orig.tar.gz
wxmaxima_24.02.1.orig.tar.gz.asc
Change to the source directory:
cd wxmaxima-24.02.1
$ cmake --version
cmake version 3.25.1
export PATH="$HOME/.CTools/cmake-4.0.1/bin:$PATH"
$ cmake --version
cmake version 4.0.1
We have all the dependencies needed to build wxMaxima.
But, formally, the "Build-Depends" are not satisfied.
Therefore, we have to use -d flag to override the default checking procedure.
Verify whether the terminal prompt is in the source directory:
$ pwd
/home/.../Builds/Build_wxmaxima_24.02.1-1/wxmaxima-24.02.1
Build wxMaxima (use -d flag to override):
$ dpkg-buildpackage -us -uc -b -d
...
dpkg-deb: building package 'wxmaxima-dbgsym' in '../wxmaxima-dbgsym_24.02.1-1_amd64.deb'.
dpkg-deb: building package 'wxmaxima' in '../wxmaxima_24.02.1-1_amd64.deb'.
dpkg-genbuildinfo --build=binary -O../wxmaxima_24.02.1-1_amd64.buildinfo
dpkg-genchanges --build=binary -O../wxmaxima_24.02.1-1_amd64.changes
dpkg-genchanges: info: binary-only upload (no source code included)
dpkg-source --after-build .
dpkg-buildpackage: info: binary-only upload (no source included)
$ cd ../
[$ ls -1 *.deb
wxmaxima_24.02.1-1_amd64.deb
wxmaxima-dbgsym_24.02.1-1_amd64.deb
$ dpkg-deb --info wxmaxima_24.02.1-1_amd64.deb | grep Package: -A11
Package: wxmaxima
Version: 24.02.1-1
Architecture: amd64
Maintainer: Gunter Königsmann <wxmaxima@physikbuch.de>
Installed-Size: 14144
Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 11), libwxbase3.2-1 (>= 3.2.2+dfsg), libwxgtk-webview3.2-1 (>= 3.2.2+dfsg), libwxgtk3.2-1 (>= 3.2.1+dfsg-2), maxima
Recommends: maxima-doc
Suggests: fonts-jsmath, texlive-latex-extra, ibus-gtk3
Section: math
Priority: optional
Homepage: http://wxmaxima-developers.github.io/wxmaxima/
Description: GUI for the computer algebra system Maxima
Install wxMaxima
sudo dpkg -i wxmaxima_24.02.1-1_amd64.deb
$ apt show wxmaxima | grep Package: -A2
Package: wxmaxima
Version: 24.02.1-1
Status: install ok installed
$ whereis wxmaxima
wxmaxima: /usr/bin/wxmaxima /usr/share/man/man1/wxmaxima.1.gz
$ wxmaxima --version
wxMaxima 24.02.1
You may want to install gnuplot
sudo apt install gnuplot
[Linux Magazine]
LibreOffice vs OpenOffice
The Clear Choice
By Bruce ByfieldWhile LibreOffice and OpenOffice have a shared past, LibreOffice outstrips OpenOffice in contributors, code commits, and features.
A search for comparisons of LibreOffice and Apache OpenOffice returns over 8.3 million results. That number comes as no surprise, given that LibreOffice and OpenOffice are the best-known open source office suites and share a common past. However, what is surprising is how shallow many of those comparisons are. Many offer only a superficial glimpse at either office suite from the viewpoint of an unsophisticated and undemanding user. Often, the comparisons are obsolete. Even more importantly, many comparisons strive for a false sense of objectivity by declaring that any differences are minor. However, by every possible standard, LibreOffice outshines OpenOffice and shows OpenOffice to be outdated. To pretend otherwise is a distortion of the truth.
_https://www.linux-magazine.com/Online/Features/LibreOffice-vs-OpenOffice
There is a standard method with which to modify Debian packages.
We can use it to remove strange dependencies of strawberry_1.2.9-bookworm_amd64.deb (github)
_https://github.com/strawberrymusicplayer/strawberry/releases/tag/1.2.9
_https://github.com/strawberrymusicplayer/strawberry
Strawberry is a music player and music collection organizer. It is a fork of Clementine released in 2018 aimed at music collectors and audiophiles.
It is aimed at audiophiles in the sense, perhaps, that it depends on gstreamer1.0-pulseaudio. There is a common belief that Linux users, in general, and Linux audiophiles, in particular, tend to be semi-deaf and semi-blind, and, therefore, they want to use pulseaudio and all sorts of equalizers, amplifiers, and DACs to enhance high frequencies.
Why are high frequency sounds typically the first to go in hearing loss?
https://www.newyorkhearingdoctors.com/why-are-high-frequency-sounds-typically-the-first-to-go-in-hearing-loss/
Download: strawberry_1.2.9-bookworm_amd64.deb (github)
https://github.com/strawberrymusicplayer/strawberry/releases/download/1.2.9/strawberry_1.2.9-bookworm_amd64.deb
$ ls
strawberry_1.2.9-bookworm_amd64.deb
$ dpkg --info *.deb | grep Depends -B5
Package: strawberry
Version: 1.2.9-bookworm
Architecture: amd64
Maintainer: Jonas Kvinge <jonas@jkvinge.net>
Installed-Size: 13869
Depends: libasound2 (>= 1.0.16), libc6 (>= 2.34), libcdio19 (>= 2.1.0), libchromaprint1 (>= 1.3.2), libebur128-1 (>= 1.1.0), libfftw3-double3 (>= 3.3.10), libgcc-s1 (>= 3.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.51.0), libgpod4 (>= 0.7.0), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.6.0), libicu72 (>= 72.1~rc-1~), libmtp9 (>= 1.1.0), libpulse0 (>= 0.99.1), libqt6concurrent6 (>= 6.1.2), libqt6core6 (>= 6.4.0), libqt6dbus6 (>= 6.4.0), libqt6gui6 (>= 6.3.0), libqt6network6 (>= 6.4.0), libqt6sql6 (>= 6.1.2), libqt6widgets6 (>= 6.3.0), libsqlite3-0 (>= 3.6.11), libstdc++6 (>= 11), libtag1v5 (>= 1.11), libx11-6, libqt6sql6-sqlite, qt6-qpa-plugins, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-alsa, gstreamer1.0-pulseaudio
gstreamer1.0-alsa, gstreamer1.0-pulseaudio are, of course, pseudo-dependencies. They are not real dependencies in the sense that they can be safely removed.
Strawberry player is simply a GUI for GStreamer, and nothing more. Regardless of what you think GStreamer is, it does not depend on its plugins. It should be obvious that GStreamer plugins depend on GStreamer and not other way round.
There is a reason, of course, why the GStreamer package is split into "libgstreamer" and "plugins". If you have not been initiated into the secret knowledge of GStreamer, you may try to read its documentation
_https://gstreamer.freedesktop.org/documentation/installing/on-linux.html
ALSA users may want to install gstreamer1.0-alsa.
OSS4 users may want to remove gstreamer1.0-alsa, in order to use GStreamer based media players (e.g. Totem, Parole, and the like) with OSS4.
NOTE: ALSA users are recommended to install "gstreamer1.0-alsa". Otherwise, GStreamer may use "openalsink" with ALSA.
_https://gstreamer.freedesktop.org/documentation/openal/openalsink.html
It is not difficult to correct dependencies of a Debian package.
Install fakeroot
sudo apt install fakeroot
$ ls
strawberry_1.2.9-bookworm_amd64.deb
Open fakeroot console and execute mkdir debdir:
$ fakeroot
# mkdir debdir
# ls -1
debdir
strawberry_1.2.9-bookworm_amd64.deb
Unpack the deb package to debdir
# dpkg-deb -R *.deb debdir
# ls -1 ./debdir
DEBIAN
usr
# ls -1 ./debdir/DEBIAN
control
md5sums
# file ./debdir/DEBIAN/control
./debdir/DEBIAN/control: ASCII text, with very long lines (784)
Remove unwanted dependencies with a text editor:
# nano ./debdir/DEBIAN/control
Unable to create directory /root/.local/share/nano/: Permission denied
It is required for saving/loading search history or cursor positions.
You may have noticed that nano is complaining about missing root privileges.
This is because "fakeroot" is not a real "root", as the name suggests.
Such complaints can be safely ignored.
# cat ./debdir/DEBIAN/control | grep Depends -B5 -A1
Package: strawberry
Version: 1.2.9-bookworm
Architecture: amd64
Maintainer: Jonas Kvinge <jonas@jkvinge.net>
Installed-Size: 13869
Depends: libasound2 (>= 1.0.16), libc6 (>= 2.34), libcdio19 (>= 2.1.0), libchromaprint1 (>= 1.3.2), libebur128-1 (>= 1.1.0), libfftw3-double3 (>= 3.3.10), libgcc-s1 (>= 3.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.51.0), libgpod4 (>= 0.7.0), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.6.0), libicu72 (>= 72.1~rc-1~), libmtp9 (>= 1.1.0), libpulse0 (>= 0.99.1), libqt6concurrent6 (>= 6.1.2), libqt6core6 (>= 6.4.0), libqt6dbus6 (>= 6.4.0), libqt6gui6 (>= 6.3.0), libqt6network6 (>= 6.4.0), libqt6sql6 (>= 6.1.2), libqt6widgets6 (>= 6.3.0), libsqlite3-0 (>= 3.6.11), libstdc++6 (>= 11), libtag1v5 (>= 1.11), libx11-6, libqt6sql6-sqlite, qt6-qpa-plugins, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good
Suggests: gstreamer1.0-alsa, gstreamer1.0-pulseaudio
Build the package:
# dpkg-deb -b debdir strawberry_1.2.9-devuan_amd64-fixed.deb
dpkg-deb: building package 'strawberry' in 'strawberry_1.2.9-devuan_amd64-fixed.deb'.
# ls -1 *.deb
strawberry_1.2.9-bookworm_amd64.deb
strawberry_1.2.9-devuan_amd64-fixed.deb
Exit fakeroot console
# exit
exit
Check dependencies
$ dpkg --info *fixed.deb | grep Depends -B5 -A1
Package: strawberry
Version: 1.2.9-bookworm
Architecture: amd64
Maintainer: Jonas Kvinge <jonas@jkvinge.net>
Installed-Size: 13869
Depends: libasound2 (>= 1.0.16), libc6 (>= 2.34), libcdio19 (>= 2.1.0), libchromaprint1 (>= 1.3.2), libebur128-1 (>= 1.1.0), libfftw3-double3 (>= 3.3.10), libgcc-s1 (>= 3.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.51.0), libgpod4 (>= 0.7.0), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.6.0), libicu72 (>= 72.1~rc-1~), libmtp9 (>= 1.1.0), libpulse0 (>= 0.99.1), libqt6concurrent6 (>= 6.1.2), libqt6core6 (>= 6.4.0), libqt6dbus6 (>= 6.4.0), libqt6gui6 (>= 6.3.0), libqt6network6 (>= 6.4.0), libqt6sql6 (>= 6.1.2), libqt6widgets6 (>= 6.3.0), libsqlite3-0 (>= 3.6.11), libstdc++6 (>= 11), libtag1v5 (>= 1.11), libx11-6, libqt6sql6-sqlite, qt6-qpa-plugins, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good
Suggests: gstreamer1.0-alsa, gstreamer1.0-pulseaudio
Install Strawberry
sudo dpkg -i strawberry_1.2.9-devuan_amd64-fixed.deb
$ strawberry --version
Strawberry 1.2.9
$ apt info strawberry | grep Package: -A2
Package: strawberry
Version: 1.2.9-bookworm
Status: install ok installed
You can also rename a Debian package, change version, add scripts to debdir/usr/bin, and so on.
Notice that it is immoral (and illegal) to insert malware into Debian packages.
To debug Strawberry, you can simply start it from terminal.
EXAMPLES:
Strawberry is using "openalsink" with ALSA:
$ strawberry
...
22:24:48.921 DEBUG Player:776 Playing song "" QUrl("file:///.../audio/audio_test_48kHz_16bit.flac") position 0
22:24:48.921 DEBUG GstEnginePipeline:459 Using "playbin" for pipeline
22:24:48.974 DEBUG GstEnginePipeline:797 Setting buffer duration: 4000000000 low watermark: 0.33 high watermark: 0.99
22:24:48.976 DEBUG GstEnginePipeline:480 "openalsink" does not have volume, using own volume.
...
[fftrate ALSA plugin output]
Input: 44100 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1764
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates: 44100 --> 48000 (J: 0.00%, T: FFT, W: Vorbis)
Ok.
Input: 48000 Hz, 2 ch, 's32_le' (0xa): dummy = 0, period = 1920
Output: 48000 Hz, 2 ch, 's16_le' (0x2): dummy = 0, period = 1920
Rates: 48000 --> 48000 (J: 0.00%, T: None, W: Planar)
Ok.
Strawberry is using "oss4sink" with OSS4:
$ strawberry
...
22:16:51.126 DEBUG Player:776 Playing song "" QUrl("file:///.../audio/audio_test_48kHz_16bit.flac") position 0
22:16:51.126 DEBUG GstEnginePipeline:459 Using "playbin" for pipeline
22:16:51.250 DEBUG GstEnginePipeline:626 "oss4sink" has volume, enabling volume synchronization.
[AI-Assisted Answer] This warning indicates that ICC (International Color Consortium) support is disabled, which can lead to incorrect color rendering in applications that rely on color management.
The patch does not solve the problem, but it removes warnings:
0002-Only-warn-once-about-the-missing-ICC-support.patch
_https://sources.debian.org/patches/mupdf/1.25.1%2Bds1-5/0002-Only-warn-once-about-the-missing-ICC-support.patch/
Since pulseaudio users are usually semi-deaf and semi-blind, they may try to ignore such warnings, even though they are "repeated 18 times".
Patching an Existing Debian Package [using quilt]
_https://www.guyrutenberg.com/2017/10/06/patching-an-existing-debian-package/
See also:
How to rebuild audacious-plugins
_https://dev1galaxy.org/viewtopic.php?id=6686
warning: ICC support is not available
Why not google it?
https://www.google.com/search?q=warning:+ICC+support+is+not+available
There is a patch (a sort of workaround):
https://sources.debian.org/patches/mupdf/1.25.1%2Bds1-5/0002-Only-warn-once-about-the-missing-ICC-support.patch/
UsingQuilt
_https://wiki.debian.org/UsingQuilt
Using quilt in Debian source packages.
This page is aimed at people who want to make some changes to a Debian source package which is already using quilt.
The intention is not to explain quilt, but to offer some Debian specific tips
What is really cool about Arch Linux packaging is patching on the fly with sed.
_https://en.wikipedia.org/wiki/Sed
Ordinary patching techniques are also used, of course, in Arch PKGBUILDs, but
the advanced users tend to patch sources on the fly with sed (if possible).
[ArchWiki] Creating patches
Note: If you only need to change one or two lines, you might want to use sed instead.
_https://wiki.archlinux.org/title/Patching_packages
NOTE: This patching technique (sed) is also used in Debian packages (but rather seldom).
Usually, it is done with quilt _https://wiki.debian.org/UsingQuilt
The package is available in Arch Linux AUR repository:
Package Details: libasound2-plugin-fftrate 1.6.3-1
_https://aur.archlinux.org/packages/libasound2-plugin-fftrate
The PKGBUILD is a masterpiece. The source code is patched on the fly with sed.
What is more, the problem was fixed with a one-line Linux command:
prepare() { cd "$srcdir/$pkgbase-$pkgver" find . -type f \( -name "*.cpp" -o -name "*.c" -o -name "*.h" \) -exec sed -i -e 's/min(/MIN(/g' -e 's/max(/MAX(/g' {} + }
_https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=libasound2-plugin-fftrate
NOTE: If you do not understand the magic command, try to ask explainshell.com:
_https://explainshell.com/explain?cmd=find+.+-type+f+%5C%28+-name+%22*.cpp%22+-o+-name+%22*.c%22+-o+-name+%22*.h%22+%5C%29+-exec+sed+-i+-e+%27s%2Fmin%28%2FMIN%28%2Fg%27+-e+%27s%2Fmax%28%2FMAX%28%2Fg%27+%7B%7D+%2B+ ... -exec command {} + This variant of the -exec action runs the specified command on the selected files, but the command line is built by appending each selected file name at the end; the total number of invocations of the command will be much less than the number of matched files. The command line is built in much the same way that xargs builds its command lines. Only one instance of `{}' is allowed within the command. The command is executed in the starting directory.
It is simply replacing min( with MIN( and max( with MAX( in "*.cpp", "*.c", and "*.h" files.
TEST
mkdir petrov-fftrate cd petrov-fftrate git clone https://github.com/PetrovSE/fftrate.git cd fftrate
$ grep -Ri "Max(" . | grep ".cpp" ./src/apps/pcm_info/Main.cpp: nHelpLayer = max( nHelpLayer, 2 ); ./src/apps/pcm_info/Main.cpp: nHelpLayer = max( nHelpLayer, 2 ); ./src/apps/pcm_info/Main.cpp: nHelpLayer = max( nHelpLayer, 3 ); ./src/apps/pcm_stretch/Main.cpp: nHelpLayer = max( nHelpLayer, 2 ); ./src/apps/pcm_stretch/Main.cpp: nHelpLayer = max( nHelpLayer, 2 ); ./src/apps/pcm_stretch/Main.cpp: nHelpLayer = max( nHelpLayer, 3 ); ./src/apps/pcm_mse/Main.cpp: nHelpLayer = max( nHelpLayer, 2 ); ./src/apps/pcm_mse/Main.cpp: nHelpLayer = max( nHelpLayer, 2 ); ./src/apps/pcm_mse/Main.cpp: nHelpLayer = max( nHelpLayer, 3 ); ./src/apps/pcm_mse/Main.cpp: nBits = max( nBits, (WORD)mmsys_format_info( pFile->pFormat, 'b' ) ); ./src/apps/pcm_conv/Main.cpp: nHelpLayer = max( nHelpLayer, 2 ); ./src/apps/pcm_conv/Main.cpp: nHelpLayer = max( nHelpLayer, 2 ); ./src/apps/pcm_conv/Main.cpp: nHelpLayer = max( nHelpLayer, 3 );
$ find . -type f \( -name "*.cpp" \) -exec sed -e 's/max(/MAX(/g' {} + | grep "MAX(" nHelpLayer = MAX( nHelpLayer, 2 ); nHelpLayer = MAX( nHelpLayer, 2 ); nHelpLayer = MAX( nHelpLayer, 3 ); nHelpLayer = MAX( nHelpLayer, 2 ); nHelpLayer = MAX( nHelpLayer, 2 ); nHelpLayer = MAX( nHelpLayer, 3 ); nHelpLayer = MAX( nHelpLayer, 2 ); nHelpLayer = MAX( nHelpLayer, 2 ); nHelpLayer = MAX( nHelpLayer, 3 ); nBits = MAX( nBits, (WORD)mmsys_format_info( pFile->pFormat, 'b' ) ); nHelpLayer = MAX( nHelpLayer, 2 ); nHelpLayer = MAX( nHelpLayer, 2 ); nHelpLayer = MAX( nHelpLayer, 3 );
To apply the magic patch on Devuan, you have to download the source code from git,
then open terminal in the source directory and execute the magic command:
$ cd fftrate
$ find . -type f \( -name "*.cpp" -o -name "*.c" -o -name "*.h" \) -exec sed -i -e 's/min(/MIN(/g' -e 's/max(/MAX(/g' {} +
Then you can compile the fftrate plugin with gcc-12 (and, perhaps, newer versions of GCC).
It works without problems.
$ gcc --version
gcc (Debian 12.2.0-14) 12.2.0
$ uname -a
Linux devuan 6.1.0-32-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.129-1 (2025-03-06) x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Devuan
Description: Devuan GNU/Linux 5 (daedalus)
Release: 5
Codename: daedalus
sudo apt install inxi
man inxi
$ inxi -b | grep Host -A1
Host: devuan Kernel: 6.1.0-32-amd64 arch: x86_64 bits: 64 Desktop: MATE
v: 1.26.0 Distro: Devuan GNU/Linux 5 (daedalus)
$ inxi -A
Audio:
Device-1: Intel 7 Series/C216 Family High Definition Audio
driver: oss_hdaudio
Device-2: Griffin iMic type: USB driver: snd-usb-audio
API: ALSA v: k6.1.0-32-amd64 status: kernel-api
API: OSS v: N/A status: active
Install "build-essential", etc.
sudo apt update
sudo apt-get install build-essential git debhelper
sudo apt install libasound2-dev libasound2-plugins swh-plugins
Download the source code:
mkdir petrov-fftrate
cd petrov-fftrate
git clone https://github.com/PetrovSE/fftrate.git
Check the current "recommended compat" for debhelper:
$ man debhelper-compat-upgrade-checklist | grep "recommended mode"
v13 This is the recommended mode of operation.
Change compat to "13":
$ nano ./fftrate/packets/debian/compat
$ cat ./fftrate/packets/debian/compat
13
Open terminal in the source directory:
$ ls
fftrate
$ cd fftrate
Apply the magic patch:
find . -type f \( -name "*.cpp" -o -name "*.c" -o -name "*.h" \) -exec sed -i -e 's/min(/MIN(/g' -e 's/max(/MAX(/g' {} +
Now you can compile the fftrate plugin with gcc-12 (and, perhaps, newer versions of GCC).
$ cd packets
$ ls -1
debian
etc
Makefile
mk_dpkg
Build executables:
make -j1
Make Debian packages:
./mk_dpkg
$ cd ../
$ ls | grep .deb
alsa-config-utils_1.6.3_amd64.deb
libasound2-plugin-fftrate_1.6.3_amd64.deb
pcm-utils_1.6.3_amd64.deb
Install the packages:
sudo dpkg -i alsa-config-utils_1.6.3_amd64.deb libasound2-plugin-fftrate_1.6.3_amd64.deb pcm-utils_1.6.3_amd64.deb
Dependencies:
libasound2
libasound2-plugins
swh-plugins
Notice that the Arch package depends on fftw library (make)
_https://aur.archlinux.org/packages/libasound2-plugin-fftrate
It should already be installed (automatic, as a dependency):
$ apt search libfftw3-dev
Sorting... Done
Full Text Search... Done
libfftw3-dev/stable,now 3.3.10-1 amd64 [installed,automatic]
Library for computing Fast Fourier Transforms - development
libfftw3-double3/stable,now 3.3.10-1 amd64 [installed,automatic]
Library for computing Fast Fourier Transforms - Double precision
libfftw3-long3/stable,now 3.3.10-1 amd64 [installed,automatic]
Library for computing Fast Fourier Transforms - Long precision
libfftw3-quad3/stable,now 3.3.10-1 amd64 [installed,automatic]
Library for computing Fast Fourier Transforms - Quad precision
libfftw3-single3/stable,now 3.3.10-1 amd64 [installed,automatic]
Library for computing Fast Fourier Transforms - Single precision
The user manual is here:
ALSA without PulseAudio and PipeWire
_https://dev1galaxy.org/viewtopic.php?id=6644
@hacksenwerk
Some years ago, when ALSA backend was removed from Firefox, you had to
1. compile apulse,
2. configure ALSA mixer (with arateconf),
3. allow ALSA sound device in Firefox's sandbox config.
Today it is more simple. You have to
1. install apulse from Devuan repo,
2. configure ALSA mixer (with arateconf).
! You do not need to configure sandbox for apulse.
HYPOTHESIS: Perhaps, it might be possible to use microphone with Firefox's ALSA backend without apulse.
What might be needed is to set
security.sandbox.content.read_path_whitelist /dev/snd/
security.sandbox.content.write_path_whitelist /dev/snd/
in about:config
See, for example:
How to run FIREFOX without pulseaudio, by using "apulse" (Nov 22, 2017)
_https://forums.linuxmint.com/viewtopic.php?t=257818
You won't have sounds on firefox, do you ?
Playback in Firefox works without problems with ALSA (without pulseaudio and pipewire).
Sound quality is good, because fftrate ALSA plugin is installed and enabled (with ALSA config).
NOTE: If you want to use Firefox for video conferences, you have to run it with apulse:
$ apulse firefox
It works without problems, if ALSA software mixer is configured with arateconf.
If you are an ALSA expert, you may try to create ALSA config without the help of arateconf.
EDITED
BEFORE running "arateconf", you should close all audio applications.
The "TEST" function of "arateconf" will fail, if your "audio device" is already in use.
When pulseaudio and pipewire are removed, you can easily free your "audio devices" with "fuser".
For example:
$ fuser -av $(find /dev/snd -type c 2>/dev/null)
USER PID ACCESS COMMAND
/dev/snd/controlC0: igor 2261 F.... mate-settings-d
igor 2310 F.... mate-volume-con
/dev/snd/pcmC0D0c:
/dev/snd/pcmC0D0p: igor 8248 F...m firefox-esr
/dev/snd/seq:
/dev/snd/timer: igor 8248 f.... firefox-esr
"mate-settings-daemon" and "mate-volume-control-status-icon" need not to be killed.
But "firefox-esr" should be killed to free the "audio device":
$ fuser -ikv $(find /dev/snd -type c 2>/dev/null)
USER PID ACCESS COMMAND
/dev/snd/controlC0: igor 2261 F.... mate-settings-d
igor 2310 F.... mate-volume-con
Kill process 2261 ? (y/N) n
Kill process 2310 ? (y/N) n
/dev/snd/pcmC0D0p: igor 8248 F...m firefox-esr
Kill process 8248 ? (y/N) y
/dev/snd/timer: igor 8248 f.... firefox-esr
Kill process 8248 ? (y/N) y
Could not kill process 8248: No such process
$ fuser -av $(find /dev/snd -type c 2>/dev/null)
USER PID ACCESS COMMAND
/dev/snd/controlC0: igor 2261 F.... mate-settings-d
igor 2310 F.... mate-volume-con
/dev/snd/pcmC0D0c:
/dev/snd/pcmC0D0p:
/dev/snd/seq:
/dev/snd/timer:
Now, when audio devices are free, you can run "arateconf".
if i press "T", there is "failed".
Input: Open device "hw:C1,0" ... Failed!
It failed to open "Input", because you configured your "Cambridge USB DAC" for recording.
"DAC" means "digital-to-analog converter",
see _https://en.wikipedia.org/wiki/Digital-to-analog_converter.
As the name suggests, it is not supposed to be used to record "analog sound".
For "Output", you also got an error message:
Set format 'S32_LE' ... Unsupported!
It means that your Cambridge DAC does not support 'S32_LE' (it is now default for playback),
or ALSA driver (snd_usb_audio) for your USB DAC does not support 32bit.
Try 'S16_LE', or else.
Read the manual again and change 'S32_LE' to 'S16_LE'.
Press "F" to change "format".
======================
| Sound parameters |
----------------------
S - Sample rate = 48000 Hz
C - Channels = 2
F - Format: 'S32_LE'
A - Alignment buffer and period [X]
B - Set buffer multiplier = 1
M - Set period multiplier = 1
P - Play ampl. = 0 dB
R - Rec. ampl. = 0 dB
ESC - Return to main menu
> f
==============================
| Available sample formats |
------------------------------
0 - U8
1 - S16_LE
2 - S24_3LE
3 - S24_LE
4 - S32_LE
5 - FLOAT_LE
6 - FLOAT64_LE
ESC - Return to main menu
>
Your Intel HDA codec (Generic_1) does support 48kHz 32bit.
It should also support 192kHz 32bit.
This may provide much better sound quality than your "Cambridge DAC" (it is likely to be 48kHz 16bit and nothing more with ALSA).
You can test different "sample rates" and "formats" with "arateconf".
You can also check your "proc" (cards, hw_params), for example:
$ cat /proc/asound/cards
0 [system ]: USB-Audio - iMic USB audio system
Griffin Technology, Inc iMic USB audio system at usb-0000:00:1a.0-1.3.4, full s
$ cat /proc/asound/card*/pcm*p/sub*/hw_params
access: MMAP_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 48000 (48000/1)
period_size: 1920
buffer_size: 7680
$ cat /proc/asound/card0/pcm0p/sub0/hw_params
access: MMAP_INTERLEAVED
format: S16_LE
subformat: STD
channels: 2
rate: 48000 (48000/1)
period_size: 1920
buffer_size: 7680
NOTE: "arateconf" is simply a tool to configure ALSA,
that is, a tool to generate an ALSA config file "~/.asoundrc".
It takes data from ALSA and from Linux (proc, etc.).
Notable Realtek products include ... audio codecs (AC'97 and Intel HD Audio ).
_https://en.wikipedia.org/wiki/Realtek#Notable_products
ALSA detected an Intel HDA codec on your motherboard. It has a "generic driver" for it.
It should work without problems.
You may select Intel HDA codec as default for recording.
If you connect new USB audio devices, you have to create a new ALSA config with "arateconf".
since started on linux journey, found it very strange to say the least , that when wanting to @uninstall say a driver like pulseaudio, this couldwould render the laptop completely broke, like uninstalling the whole desktop
xfce4 and mate-desktop-environment are meta-packages, they can be safely removed.
See: _https://wiki.debian.org/metapackage
Meta-packages are not completely empty, they have inside a list of dependencies.
On the other hand, to fix problems with desktop, you may reinstall your Linux Desktop Environment.
That is, you can simply reinstall a meta-package. For example:
sudo apt-get --reinstall install mate-desktop-environment
See also: _https://www.cyberciti.biz/faq/debian-ubuntu-linux-reinstall-a-package-using-apt-get-command/
Desktop environment - ArchWiki
_https://wiki.archlinux.org/title/Desktop_environment
If you want to learn something about Linux Desktop environments, you may try to install MATE:
How to Install MATE Desktop and remove XFCE
1. Installing MATE
sudo apt update
sudo apt install mate-desktop-environment
sudo apt install mate-desktop-environment-extras
This may re-install pulseaudio, but it is easy to remove.
You may also need to unhold pulseaudio crap.
$ apt-mark showhold
pavucontrol
pipewire
pipewire-alsa
pipewire-audio
pipewire-audio-client-libraries
pipewire-bin
pipewire-doc
pipewire-jack
pipewire-libcamera
pipewire-media-session
pipewire-media-session-alsa
pipewire-media-session-jack
pipewire-media-session-pulseaudio
pipewire-pulse
pipewire-tests
pipewire-v4l2
pulseaudio
pulseaudio-equalizer
pulseaudio-module-bluetooth
pulseaudio-module-gsettings
pulseaudio-module-jack
pulseaudio-module-lirc
pulseaudio-module-raop
pulseaudio-module-zeroconf
pulseaudio-utils
$ apt-mark
apt 2.6.1devuan1 (amd64)
Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]
Most used commands:
auto - Mark the given packages as automatically installed
manual - Mark the given packages as manually installed
minimize-manual - Mark all dependencies of meta packages as automatically installed.
hold - Mark a package as held back
unhold - Unset a package set as held back
showauto - Print the list of automatically installed packages
showmanual - Print the list of manually installed packages
showhold - Print the list of packages on hold
To select MATE Desktop as default, run
$ sudo update-alternatives --config x-session-manager
There are 3 choices for the alternative x-session-manager (providing /usr/bin/x-session-manager).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/startxfce4 50 auto mode
1 /usr/bin/mate-session 50 manual mode
2 /usr/bin/startxfce4 50 manual mode
3 /usr/bin/xfce4-session 40 manual mode
Press <enter> to keep the current choice[*], or type selection number: 1
It should be like this:
$ sudo update-alternatives --config x-session-manager
There are 3 choices for the alternative x-session-manager (providing /usr/bin/x-session-manager).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/mate-session 50 auto mode
* 1 /usr/bin/mate-session 50 manual mode
2 /usr/bin/startxfce4 50 manual mode
3 /usr/bin/xfce4-session 40 manual mode
Press <enter> to keep the current choice[*], or type selection number:
SLIM - ArchWiki
_https://wiki.archlinux.org/title/SLiM
2. Removing XFCE (optional)
$ sudo dpkg -l | grep .xfce
$ sudo apt purge xfce*
$ sudo apt autoremove
See also:
_https://tecadmin.net/how-to-install-mate-desktop-on-debian-11/
@kapqa
Pulseaudio is not a driver. It is, rather, a sort of malware.
XFCE is buggy and crappy, and it does not support "alsa-only".
The best solution might be Devuan MATE Desktop (without pulseaudio and pipewire).
It works without problems even on very old computers (such as those of 2001).
Although, of course, web browsers are rather slow on very old computers.
To summarize:
The manual is here:
_https://dev1galaxy.org/viewtopic.php?pid=53969#p53969
See also:
_https://dev1galaxy.org/viewtopic.php?pid=54059#p54059
no , dont know about that
Perhaps, you do not want to know.
It is a very old problem.
fftrate ALSA plugin was created in 2009.
The story of "system wide equalizer" also began in 2009.
For example:
HOWTO systemwide eq with alsaequal
_https://forums.debian.net/viewtopic.php?t=47899
Today "alsaequal" is easy to install:
_https://askubuntu.com/a/951207
Installation
sudo apt install libasound2-plugin-equal
Start
alsamixer -D equal amixer -D equal
To change to the equalizer in the running program, press F6, choose enter device name... and enter “equal”.
Semi-deaf Linux users do need a sort of "equalizer" to "enhance sound", especially high frequencies.
$ apt info libasound2-plugin-equal
Package: libasound2-plugin-equal
Version: 0.6-8
Priority: optional
Section: libs
Source: alsaequal
Maintainer: Debian Multimedia Maintainers <debian-multimedia@lists.debian.org>
Installed-Size: 72.7 kB
Depends: caps (>= 0.9.11), libasound2 (>= 1.0.16), libc6 (>= 2.14)
Homepage: http://www.thedigitalmachine.net/alsaequal.html
Tag: role::shared-lib
Download-Size: 14.9 kB
APT-Sources: http://deb.devuan.org/merged daedalus/main amd64 Packages
Description: equalizer plugin for ALSA
Alsaequal is a real-time adjustable equalizer plugin for ALSA. It can
be adjusted using an ALSA compatible mixer, like alsamixergui or
alsamixer.
.
Alsaequal uses the Eq CAPS LADSPA Plugin for audio processing, actually
alsaequal is a generic LADSPA plugin interface with real-time access to
the LADSPA controls (the LADSPA plugin included with alsa doesn't allow
for real-time controls) but it was developed for and only tested with
Eq CAPS LADSPA plugin.
getting error but now alsa is back with "proper""volume"
Shutting down ALSA...done. Setting up ALSA...warning: 'alsactl -E HOME=/run/alsa -E XDG_RUNTIME_DIR=/run/alsa/runtime restore' failed with error message 'alsa-lib main.c:1554:(snd_use_case_mgr_open) error: failed to import hw:29 use case configuration -2'...done.
You may try a workaround from stackoverflow
ALSA: failed to import hw:0 use case configuration -2
_https://stackoverflow.com/questions/76333959/alsa-failed-to-import-hw0-use-case-configuration-2
$ man alsactl | grep ucm
-D, --ucm-defaults
-U, --no-ucm
$ whereis alsactl
alsactl: /usr/sbin/alsactl /usr/share/man/man1/alsactl.1.gz
$ /usr/sbin/alsactl -h
$ sudo /usr/sbin/alsactl -d restore
/usr/sbin/alsactl: init_ucm:48: ucm open '-hw:0': -6
...
See also:
Alsa UCM
_https://wiki.postmarketos.org/wiki/Alsa_UCM
Do you have the ucm.conf file?
It should be here:
/usr/share/alsa/ucm2/ucm.conf
EDIT:
_https://wiki.postmarketos.org/wiki/Alsa_UCM
If an UCM configuration is present for a card then pulseaudio will ignore the built-in profiles and generate a profile based on the UCM files....
1. Disable PulseAudio or PipeWire so ALSA UCM is not active at all.
This may mean, perhaps, that you do not need ALSA UCM, if you are not using PulseAudio and PipeWire.
Therefore, the workaround from stackoverflow may fix the problem.
sudo /usr/sbin/alsactl --debug restore
sudo /usr/sbin/alsactl --debug --no-ucm restore
Or you can simply ignore the "error" message, which is, in fact, just "warning", not "error".
EDIT:
If I understood you correctly, your ALSA was almost silent.
The "force-reload" of ALSA seemed to fix the problem.
Since ALSA UCM is not needed, you may simply ignore the "warning" message, and see how it works.
NOTE: OSS4 is much more louder than ALSA with the same sound card.
The fftrate ALSA plugin makes ALSA louder, but not as loud as OSS4.
Most important, the fftrate improves the sound quality of ALSA, although, of course, I like more the sound of OSS4.
If you are content with the sound quality of ALSA, you may use it as is.
But if you need to configure a software mixer for ALSA (e.g., for video conferencing), it might be a difficult task (without the fftrate plugin).
See, for example:
[Arch Linux forum]: [SOLVED] ALSA and dmix (software mixing)
_https://bbs.archlinux.org/viewtopic.php?id=275656
isuee is that sound is very low, even with vlc 200% it is probably 1/4 of original strength, and all relevant faderin amixer is set 100%.
It is not an issue, it is a feature of ALSA.
With normal loudness, you may hear noise produced by the ALSA resampler.
If you do not like this feature, you may compile and install fftrate ALSA plugin (and configure it).
since i removed only "pulseaudio", there is another libpulse0?
is this also needed for removal?
thanks.
Have you read my manual?
It was posted above.
See: _https://dev1galaxy.org/viewtopic.php?pid=53969#p53969
@kapqa
"alsa-only" means that you may need some Linux commands.
To reload ALSA on Devuan, you can use alsa-utils.
The Devuan default is "SysV init"
$ /sbin/init --version
SysV init version: 3.06
If you are using "SysV init", you can reload ALSA with this command:
$ sudo /etc/init.d/alsa-utils force-reload
Shutting down ALSA...done.
Setting up ALSA...done.
"soft restart":
$ sudo /etc/init.d/alsa-utils restart
Shutting down ALSA...done.
Setting up ALSA...done.
$ sudo /etc/init.d/alsa-utils stop
Shutting down ALSA...done.
$ sudo /etc/init.d/alsa-utils start
Setting up ALSA...done.
Another useful command is fuser
$ fuser -av $(find /dev/snd -type c 2>/dev/null)
USER PID ACCESS COMMAND
/dev/snd/controlC0: igor 2328 F.... mate-settings-d
igor 2382 F.... mate-volume-con
/dev/snd/pcmC0D0c:
/dev/snd/pcmC0D0p: igor 2843 F...m firefox-esr
/dev/snd/seq:
/dev/snd/timer: igor 2843 f.... firefox-esr
PID 2328 /usr/bin/mate-settings-daemon
PID 2382 mate-volume-control-status-icon
PID 2843 /usr/lib/firefox-esr/firefox-esr
"mate-volume-control-status-icon" is MATE volume control applet.
It works with ALSA in "alsa-only" mode (as well as "mate-settings-daemon").
However, after removal of pulseaudio, you have to reload ALSA, or reboot the system.
@kapqa
The solution to Linux sound problems is rather straightforward:
1. remove pulseaudio;
2. install and configure fftrate ALSA plugin.
It seems that many Debian users have already removed pulseaudio,
but nobody has compiled fftrate, although it is very simple.
There is a conspiracy theory that pulseaudio and pipewire are destroying human brain by "harmful frequencies".
You may ask golinux to compile deb packages of fftrate for you.
He has Chimaera (oldstable) and, therefore, can install gcc-10 and g++-10 from the standard Chimaera repositories (that is, Devuan's oldstable repositories).
This also means that gcc-10 is the default compiler for Chimaera, and he does not need to configure "make" (./fftrate/src/lib/makedef.mk ) for gcc-10.
The fftrate deb-packages, which were compiled on old Debian/Ubuntu distros, also work on new Debian/Ubuntu (and Devuan) versions without problems.
Daedalus 5.0 is the current stable release.
Chimaera 4.0 has moved to oldstable status.
@kapqa
I have Intel HDA codec ALC887.
Sound quality is good with both ALSA and OSS4.
If you do not know how to configure ALSA, any card may sound crappy.
Step 1: Remove pulseaudio.
The manual is here:
_https://dev1galaxy.org/viewtopic.php?pid=49837#p49837
Step 2: Compile fftrate ALSA plugin and configure a software mixer for ALSA.
The manual is here:
_https://dev1galaxy.org/viewtopic.php?id=6644
fftrate is an open source (GPL3) magic tool to fix sound quality on Linux Laptops and Desktops.
$ du -sh ./* | sort -h
24K ./alsa-config-utils_1.6.3_amd64.deb
32K ./libasound2-plugin-fftrate_1.6.3_amd64.deb
40K ./pcm-utils_1.6.3_amd64.deb
can someone please write a guide on "howto" do devuan with alsa-only?
You may try something like this:
How to remove pulseaudio (and pipewire)
_https://dev1galaxy.org/viewtopic.php?pid=49837#p49837
ArchWiki ALSA
_https://wiki.archlinux.org/title/Advanced_Linux_Sound_Architecture#Unmuting_the_channels
How to configure a software mixer for ALSA
_https://dev1galaxy.org/viewtopic.php?id=6644
If it works, you may test sound quality with ALSA:
_https://dev1galaxy.org/viewtopic.php?id=6716
HiRes Binaural+ with ALSA
_https://dev1galaxy.org/viewtopic.php?id=6663
Hope it works for you.
After 20 years, at last I know how to fix this annoying behaviour.
I thought that it is a special feature of Devuan.
If it is "annoying behaviour" for you, it does not mean that it is also annoying for others.
Since nobody complains, it might be the normal way of things for pulseaudio users.
Although, of course, it might be a security problem.
The /etc/udisks2/mount_options.conf should be tested and verified.
Umask
_https://en.wikipedia.org/wiki/Umask
_https://wiki.archlinux.org/title/Umask
$ umask
0022
_https://www.linuxquestions.org/questions/linux-general-1/mounting-ntsf-drive-in-fstab-unsure-of-fmask-and-dmask-values-4175458533/#post4934200
fmask, dmask, and umask taken together pertain only to Windows filetypes ( NTFS and FAT32 ) whereas umask alone pertains to both windows and Linux filetypes but are implemented 2 different ways. On Linux Filesystems At the moment of birth every file has permissions of 666 and every directory has permissions of 777. A system wide umask is created to modify these permissions immediately after birth and it's currently set at 002. So when you create a new file it's permissions are: 666 002 <-- minus the umask == 664 And every new directory has permissions of: 777 002 <-- minus the umask == 775 On Windows Filesystems Windows fileystems have no Linux file permission attributes so a virtual filesystem is used to create a "view" to give them the appearance that they do have them. The system wide umask has no affect on these filesystems nor does a chmod or a chown. They can only be set when the "view" is created in fstab. At the moment of birth NTFS files and folders start out with exactly the same permissions: 777. If you were to set up in fstab a umask of 002 for these partitions then the result would be different from a Linux filesystem: File: 777 - 002 = 775 Folder: 777 - 002 = 775 The folder setting is fine and that's the way you want them to be but the files have all been made executable - every single one of them. You can change that by separating umask into it's constituent parts: fmask and dmask: So if you set up fstab this way for an NTFS partition: dmask=002,fmask=113 File: 777 - 113 = 664 Folder: 777 - 002 = 775
_https://thelinuxcode.com/automount-usb-ubuntu/
_https://www.freedesktop.org/wiki/Software/udisks/
_https://storaged.org/doc/udisks2-api/latest/mount_options.html
_https://www.kernel.org/doc/Documentation/filesystems/vfat.txt
ArchWiki
_https://wiki.archlinux.org/title/Udisks#NTFS_mount_failing
_https://wiki.archlinux.org/title/Udisks#NTFS_file_creation_failing_(filename-dependent)
$ locate udisksd
/usr/libexec/udisks2/udisksd
/usr/share/man/man8/udisksd.8.gz
$ man udisksd
$ man udisksctl
System: Devuan, Mate Desktop
$ cat /etc/*-release | grep PRETTY
PRETTY_NAME="Devuan GNU/Linux 5 (daedalus)"
$ inxi -S
System:
Host: devuan Kernel: 6.1.0-25-amd64 arch: x86_64 bits: 64 Desktop: MATE
v: 1.26.0 Distro: Devuan GNU/Linux 5 (daedalus)
When you insert a USB drive, it is automatically mounted to a directory under /media
However, if your USB drive has a Windows file system (e.g. NTFS, or exFAT), all your text files (and all other files: *.jpg, *.wav, etc.) on the USB drive become executable (777 - 022 = 755).
If you copy such files to your home folder, you have to fix permissions, for example:
$ chmod -Rv -x+X -- ./
_https://unix.stackexchange.com/questions/296967/how-to-recursively-remove-execute-permissions-from-files-without-touching-folder
It seems that this problem can be easily fixed with /etc/udisks2/mount_options.conf
$ ls -1 /etc/udisks2/
mount_options.conf.example
udisks2.conf
$ sudo nano /etc/udisks2/mount_options.conf
$ cat /etc/udisks2/mount_options.conf
[defaults]
vfat_defaults=uid=$UID,gid=$GID,shortname=mixed,utf8=1,showexec,dmask=022,fmask=133
exfat_defaults=uid=$UID,gid=$GID,iocharset=utf8,errors=remount-ro,dmask=022,fmask=133
ntfs_defaults=uid=$UID,gid=$GID,dmask=022,fmask=133
NOTE: /etc/udisks2/mount_options.conf is enabled automatically (a reboot is not required).
You can simply insert your USB drive and check file permissions:
$ touch file.txt
$ stat -c %a file.txt
644
$ mkdir folder1
$ stat -c %a folder1
755
See:
_https://chmodcommand.com/chmod-644/
_https://chmodcommand.com/chmod-755/
Perhaps, this mount_options.conf can be somehow improved, or there is a better solution.
Brave works without problems
_https://brave.com/linux/#release-channel-installation
Release Channel Installation
Debian, Ubuntu, Mintsudo apt install curl
sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg] https://brave-browser-apt-release.s3.brave.com/ stable main"|sudo tee /etc/apt/sources.list.d/brave-browser-release.list
sudo apt update
sudo apt install brave-browser
a half-assed non-solution to the wrong problem
Are you talking about pulseaudio?
Thank you for the link.
Have you already tried to build it?
If you really need it, you may start a new topic: "How to install the newest version of scrcpy?"
And 40 minutes after that, the FBI had Thomas's Samsung Android smartphone unlocked and open for detailed inspection of the shooter's social media, browsing, texting, whatever, history.
What's interesting is that in other, just it was coincidental really, reporting, it appears to be fortuitous for the FBI that Thomas was not using a later model Apple iOS device since some documents leaked from Cellebrite indicate its inability to unlock such devices. 9to5Mac picked up on this last Thursday, reporting under their headline "Cellebrite cannot unlock most iPhones running iOS 17.4 and later." They wrote: "Leaked documents reveal that Cellebrite cannot unlock iPhones running iOS 17.4 and later, at least as of the date of publication," which was April of this year. They said: "The company has confirmed that the documents are genuine. Cellebrite devices, which are widely used by law enforcement agencies, can crack most Android phones, though there are exceptions.
_https://www.grc.com/sn/sn-984.htm
Security Now: CrowdStruck
_https://youtu.be/eLkfKizz6NU
How to rebuild scrcpy for Devuan.
Install the tools "which are considered essential for building Debian packages":
sudo apt install build-essential debhelper devscripts
sudo apt install apt-file command-not-found
Debian wiki: apt-file
_https://wiki.debian.org/apt-file
NOTE: If apt-file doesn't help, you may try to search with Google, for example:
"/usr/lib/android-sdk/build-tools/debian/dx" site:packages.ubuntu.com
https://www.google.com/search?&q=%22%2Fusr%2Flib%2Fandroid-sdk%2Fbuild-tools%2Fdebian%2Fdx%22+site%3Apackages.ubuntu.com
Install android-sdk and default-jdk
sudo apt install android-sdk default-jdk
dalvik-exchange is also missing (it is in the same Ubuntu repository)
dalvik-exchange_10.0.0+r36-4_all.deb 2022-04-30
http://us.archive.ubuntu.com/ubuntu/pool/universe/a/android-platform-dalvik/dalvik-exchange_10.0.0+r36-4_all.deb
Notice that "android-platform-dalvik" is the name of the source.
The folder "android-platform-dalvik" contains the source packages and the binaries.
This is how to search for missing packages.
Download and install dalvik-exchange
sudo dpkg -i dalvik-exchange_10.0.0+r36-4_all.deb
Download and install 3 packages of "android-framework-23" from the same repository.
android-sdk-platform-23
_http://us.archive.ubuntu.com/ubuntu/pool/universe/a/android-framework-23/android-sdk-platform-23_6.0.1+r72-6_all.deb
libandroid-23-java
_http://us.archive.ubuntu.com/ubuntu/pool/universe/a/android-framework-23/libandroid-23-java_6.0.1+r72-6_all.deb
libandroid-uiautomator-23-java
_http://us.archive.ubuntu.com/ubuntu/pool/universe/a/android-framework-23/libandroid-uiautomator-23-java_6.0.1+r72-6_all.deb
sudo dpkg -i libandroid-23-java_6.0.1+r72-6_all.deb libandroid-uiautomator-23-java_6.0.1+r72-6_all.deb android-sdk-platform-23_6.0.1+r72-6_all.deb
1. Download the native Debian source packages from the same Ubuntu repository
scrcpy_1.25.orig.tar.gz 2023-01-21
scrcpy_1.25-1.debian.tar.xz 2023-01-21
scrcpy_1.25-1.dsc 2023-01-21
_http://us.archive.ubuntu.com/ubuntu/pool/universe/s/scrcpy/scrcpy_1.25.orig.tar.gz
_http://us.archive.ubuntu.com/ubuntu/pool/universe/s/scrcpy/scrcpy_1.25-1.debian.tar.xz
_http://us.archive.ubuntu.com/ubuntu/pool/universe/s/scrcpy/scrcpy_1.25-1.dsc
$ ls -1
scrcpy_1.25-1.debian.tar.xz
scrcpy_1.25-1.dsc
scrcpy_1.25.orig.tar.gz
2. Extract the source code
dpkg-source -x *.dsc
$ dpkg-source -x *.dsc
gpgv: Signature made Sat 21 Jan 2023 01:31:18 AM CET
gpgv: using RSA key 7E7729476D87D6F11D91ACCBC293E7B461825ACE
gpgv: Can't check signature: No public key
dpkg-source: warning: cannot verify inline signature for ./scrcpy_1.25-1.dsc: no acceptable signature found
dpkg-source: info: extracting scrcpy in scrcpy-1.25
dpkg-source: info: unpacking scrcpy_1.25.orig.tar.gz
dpkg-source: info: unpacking scrcpy_1.25-1.debian.tar.xz
dpkg-source: info: using patch list from debian/patches/series
dpkg-source: info: applying 0001-Fit-SDK-23.patch
$ ls -1
scrcpy-1.25
scrcpy_1.25-1.debian.tar.xz
scrcpy_1.25-1.dsc
scrcpy_1.25.orig.tar.gz
3. cd to the source code directory
cd scrcpy-1.25
4. Read "Build-Depends" in /debian/control
$ cat ./debian/control
Source: scrcpy
Section: net
Priority: optional
Maintainer: Yangfl <mmyangfl@gmail.com>
Build-Depends:
debhelper-compat (= 13),
Build-Depends-Arch:
meson,
libavcodec-dev,
libavdevice-dev,
libavformat-dev,
libavutil-dev,
libsdl2-dev,
libusb-1.0-0-dev,
Build-Depends-Indep:
android-sdk,
android-sdk-platform-23,
default-jdk,
unzip,
zip,
Rules-Requires-Root: no
Standards-Version: 4.6.2
Homepage: https://github.com/Genymobile/scrcpy
Vcs-Git: https://salsa.debian.org/yangfl-guest/scrcpy.git
Vcs-Browser: https://salsa.debian.org/yangfl-guest/scrcpy
Package: scrcpy
Architecture: any
Depends: ${misc:Depends}, ${shlibs:Depends}, scrcpy-server (= ${source:Version}),
Recommends: adb,
Description: Display and control your Android device
This application provides display and control of Android devices connected on
USB (or over TCP/IP). It does not require any root access.
.
This package contains the client (desktop) binary.
Package: scrcpy-server
Architecture: all
Multi-Arch: foreign
Depends: ${misc:Depends},
Description: Display and control your Android device - server binary
This application provides display and control of Android devices connected on
USB (or over TCP/IP). It does not require any root access.
.
This package contains the server (mobile) binary, which will be pushed to the
Android device.
5. Install build dependencies
sudo mk-build-deps -i
sudo apt install -f
6. Build the packages
$ dpkg-buildpackage -us -uc -b
...
dpkg-deb: building package 'scrcpy' in '../scrcpy_1.25-1_amd64.deb'.
dpkg-deb: building package 'scrcpy-dbgsym' in '../scrcpy-dbgsym_1.25-1_amd64.deb'.
dpkg-deb: building package 'scrcpy-server' in '../scrcpy-server_1.25-1_all.deb'.
dpkg-genbuildinfo --build=binary -O../scrcpy_1.25-1_amd64.buildinfo
dpkg-genchanges --build=binary -O../scrcpy_1.25-1_amd64.changes
dpkg-genchanges: info: binary-only upload (no source code included)
dpkg-source --after-build .
dpkg-buildpackage: info: binary-only upload (no source included)
cd ../
$ ls -1 ./scr*.deb
./scrcpy_1.25-1_amd64.deb
./scrcpy-dbgsym_1.25-1_amd64.deb
./scrcpy-server_1.25-1_all.deb
7. Install the packages
sudo dpkg -i scrcpy_1.25-1_amd64.deb scrcpy-server_1.25-1_all.deb
You may also try to build the sources from Debian unstable:
_https://packages.debian.org/source/unstable/scrcpy
Download scrcpy
scrcpy_1.25-1.dsc
scrcpy_1.25.orig.tar.gz
scrcpy_1.25-1.debian.tar.xz
NOW WE KNOW WHERE TO SEARCH FOR MISSING PACKAGES.
The reference package:
scrcpy_1.25-1_amd64.deb 2023-01-21
http://us.archive.ubuntu.com/ubuntu/pool/universe/s/scrcpy/scrcpy_1.25-1_amd64.deb
It is a native Debian package (without "ubuntu" mark) of 2023.
Ubuntu Maintainers Handbook:
When Ubuntu adds a change or modification on top on what is in Debian, that change is expressed in the version number. One can think of a version number consisting of three segments: [upstream_version]-[debian_revision]ubuntu[ubuntu_revision]. The - splits the upstream version from the Debian packaging segment as you have seen in Debian control field "Version". The ubuntu string then marks that whatever follows it is related to changes added in Ubuntu.
_https://github.com/canonical/ubuntu-maintainers-handbook/blob/main/VersionStrings.md
Of course, you can simply download the native Debian packages and install them. But they may work better, if they are rebuilt for Devuan. You can also rename the package, disable a sort of pulseaudio, remove systemd dependencies, etc.
Some packages should be rebuilt because of libc6 and/or other dependencies.