The details: (as of Apr 15, 2016. Check you revisions.)
There are several choices for an operating system, I chose armbian.com 's Debian Jessie. This OS is also available for several other H3, A10 and A20 CPUs by Allwinner such as the Banana Pi, CubieBoard, etc. These instructions may be adapted for them. They recommend a real class 10 SD card, not a fake. I this card seems a little slow but it is what is on hand.
Orange Pi PC w/ Samsung 8GB SD class 10, but only 4.2MB/s write speed when copying the image with this:
myrealpc$ sudo dd bs=4M of=/dev/mmcblk0 if=Armbian_5.05_Orangepih3_Debian_jessie_3.4.110_d esktop.raw
Next boot the OPi PC from the SD card and setup the system. At armbian 5.05 there are several things to setup that will likely be changed in the next release (any day now). Other distributions will have different configurations. In addition to creating users and setting passwords, you should at least do:
orangepipc$ sudo apt-get update
orangepipc$ sudo apt-get upgrade
This was a 79 MB download this time, last week only 48MB. Next install the necessary commands and libraries for compiling:
orangepipc$ sudo apt-get install build-essential cmake gettext git-core gpsd
gpsd-clients libgps-dev wx-common libwxgtk3.0-dev libglu1-mesa-dev
libgtk2.0-dev wx3.0-headers libbz2-dev libtinyxml-dev libportaudio2
portaudio19-dev libcurl4-openssl-dev libexpat1-dev libcairo2-dev
Get a copy of the current opencpn source code. Change to the directory where you want to store the code, my home dir.And create a build directory.
orangepipc$ cd
orangepipc$ git clone git://github.com/OpenCPN/OpenCPN.git
orangepipc$ cd OpenCPN
orangepipc$ mkdir build
orangepipc$ cd build
Make these changes to the CMakeLists.txt in order for the Mali-400 drivers to be included:
orangepipc$ nano ../CMakeLists.txt
# find_path(OPENGLESv1_INCLUDE_DIR GLES/gl.h )
SET(OPENGLESv1_INCLUDE_DIR "/usr/include/GLES" )
The default swap size for this distribution is 128MB, not nearly enough for opencpn to compile. Therefore
I plugged in a USB stick with a linux on it which had a swap partition on partition 5. To temporarily add swap space I did:
orangepipc$ sudo mkswap -f /dev/sda5
orangepipc$ sudo swapon /dev/sda5
The Mali-400 graphics accelerator driver is not found in the directory opencpn is looking for it. So I made a symbolic link to the expected directory. The error was:
ERROR: /usr/bin/ld: cannot find -lEGL
orangepipc$ sudo ln -s /usr/lib/mali/libEGL.so /usr/lib/
The OS should be ready to compile at this point. Use cmake to create the Makefiles for the compile. There are a few options available as per the OpenCPN site:
It took about 2 hours for the compile. The first time through, just to satisfy me it succeeded, I directly installed opencpn as below.Default install dir is /usr/local, you can change this by providing the appropriate option to cmake: $ cmake -DCMAKE_INSTALL_PREFIX=/usr ../ If you're not into debugging, change to this to generate a smaller and marginally faster binary: $ cmake -DCFLAGS="-O2 -march=native" ../
orangepipc$ cmake ../
orangepipc$ make clean; make -j1
# go drink some coffee, we're talking about a $15 computer compiling
orangepipc$ make install
It WORKS!! mostly.
I decided to try the optomized compile next so I:
orangepipc$ make clean
orangepipc$ cmake -DCFLAGS="-O2 -march=native" ../
orangepipc$ make -j1
orangepipc$ make package
You can then install the package with:
orangepipc$ sudo dpkg -i opencpn_4.2.0-1_armhf.deb
Installing this way did not include the default world map or tcdata and I haven't heard the ships bells yet.
The map and tcdata can be included by following the instructions here. Or simply copy them in from another copy of opencpn (my Ubuntu15.04 laptop with opencpn 4.2 installed for instance) while you are copying in some charts to view.
There were a number of steps to cleanup the armbian 5.05 for automount the USBsticks etc. that I intend to document on my blog. At the rate the Armbian team is progressing, the OS cleanup will not be necessary for long.
Well Done Larry.
ReplyDeleteThe small Arm processors will be great for sailing boat navigation and low power use.