[LG V40 Guides, News, & Discussion] DLS123:
I couldn't find any guide for rooting the V40, so I thought I'd write down the steps I took to root my new EUR V40 - LMV405EBW. Maybe it will help others. Sorry if this is somewhat confusing, I didn't have time to make a polished version. It's basically made from my notes during the process with the commands copied from bash history.

-First, unlock the bootloader following LG's instructions here: https://developer.lge.com/resource/mobile/RetrieveBootloader.dev

There's no TWRP for the V40 and the one made for G7 doesn't work. I don't have the time and knowledge to even attempt to compile TWRP for the V40, so I proceeded with just patching an original boot image with Magisk.

You can get the patched boot images that I used from here:

Oreo 10e: boot_a_magisk_patched_10e.img

Oreo 20f: boot_a_magisk_patched_10f.img

Pie 20a: boot_a_magisk_patched_20a.img

Pie 20b: boot_a_magisk_patched_20b.img

Pie 20f: boot_a_magisk_patched_20f.img

Pie 20g: boot_a_magisk_patched_20g.img

Q 30b: boot_a_magisk_patched_30b.img (this requires flashing to the active boot partition).

Q 30c: boot_a_magisk_patched_30c.img (this requires flashing to the active boot partition)

Q 30d: boot_a_magisk_patched_30d.image (this may or may not work with "fastboot boot" and could require flashing to the active boot partition. I haven't tested if live boot still works. I just did fastboot flash boot_x img_file).

You can try to boot it with with fastboot if you have a LNV405EBW and skip the KDZ extraction part.

Installing Magisk:

Flashing this image isn't necessary, just straight boot should be sufficient and safe.

First install Magisk Manager 7 on the phone then connect the phone to the PC and run:

adb reboot bootloader
fastboot boot boot_a_magisk_patched_10e.img

After the phone boots the OS with the external boot image, open Magisk Manager and tap on Install. Select the option to Direct install to the active slot. I played it safe and decided to NOT flash also on the inactive slot. I've left it alone so I can use it in case of need of recovery.

You'll probably notice that you don't have a connection to the carrier. Just ignore it, it will back once the phone is booted normally.

Reboot and you will have permanent root until you switch the A/B slots.

In case my patched boot image doesn't work, you can just make your own.

Tools needed:

Magisk Manager 7.0.0 installed on the phone

LG Bridge installed on a Windows machine.

a Linux machine or VM (I used the latest ubuntu desktop), python3 with the zstandard module installed and kdztools from steadfasterX's repo. Maybe kdztools would work on Windows too, I haven't tried it.

adb, fastboot

You need to procure an original ROM file for your phone model. It can be downloaded easily with LG Bridge. Just connect the phone to a Windows PC, start LG bridge, go to the Software update tab and click on Update error recovery. Wait for the download to start and disconnect the phone. Ignore LG Bridge complains about not being able to flash after the downloading stage is completed. Don't click anything in Bridge and before closing it go to C:\Users\<your_username>\AppData\Local\LG Electronics\LG Bridge\SWUpgrade and copy your KDZ somewhere else. Preferably send it to the Linux VM to the LG work folder, it'll be needed there.

On Linux open a terminal:

cd ~/Documents
mkdir LG
cd LG
git clone https://github.com/steadfasterX/kdztools.git
cd kdztools
nano undz.py -c

For kdztools to be able to extract the V40 images, I needed to edit undz.py and comment the lines 88-90. So, this block should all be commented or undz will fail to extract the boot partitions.

#if len(dz_item['pad']) != 0:
# print("[!] Error: pad is not empty", file=sys.stderr)
# sys.exit(1)

To extract, with the KDZ copied to ~/Documents/LG/

cd ~/Documents/LG/kdztools
./unkdz.py -f ../V405EBW10e_00_OPEN_EU_DS_OP_0109.kdz -x
cd kdzextracted/

List the partitions contents and look for the IDs of boot_a and/or boot_b. In my case they were 44 for boot_a and 63 for boot_b

../undz.py -f V40510e_00.dz -l

Extract boot_a or boot_b or both, they're identical:

../undz.py -f V40510e_00.dz -s 44
../undz.py -f V40510e_00.dz -s 63

You can find the extracted boot images in the dzextracted subfolder. Get boot_a.image or boot_b.image or both from there and send them to the phone in a location accessible by Magisk Manager. The Download folder should do fine.

Open Magisk Manager and tap Install, select Patch Boot Image file and patch the image file(s) you extracted. Get the patched_boot.img that Magisk Manager saves in the Download folder and send it to a PC where you have adb and fastboot.

Go to the beginning of the post to the Installing Magisk section.