If you're looking for the root tutorial, directly head to post #2.
Here are the current features :
- Shortcuts to change source to HDMI 1 to 3, AV, as well as opening an onscreen menu to choose the source. These will be useful if you change the launcher, as you will lose to Xiaomi widget with Tv preview and change source buttons. Shortcuts are also directly placed on the launcher as well, for direct access. These shortcuts are compatible with International devices
- Input settings allows you to setup an extermal input to automatically start on boot. This replaces the stock behavior, that won't be working anymore if you change launcher. This is compatible with international devices, that lack this feature.
- Input Lag [ROOT] : Decreases Input Lag by disabling Noise Reduction and Deinterlacing
- Zoom [ROOT] : Changes the Zoom in/out factor for video display (external inputs as well as any video player)
- Force 4k UI rendering [ROOT] : this may cause lags when rendering the UI
- Device settings : launches the projector/tv/box settings
- Android settings : launches the Android stock settings
- Engineering menu : launches the engineering menu
- Media explorer : launches the Xiaomi Media Explorer/Player
- ... : any app not dedicated to Android Tv, whose icon doesn't dispaly on the launcher, will appear here
- Remote Control [ROOT] : displays a QR code to my Web Remote Control, working on any device
- Freeze stock apps [ROOT] : freezes/hides/disables stock apps/bloatware (for unrooted devices, please check below, in Remarks section, point 3). Make sure you install another keyboard (ie "LeanbackIme Keyboard", from the "Install 3rd party apps" menu) as it will disable the stock one.
- (Un)Freeze launchers [ROOT] : (un)freezes/hides stock Xiaomi TvHome or Google Leanback launcher. Make sure you have another compatible launcher installed before freezing it (for unrooted devices, please check below)
- Install 3rd party apps : lets you choose apps to install, that have been tested working fine on our device. Most will require Aptoide Tv installed. Good news, it's able to download and install it automatically ! If your device is rooted, Google services/apps can be installed too (see more in the Google Apps section)
- Uninstall Google Apps [ROOT] : if you installed Google Apps / services with the feature described above, you can safely uninstall them (but why would you want that ?)
- Accessibility Service [ROOT] : Xiaomi code prevents Google Play app to install/update apps (you will get an error code). The fix to this behavior has major inconvenients : when activated, you lose some UI features (volume UI, recent apps screen, Shutdown dialog). Enabling the accessibility service associated to this app, will automatically enable the fix when entering the Google Play app, and disable it when exiting. So keep in mind that when you want to install/update apps, you'll need to stay in Google Play and can't let it do it's job in the background while watching TV. This accessibility fix also bind the stock remote control "Voice recognition" button to Google Assistant. It also allows your device to automatically start an external input on boot (compatible with Mi international devices) and adds a shortcut to open these tools by double pressing the menu button.
- Check root access : checks your device's root status
- Custom Props Override [ROOT/MAGISK] : changes some custom props so as to get a more stock Android Tv behavior. This will enable Google services disabled by Xiaomi, allow your "Usb debugging" option to stick across reboots, allow passing safetynet...
- This device : displays many details about this device, and temperature sensors values is available.
Google Apps / Services instructions :
This has been tested successfully on a rainman's clean 1218 and 1289 firmware installation. If something goes wrong for you, try to make a clean flash. It also works on batman (4k projector), as well as other Xiaomi Tv devices.
Except for "AndroidMediaShell" (Google Cast server), most (all?) features are working fine including :
- Tv settings
- Google Play (to let it install/update apps, please enable the Accessibility Service)
- ATV remote service : if you install Google ATV remote on your smartphone, everything (including speech recognition) will work
- Google Assistant : with the Accessibility Service enabled, a short press on the mic button on your stock remote will launch Google Assistant. Then, when it's listening, press and hold the mic button while speaking and release it when done. According you've used More Locale to change to your mother tongue, this will even work in your language.
- root your device (see post 2)
- if not already done, install the MiProjA1-Tools 2.14 (or above) and launch it
- execute Applications / install 3rd party apps, then install :
- Aptoide Tv Store
- ATV launcher (you'll disable stock launcher later on. In case Google Apps don't install correctly, you'll have a fallback launcher)
- Youtube [optional]
- MoreLocale [optional] (in case your mother tongue is not english, it will let you choose more than what's listed in Android settings)
- Google Apps/services (don't forget it )
- execute Applications / Freeze Stock launcher (to disable TvHome)
- execute Applications / Freeze Stock apps (to disable most Xiaomi apps and services)
- execute System / Custom Props override (to pass safetynet checks and enable more stock behavior)
- execute System / Accessibility Service, enable the service in accessibility settings (to fix "Google Play" ability to install/update apps and to link the stock remote control "Voice recognition" button to Google Assistant as well as other features)
- [Optional] Install magisk module "Nexus Media" to change the stock bootanimation (go to Shortcuts / Magisk Manager to execute it, and then in the left menu, "Downloads" section, just install "Nexus Media")
- Reboot and complete the Welcome app to setup your Google account (first and second boot will be longer than usual)
- Note that an Android accessibility setting might get enabled after the first reboot when Google Apps have been installed. It'll cause green borders around buttons. Just go to settings / accessibility and disable "talkback".
- Launch Google Play to update Google apps and let the update finish before exiting Google Play (if the app's accessibility service is running as it should, it will display a message when launching/exiting Google Play)
- [Optional] start MoreLocale to change your language
- Enjoy your Google Tv device !
Once installed, don't change the device resolution in the android tv settings. This is not supported by the video drivers that will then only display a checkerboard. The only known solution as of now is to reinstall the full stock rom and start again.
- Using any of the above features (even [ROOT] ones) should be safe and shouldn't prevent you from installing stock OTA updates afterwards (no system file is modified). If anything goes wrong, don't hesitate to tell me, but anyways, at worst, flashing the full stock ROM will fix any issue, so there isn't any risk of bricking your device.
- Replacing the launcher will require another compatible one installed. Leanback launcher runs fine and gives you Google Tv stock experience (if you can install Google services/apps). Else, I like ATV launcher (current version 0.11. The only minor issue is that it won't display the shortcuts to HDMI1/3 on the launcher, you'll have to go in the Tools app. The dev will fix it in upcoming release). HALauncher works fine too. Whichever launcher you want to use, please make sure it launches fine before freezing the stock one. I'd recommend installing ATV 0.11, even if you don't intend use it, just as a failover in case the launcher you want to use doesn't work once the stock one has been replaced. Except if you have stock launcher or leanback launcher installed (which will force you to use them if installed), if multiple other compatible launchers are installed, a popup will ask your choice at each boot and home button press.
- Concerning the (un)freeze apps/launcher, if your device is not rooted, this app currently can't do it automatically (I'm still trying to find a workaround), but you can do it manually by connecting a computer to your device with ADB and executing a few command lines :
- Download adb for your OS (check here)
- Start command line (terminal)
- type "adb connect IP_OF_YOUR_DEVICE:5555" to connect through the network
- enable "usb debugging" in your device's "Developer" options (in settings) (to enable "developer options", see here)
- to freeze an app type : "pm uninstall -k --user 0 PACKAGE" (replace PACKAGE with com.mitv.tvhome for Xiaomi stock launcher, and com.google.android.leanbacklauncher for Google Leanback launcher)
- to unfreeze an app type : "pm install -d -r --user 0 PACKAGE_PATH" (replace PACKAGE_PATH with /system/vendor/app/TvHome/TvHome.apk for Xiaomi stock launcher, and /system/priv-app/LeanbackLauncher/LeanbackLauncher.apk for Google Leanback launcher)
- to get a list of manually uninstallable apps, check the "rainman.v2.json" file on my github
- Evolution : If you have another device and want this app to support it (meaning using another list of installable/uninstallable apps), don't hesitate to make a PR on my github.
Engineering Menu App Translation :
After a bit of google translate and reverse engineering, here's a translation of the different menus, along with my own values (1st one is for "rainman", second one for "batman")
- Projector information
- - Brightness 
- - DLP vendor name [APPO][APPO]
- - Production Week 
- - Contrast ratio 
- - Brightness Uniformity 
- - Serial Number
- - Color coordinates [r:860 g:860 b:860 x:283 y:302][r:860 g:860 b:860 x:2720 y:2790]
- Solid color (android) -> displays a solid color (using android system)
- Solid color (projector) -> displays a solid color (native)
- Other image test (android) -> displays a gradient (using android system)
- Other image test (projector) -> displays a gradient (native)
- Color wheel delay -> when incorrectly set, this can lead to posterization issues (gradients become unnatural and tend to display large uniform areas) 
- Save color wheel delay to Android
- Image mode : change the screen light intensity
- - Standard
- - Highlight
- - Energy saving
- Temperature monitoring
- - ambient temperature 
- - color wheel 
- - Laser temperature channel 1 
- - Laser temperature channel 2 
- - DMD temperature [-]
- Model name [MiProjA1][MiProjLAS2]
- Human body induction -> enables/disables IR sensor that disable image when coming close to the laser
- Save information to projector
- DLP version [major:1, minor:2, patch:5][major:7, minor:3, patch:7]
- 3D (when modified, need to restart to take effect) -> enable/disable 3d support
Supported devices :
- 1080p Laser Projectors:
- Xiaomi Mi Laser UST Projector 150" (chinese) / MiProjA1 / model: MJJGYY01FM / codename: rainman
- Wemax One 7000 / MiProjA1 / model: FMWS01C / codename: rainman (thanks rockpaperscissors)
- Wemax One Pro / MiProjA1 / model: FMWS02C / codename: rainman
- Xiaomi Mi laser UST Projector 150" (international) / MiProjA1 / model: MJJGYY02FM / codename: anglee (thanks Nathan0121) (no root supported yet)
- 4k Laser Projectors:
- Xiaomi Mi Laser UST Projector 150" 4k (chinese) / MiProjLas2 / model: MJJGTYDS01FM / codename: batman
- Wemax A300 / MiProjLas2 / model: L1668FCF / codename: batman
- Fengmi 4K cinema laser / MiProjLas2 / model: L176FCN / codename: batman
- probably not released yet / MiProjLas2 / model: L246 / codename: batman
- Led projectors:
- Xiaomi Mi Home Projector Lite / Mijia Projector Youth edition / MiProjLED1 / model: MJJGTYDS02FM / codename: conan (root using rainman twrp below)
- Xiaomi Mijia Mi / ZMiProj / model: TYY01ZM / codename: zodiac
- Xiaomi Mi TV 3s / codename: mission impossible
- Xiaomi Mi TV 4 / codename: pulpfiction
- Xiaomi Mi TV 4a/4c/4s/4x / codename: matrix/xmen
- to be completed
This app can be downloaded here or on aptoide
- rebranded app to "Mi ProjecTivy Tools" because why not.2.17 : added ability to reduce input lag and disable noise reduction by long pressing "back" button.
- stability : added a screen resolution check at boot. If a wrong resolution is set in the Android tv settings, the device won't be locked on the chessboard screen anymore, it will switch back to the default resolution (rainman and batman supported)
- stability : set this app as a Tv Launcher, so if all launchers are mistakenly disabled, the device will boot on it so that a launcher can be reinstalled
- UI : made menu buttons dynamic, so they won't show on your device if the feature is not supported
- UI : rewrote all submenu interface to use Android Tv UI. This vastly improved look and usability
- UI : changed menu icons
- UI : if accessibility service is running, the app can be opened by double pressing the "menu" button
- feature : added an option to change the zoom in/out factor for video display (external input and all media players)
- feature : added option to switch window manager to 4k (interface will likely not be totally fluid, though)
- feature : rewrote the option to decrease input lag so that you can disable "noise reduction" and "deinterlacing" individually
- feature : added a shortcut (qrcode) to MiReCo, the Web Remote Control
- feature : made the shortcuts section dynamic : it will now display all installed apps not natively compatible with Tv launchers (like the "Tv App Repo" app)
- feature : added "about this device" section that displays many details as well as the temperature sensors values
- improvement : made the hdmi input shortcuts compatible with international (android tv 8+) devices
- improvement : rewrote code to automatically start on a selected external input. This brings support for international models. IT WON'T USE the stock device settings anymore to select the input. Use the included parameter in "Input Settings"
- feature : added a shortcut to the stock "media explorer" directly in Tv launchers
- feature : added a warning if accessibility service is not enabled
- fix : fixed compatiblity with Netflix (not the Tv version, unfortunately, but the interface is totally usable). Due to missing DRM support, resolution is limited to SD.
- internal : many fixes and improvements (and bugs ?)
2.16 : added auto start to hdmi (as stock launcher), so that users who changed launcher won't miss this feature.