Octave for Android: Difference between revisions

(Marge article.)
mNo edit summary
 
(26 intermediate revisions by 4 users not shown)
Line 1: Line 1:
== Octave for Linux on Dex (Samsung Android devices) ==
== Termux ==


Linux on Dex (LoD) is an application that runs on some Android devices made by Samsung, including their smart phones and tablets. Check the Linux on Dex website https://www.linuxondex.com to see if your device is supported. Linux on Dex is still in beta testing, so the information below may change.  
[https://termux.com Termux] is a Terminal Emulator for Android. You can install it from [https://f-droid.org/repository/browse/?fdid=com.termux F-Droid] (preferred) or [https://play.google.com/store/apps/details?id=com.termux Play store] (deprecated). You don't need a rooted device to use Octave with Termux.


To build Octave on LoD, do the following. This assumes you have LoD working. If not, follow the instructions on the LoD website.
=== Direct Octave installation ===


1. Many of the packages that Octave needs are not in the default Ubuntu installation. You will need to install them using "sudo apt install <package>". First, you need the compilers gcc, and gfortran. There are other packages that are essential to download: "libblas", "liblapack", "libatlas" and their development counterparts with the "-dev" extension.
You can directly install Octave in Termux using the repository by [https://github.com/its-pointless/gcc_termux its-pointless].


2. Remove all "libopenblas" packages with "sudo apt remove libopenblas*". The OpenBLAS library in the default Ubuntu distribution does not work with Octave. You have to remove it. See details here: https://savannah.gnu.org/bugs/?56900
<syntaxhighlight lang="shell">
pkg install wget
wget https://its-pointless.github.io/setup-pointless-repo.sh
sh setup-pointless-repo.sh
pkg install octave
</syntaxhighlight>


3. Unpack the Octave source code and enter the directory. Make a directory "mkdir my_build", enter that directory and issue "../configure". This will start the configure script. Look at the output at the end of the configure process to see what packages are not found by the script. Many of these will be things you want/need in terms of functionality. You can search for the packages available using the command "apt search", and install the ones you want using "sudo apt install <package>" before compiling. If you want to install Octave in "my_build" be sure to issue "../configure --prefix=`pwd`" from this directory.
[https://www.openblas.net/ OpenBLAS] is installed as a dependency, and this method provides much better performance compared to Octave installed inside a GNU/Linux distro running in Termux. By default, Octave only plots with ASCII characters in the terminal.  


4. In the "my_build" directory issue "make" and "make install".
For graphical plots, [https://wiki.termux.com/wiki/Graphical_Environment#Desktop_environment_.28XFCE.29 install] a graphical environment like xfce, and use octave with a vnc server. Only the graphics toolkit "gnuplot" is known to work in this method.


You should now have a working installation in, e.g., /home/dextop/path_to/octave-5.1.0/my_build/
[[File:Octave in Termux.png|thumb|GNU Octave running directly in Termux]]


Graphics:


1. If you set the graphics toolbox to "gnuplot", Octave should generate plots correctly. If it does not, set the environment variable GNUTERM to x11. The default shell in LoD is bash, and you can either issue "export GNUTERM=x11" in the bash terminal or in your octave session issuing "setenv GNUTERM x11". You can also add "setenv GNUTERM x11" to your .octaverc file to do this automatically.
=== Via some GNU/Linux distribution ===


2. If you want to use Qt graphics it will take some work, and may or may not be possible. It has not been tested by anyone. You will need to download the package libandroid-shmem from https://github.com/termux/libandroid-shmem, get it working, and then recompile Octave linking to this library. There are more detailed instructions regarding the compilation on the github website.
Inside Termux in Android, you can install a GNU/Linux distribution like Debian, Ubuntu, Arch or Alpine. Note that Alpine consumes relatively less disk space. Octave can be installed as described in [[Octave for GNU/Linux]] from the distribution's respective package manager.


== Android app ==
To use Octave's graphical capabilities, one needs to install a desktop environment, and a VNC server in the GNU/Linux distro, and one also needs to install a separate VNC viewer app in the Android phone (can be installed from Play Store/F-Droid). On many android devices, only the graphics toolkit "gnuplot" is known to work.  Several apps (e.g. [https://github.com/EXALAB/AnLinux-App Anlinux], [https://andronix.app/ Andronix]) are available to easily install the Linux distribution of your choice, and setting up the desktop environment. Refer to the [https://docs.andronix.app/vnc/vnc-basics Andronix docs] for an overview of setting up the VNC server.


The Android app [https://play.google.com/store/apps/details?id=com.octave Octave] in Google play is built and maintained by Corbin Champion and not part of the GNU Octave project.
'''Optimizing performance''': Installing [https://github.com/xianyi/OpenBLAS/wiki/Precompiled-installation-packages/ OpenBLAS] (with the distribution's package manager) to replace the system's BLAS libraries may tremendously increase the performance of Octave.


The source and some build instructions for the installer can be found here
== GNURoot Octave ==
* https://github.com/corbinlc/octave4android/


This link might have some other, perhaps now outdated, build instructions:
The Android app [https://play.google.com/store/apps/details?id=com.gnuroot.octave GNURoot Octave] in the Google play store is built and maintained by Corbin Champion. However, note that these repositories have not been updated for several years. It is not part of the GNU Octave project. Thus please use the following GitHub pages for questions and bug reports:
* http://octave.1599824.n4.nabble.com/Octave-on-Android-td4658392.html


You are offered a choice of downloading the app, for which a donation is requested, or you can download the full source and build your own version for free. This will require the Octave sources, Corbin's GitHub repository, and the Android SDK.  
* https://github.com/corbinlc/GNURootDebian
* https://github.com/corbinlc/octave4android


This implementation has been done in close cooperation with the Octave developers and makes use of the current Octave source essentially without any change. Thus, it is fully compatible with the versions of Octave on other platforms.
The implementation has been done in close cooperation with the Octave developers and makes use of the Octave source code without essential changes. Thus, it is fully compatible with the versions of Octave on other platforms.
 
Some probably outdated build instructions for the older "octave4android" app:
 
* https://lists.gnu.org/archive/html/octave-maintainers/2013-10/msg00406.html
 
== Octave app in Google Play==
 
'''Unlike the other methods, this requires buying an app (released under GPL-3) from Google Play'''.
 
The Octave app built and maintained by Userland Technologies [https://play.google.com/store/apps/details?id=tech.ula.octave] in the Google Play Store is the full featured and professionally supported GNU Octave running on your phone.  It runs off of their UserLAnd platform which does not require root to your device.  Userland Tech has pre-installed GNU Octave so the user has a seamless "desktop" experience on their phone.  The application is open source and any bug reports or questions can be posted at their github at: https://github.com/CypherpunkArmory/octave
 
 
[[Category:Installation]]

Latest revision as of 21:10, 30 April 2022

TermuxEdit

Termux is a Terminal Emulator for Android. You can install it from F-Droid (preferred) or Play store (deprecated). You don't need a rooted device to use Octave with Termux.

Direct Octave installationEdit

You can directly install Octave in Termux using the repository by its-pointless.

pkg install wget
wget https://its-pointless.github.io/setup-pointless-repo.sh
sh setup-pointless-repo.sh
pkg install octave

OpenBLAS is installed as a dependency, and this method provides much better performance compared to Octave installed inside a GNU/Linux distro running in Termux. By default, Octave only plots with ASCII characters in the terminal.

For graphical plots, install a graphical environment like xfce, and use octave with a vnc server. Only the graphics toolkit "gnuplot" is known to work in this method.

 
GNU Octave running directly in Termux


Via some GNU/Linux distributionEdit

Inside Termux in Android, you can install a GNU/Linux distribution like Debian, Ubuntu, Arch or Alpine. Note that Alpine consumes relatively less disk space. Octave can be installed as described in Octave for GNU/Linux from the distribution's respective package manager.

To use Octave's graphical capabilities, one needs to install a desktop environment, and a VNC server in the GNU/Linux distro, and one also needs to install a separate VNC viewer app in the Android phone (can be installed from Play Store/F-Droid). On many android devices, only the graphics toolkit "gnuplot" is known to work. Several apps (e.g. Anlinux, Andronix) are available to easily install the Linux distribution of your choice, and setting up the desktop environment. Refer to the Andronix docs for an overview of setting up the VNC server.

Optimizing performance: Installing OpenBLAS (with the distribution's package manager) to replace the system's BLAS libraries may tremendously increase the performance of Octave.

GNURoot OctaveEdit

The Android app GNURoot Octave in the Google play store is built and maintained by Corbin Champion. However, note that these repositories have not been updated for several years. It is not part of the GNU Octave project. Thus please use the following GitHub pages for questions and bug reports:

The implementation has been done in close cooperation with the Octave developers and makes use of the Octave source code without essential changes. Thus, it is fully compatible with the versions of Octave on other platforms.

Some probably outdated build instructions for the older "octave4android" app:

Octave app in Google PlayEdit

Unlike the other methods, this requires buying an app (released under GPL-3) from Google Play.

The Octave app built and maintained by Userland Technologies [1] in the Google Play Store is the full featured and professionally supported GNU Octave running on your phone. It runs off of their UserLAnd platform which does not require root to your device. Userland Tech has pre-installed GNU Octave so the user has a seamless "desktop" experience on their phone. The application is open source and any bug reports or questions can be posted at their github at: https://github.com/CypherpunkArmory/octave