Open T-vK opened 1 month ago
Your kernel doesn't have memfd
support, but it is neccessay for PulseAudio to work properly.
@licy183 Thank you, that's very valuable information to me. Do you happen to have some insight on that? Is there a specific kernel version that introduced it in its core or is there a module that provides this functionality?
I'm afraid that this will not be fixed in the main repository, as memfd should be available on Android 7.x.
I've pushed a commit that drops the memfd usage in pulseaudio. You can download the debs in https://github.com/termux/termux-packages/actions/runs/11190633201 and test if it works.
I just tested my old Nvidia Shiled Tablet (Android 8.1.0, Kernel 3.10.96, armv7l 32bit) and it's also missing memfd.
I also tested the provided build which drops memfd and I can confirm it does not throw the memfd error anymore, but unfortunately it's still failing:
$ pactl load-module module-sles-source
Failure: Module initialization failed
I installed the provided builds by uninstalling pulse audio first (pkg remove pulseaudio
) and then installing the 32bit arm.deb files for pulseaudio and pulseaudio-glib.
Ahhh.. I deleted these modules by accident. I'll fix it later.
Please download the debs in https://github.com/termux/termux-packages/actions/runs/11416273339 and check if it works. Thanks!
Sorry for the late response and thank you for your help. I've I tried the new builds you provided, but I'm still getting:
$ pactl load-module module-sles-source
Failure: Module initialization failed
Both module-sles-sink.so
and module-sles-source.so
(in /data/data/com.termux/files/usr/lib/pulseaudio/modules/
for the 32bit arm version) are missing from the package you provided. The official pulseaudio package has them both.
@licy183 Thanks so much for looking into this! I am also having this issue and was wondering if you have any other ideas of how to solve it? I'm trying to re-purpose some old android devices and being able to run pulseaudio would be amazing.
Both
module-sles-sink.so
andmodule-sles-source.so
(in/data/data/com.termux/files/usr/lib/pulseaudio/modules/
for the 32bit arm version) are missing from the package you provided. The official pulseaudio package has them both.
They exist in the debs...
Please download it from https://github.com/termux/termux-packages/actions/runs/11416273339 and install it with apt install --reinstall ./xxx.deb
and try again.
That seems to work! Thanks a ton!
@T-vK "Failure: Module initialization failed" Will also be thrown if the Termux:API app is not installed and or Termux isn't given microphone permission. I would try checking on both of those if you are still seeing the error with the new debs.
I must have done something wrong. It is indeed working now. @licy183 Any chance of getting those changes upstream?
Problem description
On 32bit
arm
Android devices, PulseAudio does not appear to work properly. I'm trying to loadmodule-sles-source
in order to access the microphone.Some people suggest setting
LD_PRELOAD=/system/lib64/libskcodec.so
orLD_LIBRARY_PATH=/system/lib64/
, but/system/lib64/
does apparently not exist on 32bitarm
and/system/lib/
does not contain any library calledlibskcodec.so
.What steps will reproduce the bug?
Run this on an Android device with an
arm
(as opposed toaarch64
) CPU:The last command throws:
What is the expected behavior?
The expected behavior is that
doesn't throw any errors and only returns a module id.
And after that, this command:
Should return at least one microphone (and not just a sink monitor).
System information