[LG V40 Guides, News, & Discussion] cogpie:
For those wanting to use the LG Camera app on the V40 but do not have an option to toggle the camera's sounds and want it, then the script below should enable the 'Shutter sound' setting.

*A disclaimer and a reminder that in Japan and Korea, and possibly other countries, by silencing the camera sounds you may be breaking the law iiuc - so do check! - I cannot be held liable if you are arrested, charged, fined, sent to jail, etc. - You do this at your own risk!*

That said, where I am based it is not, and I find the shutter sound annoying. There are modules around that will silence your LG Camera app, they work by changing the files containing the sound into silent/empty ones. Not a great solution if you want to have the choice about whether you want sound or not. However, there is already a setting for this buried inside the LG Camera app and this will enable it for you:

So, assuming you have Magisk installed on your phone, please run these commands from your computer:

adb shell
su
echo "resetprop ro.vendor.lge.build.target_operator TRF_VZW" > /data/adb/post-fs-data.d/enable_shutter_sound_setting.sh
chmod 755 /data/adb/post-fs-data.d/enable_shutter_sound_setting.sh
reboot

Once it restarts, load up the LG Camera app, tap the settings button (top left?), then if you scroll through the settings you should see a 'Shutter sound' setting you can toggle on and off. I've only tested this on my LM-V405EBW, it is possible other versions may be different.

If you'd like a bit more detail about what is going on here, then:

First (line) just starts up a shell on your phone

Second gives you root (you may need to grant access in Magisk)

Third writes a system property to a file to change the mobile operator your LG apps may believe they are running against. The TRF_VZW value is one of two that will allow the 'Shutter sound' setting to appear in the LG Camera app

Forth makes the file you just created executable to the android system

Fifth will reboot the phone and enable this property for the LG Camera app to use, and give you the 'Shutter sound' setting option

I should point out a caveat: this setting change may mean other LG apps may also make assumptions about what you can or cannot do as if you were a Tracfone phone. This only affects LG apps it seems though, so probably not too bad, but worth knowing perhaps :angel:. If you want to remove this change then please run:

adb shell
su
rm /data/adb/post-fs-data.d/enable_shutter_sound_setting.sh
reboot

Something I don't understand (yet) is why some report that turning the phone to silent/vibrate mode will also silence the LG Camera app's shutter sound too - this does not work on mine... not a big thing as this works well for me. Maybe it is something about starting with a LM-V405EBW V20a-IND-XX - if anyone knows, please leave a comment. Thank you

Finally, If you'd like far too much detail about this under the hood then please indulged yourself:

I downloaded the app from the phone at /system/product/priv-app/LGCameraApp/LGCameraApp.apk

Decompiled it and found this interesting piece of code in the playSound function of the SoundManager class:

if (!FunctionProperties.isSupportedShutterSoundSetting() || ... )

So looking at the isSupportedShutterSoundSetting function in the FunctionProperties class, we see that this is how it determines who has this setting:

ModelProperties.getCarrierCode() == 6;

Looking inside the getCarrierCode function of the ModelProperties class, we find that two carriers return a 6, and we also see the system property they use:

sCarrierCodeMap.put("VZW", 6);
...
if ("TRF_VZW".equals(SystemProperties.get("ro.vendor.lge.build.target_operator"))) {
sCarrierCode = 6;

So by setting the system property 'ro.vendor.lge.build.target_operator' to 'VZW' (Verizon Wireless, I'd guess) or 'TRF_VZW' (Tracfone on Verizon ¯\_(ツ)_/¯) we can enable seeing the 'Shutter sound' option in LG's Camera app's menu. Enjoy!

Update: So after playing around with other LG apps, Phone and Contacts had some issues using VZW. I didn't dig too deeply into this, but can imagine an if statement or two. I found TRF_VZW is largely an unknown operator which seems to default to OPEN, as you would probably want