Android Auto
Ubuntu 16.04 minimal
Available with the ubuntu64-16.04.3-minimal or higher.
The article is based on the ubuntu64-16.04.3-minimal.
The Android Auto is works well on both ODROID-C2 and ODROID-C1+.
- You can get the ubuntu64-minimal image.
Install packages
You can login by root at the First boot.
And before installing the Android Auto, you should install the dependency packages.
- target
# apt update && apt upgrade # apt install -y git-core curl dh-autoreconf libboost-all-dev libusb-1.0.0-dev libssl-dev cmake libprotobuf-dev protobuf-c-compiler libqt5multimedia5 libqt5multimedia5-plugins libqt5multimediawidgets5 qtmultimedia5-dev libqt5bluetooth5 libqt5bluetooth5-bin qtconnectivity5-dev pulseaudio gstreamer1.0-plugins-bad lxde lubuntu-default-session gst123 xfce4-pulseaudio-plugin
Add odroid user
Create the odroid account.
- target
# adduser odroid # usermod -a -G sudo odroid # reboot
Auto login
- target
$ sudo vi /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf [Seat:*] greeter-session=lightdm-gtk-greeter autologin-user=odroid
Change session to "LXDE" and Login UI shell.
Before change to the LXDE, you have to logout user account.
update compiler for libprotobuf
- target
$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/5/lto-wrapper Target: aarch64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-arm64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-arm64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-arm64 --with-arch-directory=aarch64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu Thread model: posix gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9)
Update gcc
- target
$ sudo apt update $ sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y $ sudo apt update $ sudo apt install gcc-snapshot -y $ sudo apt update $ sudo apt install gcc-6 g++-6 -y $ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-6 $ sudo update-alternatives --config gcc
- target
$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-linux-gnueabihf/6/lto-wrapper Target: arm-linux-gnueabihf Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 6.3.0-18ub untu2~16.04' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --program-prefix=arm-linux-gnueabihf- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-armhf/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-armhf --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-armhf --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --enable-multilib --disable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --disable-werror --enable-multilib --enable-checking=release --build=arm-linux-gnueabihf --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf Thread model: posix gcc version 6.3.0 20170519 (Ubuntu/Linaro 6.3.0-18ubuntu2~16.04)
build protobuf-compiler(3.0)
get protobuf-compiler source
- target
$ wget https://github.com/google/protobuf/archive/v3.0.0.zip $ unzip v3.0.0.zip $ cd protobuf-3.0.0
fix autogen.sh
Change the Google Mock packages. to google test packages.
- target
$ vi autogen.sh
- target
. . . (:32) if test ! -e gmock; then curl $curlopts -L -O https://github.com/google/googletest/archive/release-1.7.0.zip unzip -q release-1.7.0.zip rm release-1.7.0.zip mkdir -p gmock/gtest mv googletest-release-1.7.0 gmock/gtest fi . . .
build
If you used ODROID-C2, you can add option “-j4”.
but on ODROID-C1+, you should avoid this option.
- target
$ ./autogen.sh $ ./configure $ make [-j4] $ sudo make install $ sudo ldconfig
Remove libprotobuf 2.x.x
- target
$ sudo cp /usr/local/lib/libprotobuf* /usr/lib/arm-linux-gnueabihf/ $ sudo rm -rf /usr/lib/arm-linux-gnueabihf/libprotobuf.so.9* $ sudo rm -rf /usr/lib/arm-linux-gnueabihf/libprotobuf-lite.so.9*
build aasdk
If you used ODROID-C2, you can add option “-j4”. but on ODROID-C1+, you should avoid this option.
- target
$ cd $ git clone -b master https://github.com/f1xpl/aasdk.git $ mkdir aasdk_build $ cd aasdk_build $ cmake -DCMAKE_BUILD_TYPE=Release ../aasdk $ make [-j4]
build openauto
Build & install the open auto.
- target
$ cd $ git clone -b master https://github.com/f1xpl/openauto.git $ mkdir openauto_build $ cd openauto_build $ cmake -DCMAKE_BUILD_TYPE=Release -DRPI3_BUILD=FALSE -DAASDK_INCLUDE_DIRS="/home/odroid/aasdk/include" -DAASDK_LIBRARIES="/home/odroid/aasdk/lib/libaasdk.so" -DAASDK_PROTO_INCLUDE_DIRS="/home/odroid/aasdk_build" -DAASDK_PROTO_LIBRARIES="/home/odroid/aasdk/lib/libaasdk_proto.so" ../openauto $ make [-j4]