Running blender on android (No root required, not a port)

So I’ve managed to run desktop blender version on my android device and decided to share the instructions.
First, I would like to remind that I’m not responsible for any damage on your devices.
Make sure you have at least 1.5 gb of internal memory (if you have device with 4< gbs of interal memory, you probably would face a situation where you cant install anymore apps, android would limit that) and ARM cpu architecture.

Internet connection required at all stages of installation. Also keep in mind that usual blender experience requires you to use really a lot of hotkeys, so it’s adviced to use external input device (bluetooth mouse/keyboard, or usual usb keyboard plugged with otg cable), or you can use some configurable android onscreen keyboards (links in the end). Anyway, perfomance and input liminations makes this setup quite uneffective if you really plan to use blender on your phone/tablet.

Grab this: https://play.google.com/store/apps/details?id=com.cuntubuntu (yes I’m aware about the package name).
The application above is not an emulator, it uses android kernel. Also, it doesnt actually mess with the system itself, but mounts debian filesystem in it’s own private folder (so it doesnt require root and you dont need to worry about your system). Although, if you have android 4.4+ device, it wouldnt allow you to install this application twice (because of error 24). To eliminate that, remove folder /data/data/com.cuntubuntu/ (your device root fs, not sdcard, this action requires root). Debian FS located in /data/data/com.cuntubuntu/files/. This application installs debian jessy with all packages compiled for ARM architecture.

First run time is long, because application runs installation scripts. Once it’s over, you will be prompted to select screen resolution and dpi (font size). At this point, I suggest to exit the app and run it again, then press setup button on top of the screen. Go to mouse>select screen size>tablet. This will enable absolute mouse cursor positioning (clicking right where you tap instead of using your touchscreen as a laptop touchpad). The default installed window manager is xfce.
Now you have full-featured linux distribution on your device (and yet it’s located in private application memory (which is managed by the android) and doesnt mess with your current system in any way). You dont need to install any drivers, etc, everything should work out of box.

There is no opengl support (and the author states that it’s unlikely that he will implement that), so the system using software opengl emulation using libgl1-mesa-swx11 package. Although considerably slower and doesnt use gpu of the device, it’s still possible to run some applications or lightweight games.
When booted to the desktop, press ‘back’ key (this button summons the keyboard). Open the terminal and type:
sudo apt-get update
This action updates list of available packages in debian repositories. When it’s finished, type
sudo apt-get install blender
apt-get will list a lot of packages, just type “y”+enter when it will ask.
It will download, install and configure everything needed to run the blender. When it’s finished, you can find blender in menu>graphics>blender (or just type blender in the terminal). Now, if everything is done correctly, you’ll have an opened and working blender window.

I also suggest to go in blender preferences>input>emulate 3 button mouse, this enables you to use default shift/ctrl/alt keys to rotate, zoom and position the viewport. If the blender interface is too small, you can input custom dpi value in blender settings.
Now, you cant really do much without a proper input, there are 3 android keyboards that generally fits for tasks like that:




Running on my phone with locnet.gamekeyboard. My phone specs are: 4x1.3Ghz cpu, 2 gb ram. I was able to sculpt this cube with dynotopo up to 40k polys without noticable perfomance drops (although I can keep increasing resolution further, it just takes more time to perform actions).


Improved blender layout a bit and assigned rotate and move viewport macros on a and b buttons (it’s still in progress, this is why buttons is scattered around the screen like that).

Also, you can install any other desktop software, (which exist in debian repos). I’ve tried gimp and inkscape so far.

to search repositories for software, use
apt-cache search ‘keyword’
it will list names of all packages with the keyword, then just type
sudo apt-get install ‘name of the package’.
for example: sudo apt-get install gimp inkscape

I’ll share my gamekeyboard profile if somebody will be interested.

2 Likes

Can you get the blender game engine running?

2.76?

would you care to help make a current android blender player port?

W/about tegra systems

It’s not a port, but a complete (though slow) debian and blender setup. Game engine, cycles rendering, etc works just fine (though very slow).
2.76 is possible if somebody would compile them from the blender git, but the latest one is 2.72 in debian repos.
I dont think I really can help with blender player development in any way.

Tegra is arm based, so it’s fine.
Anyway the only mobile x86 cpu manufacturer now is intel (with their intel atom cpus), so mtk, tegra, qualcomm, and all other cpu’s is arm.

Why is debian slow on android?

is there a very minimalist android distro that could run bge games?

what I really need is a app that runs bge games and fast, and supports all bge features.

Is it possible to obtain this app without going through Google Play?

Edit: Never mind, there’s a link to a SourceForge download in the description.

Debian is not slow by itself, it’s just lack of hardware video acceleration.
I’ve tried to run some simple bge scene with ~40k polys, but it took rasterizer 18 seconds to draw each frame, lol. Well, scene was heavily texturized, using standard map set for every object (diffuse+specular+normal), and, considering there is no hardware acceleration (and no access to video memory too to store textures, etc), it was expected. Solid and wireframe shading modes works better though, so at least it’s possible to make simple sculpts or usual modelling.

You know I can not think of a single reason of why you’d want to do this

don’t mean to say that it’s not cool but just highly impractical

is there a distro that has access to video acceleration etc? or you would need to rewrite then render for openES?

I would forget about Blender running well on mobile until it has drawing/rendering code that can make use of OpenGL ES, I’m guessing the hack makes everything super slow because it runs the graphics code on the CPU portion instead (ie. non-accelerated because the mobile GPU cannot process it).

Considering how it makes a poor attempt to kludge a PC-style environment onto a mobile device, I would say it’s not worth it.

I have used this app on my nVidia Shield tablet. The tablet has OpenGL 4.4 support too(not just ES), btw. But of course the app can’t utilize it and Blender works only on software acceleration. Using Blender with it isn’t probably the easiest thing to do also because Blender isn’t really meant for touchscreen interfaces. That said, I think the app would be handy if you had to make small changes to your work and you hadn’t your laptop with you, for example. Of course, that depends on your mobile device performance, I have 4-core 2.2 GHz Tegra K1 processor in my tablet.
Gimp works very nicely in the app, though I have had some problems with pressure recognition(works but gimp ui buttons don’t work correctly if it’s enabled). In fact, I think it’s the best free image edit/draw software I can find for my Android.
In my opinion the app generally is very useful; for example it starts quite quickly in opposite to booting real linux, and makes it possible to use many linux programs easily on a Android device, as far as they don’t require some features the app can’t provide(like low-level device access, I think).

If somebody still interested, I found another way of running blender, faster, with good input and enabling you to connect via vnc, framebuffer, xserver or ssh to your system (locally or remote), but requires root and making deeper changes to the system. Also when if you’re going to remove that app make sure that the container is stopped and partitions unmounted, otherwise it would delete all files on mounted partitions too. If there are some errors and you cant unmount partitions, reboot your phone.
grab this:



And, if you want to connect via ssh without gui to your system, this: https://play.google.com/store/apps/details?id=org.connectbot

Run linux deploy, select profile (default is linux), go to the settings>update environment.
Now, when it’s done, tap paremeters icon for current profile, settings window will pop up.
Select:
Distribution: debian
Version: jessie
Installation type: file
Path: where you want, but preferably on internal memory (because it’s faster than sdcard). Paths look different on different devices, but for me it was like: /storage/sdcard1/debian.img (sdcard0 is usual sdcard and sdcard1 is internal memory). You can find out full path with some file managers like es or total commander.
File size: automatic (this will create 4095 mb system image file, maximum file size for fat32 FS, dont try to make the file bigger).
File system: automatic
Username and password: anything you like, you’ll use these to connect via ssh or vnc.
Desktop environment: I’d suggest using xfce, because default lxde in debian repos have some issues and doesnt display mouse cursor properly, and other DE’s are slow.
Additional components: select desktop environment, ssh and vnc servers, dont install xserver (unless you would use it).
Gui settings: tap there if you want to change screen resolution.
Mounting: tap the checkbox to allow mount android resources (like sdcard), then select what you want to mount in menu below.
Now, scroll back to the top of the menu and tap install (internet connection required). It would take around 20-30 mins.

Although, installing to the directory (instead of image file) would be faster, it cannot be installed into partitons with “noexec” and “nodev” flags (and you would have to modify your internal memory partition to change that). There also possible installations to different partitions, so if you happen to have sdcard with multiple partitons, you could use it.
Also, there are plenty of different distros and versions available, but only debian jessie have both blender 2.72 and libgl1-mesa-swx11 package for software opengl emulation.
When installation finished, tap “start” to mount and run the system. It uses android kernel and resources, so the startup time will be around 5 seconds.
Now, run VNC viewer. Add new connection, connect to localhost (you can either type 127.0.0.1 or just “localhost”). VNC viewer have good controls and all buttons needed for proper input (opposed to the way described in the original post, where it would require you to download additional keyboards). Now, open the terminal and type:
sudo apt-get update
sudo apt-get install libgl1-mesa-swx11 blender

You also can install package “mesa-utils” to have 2 utilities: glxinfo and glxgears, to display current opengl rendering capatibilities and second one for measuring the perfomance.

This way is superior in terms of perfomance, stability and input (vnc viewer app was developed for a comfortable input to desktop environments). You also can connect to the system on your phone from different devices (like installing vnc viewer on your desktop pc), or even connect to vnc server somewhere else from your phone.

You also can connect via ssh (no graphical interface, pure terminal input).

To maximize blender perfomance, I’d suggest going to blender preferences>system, disable mipmap, gpu mipmap generation, 16 bit float textures, anisotropic filtering, and sound to “none”.

Dont forget to stop linux deploy when you are done, switch back to linux deploy interface, click “stop” and wait till services are stopped and partitions unmounted, otherwise it would remain running in the background and eating the battery.

Anyway I had decent perfomance when sculpting and rendering this:


I wonder how well hundreds of Cortex A72 processors will work in Cycles, if someone decides to put together such a cluster?

I wish some kind dev would port blender itself to android, and make a mobile branch.

Note if you have a x86-[64] cpu (like Asus ZenFone), you can use VirtualGL and GL4ES for hardware acceleration. This way, performance is nearly native.
Then, plugging a 3 button mouse in OTG, you can use it as on PC.

Happy Blending.

2 Likes

Edited, check it out

Will this work with a Samsung Galaxy Note 10 +?

1 Like

Not the gl4es or the virtualgl part, because one of them just runs on x86

On android, I think blender 2.8 will have a much simpler life as soon as Vulkan on blender will be implimented …
I also read that google has reached interesting results with Vulkan on CPU …
https://www.phoronix.com/scan.php?page=news_item&px=SwiftShader-Vulkan-2019

i have a asus zenfone max pro m1, i will check it out. can i just apt-get install virtualgl and gl4es?
also i’m getting segmentation fault after running blender. I installed blender through terminal(apt-get install blender)