Question Trying to make Viper4Android work (S908E) - Samsung Galaxy S22 Ultra
Hi. I have a S908E (rooted snapdragon) and I'm trying for more than a week, nonstop, to make Viper4Android work in my device. It keepa asking for drivers everytime I open the app.
At first, I tried every post that I could find where people said that it worked. That includes several modules and V4A apps/zip, like: Audio Modification Library, JamesDSP, Audio Compatibility Patch, Viper4AndroidFX app, V4A 2.7.2.1, Shadowstep fix. And some other .zip fixes to flash via magisk.
Always removing every audio module and uninstalling V4A for each try. Got no result, Viper4Android still asks for drivers.
So, I realised that to get it to work, i need to know what exactly is the source of the problem in my phone and how to fix it.
With help of other users, I got to know a bit more about v4a and its files.
It seems the main files are audio_effects.xml and audio_effects.conf.
The folders that has the .xml file are vendor/etc and vendor/etc/audio/sku_taro. System/vendor is the same as vendor/
Ok, I noticed that my files inside sku_taro didn't had any line related to v4a. So I got those files from vendor/etc and copied them inside sku_taro (via magisk, since I can't edit files there). Didn't work.
I noticed another issue: audio_effects.conf isn't modified to V4A and I'm not sure if it should. The V4A system folder in data/adb/modules/ doesn't have this .conf file. However, my S21+ (exynos) that had v4a working had this file with v4a lines.
So, my first question to keep going in this odyssey is: should audio_effects.conf be modified with V4A lines and should it be present in vendor/etc as well?
EDIT: Also, what should it have modified?
It isn't the same code as in my S21+ (tried that already).
If prints of the codes of the files or the content of foldera are needed, I can post here.
No one? Come on, let's make this amazing module work in our Snapdragons!
Ok, I'm sharing my audio_effects.conf files, in the case someone who understand better than me to give opinions.
This is the file that i got from a S21+ (Exynos) with working V4A:
Spoiler
libraries {
v4a_fx {
path /vendor/lib/soundfx/libv4a_fx.so
}
soundbooster_plus {
path /system/lib/libsamsungSoundbooster_plus_legacy.so
}
soundalive_sec {
path /system/lib/libaudiosaplus_sec_legacy.so
}
mysound {
path /system/lib/libmysound_legacy.so
}
dap {
path /system/lib/libswdap_legacy.so
}
tdm {
path /system/lib/libsamsungSoundbooster_tdm_legacy.so
}
volumemonitor {
path /system/lib/libvolumemonitor_energy.so
}
voicechanger {
path /system/lib/libvoicechanger.so
}
dht {
path /system/lib/libswdht_legacy.so
}
}
effects {
v4a_standard_fx {
library v4a_fx
uuid 41d3c987-e6cf-11e3-a88a-11aba5d5c51b
}
soundbooster_plus {
library soundbooster_plus
uuid 50de45f0-5d4c-11e5-a837-0800200c9a66
}
soundalive {
library soundalive_sec
uuid cf65eb39-ce2f-48a8-a903-ceb818c06745
}
dha {
library mysound
uuid 263a88e0-50b1-11e2-bcfd-0800200c9a66
}
dolby {
library dap
uuid 6ab06da4-c516-4611-8166-452799218539
}
dlb_ht {
library dht
uuid b247dfc9-2832-4486-92c0-2db27a3785f5
}
tdm {
library tdm
uuid beb1d058-916a-4adf-9cfe-54ee5ba8c4a5
}
volumemonitor {
library volumemonitor
uuid 16311c29-bb53-4415-b7af-ae653e812de8
}
voicechanger {
library voicechanger
uuid 25c30101-9542-451f-a064-c3198e187dfc
}
}
And this is the audio_effects.conf that was present in my S22U (Snapdragon) inside vendor/etc/audio/sku_taro:
I added the V4A lines marked (Bolded,underlined and red), with the same code from the file that were inside the S21+ (the file was named audio_effects_common.conf in Exynos, I renamed to audio_effects.conf before pasting in the S22U) file, and pasted the file inside vendor/etc as well, but got no luck:
Spoiler
# List of effect libraries to load. Each library element must contain a "path" element
# giving the full path of the library .so file.
# libraries {
# <lib name> {
# path <lib path>
# }
# }
libraries {
v4a_fx {
path /vendor/lib/soundfx/libv4a_fx.so
}
bundle {
path /vendor/lib/soundfx/libbundlewrapper.so
}
reverb {
path /vendor/lib/soundfx/libreverbwrapper.so
}
qcbassboost {
path /vendor/lib/soundfx/libqcbassboost.so
}
qcvirt {
path /vendor/lib/soundfx/libqcvirt.so
}
qcreverb {
path /vendor/lib/soundfx/libqcreverb.so
}
visualizer_sw {
path /vendor/lib/soundfx/libvisualizer.so
}
visualizer_hw {
path /vendor/lib/soundfx/libqcomvisualizer.so
}
downmix {
path /vendor/lib/soundfx/libdownmix.so
}
loudness_enhancer {
path /vendor/lib/soundfx/libldnhncr.so
}
dynamics_processing {
path /vendor/lib/soundfx/libdynproc.so
}
proxy {
path /vendor/lib/soundfx/libeffectproxy.so
}
offload_bundle {
path /vendor/lib/soundfx/libqcompostprocbundle.so
}
audio_pre_processing {
path /vendor/lib/soundfx/libqcomvoiceprocessing.so
}
volume_listener {
path /vendor/lib/soundfx/libvolumelistener.so
}
audiosphere {
path /vendor/lib/soundfx/libasphere.so
}
}
# Default pre-processing library. Add to audio_effect.conf "libraries" section if
# audio HAL implements support for default software audio pre-processing effects
#
# pre_processing {
# path /vendor/lib/soundfx/libaudiopreprocessing.so
# }
# list of effects to load. Each effect element must contain a "library" and a "uuid" element.
# The value of the "library" element must correspond to the name of one library element in the
# "libraries" element.
# The name of the effect element is indicative, only the value of the "uuid" element
# designates the effect.
# The uuid is the implementation specific UUID as specified by the effect vendor. This is not the
# generic effect type UUID.
# effects {
# <fx name> {
# library <lib name>
# uuid <effect uuid>
# }
# ...
# }
effects {
# additions for the proxy implementation
# Proxy implementation
#effectname {
#library proxy
#uuid xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
# SW implemetation of the effect. Added as a node under the proxy to
# indicate this as a sub effect.
#libsw {
#library libSW
#uuid yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
#} End of SW effect
# HW implementation of the effect. Added as a node under the proxy to
# indicate this as a sub effect.
#libhw {
#library libHW
#uuid zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
#}End of HW effect
#} End of effect proxy
v4a_standard_fx {
library v4a_fx
uuid 41d3c987-e6cf-11e3-a88a-11aba5d5c51b
}
bassboost {
library proxy
uuid 14804144-a5ee-4d24-aa88-0002a5d5c51b
libsw {
library qcbassboost
uuid 23aca180-44bd-11e2-bcfd-0800200c9a66
}
libhw {
library offload_bundle
uuid 2c4a8c24-1581-487f-94f6-0002a5d5c51b
}
}
virtualizer {
library proxy
uuid d3467faa-acc7-4d34-acaf-0002a5d5c51b
libsw {
library qcvirt
uuid e6c98a16-22a3-11e2-b87b-f23c91aec05e
}
libhw {
library offload_bundle
uuid 509a4498-561a-4bea-b3b1-0002a5d5c51b
}
}
equalizer {
library proxy
uuid c8e70ecd-48ca-456e-8a4f-0002a5d5c51b
libsw {
library bundle
uuid ce772f20-847d-11df-bb17-0002a5d5c51b
}
libhw {
library offload_bundle
uuid a0dac280-401c-11e3-9379-0002a5d5c51b
}
}
volume {
library bundle
uuid 119341a0-8469-11df-81f9-0002a5d5c51b
}
reverb_env_aux {
library proxy
uuid 48404ac9-d202-4ccc-bf84-0002a5d5c51b
libsw {
library qcreverb
uuid a8c1e5f3-293d-43cd-95ec-d5e26c02e217
}
libhw {
library offload_bundle
uuid 79a18026-18fd-4185-8233-0002a5d5c51b
}
}
reverb_env_ins {
library proxy
uuid b707403a-a1c1-4291-9573-0002a5d5c51b
libsw {
library qcreverb
uuid 791fff8b-8129-4655-83a4-59bc61034c3a
}
libhw {
library offload_bundle
uuid eb64ea04-973b-43d2-8f5e-0002a5d5c51b
}
}
reverb_pre_aux {
library proxy
uuid 1b78f587-6d1c-422e-8b84-0002a5d5c51b
libsw {
library qcreverb
uuid 53ef1db5-c0c0-445b-b060-e34d20ebb70a
}
libhw {
library offload_bundle
uuid 6987be09-b142-4b41-9056-0002a5d5c51b
}
}
reverb_pre_ins {
library proxy
uuid f3e178d2-ebcb-408e-8357-0002a5d5c51b
libsw {
library qcreverb
uuid b08a0e38-22a5-11e2-b87b-f23c91aec05e
}
libhw {
library offload_bundle
uuid aa2bebf6-47cf-4613-9bca-0002a5d5c51b
}
}
visualizer {
library proxy
uuid 1d0a1a53-7d5d-48f2-8e71-27fbd10d842c
libsw {
library visualizer_sw
uuid d069d9e0-8329-11df-9168-0002a5d5c51b
}
libhw {
library visualizer_hw
uuid 7a8044a0-1a71-11e3-a184-0002a5d5c51b
}
}
downmix {
library downmix
uuid 93f04452-e4fe-41cc-91f9-e475b6d1d69f
}
hw_acc {
library offload_bundle
uuid 7d1580bd-297f-4683-9239-e475b6d1d69f
}
loudness_enhancer {
library loudness_enhancer
uuid fa415329-2034-4bea-b5dc-5b381c8d1e2c
}
dynamics_processing {
library dynamics_processing
uuid e0e6539b-1781-7261-676f-6d7573696340
}
aec {
library audio_pre_processing
uuid 0f8d0d2a-59e5-45fe-b6e4-248c8a799109
}
ns {
library audio_pre_processing
uuid 1d97bb0b-9e2f-4403-9ae3-58c2554306f8
}
music_helper {
library volume_listener
uuid 08b8b058-0590-11e5-ac71-0025b32654a0
}
ring_helper {
library volume_listener
uuid 0956df94-0590-11e5-bdbe-0025b32654a0
}
alarm_helper {
library volume_listener
uuid 09f303e2-0590-11e5-8fdb-0025b32654a0
}
# voice_helper is called when stream type is voice_call in VoIP usecase
voice_helper {
library volume_listener
uuid 0ace5c08-0590-11e5-ae9e-0025b32654a0
}
notification_helper {
library volume_listener
uuid 0b776dde-0590-11e5-81ba-0025b32654a0
}
audiosphere {
library audiosphere
uuid 184e62ab-2d19-4364-9d1b-c0a40733866c
}
}
# additional effect from vendor
# UUID generated using version 1
output_session_processing {
music {
music_helper {
}
}
ring {
ring_helper {
}
}
alarm {
alarm_helper {
}
}
# stream type voice_call is used for VoIP call
voice_call {
voice_helper {
}
}
notification {
notification_helper {
}
}
}
# Added aec, ns effects for voice_communication, which are supported by the board
pre_processing {
voice_communication {
aec {
}
ns {
}
}
}
# Default pre-processing effects. Add to audio_effect.conf "effects" section if
# audio HAL implements support for them.
#
# agc {
# library pre_processing
# uuid aa8130e0-66fc-11e0-bad0-0002a5d5c51b
# }
# aec {
# library pre_processing
# uuid bb392ec0-8d4d-11e0-a896-0002a5d5c51b
# }
# ns {
# library pre_processing
# uuid c06c8400-8e06-11e0-9cb6-0002a5d5c51b
# }
# Audio preprocessor configurations.
# The pre processor configuration consists in a list of elements each describing
# pre processor settings for a given input source. Valid input source names are:
# "mic", "camcorder", "voice_recognition", "voice_communication"
# Each input source element contains a list of effects elements. The name of the effect
# element must be the name of one of the effects in the "effects" list of the file.
# Each effect element may optionally contain a list of parameters and their
# default value to apply when the pre processor effect is created.
# A parameter is defined by a "param" element and a "value" element. Each of these elements
# consists in one or more elements specifying a type followed by a value.
# The types defined are: "int", "short", "float", "bool" and "string"
# When both "param" and "value" are a single int, a simple form is allowed where just
# the param and value pair is present in the parameter description
# pre_processing {
# <input source name> {
# <fx name> {
# <param 1 name> {
# param {
# int|short|float|bool|string <value>
# [ int|short|float|bool|string <value> ]
# ...
# }
# value {
# int|short|float|bool|string <value>
# [ int|short|float|bool|string <value> ]
# ...
# }
# }
# <param 2 name > {<param> <value>}
# ...
# }
# ...
# }
# ...
# }
#
# TODO: add default audio pre processor configurations after debug and tuning phase
#
System is still "Read Only"
So no luck achieving this yet. We gotta wait till a Kernel comes around.
JazonX said:
System is still "Read Only"
So no luck achieving this yet. We gotta wait till a Kernel comes around.
Click to expand...
Click to collapse
Hm, what you mean? Can't we go around that with magisk? I was able to edit file systems. Doesn't V4A just need to read them?
Also, the S21+ also seems to have a RO system (couldn't even rename files inside vendor) and V4A worked just fine.
JazonX said:
System is still "Read Only"
So no luck achieving this yet. We gotta wait till a Kernel comes around.
Click to expand...
Click to collapse
Just flashed Aurora ROM, which has RW System, and I still got driver installation loop. Are you sure this is the cause?
In terms of v4a i had to modify post-fs-data to get it working although i didnt had driver installation looping
Be_Cruel. said:
In terms of v4a i had to modify post-fs-data to get it working although i didnt had driver installation looping
Click to expand...
Click to collapse
Is your device Exynos or SD? Because exynos doesn't seem to hve this issue. I tried editing post-fs-data.sh as well...
ffp. said:
Is your device Exynos or SD? Because exynos doesn't seem to hve this issue. I tried editing post-fs-data.sh as well...
Click to expand...
Click to collapse
Yea i do have exy
Any inroads to v4a working on the s908e....?
Why this device having issues when v4a works fine on other snapdragon devices.
elmor0 said:
Any inroads to v4a working on the s908e....?
Why this device having issues when v4a works fine on other snapdragon devices.
Click to expand...
Click to collapse
Any working link for a newer version ?
I have System R/W now. I can check.
I've tried with R/W (permissive kernel & TWRP) - still get v4a install driver loop.
How did you get System R/W?
Links wise, try:
https://zackptg5.com/downloads/v4afx_v2.7.2.1.zip
GitHub - programminghoch10/ViPER4AndroidRepackaged: A refined ViPER4Android installer.
A refined ViPER4Android installer. Contribute to programminghoch10/ViPER4AndroidRepackaged development by creating an account on GitHub.
github.com
ViPER4Android Updates
- Improved loading logic for convolution files - Fixed an issue when installing the module on older Magisk versions - Bug fixes - Stability improvements Check out XDA for the release notes
t.me
Please let me know how it goes.
Related
[Q] [Request] DSP Manager for Android 5.0
Hi guys, can someone please extract the DSP Manager apk, plus the soundfx libs and the audio_effects.conf, and post it here? I want to use them with the stock ROM. I tried extracting them from a CM12 flashable zip by myself, but Windows threw a BSOD at me when I tried to mount the system image and I'm feeling unsafe about flashing CM12 over the firmware I'm using now (stock Android 5.0, from the Brazilian soak test). Thanks in advance!
kingkaminari said: Hi guys, can someone please extract the DSP Manager apk, plus the soundfx libs and the audio_effects.conf, and post it here? I want to use them with the stock ROM. I tried extracting them from a CM12 flashable zip by myself, but Windows threw a BSOD at me when I tried to mount the system image and I'm feeling unsafe about flashing CM12 over the firmware I'm using now (stock Android 5.0, from the Brazilian soak test). Thanks in advance! Click to expand... Click to collapse Download CM apps installer from PlayStore and install DSP manager using that.
rudi_j7 said: Download CM apps installer from PlayStore and install DSP manager using that. Click to expand... Click to collapse Man, just the app alone is useless without the libs (I have CM11's libs here, but I don't know if they work). But thanks for helping, anyway. Found a working one here (it's for the Nexus 5, but should work fine on other Snapdragon-powered devices). Had to modify it a bit, though. (oh, and thanks a lot @eng.stk for creating this mod, you just saved my life here )
kingkaminari said: Man, just the app alone is useless without the libs (I have CM11's libs here, but I don't know if they work). But thanks for helping, anyway. Found a working one here (it's for the Nexus 5, but should work fine on other Snapdragon-powered devices). Had to modify it a bit, though. (oh, and thanks a lot @eng.stk for creating this mod, you just saved my life here ) Click to expand... Click to collapse Can I install in my rooted, stock recovery 1033? I´m on soak 5,0
nisiomorais said: Can I install in my rooted, stock recovery 1033? I´m on soak 5,0 Click to expand... Click to collapse Yes, but you'll have to modify the zip to avoid potential conflicts/issues. Open it, and inside it, delete the audio_policy.conf file inside the etc folder. You can keep the vendor folder if you want. Apart from backing up some files, that's the only thing you need to do before flashing. This mod won't disable Motorola's Audio Effects app. I suggest you back up these files: audio_effects.conf (located at /system/etc) audio_policy.conf (also located at /system/etc) all soundfx libs (/system/lib/soundfx) Edit: Can you post the original audio_policy.conf here, please? I just lost mine, and now I need to use a modified one for DSP Manager to work.
This? # Global configuration section: # - lists input and output devices always present on the device # as well as the output device selected by default. # Devices are designated by a string that corresponds to the enum in audio.h # - defines whether the speaker output path uses DRC # "TRUE" means DRC is enabled, "FALSE" or omission means DRC isn't used. global_configuration { attached_output_devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_TELEPHONY_TX default_output_device AUDIO_DEVICE_OUT_SPEAKER attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_BACK_MIC|AUDIO_DEVICE_IN_REMOTE_SUBMIX|AUDIO_DEVICE_IN_TELEPHONY_RX speaker_drc_enabled TRUE } # audio hardware module section: contains descriptors for all audio hw modules present on the # device. Each hw module node is named after the corresponding hw module library base name. # For instance, "primary" corresponds to audio.primary.<device>.so. # The "primary" module is mandatory and must include at least one output with # AUDIO_OUTPUT_FLAG_PRIMARY flag. # Each module descriptor contains one or more output profile descriptors and zero or more # input profile descriptors. Each profile lists all the parameters supported by a given output # or input stream category. # The "channel_masks", "formats", "devices" and "flags" are specified using strings corresponding # to enums in audio.h and audio_policy.h. They are concatenated by use of "|" without space or "\n". audio_hw_modules { primary { outputs { primary { sampling_rates 44100|48000 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL flags AUDIO_OUTPUT_FLAG_PRIMARY } deep_buffer { sampling_rates 8000|11025|12000|16000|22050|24000|32000|44100|48000 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL flags AUDIO_OUTPUT_FLAG_DEEP_BUFFER } hdmi { sampling_rates 44100|48000 channel_masks dynamic formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_AUX_DIGITAL flags AUDIO_OUTPUT_FLAG_DIRECT } compress_offload { sampling_rates 8000|11025|16000|22050|32000|44100|48000 channel_masks AUDIO_CHANNEL_OUT_MONO|AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2 devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING } voice_tx { sampling_rates 8000|16000|48000 channel_masks AUDIO_CHANNEL_OUT_STEREO|AUDIO_CHANNEL_OUT_MONO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_TELEPHONY_TX } } inputs { primary { sampling_rates 8000|11025|12000|16000|22050|24000|32000|44100|48000 channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO|AUDIO_CHANNEL_IN_FRONT_BACK formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_WIRED_HEADSET|AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET|AUDIO_DEVICE_IN_VOICE_CALL|AUDIO_DEVICE_IN_BACK_MIC } voice_rx { sampling_rates 8000|16000|48000 channel_masks AUDIO_CHANNEL_IN_STEREO|AUDIO_CHANNEL_IN_MONO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_TELEPHONY_RX } } } a2dp { outputs { a2dp { sampling_rates 44100 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_ALL_A2DP } } inputs { a2dp { sampling_rates 44100|48000 channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_BLUETOOTH_A2DP } } } usb { outputs { usb_accessory { sampling_rates 44100 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_USB_ACCESSORY } usb_device { sampling_rates dynamic channel_masks dynamic formats dynamic devices AUDIO_DEVICE_OUT_USB_DEVICE } } inputs { usb_device { sampling_rates dynamic channel_masks AUDIO_CHANNEL_IN_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_USB_DEVICE } } } r_submix { outputs { submix { sampling_rates 48000 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_REMOTE_SUBMIX } } inputs { submix { sampling_rates 48000 channel_masks AUDIO_CHANNEL_IN_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_REMOTE_SUBMIX } } } } Sent from my XT1033 using XDA Free mobile app ---------- Post added at 02:51 PM ---------- Previous post was at 02:02 PM ---------- kingkaminari said: Yes, but you'll have to modify the zip to avoid potential conflicts/issues. Open it, and inside it, delete the audio_policy.conf file inside the etc folder. You can keep the vendor folder if you want. Apart from backing up some files, that's the only thing you need to do before flashing. This mod won't disable Motorola's Audio Effects app. I suggest you back up these files: audio_effects.conf (located at /system/etc) audio_policy.conf (also located at /system/etc) all soundfx libs (/system/lib/soundfx) Edit: Can you post the original audio_policy.conf here, please? I just lost mine, and now I need to use a modified one for DSP Manager to work. Click to expand... Click to collapse Hey, I just extracted the application and installed to give a try and... Its working! Sent from my XT1033 using XDA Free mobile app
nisiomorais said: This? # Global configuration section: # - lists input and output devices always present on the device # as well as the output device selected by default. # Devices are designated by a string that corresponds to the enum in audio.h # - defines whether the speaker output path uses DRC # "TRUE" means DRC is enabled, "FALSE" or omission means DRC isn't used. global_configuration { attached_output_devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_TELEPHONY_TX default_output_device AUDIO_DEVICE_OUT_SPEAKER attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_BACK_MIC|AUDIO_DEVICE_IN_REMOTE_SUBMIX|AUDIO_DEVICE_IN_TELEPHONY_RX speaker_drc_enabled TRUE } # audio hardware module section: contains descriptors for all audio hw modules present on the # device. Each hw module node is named after the corresponding hw module library base name. # For instance, "primary" corresponds to audio.primary.<device>.so. # The "primary" module is mandatory and must include at least one output with # AUDIO_OUTPUT_FLAG_PRIMARY flag. # Each module descriptor contains one or more output profile descriptors and zero or more # input profile descriptors. Each profile lists all the parameters supported by a given output # or input stream category. # The "channel_masks", "formats", "devices" and "flags" are specified using strings corresponding # to enums in audio.h and audio_policy.h. They are concatenated by use of "|" without space or "\n". audio_hw_modules { primary { outputs { primary { sampling_rates 44100|48000 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL flags AUDIO_OUTPUT_FLAG_PRIMARY } deep_buffer { sampling_rates 8000|11025|12000|16000|22050|24000|32000|44100|48000 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL flags AUDIO_OUTPUT_FLAG_DEEP_BUFFER } hdmi { sampling_rates 44100|48000 channel_masks dynamic formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_AUX_DIGITAL flags AUDIO_OUTPUT_FLAG_DIRECT } compress_offload { sampling_rates 8000|11025|16000|22050|32000|44100|48000 channel_masks AUDIO_CHANNEL_OUT_MONO|AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2 devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING } voice_tx { sampling_rates 8000|16000|48000 channel_masks AUDIO_CHANNEL_OUT_STEREO|AUDIO_CHANNEL_OUT_MONO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_TELEPHONY_TX } } inputs { primary { sampling_rates 8000|11025|12000|16000|22050|24000|32000|44100|48000 channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO|AUDIO_CHANNEL_IN_FRONT_BACK formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_WIRED_HEADSET|AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET|AUDIO_DEVICE_IN_VOICE_CALL|AUDIO_DEVICE_IN_BACK_MIC } voice_rx { sampling_rates 8000|16000|48000 channel_masks AUDIO_CHANNEL_IN_STEREO|AUDIO_CHANNEL_IN_MONO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_TELEPHONY_RX } } } a2dp { outputs { a2dp { sampling_rates 44100 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_ALL_A2DP } } inputs { a2dp { sampling_rates 44100|48000 channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_BLUETOOTH_A2DP } } } usb { outputs { usb_accessory { sampling_rates 44100 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_USB_ACCESSORY } usb_device { sampling_rates dynamic channel_masks dynamic formats dynamic devices AUDIO_DEVICE_OUT_USB_DEVICE } } inputs { usb_device { sampling_rates dynamic channel_masks AUDIO_CHANNEL_IN_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_USB_DEVICE } } } r_submix { outputs { submix { sampling_rates 48000 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_REMOTE_SUBMIX } } inputs { submix { sampling_rates 48000 channel_masks AUDIO_CHANNEL_IN_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_REMOTE_SUBMIX } } } } Sent from my XT1033 using XDA Free mobile app Click to expand... Click to collapse No, man. The original is the stock one, the one that came with the ROM itself, not the one that came inside the zip.
@kingkaminari # Global configuration section: lists input and output devices always present on the device # as well as the output device selected by default. # Devices are designated by a string that corresponds to the enum in audio.h global_configuration { attached_output_devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER default_output_device AUDIO_DEVICE_OUT_SPEAKER attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_BACK_MIC|AUDIO_DEVICE_IN_REMOTE_SUBMIX|AUDIO_DEVICE_IN_FM_RX|AUDIO_DEVICE_IN_FM_RX_A2DP } # audio hardware module section: contains descriptors for all audio hw modules present on the # device. Each hw module node is named after the corresponding hw module library base name. # For instance, "primary" corresponds to audio.primary..so. # The "primary" module is mandatory and must include at least one output with # AUDIO_OUTPUT_FLAG_PRIMARY flag. # Each module descriptor contains one or more output profile descriptors and zero or more # input profile descriptors. Each profile lists all the parameters supported by a given output # or input stream category. # The "channel_masks", "formats", "devices" and "flags" are specified using strings corresponding # to enums in audio.h and audio_policy.h. They are concatenated by use of "|" without space or "\n". audio_hw_modules { primary { outputs { primary { sampling_rates 44100 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_FM flags AUDIO_OUTPUT_FLAG_PRIMARY|AUDIO_OUTPUT_FLAG_DEEP_BUFFER } fast { sampling_rates 48000 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO flags AUDIO_OUTPUT_FLAG_FAST } } inputs { primary { sampling_rates 8000|11025|12000|16000|22050|24000|32000|44100|48000 channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO|AUDIO_CHANNEL_IN_FRONT_BACK formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_WIRED_HEADSET|AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET|AUDIO_DEVICE_IN_BACK_MIC|AUDIO_DEVICE_IN_FM_RX|AUDIO_DEVICE_IN_FM_RX_A2DP } } } a2dp { outputs { a2dp { sampling_rates 44100 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_ALL_A2DP } } } usb { outputs { usb_accessory { sampling_rates 44100 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_USB_ACCESSORY } usb_device { sampling_rates dynamic channel_masks dynamic formats dynamic devices AUDIO_DEVICE_OUT_USB_DEVICE } } inputs { usb_device { sampling_rates dynamic channel_masks AUDIO_CHANNEL_IN_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_USB_DEVICE } } } r_submix { outputs { submix { sampling_rates 48000 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_REMOTE_SUBMIX } } inputs { submix { sampling_rates 48000 channel_masks AUDIO_CHANNEL_IN_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_REMOTE_SUBMIX } } } } Sent from my XT1033 using XDA Free mobile app
nisiomorais said: @kingkaminari # Global configuration section: lists input and output devices always present on the device # as well as the output device selected by default. # Devices are designated by a string that corresponds to the enum in audio.h global_configuration { attached_output_devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER default_output_device AUDIO_DEVICE_OUT_SPEAKER attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_BACK_MIC|AUDIO_DEVICE_IN_REMOTE_SUBMIX|AUDIO_DEVICE_IN_FM_RX|AUDIO_DEVICE_IN_FM_RX_A2DP } # audio hardware module section: contains descriptors for all audio hw modules present on the # device. Each hw module node is named after the corresponding hw module library base name. # For instance, "primary" corresponds to audio.primary..so. # The "primary" module is mandatory and must include at least one output with # AUDIO_OUTPUT_FLAG_PRIMARY flag. # Each module descriptor contains one or more output profile descriptors and zero or more # input profile descriptors. Each profile lists all the parameters supported by a given output # or input stream category. # The "channel_masks", "formats", "devices" and "flags" are specified using strings corresponding # to enums in audio.h and audio_policy.h. They are concatenated by use of "|" without space or "\n". audio_hw_modules { primary { outputs { primary { sampling_rates 44100 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_FM flags AUDIO_OUTPUT_FLAG_PRIMARY|AUDIO_OUTPUT_FLAG_DEEP_BUFFER } fast { sampling_rates 48000 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO flags AUDIO_OUTPUT_FLAG_FAST } } inputs { primary { sampling_rates 8000|11025|12000|16000|22050|24000|32000|44100|48000 channel_masks AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO|AUDIO_CHANNEL_IN_FRONT_BACK formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_WIRED_HEADSET|AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET|AUDIO_DEVICE_IN_BACK_MIC|AUDIO_DEVICE_IN_FM_RX|AUDIO_DEVICE_IN_FM_RX_A2DP } } } a2dp { outputs { a2dp { sampling_rates 44100 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_ALL_A2DP } } } usb { outputs { usb_accessory { sampling_rates 44100 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_USB_ACCESSORY } usb_device { sampling_rates dynamic channel_masks dynamic formats dynamic devices AUDIO_DEVICE_OUT_USB_DEVICE } } inputs { usb_device { sampling_rates dynamic channel_masks AUDIO_CHANNEL_IN_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_USB_DEVICE } } } r_submix { outputs { submix { sampling_rates 48000 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_REMOTE_SUBMIX } } inputs { submix { sampling_rates 48000 channel_masks AUDIO_CHANNEL_IN_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_REMOTE_SUBMIX } } } } Sent from my XT1033 using XDA Free mobile app Click to expand... Click to collapse Huge thanks, bro! I just rebuilt my audio_policy.conf based on this, and it worked perfectly. Well, since all my requests were answered, and I was able to get what I wanted, now I ask, can any of you moderators close this thread for some time?
dsnoop.conf
# # dsnoop # pcm.!dsnoop { @args [ CARD DEV SUBDEV FORMAT RATE ] @args.CARD { type string default { @func refer name defaults.pcm.dsnoop.card } } @args.DEV { type integer default { @func refer name defaults.pcm.dsnoop.device } } @args.SUBDEV { type integer default 0 } @args.FORMAT { type string default { @func refer name defaults.pcm.dmix.format } } @args.RATE { type integer default { @func refer name defaults.pcm.dmix.rate } } type dsnoop ipc_key { @func refer name defaults.pcm.ipc_key } ipc_gid { @func refer name defaults.pcm.ipc_gid } ipc_perm { @func refer name defaults.pcm.ipc_perm } slave { pcm { type hw card $CARD device $DEV subdevice $SUBDEV } format $FORMAT rate $RATE period_size { @func refer name { @func concat strings [ "cards." { @func card_driver card $CARD } ".pcm.dsnoop.period_size" ] } default 1024 } period_time { @func refer name { @func concat strings [ "cards." { @func card_driver card $CARD } ".pcm.dsnoop.period_time" ] } default -1 } periods { @func refer name { @func concat strings [ "cards." { @func card_driver card $CARD } ".pcm.dsnoop.periods" ] } default 16 } } hint { show { @func refer name defaults.namehint.extended } description "Direct sample snooping device" device $DEV } } Hello XDA. I am a noob and have little experience at best with these type of files and the content within them. I found this document in es explorer and have no idea how it arrived there. However, I do have a grasp on what the word snoop means. Whether it's nothing or something, I would greatly appreciate any insight from a member belonging to this site to shed some light on what this in particular document is saying, as well as what dsnoop represents and why it exists. I may be getting overly concerned for no reason but some schooling from XDA would be huge. Thank u
dsnoop.conf
# # dsnoop # pcm.!dsnoop { @args [ CARD DEV SUBDEV FORMAT RATE ] @args.CARD { type string default { @func refer name defaults.pcm.dsnoop.card } } @args.DEV { type integer default { @func refer name defaults.pcm.dsnoop.device } } @args.SUBDEV { type integer default 0 } @args.FORMAT { type string default { @func refer name defaults.pcm.dmix.format } } @args.RATE { type integer default { @func refer name defaults.pcm.dmix.rate } } type dsnoop ipc_key { @func refer name defaults.pcm.ipc_key } ipc_gid { @func refer name defaults.pcm.ipc_gid } ipc_perm { @func refer name defaults.pcm.ipc_perm } slave { pcm { type hw card $CARD device $DEV subdevice $SUBDEV } format $FORMAT rate $RATE period_size { @func refer name { @func concat strings [ "cards." { @func card_driver card $CARD } ".pcm.dsnoop.period_size" ] } default 1024 } period_time { @func refer name { @func concat strings [ "cards." { @func card_driver card $CARD } ".pcm.dsnoop.period_time" ] } default -1 } periods { @func refer name { @func concat strings [ "cards." { @func card_driver card $CARD } ".pcm.dsnoop.periods" ] } default 16 } } hint { show { @func refer name defaults.namehint.extended } description "Direct sample snooping device" device $DEV } } Hello XDA. I am a noob and have little experience at best with these type of files and the content within them. I found this document in es explorer and have no idea how it arrived there. However, I do have a grasp on what the word snoop means. Whether it's nothing or something, I would greatly appreciate any insight from a member belonging to this site to shed some light on what this in particular document is saying, as well as what dsnoop represents and why it exists. I may be getting overly concerned for no reason but some schooling from XDA would be huge. Thank u.
Automatically post test results in JIRA Adaptavist Tool from rest api test cases run
I need some guidance for recording Test Results Automatically in JIRA Adaptavist Test Management Tool using Java and Testng or any other method within the framework of Java. my automation test cases are in JIRA Adaptavist Test Management Tool. The test cases are written in Java & TestNg and are running on a VM. Our Android team developed some code to deal with this problem. It is just that I don't know how to solve this. they used kotlin to build the code mapping the automation test case names to that of the TestIDs in JIRA Adaptavist Test Management Tool. Every time we run the automation, the team has to input the results in JIRA Adaptavist Test Management Tool manually. It is becoming cumbersome for us to deal with this. Here is the android team's code : Open class rTestCaseHelper { @Rule @jvmField val grantWriteStorageAccess: GrantPermissionRule = GrantPermissionRule.grant( android.Manifest.permission.WRITE_EXTERNAL_STORAGE) @Rule @jvmField val reportRule :TestWatcher = Object : TestWatcher() { var startTime = 0 override fun starting(description: Description?) { startTime = System.currentTimeMillis().toInt() if (sharedPreference.getTestCount() == 0) { testManager.getTestIdAndStoreToSharedPreference() testManager.createTestCycle() } } override fun succeeded(description: Description?) { if(description != null) { val executionTime = System.currentTimeMillis().toInt() - startTime testManager.generateExecutionReport(description.methodName, result: "Pass", executionTime) } } override fun failed(e: Throwable?, description: Description?) { super.failed(e.description) if(description != null) { val executionTime = System.currentTimeMillis().toInt() - startTime testManager.generateExecutionReport(description.methodName, result: "Fail", executionTime, e) } } override fun finished(description: Description?) { sharedPreference.setTestCount(sharedPreference.getTestCount() -1) //Post artfact report link to test cycle (TODO) testManager.postWebLinkToTestCycle() rSharedPreference.preference.edit().clear() Log.d(tag: "QAA", msg: "Automation suite finished and sharedPreference data is cleared!") } } } fun initializeSDK(activeProtection: Boolean = false): Boolean { rSdkEnvironment.initializeSDK(activeProtection, InstrumentationRegistry.getInstrumentation().targetContext) return rSdk.isInitialized() }
Another way to bypass the hidden api restriction.
Github: bypassHiddenApiRestrictionThis is a library that can bypass the hidden api restriction from Android 9 to 12. Usage: dependencies { implementation 'io.github.windysha:bypassHiddenApiRestriction:1.1.0' } import com.wind.hiddenapi.bypass.HiddenApiBypass if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { HiddenApiBypass.startBypass(); }