Brian Lovelace | Los Angeles & Santa Barbara Wedding Photographer | For Photographers
Brian Lovelace is a Santa Barbara Wedding Photographer.
wedding photograher, los angeles, los angeles wedding photographer, santa barbara wedding photographer, commercial photographer, headshot photographer, portrait photographer, high fashion photographer
archive,category,category-for-photographers,category-249,qode-quick-links-1.0,ajax_leftright,page_not_loaded,,qode-theme-ver-17.2,qode-theme-bridge,disabled_footer_top,wpb-js-composer js-comp-ver-5.4.7,vc_responsive

For Photographers

Over the past few months I’ve griped many times about Adobe Lightroom Classic CC being slow, almost to the point of it being unusable. After trial and error, I’ve figured out a workflow that is fast, efficient and makes my projects get finished in a timely manner without me wanting to throw my computer out of a window.

The first thing you need to do is analyze your computer. What are the specs you are starting with and what are things that you can do to improve performance? Are you using an external Hard Drive? Is your internal drive an SSD or a Hard Disk? How much RAM does your computer have access to? Do you have a quality graphics processor?

Here were my specs before optimizing my workflow.

Core i7 7700k (4-core 4GHz clock)
32GB of DDR4 @3200MHz
Nvidia GTX1070 OC Graphics Card
512GB 3.5″ SSD connected by SATA
24TB External Storage connected by USB 3.0

Looking at this, you might think that this should be just fine for editing photos in Lightroom. From an overall perspective, it should be, but it comes down to workflow, and optimizing components in your system for your workflow. What I found in my rig was that data transfer was the bottleneck in my system. I found myself editing off of my external Hard Disks instead of from internal components. This was huge for causing sluggishness, especially since Lightroom is constantly Reading and Writing Data simultaneously, which traditional Hard Disks cannot do very effectively. The fix for this issue was to move my catalogs and photos in the catalog onto internal storage that was SSD based. After trying this out, I saw an improvement but wondered if I could take it a step further.

This leads to understanding what components that you can upgrade to improve performance. After looking at my motherboard, I found that my board supports NVMe SSD drives. If you think of your data transfer inside of your computer as a city, NVMe drives are the expressways while anything connected with SATA or USB are like city streets. NVMe SSDs allow for data to get rushed via PCI-e through the processor almost instantaneously. After perusing Amazon and reading reviews, I settled on a 500GB Samsung Evo 960 NVMe SSD which has read speeds of 3500MB/sec and write speeds of 2500MB/sec vs 480-600MB/sec on USB 3.0 and SATA. That’s up to 6X the speed! This means that Lightroom can easily read and write to the drive without any bottlenecks in sight. If you can’t add an NVMe drive, just make sure you’re editing off of any internal drive since SATA is still much faster than USB 3.0. After doing this, it was all about optimizing my workflow.

These are the steps that I take after each shoot to ensure that my Lightroom workflow is optimized for speed.

1. Make sure your Lightroom preferences are set to use your graphics card and that editing with Smart Previews is turned on.

2. Make sure there’s space for your photo session on your computer’s internal hard drive or SSD. If there isn’t room, clear up room by backing up or cleaning up files you don’t need anymore.

3. Create a new Catalog for (each) new shoot.

4. Import your photos onto your internal drive. Optionally, convert to DNG. At the top right of the import window, select Previews “Embedded and Sidecar”, under that check the box that says “Build Smart Previews.” Start the import process… This can take a while due to heavy processing, especially if you’re converting to DNG.

5. Once it’s done importing (and converting to DNG, if applicable), back up your imported photos to your external hard drive(s) for safe keeping.

6. Start editing and enjoy the speed!

7. When you’re done editing, copy your catalog folder onto your external drive(s) for safe keeping.

8. Delete the catalog and photos off of your internal drive once you’re certain you’re sufficiently backed up to other locations.

If you need to go back to older catalogs and shoots, make sure you just copy the folder with both the photos and the catalog back to your internal drive and start editing again. Make sure you archive your catalog again once you’re done and you’ll be set!

I really hope this helps you speed up your workflow. If I helped you out or have any questions, feel free to reach out and tell me of your successes on Facebook, Instagram, YouTube, etc!


So here’s a quick comparison of the new profiles within Adobe Lightroom. As of the update today, Adobe has redone their camera profiles and put them at the forefront of the editing process rather than one of the last things a photographer thinks about.

In this post I’m going to be comparing the different profiles and how they make the image appear. All profiles are chosen by choice during the editing process to help a photographer reach the style they’re looking for. There is no right or wrong way to edit an image!

These comparisons are just changing the profile on a completely RAW image imported directly into Lightroom. If you slide the slider to the right, you will view the Legacy (Old) profile. If you slide to the left, you will view the New Profile.

Adobe Standard (Legacy) vs Adobe Color (New)

Adobe Standard (Legacy) vs Adobe Vivid (New)

Adobe Standard (Legacy) vs Adobe Portrait (New)

Adobe Standard (Legacy) vs Adobe Landscape (New)

Adobe Standard Monochrome (Legacy) vs Adobe Monochrome (New)


Here I’m going to compare Adobe Standard and Adobe Color to the DVLOP profiles that have been created for use with the DVLOP Presets.

Adobe Standard (Legacy) vs DVLOP V1 Profile

Adobe Color (New) vs DVLOP V1 Profile

Adobe Standard (Legacy) vs DVLOP V2 Profile

Adobe Color (New) vs DVLOP V2 Profile


The profiles, in combination with the base Mastin Labs Fuji 400H Preset combine the following effects.

Adobe Standard (Legacy) vs Adobe Color (New)

Adobe Standard (Legacy) vs Adobe Portrait (New)

Adobe Standard (Legacy) vs DVLOP Profile (V1)



As professional photographers, we’ve all had the struggle of finding an efficient way of posting our photos to Instagram accounts. Whether you are on Mac or PC, it’s always a hassle to get your photos from Lightroom to your phone.

On Mac, you first needed to export from Lightroom, open up the file location, then Airdrop it to your phone… this means you need both your computer and phone on the same network. From there you need to write out your caption on your phone. Frustrating to say the least. An for Android, it is even worse, needing to export from Lightroom, upload to Google Drive, then downloading the photo to your phone, and then writing a caption.

I found this awesome plugin for Lightroom that takes your entire process and makes it simple. This plugin is called “LR-Instagram,” found for free on The plugin is donationware and I encourage those who find it useful to donate to the developer. Once you install the plugin to Lightroom, it becomes extremely simple to do everything from uploading photos to Instagram, to easily apply captions to your Instagram —  and all from Lightroom!!!

After installation, LR Instagram will pop up in your Publish Services in the Library Panel like this.

You’ll need to click a similar button to the “Set Up” buttons you’ll see in the services above. From there you’ll log into your Instagram Account, and finish setting up the plugin. You can even set up multiple accounts to make your life super easy!

Unless you want your images that aren’t perfectly square to have to a border, you’ll need to select the “Force Crop for Instagram” and click insert to make it so that your images are perfectly cropped for Instagram.

For your caption, it is super easy, just change it to “Caption,” which will allow you to type in the caption for your Instagram post within Lightroom! For the example above, the caption will be “For being a rainy day, this couple pulled off the most gorgeous engagement photoshoot at The Griffith Observatory.” This will be automatically placed as the caption for your image once you upload it!

To put a photo into the upload queue, drag it from the filmstrip in the bottom to the “LR-Instagram” publish service.

Once it is within the LR Instagram Publish Service, click into “Instagram Photos.” Here you’ll be able to select the photo you want to push to Instagram. Click the Publish button and it will be live on your Instagram page within seconds!

I really hope this provided some insights into how I am able to easily plan out my Instagram posts and make it super simple to stay on top of your Instagram game!

While most people would say that it’s impossible to put any of your Lightroom presets into the Lightroom mobile app, I have to say that it is quite contrary for Android users. As an Android user myself, I found a way to unpack the Android APK for Lightroom, and repack it with the inclusion of standard .lrtemplate presets that many purchase from other photographers. Prior to this most people used a sample photo sync to their computer, with a specific preset applied, then copying and pasting it over to another photo on their mobile device. This set up completely takes away the copy and paste part of the equation and builds Lightroom presets directly into the app. To see how it is done, please watch my video below…

If you are uncomfortable following the steps above, or would like me to build the Lightroom app for you with the presets built-in, I would be happy to do so for a small fee of $10. Please reach out to me via email ([email protected]) and we can begin the process!

Hi everyone!

So my latest venture has been into the land of drones! I’ve gotten to the point that I’m really comfortable flying by hand, and I wanted to venture into automated flight. Unfortunately, the drone that I’m using, the Phantom 4 Pro Plus is really restricted in what you can do digitally with it. Just as I’m not a fan of Apple restricting what you can do with its devices, I’m not fond of what DJI does to lock down its software, preventing 3rd party apps from being installed on their device.

After researching, I found a gentleman by the name of “Michael W” on YouTube that managed to unlock and root his Phantom 4 Pro Plus controller to accept 3rd Party apps. With his setup being based on a Mac, translating his actions to Windows was a bit more difficult than I expected due to the Windows Linux Shell in Command not accepting connection to USB Devices. It took me way too long and way too many Google searches to figure that out for myself, so hopefully, that step alone helps you solve a lot of the mystery.

Here’s a breakdown of what I did to do this on a Windows PC. Keep in mind that this is not for the faint of heart and involves MANY steps and procedures, including work in the Linux Terminal. If you are not comfortable in this environment, turn back now. I am not responsible for any of the mistakes you may make in the process of doing this procedure. Do this at your own risk.

What You Need:
  1. DJI Phantom 4 Pro Plus Controller (GL300E)
  2. Standard Micro USB Cable (USB-A to Micro USB)
  3. Time
  4. Patience
  5. Linux Skills
  6. A basic understanding of Android Debug Bridge
STEP 0 – SUPER IMPORTANT — Enable Developer Options on Your Controller

Go into the DJI Controller, enter the settings (where you change WiFi, etc)… scroll down to the bottom, press “About Device.” To enable Developer Options, scroll to the bottom and tap “System Version” 10 times in a row quickly. You’re a developer! Yay!

Go back, you’ll see Developer Options right next to “Date & Time” in the settings. Tap into it. Scroll down and turn on USB Debugging. Woo! Are you ready for some 3rd Party Apps? Well, you have a long way to go from here, so keep on trucking through this tutorial!

Step 1 – Install Oracle VirtualBox

Do yourself a favor and forget about trying to enable the Linux Shell in Windows and using bash from there. The easiest way to do the entire process is to download VirtualBox software onto your PC and installing it. Oracle’s free VirtualBox Software is great. See their site, here. To go straight to downloading the Windows version of VirtualMachine, click here. Install it, then proceed to the next step.

Step 2 – Install a Debian version of Linux

This is the version of Debian that I used to install onto my VirtualMachine (direct download links)

For Intel Systems: Debian i386

For 64-bit AMD Systems: Debian AMD64

Once you’re finished downloading, proceed to the next step.

Step 3 – Install Debian onto your VirtualBox Software

This step is technically multiple steps… it isn’t the easiest to setup, but luckily there are a ton of guides on the internet for this! But why let them be your guide when I can!?

Step 3.1

So first thing’s first, make sure you have at least 20GB-ish of hard drive space available on your boot drive (the one that has your windows installation in it).

Step 3.2

Click the baby blue “New” button in the top left corner. 

Step 3.3

A window like this will pop up. Type in the name spot, “Debian.”  If you are on a 32-bit machine, ensure that the “Version” is set to Debian (32-bit). If you are on a 64-bit machine, ensure that the “Version” is set to Debian (64-bit). Click “Next.”

Step 3.4

Set your memory allocation size for the VirtualBox to use. I was generous and gave 8GB, you can give more or less… up to you! Click next!

Step 3.5

Set up a hard disk. Select the second option “create a virtual hard disk now.” Click “Create”

Step 3.6

Select a hard disk file type. Select the second option “VHD (Virtual Hard Disk). Click “Next.”

Step 3.7

Select how the storage on the physical hard disk is allocated. I like “Dynamically Allocated.” Press “Next.”

Step 3.8

Select the size of the hard disk. Just for convenience sake, I keep mine at 20GB. Click “Create.”

Step 3.9

You’ll see a page like this. Highlight your Virtual Machine and click “Start”

Step 3.10

You’ll see a popup that says something like this “Select a Startup Disk.” Click the folder and select the ISO of Debian that you downloaded in Step 2. Once you’ve selected the .iso file you downloaded earlier, press “Start”

Step 3.11

The install screen will pop up. It will look like this. Use your keyboard arrows to arrow down to “Install.” Do not choose Graphical Install.

Step 3.12

Select the country in which you a working and keyboard layout that matches the computer hardware you are using. Press enter (return) to select each option.

Step 3.13

After selecting the keyboard key map, the installer installs some components and then pauses to ask for the host name. You can choose anything you want for the host name. I chose “debian” to make things easy.

Step 3.14

It is best to leave the domain name blank, for now. We can configure it later, if we need to.

Step 3.15

Next, select the root password for the system. The root password is used when you need to make changes to the system’s critical software and configurations. It will ask you to re-type the password for redundancy and to ensure you typed it correctly the first time. This password is incredibly important. Do not lose it as it will let you enable SuperUser priveledges when we need them in the terminal.

Step 3.16

Now, you will set up the user name, user id, and user password for the account you will use when working with this virtual machine. In this example, I used my real name for the user name, then I used my first name as my User ID. You can use any username and use ID that you want. Then I chose a password. This password is important! Write it down and save it!

Step 3.17

Next, choose the time zone in which you are working from. I’m in LA, so I’ll choose Pacific.

Step 3.18

In the next screen, select the default choice, Guided – use entire disk. The LVM option is an advanced disk configuration that might be useful in a real host machine but is not needed in a virtual machine. It is OK to use the LVM option, if you’d like.

Step 3.19

All files in one partition is the simplest configuration and it is the default choice.

Step 3.20

Now, you commit the disk configuration and the Debian installer will partition and format the virtual disk image file to paper it for the installation of the new Debian Linux operating system. AKA, select YES.


The package manager application needs to be configured with information that tells it where to download additional software from, and where to find software updates in the future. the following two screens help you to choose the appropriate server. First, select the country in which the server you wish to use is located.



Then, select the server in the country you chose. You can probably guess from the domain names which server is the most reliable. Or you can research the institutions associated with the domain names to determine which one is likely to be the best source. Don’t worry too much about choosing the best server. Any server listed will be adequate.


Since my network does not have a proxy server, I can leave the next screen blank. Most home networks will not have a proxy server. If your network has a proxy server, enter it’s information on this screen. You may need to ask your network administrator for the proxy server information.


Now, the system will spend some time downloading and installing all the additional software it needs from the server you specified. This may take up to 20 minutes on a typical broadband connection.

The next screen will ask you what additional software you want to select. Debian Desktop Environment and Standard System utilities are selected by default. You should also select SSH Server so you can securely log into the virtual machine over the network if you need to.


Next, install the GRUB bootloader.


I suggest you install GRUB on the disk recommended by the installer. In this case, select /dev/sdafrom the menu on the screen below.


After the installation is complete, the Debian operating system boots up in the virtual machine.


Log in using the User ID and password you selected during the installation process.

Congrats! You’ve officially installed a Virtual Machine running Debian Linux on your computer! See the power button in the top right hand corner? Power off the virtual machine (do not power off your actual computer).

Once it’s powered off,  we just need to setup USB. Plug in your controller via MicroUSB into your computer. Go into the settings as seen in the screenshot below.

From there go into the USB tab, check of “Enable USB Controller” with “USB 1.1 (OHCI) Controller” selected. Under USB Device Filters, make sure you can see your controller, labelled “DJI GL300E.” If you can’t, click the little USB Plug with a green + sign on the right hand side. Select your controller there. Once you click there it should show up under USB Device Filters. Make sure this is checked off and we can move on!

Step 4 – Setup the Android Debug Bridge on Linux

On this version of Linux, get rid of the “sudo” command for all code on the XDA Guide. Start off by typing “su” into the Terminal and entering your Root Password. This will make you a superuser and make the “sudo” command irrelevant. You can follow the steps on the XDA Forum Here although I’ll do my best to make it comprehensible with screenshots below.

4.1 – Open the Terminal

Click “Activities” in the upper left-handcorner. In the search bar that pops up, type “terminal.” Click on the terminal icon that shows up below.

4.2 – Enable SuperUser Priveledges

Type in “su” (without quotes) and press enter. Enter the “root” password you set up when installing Debian. Once you do this, the terminal will look like it does below. You’re now a SuperUser in the root!



Copy and paste these codes one by one into the terminal (make sure to press enter after you copy).

Code 1:

add-apt-repository ppa:nilarimogard/webupd8

There is a possibility that you might get a couple of failures on this code. Never fear, just continue doing your thing. Check out mine below to compare. For this code you’ll have to press enter in the middle of it to continue adding the code.

Code 2:
apt-get update

This line of code will literally make your computer go bonkers for a second and spew out a million lines of code. Never fear, it’s just updating some stuff. Some indexes will fail to download. Don’t worry, it’s all part of the setup process.

Code 3:

apt-get install android-tools-adb android-tools-fastboot

Type in the code and press enter. It will soon ask you if you want to continue (Y/n). Type in a Y and press Enter. It’s gonna go crazy again! Woo!



Now it’s time to install the 32-bit compatibility libraries for 64-bit systems:

Code 1:
apt-get install ia32-libs

Sometimes it will throw an error saying it won’t be able to locate a package. Don’t worry too much about it.

Code 2:
dpkg --add-architecture i386

Sometimes doesn’t show anything. It didn’t for me, so I’m not going to even give you a screenshot. You’ll probably be able to see in the next screenshot anyways.

Code 3:
apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386


By now you Linux installation already has ADB and Drivers install but now you need to configure it to detect the Various different types of Hardware Vendor ID’s. So now it’s time to do the following:

Type in this code:
gedit /etc/udev/rules.d/51-android.rules

So this is a fun one. Type it in, press enter and you’ll get a notepad that pops open. Think of these codes as drivers so that your Linux can communicate with your device.

Copy and paste these rules into the notepad that opened up:
# udev rule to detect android devices
# These rules refer to

# Acer
SUBSYSTEM=="usb", ATTR{idVendor}=="0502", MODE="0666", GROUP="plugdev"
# Archos
SUBSYSTEM=="usb", ATTR{idVendor}=="0e79", MODE="0666", GROUP="plugdev"
# Asus
SUBSYSTEM=="usb", ATTR{idVendor}=="0b05", MODE="0666", GROUP="plugdev"
# Azpen Onda
SUBSYSTEM=="usb", ATTR{idVendor}=="1f3a", MODE="0666", GROUP="plugdev"
# BQ
SUBSYSTEM=="usb", ATTR{idVendor}=="2a47", MODE="0666", GROUP="plugdev"
# Dell
SUBSYSTEM=="usb", ATTR{idVendor}=="413c", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="2ca3", MODE="0666", GROUP="plugdev"
# Fairphoneca
SUBSYSTEM=="usb", ATTR{idVendor}=="2ae5", MODE="0666", GROUP="plugdev"
# Foxconn
SUBSYSTEM=="usb", ATTR{idVendor}=="0489", MODE="0666", GROUP="plugdev"
# Fujitsu Toshiba 	
SUBSYSTEM=="usb", ATTR{idVendor}=="04c5", MODE="0666", GROUP="plugdev"
# Garmin-Asus
SUBSYSTEM=="usb", ATTR{idVendor}=="091e", MODE="0666", GROUP="plugdev"
# Google
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
# Haier
SUBSYSTEM=="usb", ATTR{idVendor}=="201e", MODE="0666", GROUP="plugdev"
# Hisense
SUBSYSTEM=="usb", ATTR{idVendor}=="109b", MODE="0666", GROUP="plugdev"
# HTC, Wiko
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"
# Huawei
SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666", GROUP="plugdev"
# Intel
SUBSYSTEM=="usb", ATTR{idVendor}=="8087", MODE="0666", GROUP="plugdev"
# K-Touch
SUBSYSTEM=="usb", ATTR{idVendor}=="24e3", MODE="0666", GROUP="plugdev"
# KT Tech
SUBSYSTEM=="usb", ATTR{idVendor}=="2116", MODE="0666", GROUP="plugdev"
# Kyocera
SUBSYSTEM=="usb", ATTR{idVendor}=="0482", MODE="0666", GROUP="plugdev"
# Lab126
SUBSYSTEM=="usb", ATTR{idVendor}=="1949", MODE="0666", GROUP="plugdev"
# Lenovo
SUBSYSTEM=="usb", ATTR{idVendor}=="17ef", MODE="0666", GROUP="plugdev"
# LG
SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666", GROUP="plugdev"
# Meizu
SUBSYSTEM=="usb", ATTR{idVendor}=="2a45", MODE="0666", GROUP="plugdev"
# Micromax
SUBSYSTEM=="usb", ATTR{idVendor}=="1ebf", MODE="0666", GROUP="plugdev"
# Motorola
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="0409", MODE="0666", GROUP="plugdev"
# Nook
SUBSYSTEM=="usb", ATTR{idVendor}=="2080", MODE="0666", GROUP="plugdev"
# Nvidia
SUBSYSTEM=="usb", ATTR{idVendor}=="0955", MODE="0666", GROUP="plugdev"
# OnePlus Two (unknown vendor's name)
SUBSYSTEM=="usb", ATTR{idVendor}=="2a70", MODE="0666", GROUP="plugdev"
# Oppo
SUBSYSTEM=="usb", ATTR{idVendor}=="22d9", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="2257", MODE="0666", GROUP="plugdev"
# Pantech
SUBSYSTEM=="usb", ATTR{idVendor}=="10a9", MODE="0666", GROUP="plugdev"
# Pegatron
SUBSYSTEM=="usb", ATTR{idVendor}=="1d4d", MODE="0666", GROUP="plugdev"
# Philips
SUBSYSTEM=="usb", ATTR{idVendor}=="0471", MODE="0666", GROUP="plugdev"
# PMC-Sierra
SUBSYSTEM=="usb", ATTR{idVendor}=="04da", MODE="0666", GROUP="plugdev"
# Qualcomm
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev"
# Rockcwell Electronics
SUBSYSTEM=="usb", ATTR{idVendor}=="2207", MODE="0666", GROUP="plugdev"
# SK Telesys
SUBSYSTEM=="usb", ATTR{idVendor}=="1f53", MODE="0666", GROUP="plugdev"
# Samsung
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", GROUP="plugdev"
# Sharp
SUBSYSTEM=="usb", ATTR{idVendor}=="04dd", MODE="0666", GROUP="plugdev"
# Sony
SUBSYSTEM=="usb", ATTR{idVendor}=="054c", MODE="0666", GROUP="plugdev"
# Sony Ericsson
SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666", GROUP="plugdev"
# Spreadtrum
SUBSYSTEM=="usb", ATTR{idVendor}=="1782", MODE="0666", GROUP="plugdev"
# T & A Mobile Phones
SUBSYSTEM=="usb", ATTR{idVendor}=="1bbb", MODE="0666", GROUP="plugdev"
# Teleepoch
SUBSYSTEM=="usb", ATTR{idVendor}=="2340", MODE="0666", GROUP="plugdev"
# Texas Instruments UsbBoot
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", MODE="0666", GROUP="plugdev"
# Toshiba
SUBSYSTEM=="usb", ATTR{idVendor}=="0930", MODE="0666", GROUP="plugdev"
# Wearners
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev"
# Wileyfox
SUBSYSTEM=="usb", ATTR{idVendor}=="2970", MODE="0666", GROUP="plugdev"
# XiaoMi
SUBSYSTEM=="usb", ATTR{idVendor}=="2717", MODE="0666", GROUP="plugdev"
# YU
SUBSYSTEM=="usb", ATTR{idVendor}=="1ebf", MODE="0666", GROUP="plugdev"
# Zebra
SUBSYSTEM=="usb", ATTR{idVendor}=="05e0", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="2b4c", MODE="0666", GROUP="plugdev"

Press save and close it!


Go back into your Terminal.

Time to change some permissions!

chmod a+r /etc/udev/rules.d/51-android.rules

Reload the rules you just changed!

udevadm control –reload-rules

Add in the user group “plugdev” for the rules we just created.

addgroup –system plugdev

And add your username to this group. Replace <username> with your primary username that will use ADB without the <> around it.

sudo adduser <username> plugdev

You might not need to do any of these, but do ’em just to be safe. Here’s my screenshot of all of the actions above.

Step 5:

Finally, you’re ready for the good stuff. On your Linux VirtualBox, click activities in the top left-hand corner again. Open Firefox and download OriginalGangsterCow. This script runs a hack against the one  file DJI inserted into the device to make it so that 3rd Party Apps can’t be installed, the “installd” file. Follow the prompt to open the zip file with Archive Manager. Click extract, like you see below.

Click “Extract” again and it will extract OriginalGangsterCow into your Home Root. A window will pop up that says “Show the Files” or “Close.” Click “show the files.” Double click into the OriginalGangsterCow-Master folder. Right click inside of this folder and click on “Open in Terminal.”

From here a Terminal Window will open up. Type the code below and press enter:


Congrats! You can now install apps! It’s now time to root the device!

Step 6: Rooting with Kingo ROOT

Go download Kingo Root to your PC and install it on the Windows side. You can download Kingo Root from their website, here:

Once you install the app, open it. Make sure your controller hasn’t been turned off. If it has, you need to run ./ again through the terminal.

Open up KingoRoot and let it detect the Device. It will come up with the device name and say “Root” when it is ready. Press Root and wait for it to go through the steps.

Once it is finished, the controller will pop up with a “Root Succeeded” message.


Step 7 : Installing SuperUser Apps

Since the device probably restarted during the root process, it’s important that you run the ./ bash script again on our Linux setup.

Once you run the bash script, it’s time to install some things. Download these things onto your Linux setup.

SuperUser 2.79


Chainfire FlashFire 0.73

With these APK’s downloaded, we’re going to run a really easy ADB command to install them. I renamed the files in the Linux file explorer so it would be easier for me to type into the terminal. You can do this too! Go to the download location, and right click Open in Terminal.

Here’s what we’re going to do… adb install <filename.apk>

So if you renamed the files it would look something like this:

adb install App2SD.apk

adb install SuperSU.apk

adb install euchainfireflash_073.apk

Here’s an example with my SuperUser APK Renamed to something easier:

Step 8: Applying a new Root.

Open up the SuperSU app that we installed. Ensure that you’re connected to the web via WiFi. It will say the binaries need to be updated. Press “Continue”. If it asks if you have a custom recovery like TWRP or CWM. We do not, so just click “Normal.” Here it will rebuild the root, which may take a couple of minutes. If it fails, chances are that you need to run the script once more. Once it’s done the controller may go black. Just turn off the controller and turn it back on.

Step 9: Freeing Up Space

The whole reason we downloaded and installed App2SD is because there is not enough room in the controller’s /system/ folder to install the Google Play Store. I don’t have screenshots of this (because I already deleted WeChat off of my device), so you’re going to have to take my word for it.

Here are the steps.

  1. Open App2SD — it will ask for Root Permission. Give it to it.
  2. Click into “Link Apps to SD Card.”
  3. Scroll down to WeChat and click into it
  4. Click the 3 vertical dots in the upper right hand corner and a dropdown menu will appear
  5. Click Uninstall — A window will pop up asking if you want to uninstall WeChat. The answer is Yes!
  6. Rejoice, you have space for the Play Store!
Step 10: Download and add the G-Suite to a MicroSD Card

OpenSource G-Suite Apps (for Google Play Store)

Download the link above. Keep it in ZIP format and put it on a microSD card. Put it in the root of the card, not in a folder, as seen below. 

From here plug the MicroSD card into the back of your Controller

Once your card is inserted, start up the app that we installed called “FlashFire.”

It will ask for root permission; give it. It will then pop up with a disclaimer. Agree with the disclaimer. Let’s get on into the steps.

  1. On the left menu, tap actions.
  2. Press the + sign in the red circle on the bottom right
  3. Select Flash ZIP or OTA
  4. Using the dropdown menu, select “Filesystem root”
  5. Scroll down until you see “mnt/” — tap into this
  6. Scroll up until you see “external_sd/” — tap into this
  7. In this area you should see the “” file that we placed on the SD card. Select this file.
  8. Another pop up will come up, don’t check off “Auto-mount” or “Mount /system read/write”
  9. Click the check mark in the upper right hand corner of the pop-up
  10. The pop-up will disappear. Scroll to the bottom of the page and push the button that says “FLASH”
  11. A warning will come up about the screen possibly going black for a second. Hit okay and continue with the flash.

Congrats! Restart your controller and you’ll find that you have the Google Play Store! Sign in and have a blast getting all the apps you’ve wanted on your controller for all this time!