Giter VIP home page Giter VIP logo

aacs's Introduction

Intro

Many new cars have headunits that support Android Auto (AA). While the default use case (connect mobile via USB) is already useful (eg. for navigation), one may look at AA headunits as a more generic input/output device.

This project attempts to provide a basic layer to access Android Auto headunits as a video display and later maybe touchscreen, soundcard, etc.

This project attempts to be specific enough to provide a clear way to set it up. On the other hand it attempts to be generic enough by providing connectivity to already existing software components.

Hardware

This software is being developed on Odroid N2 platform. Reasons behind choosing this platform:

  • has USB OTG controller
  • powerful enough to process video
  • reasonable form factor, power requirements and price

If you want to try out this piece of code and/or help just buy Odroid N2. I do not have access to any other platform (ok, I tried BeagleBone Black, but it was too slow) so it would be extremely hard for me to provide any support. However, feel free to provide patches for other platforms.

System

The software is being developed on:

Installation

Instructions how to set up runtime and development environment can be found in the installation instructions document.

Design

Android Auto Protocol is not documented. However, it has been reverse engineered and open source implementation exists (see https://github.com/opencardev/openauto). While this code does not use a single line from openauto (except for headunit key/cert), openauto is extremenly useful while developing and testing AACS.

There are several components that comprise AACS:

  • AAServer is the component responsible for communication with car's headunit. When USB OTG connection is available AAServer starts Android Auto communication with headunit and start listening on a Unix socket for client connections.
  • AAClient is the component responsible for communication with mobile device running Andoid Auto. It starts connection to AAServer to get available service description and then forwards all the traffic to AAServer.
  • GetEvents is a small tool that listens for touch events from AAServer and uses XTest to forward them to specified application.
  • more to come - several more components integrating AACS with generic system components are possible such as GStreamer audio sink, audio/video source, etc.

AACS depends on Snowmix for video mixing.

Usage ideas

So what exactly could be displayed on headunit? Here are a few ideas:

  • any Android application, including any offline navigation, eg. using https://anbox.io/
  • video from camera using GStreamer's video4linux2 plugin
  • any graphical Linux application (using GStreamer's ximagesrc plugin)

Status

Currently AACS can do the following:

  • it can act as proxy for Android Auto traffic,
  • stream any video content to the headunit,
  • ...stay tuned for more.

aacs's People

Contributors

bluebotlabz avatar drderiv avatar gamelaster avatar hooger avatar smirn0v avatar tomasz-grobelny avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aacs's Issues

anbox not starting

I got thru all the installation steps on my Odroid N2 but it is not working, mostly because anbox is not starting up. I see the "Starting..." graphic but nothing else.

I am using the image of android from here: https://build.anbox.io/android-images/2018/07/19/ since the one mentioned in the install docs are not working. I put the image in the home directory of the root user and also tried anbox/data/android-images without luck

When I do:
anbox check-features
I get:
"You are running Anbox on a not yet supported architecture"

I also tried installing Anbox with Snap but snap is not working on my install.

I'd appreciate any help and guidance you can offer. I am really stuck!

Pi4 potential?

The USB-C connection has full OTG support, and the hardware is "reasonable" with 2,4,8GB ram options.

Have hardware, and happy to help support / test

anbox build issues

After a lengthy shipping delay allegedly due to the chip shortage, I just took delivery of an Odroid N2+ 2GB. In addition to having an issue getting a Wifi Module 5A working with the Ubuntu image shown in step 1 of the installation document (still unresolved, so using Ethernet for now), step 19 essentially causes a hang during the make when the job limit is 4. Load factors are in the high teens, well over 90% of CPU time is going to kswapd0, and the image runs out of space (df -h shows 100% full during make). Doubling the image size shown in step 7 isn't enough to fix the issue. I added 2GB of swap and lowered the job limit to 2 and was able to move on to the next step. Note however that anbox tests don't compile so I had to ignore them (got the exact same set of errors detailed here). I'm not sure if that's just an issue with testing that makes no difference, or if it's a sign that something's wrong so that anbox itself won't function as it it needs to.

I'm not sure what changed since the installation document was last updated, and I'd be happy to submit a PR with the changes I made to image size, but I wanted to first confirm that, given the symptoms, I didn't make some obvious error in following the instructions.

Also, if anyone has any helpful advice on getting a working driver for the 5A while utilizing the 20200715 Ubuntu image, I'd appreciate it.

Thank you and intention to implement AA type package for Linux Phones

Thank you for marking a start on this project. I started Googling around for precisely this thing last year and didn't turn up anything, turns out it was still a work in progress. Well done.

I've received my PinePhone recently so I'll be starting implementation on a number of projects the core of which will be trying to implement an Android Auto equivalent to run across as many Linux phone platforms as possible. I believe my main targets are KDE Plasma and Gnome Shell, although with LibHandy on the way to being largely mainlined in Gnome I may want to hold off touching that side of things.

The general goal of my Auto project will be to create a clean slate that devs can publish apps into in much the same way AA is, just... more open. With obvious built-in features like navigation UI roles and media roles to allow for quick implementation of PnP and remote control widgets when in other apps.

Now it does sound like I may need to come up with a way to grab the client-side certs in order to auth with most commercial head units. Wondering if periodically grabbing the AA APK and extracting the cert from it is feasible...

Impossible to build ...

Can someone tell me what is wrong with my build ? All dependency have worked ... RPi4 Raspbian ARM64.

Capture d’écran, le 2022-05-30 à 19 42 05

compiling error descriptors.cpp

Hello, i have an issue while compiling. The log says that the headerfile functionfs.h is missing in descriptors.cpp
thanks

/home/jan/AA/AACS/AAServer/src/descriptors.cpp:4:10: fatal error: functionfs.h: No such file or directory
4 | #include "functionfs.h"
| ^~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [AAServer/CMakeFiles/AAServer.dir/build.make:153: AAServer/CMakeFiles/AAServer.dir/src/descriptors.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:165: AAServer/CMakeFiles/AAServer.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

SSL error connecting to vehicle

On connection to my car I am seeing:
ep0 event 0
ep0 event 2
got version request
version negotiation ok
auth complete
Error: SSL_read failed: -1 2 2 2
Tue Sep 27 19:57:39 PDT 2022

This is in Server.log

This is in connecting to my Kia. The ODroid N2 I am testing this with has connected to my Crankshaft setup, sort of, a few times before.

Do I need to regen the SSL keys for new cars or something?

functionalities with Car Android Auto headunit

Hi,

i m very interest about your software.
i have an android auto headunit on my car (original opel intellilink 4.0).
i want to use an old phone to connect permatly to android auto of my car but it is not good.

With your software is possibile to use a Odroid N2, connect it on usb of my car, and diplay on my screen car a custom view using the androidauto headunit?
if yes, it's great! it is possible simulte android phone but more clean and without all android auto app limits.

regards,

exactly what I was looking for!

Trying to use my cars head unit to interact with some more sophisticated automotive command and control gadget. (it goes well beyond a "Torque Pro on AA"!)

THIS closes the gap! Kudos!
Yes I see there is some participation work needed ... eager to dive in!

Getting newer certs

Hi, do you have some info on how to get newer certs if need be?

Thanks for the awesome work here. Looking forward to trying out/hacking :)

Should it work under Wayland?

I try to compile the library on desktop first and if it works, than see what happens if I fire it up on a PinePhone.

During the cmake phase I have seen that you use X11 Xtst. I checked what this extension is, however I'm not sure for what purpose do you use it? Is what you do heavily dependent on X11, or is this only a minor part that can be thrown away, if used on a Wayland based system?

Interested in This on Orange PI 5 with OpenPilot

An amazing use case for this is to provide an in-dash display and touch control for openpilot, running on Ubuntu, which the latest Orange PI 5 may be powerful enough to run. Comma, who makes Openpilot software, sells a hardware kit that includes a screen and cameras, but it suffers from heat issues and the display must be mounted on the windscreen which can obstruct the driver's view. Also the cost is very high (~$1500 all in). If the orange PI with case and fan could be mounted under the dash, it would stay cool enough to avoid temp issues and running the display through the in dash screen would be a very clean, unobtrusive solution for the display and controls. Orange Pi + Case + ssd + cameras + panda + harness all in price is probably ~$300. Will likely get an Orange PI and try it out, any advice?

Does not get recognized by Car Head Unit

I was able to get it recognized by Google's official Desktop Head Unit (DHU), and all negotiations went through, but it would stuck at "waiting phone" with no image displayed at all(I am testing without anbox so I modified the script to have the image test pattern feed into the video pipeline).
I assumed it is an issue with DHU so I went out to try it on my two cars and they would just either never recognize AAServer at all(2022 Chevy Bolt), or recognize AAServer and it is compatible with Android Auto but never start AA negotiation(2023 Mercedes). And Server.log verify that in these cases negotiation never started, only

pre read
post read: 12
pre hSM
            
post hSM: 12
pre read
post read: 12
pre hSM

post hSM: 12
pre read
post read: 12
pre hSM
Got 51, write=2
post hSM: 12

I assumed my cars might be "too" modern and went out to buy a Walmart Radio to test it on, and got a head unit that was released 2020 with wired AA/Carplay support. And it does the same thing as my Chevy, which is it just never sees AAServer. I tried to modify the USB PID&VID to the same as my Samsung phone, assuming the head unit think AAServer is not legit. but it did nothing.

Anybody had a similar experience with it? Or any possible solution to resolve it?

Thanks,

AAClient wireless connection

hello @tomasz-grobelny , first of all, thanks for this project.
I had connected my pi to phone using USB cable & AAClient was running perfectly.
Can you tell me is there any way to connect Pi & Phone, wireless, using AAClient.

Build problem

I try to compile the library on desktop first and if it works, than see what happens if I fire it up on a PinePhone.

So far I managed to get cmake generate the Makefile on Debian 10. I had to use the upstream libusbgx library (from https://github.com/libusbgx/libusbgx), because I couldn't build the one linked in the readme.
After cmake .. I run make and I see the following:

>> make
[  1%] Built target backward
[  1%] Built target backward_object
[  2%] Built target dhparam
AAServer/CMakeFiles/AAServer.dir/build.make:81: *** target pattern contains no '%'.  Stop.
make[1]: *** [CMakeFiles/Makefile2:283: AAServer/CMakeFiles/AAServer.dir/all] Error 2
make: *** [Makefile:150: all] Error 2

The line AAServer/CMakeFiles/AAServer.dir/build.make:81 is

AAServer/MediaStreamType.pb.h: AAServer/protobuf::protoc

Any idea where it went south?

Help needed ...

I figured out how to compile everything for RPI4. everything seams to work, the AACS server get detected but somehow ... it doesnt give an error and don't do nothing more
Capture d’écran, le 2022-05-31 à 18 09 27
.

Into my audi it gives an error but on crankshaft no error, no image, just lock into the corner :
ep0 event 0
ep0 event 2
got version request
version negotiation ok
auth complete
Error: SSL_read failed: -1 2 2 2

Use this in android apk

Is it possible to use this on android device? Like a bridge, connect android device, keep it connected forever and use custom apk instead default android auto.

compilation error about including set

I've got is compilation error on current master (commit faa1c)

Compiling on Ubuntu 22.04

vagrant@ubuntu2204:~/project/AACS/build5$ cmake ..
CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- The C compiler identification is GNU 11.2.0
-- The CXX compiler identification is GNU 11.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found libdw: /usr/lib/x86_64-linux-gnu/libdw.so
-- Found libbfd: /usr/lib/x86_64-linux-gnu/libbfd.so
-- Found libdwarf: /usr/lib/x86_64-linux-gnu/libdwarf.so
-- Found Backward: /home/vagrant/project/AACS/external/backward-cpp
CMake Deprecation Warning at AAServer/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.74.0/BoostConfig.cmake (found suitable version "1.74.0", minimum required is "1.67") found components: filesystem program_options
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libcrypto.so (found version "3.0.2")
-- Found Protobuf: /usr/lib/x86_64-linux-gnu/libprotobuf.so (found version "3.12.4")
-- Checking for module 'gstreamer-base-1.0'
--   Found gstreamer-base-1.0, version 1.20.3
-- Checking for module 'libusbgx'
--   Found libusbgx, version 0.2.0
-- Checking for module 'libpcap'
--   Found libpcap, version 1.10.1
CMake Deprecation Warning at AAClient/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Checking for module 'libusb-1.0'
--   Found libusb-1.0, version 1.0.25
CMake Deprecation Warning at GetEvents/CMakeLists.txt:1 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Found X11: /usr/include
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Configuring done
-- Generating done
-- Build files have been written to: /home/vagrant/project/AACS/build5
vagrant@ubuntu2204:~/project/AACS/build5$ make
[  1%] Building CXX object external/backward-cpp/CMakeFiles/backward_object.dir/backward.cpp.o
[  1%] Built target backward_object
[  2%] Building CXX object external/backward-cpp/CMakeFiles/backward.dir/backward.cpp.o
[  2%] Linking CXX static library libbackward.a
[  2%] Built target backward
[  2%] Generating dhparam.pem
[  2%] Built target dhparam
[  3%] Running cpp protocol buffer compiler on ../proto/VideoResolution.proto
[  4%] Running cpp protocol buffer compiler on ../proto/AudioConfig.proto
[  5%] Running cpp protocol buffer compiler on ../proto/AudioType.proto
[  5%] Running cpp protocol buffer compiler on ../proto/BluetoothChannel.proto
[  5%] Running cpp protocol buffer compiler on ../proto/ButtonsEvent.proto
[  6%] Running cpp protocol buffer compiler on ../proto/Channel.proto
[  6%] Running cpp protocol buffer compiler on ../proto/ChannelOpenRequest.proto
[  7%] Running cpp protocol buffer compiler on ../proto/InputChannel.proto
[  7%] Running cpp protocol buffer compiler on ../proto/InputEvent.proto
[  8%] Running cpp protocol buffer compiler on ../proto/MediaChannel.proto
[  8%] Running cpp protocol buffer compiler on ../proto/MediaChannelSetupResponse.proto
[  9%] Running cpp protocol buffer compiler on ../proto/MediaInputChannel.proto
[  9%] Running cpp protocol buffer compiler on ../proto/MediaStreamType.proto
[  9%] Running cpp protocol buffer compiler on ../proto/NavigationChannel.proto
[ 10%] Running cpp protocol buffer compiler on ../proto/PingRequest.proto
[ 10%] Running cpp protocol buffer compiler on ../proto/PingResponse.proto
[ 10%] Running cpp protocol buffer compiler on ../proto/Sensor.proto
[ 11%] Running cpp protocol buffer compiler on ../proto/SensorChannel.proto
[ 12%] Running cpp protocol buffer compiler on ../proto/ServiceDiscoveryRequest.proto
[ 12%] Running cpp protocol buffer compiler on ../proto/ServiceDiscoveryResponse.proto
[ 12%] Running cpp protocol buffer compiler on ../proto/TouchAction.proto
[ 12%] Running cpp protocol buffer compiler on ../proto/TouchConfig.proto
[ 13%] Running cpp protocol buffer compiler on ../proto/TouchEvent.proto
[ 14%] Running cpp protocol buffer compiler on ../proto/TouchLocation.proto
[ 15%] Running cpp protocol buffer compiler on ../proto/VendorExtensionChannel.proto
[ 15%] Running cpp protocol buffer compiler on ../proto/VideoConfig.proto
[ 15%] Running cpp protocol buffer compiler on ../proto/VideoFps.proto
make[2]: Warning: File 'AAServer/VideoResolution.pb.cc' has modification time 0.13 s in the future
make[2]: warning:  Clock skew detected.  Your build may be incomplete.
[ 16%] Building CXX object AAServer/CMakeFiles/AAServer.dir/main.cpp.o
[ 16%] Building CXX object AAServer/CMakeFiles/AAServer.dir/__/src/utils.cpp.o
[ 17%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/ServerUtils.cpp.o
[ 17%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/descriptors.cpp.o
[ 18%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/Library.cpp.o
[ 18%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/Function.cpp.o
[ 19%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/MassStorageFunction.cpp.o
[ 19%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/FfsFunction.cpp.o
[ 20%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/Configuration.cpp.o
[ 20%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/Gadget.cpp.o
[ 20%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/Udc.cpp.o
[ 21%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/Message.cpp.o
[ 21%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/ModeSwitcher.cpp.o
[ 22%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/AaCommunicator.cpp.o
/home/vagrant/project/AACS/AAServer/src/AaCommunicator.cpp: In member function ‘void AaCommunicator::handlePingRequest(const void*, size_t)’:
/home/vagrant/project/AACS/AAServer/src/AaCommunicator.cpp:259:31: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]
  259 |   int bufSize = presp.ByteSize();
      |                 ~~~~~~~~~~~~~~^~
In file included from /usr/include/google/protobuf/generated_enum_util.h:36,
                 from /usr/include/google/protobuf/map.h:49,
                 from /usr/include/google/protobuf/generated_message_table_driven.h:34,
                 from /home/vagrant/project/AACS/build5/AAServer/Channel.pb.h:26,
                 from /home/vagrant/project/AACS/AAServer/src/AaCommunicator.cpp:4:
/usr/include/google/protobuf/message_lite.h:408:7: note: declared here
  408 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }
      |       ^~~~~~~~
/home/vagrant/project/AACS/AAServer/src/AaCommunicator.cpp: In member function ‘void AaCommunicator::initializeSslContext()’:
/home/vagrant/project/AACS/AAServer/src/AaCommunicator.cpp:324:32: warning: ‘DH* PEM_read_DHparams(FILE*, DH**, int (*)(char*, int, int, void*), void*)’ is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declaration ]
  324 |     dh_2048 = PEM_read_DHparams(paramfile, NULL, NULL, NULL);
      |               ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/openssl/ssl.h:36,
                 from /home/vagrant/project/AACS/AAServer/src/AaCommunicator.cpp:28:
/usr/include/openssl/pem.h:469:1: note: declared here
  469 | DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DHparams, DH)
      | ^~~~~~~~~~~~~~~~~~~
[ 22%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/SocketClient.cpp.o
[ 23%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/SocketCommunicator.cpp.o
[ 23%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/ManualResetEvent.cpp.o
[ 24%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/ChannelHandler.cpp.o
[ 24%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/DefaultChannelHandler.cpp.o
[ 25%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/VideoChannelHandler.cpp.o
[ 25%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/InputChannelHandler.cpp.o
In file included from /home/vagrant/project/AACS/AAServer/src/InputChannelHandler.cpp:3:
/home/vagrant/project/AACS/AAServer/include/InputChannelHandler.h:14:8: error: ‘set’ in namespace ‘std’ does not name a template type
   14 |   std::set<int> registered_clients;
      |        ^~~
/home/vagrant/project/AACS/AAServer/include/InputChannelHandler.h:6:1: note: ‘std::set’ is defined in header ‘<set>’; did you forget to ‘#include <set>’?
    5 | #include "ChannelHandler.h"
  +++ |+#include <set>
    6 | #include <vector>
/home/vagrant/project/AACS/AAServer/src/InputChannelHandler.cpp: In member function ‘void InputChannelHandler::sendHandshakeRequest()’:
/home/vagrant/project/AACS/AAServer/src/InputChannelHandler.cpp:31:42: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]
   31 |   int bufSize = handshakeRequest.ByteSize();
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~^~
In file included from /usr/include/google/protobuf/generated_enum_util.h:36,
                 from /usr/include/google/protobuf/map.h:49,
                 from /usr/include/google/protobuf/generated_message_table_driven.h:34,
                 from /home/vagrant/project/AACS/build5/AAServer/InputChannel.pb.h:26,
                 from /home/vagrant/project/AACS/AAServer/src/InputChannelHandler.cpp:4:
/usr/include/google/protobuf/message_lite.h:408:7: note: declared here
  408 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }
      |       ^~~~~~~~
/home/vagrant/project/AACS/AAServer/src/InputChannelHandler.cpp: In member function ‘virtual bool InputChannelHandler::handleMessageFromHeadunit(const Message&)’:
/home/vagrant/project/AACS/AAServer/src/InputChannelHandler.cpp:58:24: error: ‘registered_clients’ was not declared in this scope
   58 |       for (auto &&rc : registered_clients)
      |                        ^~~~~~~~~~~~~~~~~~
/home/vagrant/project/AACS/AAServer/src/InputChannelHandler.cpp: In member function ‘virtual bool InputChannelHandler::handleMessageFromClient(int, uint8_t, bool, const std::vector<unsigned char>&)’:
/home/vagrant/project/AACS/AAServer/src/InputChannelHandler.cpp:71:3: error: ‘registered_clients’ was not declared in this scope
   71 |   registered_clients.insert(clientId);
      |   ^~~~~~~~~~~~~~~~~~
/home/vagrant/project/AACS/AAServer/src/InputChannelHandler.cpp: In member function ‘virtual void InputChannelHandler::disconnected(int)’:
/home/vagrant/project/AACS/AAServer/src/InputChannelHandler.cpp:80:3: error: ‘registered_clients’ was not declared in this scope
   80 |   registered_clients.erase(clientId);
      |   ^~~~~~~~~~~~~~~~~~
make[2]: *** [AAServer/CMakeFiles/AAServer.dir/build.make:572: AAServer/CMakeFiles/AAServer.dir/src/InputChannelHandler.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:209: AAServer/CMakeFiles/AAServer.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Testing your work.

Hello,

I'm definitively interested by your work !

For now, I've done a lot of try to connect:

  • a Raspberry Pi 4 running Android Lineage 16/17/18 + Gapp (acting as the phone)
    to
  • a Raspberry Pi 3 running Linux Crankshaft with OpenAuto.

I succeed only for now with a real phone Nexus 5 + Android 6.0.1.

Can you explain more about the certificat need ? Not sure I can change the clock on real car.

Best,

Pierre

I cannot connect to the Bluetooth of Genesis.

My car is a Genesis GV80. When I use Android Auto, I can't connect to the car's Bluetooth system.

"make": "GENESIS",
"model": "JX1",
"year": "2019",
The HUIG version of the HU is 1.5, and the Android Auto version of the phone is 1.7. Are there others who have encountered the same issue? Please help me, thank you!

E: in transfer failed: -7 at AAClient

Hi @tomasz-grobelny , thank you for the project.
I am running AACS on the Raspberry Pi 4. Want to proxy android auto traffic through AACS, but open auto display is stuck at the initial AAServer video pattern (large red and yellowish green pixels).

Can you please point out what can be the problem.

pi@raspberrypi:~/snowmix $ sudo modprobe libcomposite
pi@raspberrypi:~/snowmix $ export SNOWMIX=/usr/lib/Snowmix-0.5.1.1/
pi@raspberrypi:~/snowmix $ snowmix base.ini 
Warning. Environment variable SNOWMIX_PREFIX was not set. Using SNOWMIX_PREFIX=.snowmix
Snowmix version 0.5.1.1.
Copyright Peter Maersk-Moller 2012-2015.
Search Path : /home/pi/snowmix, /home/pi/.snowmix, /usr/lib/Snowmix-0.5.1.1/
Initial ini file read
Output pipe connection broken. Resetting socket

pi@raspberrypi:~/snowmix/AA/AACS/build/AAServer $ sudo ./AAServer 
pre read
post read: 12
pre hSM

post hSM: 12
pre read
post read: 12
pre hSM

post hSM: 12
pre read
post read: 12
pre hSM
Got 51, write=2
post hSM: 12
pre read
post read: 12
pre hSM
Got some info: 0=
post hSM: 12
pre read
post read: 8
pre hSM
post hSM: 8
pre read
post read: 12
pre hSM
Got some info: 1=post hSM: 12
pre read
post read: 13
pre hSM
Android Auto
post hSM: 13
pre read
post read: 12
pre hSM
Got some info: 2=post hSM: 12
pre read
post read: 13
pre hSM
Android Auto
post hSM: 13
pre read
post read: 12
pre hSM
Got some info: 3=
post hSM: 12
pre read
post read: 6
pre hSM
post hSM: 6
pre read
post read: 12
pre hSM
Got some info: 4=post hSM: 12
pre read
post read: 22
pre hSM
https://f1xstudio.com
post hSM: 22
pre read
post read: 12
pre hSM
Got some info: 5=post hSM: 12
pre read
post read: 13
pre hSM
HU-AAAAAA001
post hSM: 13
pre read
post read: 12
pre hSM
Got 53, exit
post hSM: 12
pre read
post read: -1
pre close fd
post close fd
DefaultChannelHandler: 0
dumpfile: 
ep0 event 0 
ep0 event 2 
got version request
version negotiation ok
auth complete
got service discovery response
channels {
  channel_id: 7
  media_input_channel {
    stream_type: Audio
    audio_config {
      sample_rate: 16000
      bits_per_sample: 16
      channel_count: 1
    }
  }
}
channels {
  channel_id: 4
  media_channel {
    media_type: Audio
    audio_type: Media
    audio_configs {
      sample_rate: 48000
      bits_per_sample: 16
      channel_count: 2
    }
    5: 1
  }
}
channels {
  channel_id: 5
  media_channel {
    media_type: Audio
    audio_type: Speech
    audio_configs {
      sample_rate: 16000
      bits_per_sample: 16
      channel_count: 1
    }
    5: 1
  }
}
channels {
  channel_id: 6
  media_channel {
    media_type: Audio
    audio_type: System
    audio_configs {
      sample_rate: 16000
      bits_per_sample: 16
      channel_count: 1
    }
    5: 1
  }
}
channels {
  channel_id: 2
  sensor_channel {
    sensors {
      type: DrivingStatus
    }
    sensors {
      type: NightData
    }
  }
}
channels {
  channel_id: 3
  media_channel {
    media_type: Video
    video_configs {
      video_resolution: H480
      video_fps: F30
      margin_width: 0
      margin_height: 0
      dpi: 140
    }
    5: 1
  }
}
channels {
  channel_id: 1
  input_channel {
    available_buttons: PLAY
    screen_config {
      width: 2560
      height: 1440
    }
  }
}
2: "OpenAuto"
3: "Universal"
4: "2018"
5: "20180301"
6: 1
7: "f1x"
8: "OpenAuto Autoapp"
9: "1"
10: "1.0"
11: 0
12: 0

DefaultChannelHandler: 7
DefaultChannelHandler: 4
DefaultChannelHandler: 5
DefaultChannelHandler: 6
DefaultChannelHandler: 2
VideoChannelHandler: 3
InputChannelHandler: 1
connect: 0
get service descriptor
0 data from headunit: 7 4
1 data from headunit: 2 4
Supported buttons (1): {126}
2 data from headunit: 2 4
3 data from headunit: 2 6
4 data from headunit: 2 4
5 data from headunit: 2 6
6 data from headunit: 4 4
7 data from headunit: 5 4
8 data from headunit: 6 4
9 data from headunit: 4 8
10 data from headunit: 5 8
11 data from headunit: 6 8
disconnected: 0
^CQuitting...
pi@raspberrypi:~/snowmix/AA/AACS/build/AAClient $ sudo ./AAClient ../AAServer/socket
18d1:2d01
switch ok!
device found
got sd
setup
version negotiation ok
ssl handshake complete
0 data from phone: 9
1 data from phone: 9
2 data from phone: 9
3 data from phone: 9
4 data from phone: 9
5 data from phone: 3
0 data from headunit: 6
1 data from headunit: 6
6 data from phone: 9
2 data from headunit: 6
3 data from headunit: 8
7 data from phone: 9
4 data from headunit: 6
5 data from headunit: 8
6 data from headunit: 6
7 data from headunit: 6
8 data from headunit: 6
8 data from phone: 7
9 data from phone: 7
10 data from phone: 7
9 data from headunit: 10
10 data from headunit: 10
11 data from headunit: 10
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
pushDataToPipeline
E: in transfer failed: -7
E: in transfer failed: -7
E: in transfer failed: -7
E: in transfer failed: -7
E: in transfer failed: -7
E: in transfer failed: -7
^C
sangwan@SM:~$ autoapp 
[2021-05-05 16:21:39.785772] [0x00007fb5cd9685c0] [warning] [OpenAuto] [RecentAddressesList] failed to read configuration file: openauto_wifi_recent.ini, error: openauto_wifi_recent.ini: cannot open file. Empty list will be used.
[2021-05-05 16:21:39.830236] [0x00007fb5cd9685c0] [error]   [OpenAuto] [btservice] No adapter found.
[2021-05-05 16:21:39.830257] [0x00007fb5cd9685c0] [info]    [OpenAuto] [AndroidBluetoothServer] listening.
qt.bluetooth.bluez: Device does not support Bluetooth or "00:00:00:00:00:00" is not a valid local adapter
[2021-05-05 16:21:39.831114] [0x00007fb5cd9685c0] [error]   [OpenAuto] [btservice] Server start failed.
[2021-05-05 16:21:39.831192] [0x00007fb5cd9685c0] [info]    [OpenAuto] [App] Waiting for USB device...
[2021-05-05 16:21:39.831210] [0x00007fb5cd9685c0] [info]    [OpenAuto] [App] Waiting for Wireless device...
[2021-05-05 16:23:41.525586] [0x00007fb5cb15c700] [info]    [OpenAuto] [App] USB Device connected.
[2021-05-05 16:23:41.526326] [0x00007fb5cd9685c0] [debug]   [OpenAuto] [AudioInput] create.
[2021-05-05 16:23:41.526682] [0x00007fb5cd9685c0] [debug]   [OpenAuto] [QtVideoOutput] create.
[2021-05-05 16:23:41.633012] [0x00007fb5cb15c700] [info]    [OpenAuto] [AndroidAutoEntity] start.
[2021-05-05 16:23:41.633125] [0x00007fb5cb15c700] [info]    [OpenAuto] [AudioInputService] start.
[2021-05-05 16:23:41.633464] [0x00007fb5cb15c700] [info]    [OpenAuto] [AudioService] start, channel: MEDIA_AUDIO
[2021-05-05 16:23:41.633549] [0x00007fb5cb15c700] [info]    [OpenAuto] [AudioService] start, channel: SPEECH_AUDIO
[2021-05-05 16:23:41.633697] [0x00007fb5cb15c700] [info]    [OpenAuto] [AudioService] start, channel: SYSTEM_AUDIO
[2021-05-05 16:23:41.633794] [0x00007fb5cb15c700] [info]    [OpenAuto] [SensorService] start.
[2021-05-05 16:23:41.633875] [0x00007fb5cb15c700] [info]    [OpenAuto] [VideoService] start.
[2021-05-05 16:23:41.633923] [0x00007fb5cb15c700] [info]    [OpenAuto] [BluetoothService] start.
[2021-05-05 16:23:41.633961] [0x00007fb5cb15c700] [info]    [AaSdk] [BluetoothServiceChannel] receive 
[2021-05-05 16:23:41.634000] [0x00007fb5cb15c700] [info]    [OpenAuto] [InputService] start.
[2021-05-05 16:23:41.667770] [0x00007fb5c9959700] [error]   [OpenAuto] [SensorService] channel error: AaSdk error code: 10, native code: 1
[2021-05-05 16:23:41.668012] [0x00007fb5cb15c700] [error]   [OpenAuto] [AndroidAutoEntity] channel error: AaSdk error code: 10, native code: 1
[2021-05-05 16:23:41.668080] [0x00007fb5ca95b700] [error]   [OpenAuto] [VideoService] channel error: AaSdk error code: 10, native code: 1
[2021-05-05 16:23:41.668215] [0x00007fb5ca15a700] [error]   [OpenAuto] [BluetoothService] channel error: AaSdk error code: 10, native code: 1
[2021-05-05 16:23:41.668367] [0x00007fb5ca15a700] [error]   [OpenAuto] [AudioService] channel error: AaSdk error code: 10, native code: 1, channel: SPEECH_AUDIO
[2021-05-05 16:23:41.668460] [0x00007fb5cb15c700] [info]    [OpenAuto] [App] quit.
[2021-05-05 16:23:41.668575] [0x00007fb5cb15c700] [info]    [OpenAuto] [AndroidAutoEntity] stop.
[2021-05-05 16:23:41.668625] [0x00007fb5cb15c700] [info]    [OpenAuto] [AudioService] stop, channel: SPEECH_AUDIO
[2021-05-05 16:23:41.668693] [0x00007fb5cb15c700] [info]    [OpenAuto] [VideoService] stop.
[2021-05-05 16:23:41.668794] [0x00007fb5ca15a700] [error]   [OpenAuto] [AudioService] channel error: AaSdk error code: 10, native code: 1, channel: MEDIA_AUDIO
[2021-05-05 16:23:41.669043] [0x00007fb5ca15a700] [error]   [OpenAuto] [AudioInputService] channel error: AaSdk error code: 10, native code: 1
[2021-05-05 16:23:41.669142] [0x00007fb5c9959700] [error]   [OpenAuto] [SensorService] channel error: AaSdk error code: 10, native code: 1
[2021-05-05 16:23:41.669266] [0x00007fb5cb15c700] [info]    [OpenAuto] [BluetoothService] stop.
[2021-05-05 16:23:41.669412] [0x00007fb5ca95b700] [error]   [OpenAuto] [AudioService] channel error: AaSdk error code: 10, native code: 1, channel: SYSTEM_AUDIO
[2021-05-05 16:23:41.669459] [0x00007fb5cb15c700] [info]    [OpenAuto] [InputService] stop.
[2021-05-05 16:23:41.669695] [0x00007fb5cb15c700] [info]    [OpenAuto] [InputDevice] stop.
[2021-05-05 16:23:41.669859] [0x00007fb5ca15a700] [info]    [OpenAuto] [AudioService] stop, channel: MEDIA_AUDIO
[2021-05-05 16:23:41.669980] [0x00007fb5cb15c700] [info]    [OpenAuto] [App] Waiting for USB device...
[2021-05-05 16:23:41.670177] [0x00007fb5cb15c700] [info]    [OpenAuto] [App] Waiting for Wireless device...
[2021-05-05 16:23:41.670277] [0x00007fb5ca15a700] [info]    [OpenAuto] [AudioService] stop, channel: SYSTEM_AUDIO
[2021-05-05 16:23:41.670452] [0x00007fb5ca95b700] [info]    [OpenAuto] [SensorService] stop.
[2021-05-05 16:23:41.670535] [0x00007fb5c9959700] [info]    [OpenAuto] [AudioInputService] stop.
[2021-05-05 16:23:41.670647] [0x00007fb5cb15c700] [debug]   [OpenAuto] [AndroidAutoEntity] destroy.
[2021-05-05 16:24:14.142004] [0x00007fb5ca95b700] [info]    [OpenAuto] [App] USB Device connected.
[2021-05-05 16:24:14.142384] [0x00007fb5cd9685c0] [debug]   [OpenAuto] [AudioInput] create.
[2021-05-05 16:24:14.142532] [0x00007fb5cd9685c0] [debug]   [OpenAuto] [QtVideoOutput] create.
[2021-05-05 16:24:14.251990] [0x00007fb5ca95b700] [info]    [OpenAuto] [AndroidAutoEntity] start.
[2021-05-05 16:24:14.252017] [0x00007fb5ca95b700] [info]    [OpenAuto] [AudioInputService] start.
[2021-05-05 16:24:14.252074] [0x00007fb5ca95b700] [info]    [OpenAuto] [AudioService] start, channel: MEDIA_AUDIO
[2021-05-05 16:24:14.252084] [0x00007fb5ca95b700] [info]    [OpenAuto] [AudioService] start, channel: SPEECH_AUDIO
[2021-05-05 16:24:14.252090] [0x00007fb5ca95b700] [info]    [OpenAuto] [AudioService] start, channel: SYSTEM_AUDIO
[2021-05-05 16:24:14.252096] [0x00007fb5ca95b700] [info]    [OpenAuto] [SensorService] start.
[2021-05-05 16:24:14.252114] [0x00007fb5ca95b700] [info]    [OpenAuto] [VideoService] start.
[2021-05-05 16:24:14.252122] [0x00007fb5ca95b700] [info]    [OpenAuto] [BluetoothService] start.
[2021-05-05 16:24:14.252132] [0x00007fb5ca95b700] [info]    [AaSdk] [BluetoothServiceChannel] receive 
[2021-05-05 16:24:14.252140] [0x00007fb5ca95b700] [info]    [OpenAuto] [InputService] start.
[2021-05-05 16:24:14.253166] [0x00007fb5ca95b700] [info]    [OpenAuto] [AndroidAutoEntity] version response, version: 1.5, status: 0
[2021-05-05 16:24:14.253189] [0x00007fb5ca95b700] [info]    [OpenAuto] [AndroidAutoEntity] Begin handshake.
[2021-05-05 16:24:14.276389] [0x00007fb5c9959700] [info]    [OpenAuto] [AndroidAutoEntity] Handshake, size: 1272
[2021-05-05 16:24:14.288617] [0x00007fb5c9959700] [info]    [OpenAuto] [AndroidAutoEntity] continue handshake.
[2021-05-05 16:24:14.293367] [0x00007fb5c9959700] [info]    [OpenAuto] [AndroidAutoEntity] Handshake, size: 1058
[2021-05-05 16:24:14.293685] [0x00007fb5c9959700] [info]    [OpenAuto] [AndroidAutoEntity] Auth completed.
[2021-05-05 16:24:14.294734] [0x00007fb5cb15c700] [info]    [OpenAuto] [AndroidAutoEntity] Discovery request, device name: AAServer, brand: TAG
[2021-05-05 16:24:14.294812] [0x00007fb5cb15c700] [info]    [OpenAuto] [AudioInputService] fill features.
[2021-05-05 16:24:14.294871] [0x00007fb5cb15c700] [info]    [OpenAuto] [AudioService] fill features, channel: MEDIA_AUDIO
[2021-05-05 16:24:14.294902] [0x00007fb5cb15c700] [info]    [OpenAuto] [AudioService] fill features, channel: SPEECH_AUDIO
[2021-05-05 16:24:14.294930] [0x00007fb5cb15c700] [info]    [OpenAuto] [AudioService] fill features, channel: SYSTEM_AUDIO
[2021-05-05 16:24:14.294958] [0x00007fb5cb15c700] [info]    [OpenAuto] [SensorService] fill features.
[2021-05-05 16:24:14.294987] [0x00007fb5cb15c700] [info]    [OpenAuto] [VideoService] fill features.
[2021-05-05 16:24:14.295015] [0x00007fb5cb15c700] [info]    [OpenAuto] [BluetoothService] fill features
[2021-05-05 16:24:14.295038] [0x00007fb5cb15c700] [info]    [OpenAuto] [InputService] fill features.
[2021-05-05 16:24:14.705276] [0x00007fb5ca95b700] [info]    [OpenAuto] [VideoService] open request, priority: 0
[2021-05-05 16:24:14.705313] [0x00007fb5ca95b700] [info]    [OpenAuto] [VideoService] open status: 0
[2021-05-05 16:24:14.705706] [0x00007fb5c9959700] [info]    [OpenAuto] [VideoService] setup request, config index: 3
[2021-05-05 16:24:14.705738] [0x00007fb5c9959700] [info]    [OpenAuto] [VideoService] setup status: 2
[2021-05-05 16:24:14.705841] [0x00007fb5cb15c700] [info]    [OpenAuto] [VideoService] video focus indication.
[2021-05-05 16:24:14.706099] [0x00007fb5cb15c700] [info]    [OpenAuto] [VideoService] start indication, session: 0
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
[2021-05-05 16:24:56.027017] [0x00007fb5cb15c700] [info]    [OpenAuto] [AudioInputService] open request, priority: 0
[2021-05-05 16:24:56.027144] [0x00007fb5cb15c700] [info]    [OpenAuto] [AudioInputService] open status: 0
[2021-05-05 16:24:56.027858] [0x00007fb5c9959700] [info]    [OpenAuto] [AudioService] open request, channel: MEDIA_AUDIO, priority: 0
[2021-05-05 16:24:56.027996] [0x00007fb5c9959700] [debug]   [OpenAuto] [AudioService] channel: MEDIA_AUDIO audio output sample rate: 48000, sample size: 16, channel count: 2
[2021-05-05 16:24:56.028679] [0x00007fb5ca95b700] [info]    [OpenAuto] [AudioService] open request, channel: SPEECH_AUDIO, priority: 0
[2021-05-05 16:24:56.028789] [0x00007fb5ca95b700] [debug]   [OpenAuto] [AudioService] channel: SPEECH_AUDIO audio output sample rate: 16000, sample size: 16, channel count: 1
[2021-05-05 16:24:56.029392] [0x00007fb5ca15a700] [info]    [OpenAuto] [SensorService] open request, priority: 0
[2021-05-05 16:24:56.029489] [0x00007fb5ca15a700] [info]    [OpenAuto] [SensorService] open status: 0
[2021-05-05 16:24:56.030641] [0x00007fb5cb15c700] [info]    [OpenAuto] [AudioService] open request, channel: SYSTEM_AUDIO, priority: 0
[2021-05-05 16:24:56.030785] [0x00007fb5cb15c700] [debug]   [OpenAuto] [AudioService] channel: SYSTEM_AUDIO audio output sample rate: 16000, sample size: 16, channel count: 1
[2021-05-05 16:24:56.031765] [0x00007fb5ca15a700] [info]    [OpenAuto] [InputService] open request, priority: 0
[2021-05-05 16:24:56.031869] [0x00007fb5ca15a700] [info]    [OpenAuto] [InputService] open status: 0
[2021-05-05 16:24:56.033520] [0x00007fb5ca15a700] [info]    [OpenAuto] [InputService] binding request, scan codes count: 1
[2021-05-05 16:24:56.033704] [0x00007fb5ca15a700] [info]    [OpenAuto] [InputDevice] start.
[2021-05-05 16:24:56.033801] [0x00007fb5ca15a700] [info]    [OpenAuto] [InputService] binding request, status: 0
[2021-05-05 16:24:56.040623] [0x00007fb5ca15a700] [info]    [OpenAuto] [SensorService] sensor start request, type: 13
[2021-05-05 16:24:56.046650] [0x00007fb5ca15a700] [info]    [OpenAuto] [SensorService] sensor start request, type: 10
[2021-05-05 16:24:56.179213] [0x00007fb5c9959700] [info]    [OpenAuto] [AudioService] open status: 0, channel: MEDIA_AUDIO
RtAudio pulse: _NOT_ running realtime scheduling
RtAudio pulse: _NOT_ running realtime scheduling
[2021-05-05 16:24:56.181258] [0x00007fb5ca95b700] [info]    [OpenAuto] [AudioService] open status: 0, channel: SPEECH_AUDIO
[2021-05-05 16:24:56.182761] [0x00007fb5cb15c700] [info]    [OpenAuto] [AudioService] open status: 0, channel: SYSTEM_AUDIO
RtAudio pulse: _NOT_ running realtime scheduling
[2021-05-05 16:24:56.242279] [0x00007fb5c9959700] [info]    [OpenAuto] [AudioService] setup request, channel: MEDIA_AUDIO, config index: 1
[2021-05-05 16:24:56.242422] [0x00007fb5c9959700] [info]    [OpenAuto] [AudioService] setup status: 2, channel: MEDIA_AUDIO
[2021-05-05 16:24:56.243096] [0x00007fb5c9959700] [info]    [OpenAuto] [AudioService] setup request, channel: SPEECH_AUDIO, config index: 1
[2021-05-05 16:24:56.243205] [0x00007fb5c9959700] [info]    [OpenAuto] [AudioService] setup status: 2, channel: SPEECH_AUDIO
[2021-05-05 16:24:56.243770] [0x00007fb5ca95b700] [info]    [OpenAuto] [AudioService] setup request, channel: SYSTEM_AUDIO, config index: 1
[2021-05-05 16:24:56.243871] [0x00007fb5ca95b700] [info]    [OpenAuto] [AudioService] setup status: 2, channel: SYSTEM_AUDIO
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
QWidget::paintEngine: Should no longer be called
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
Warning: "A lot of buffers are being dropped."
[2021-05-05 16:25:48.878931] [0x00007fb5c9959700] [error]   [OpenAuto] [VideoService] channel error: AaSdk error code: 10, native code: 1
[2021-05-05 16:25:48.879027] [0x00007fb5ca15a700] [error]   [OpenAuto] [AudioService] channel error: AaSdk error code: 10, native code: 1, channel: SPEECH_AUDIO
[2021-05-05 16:25:48.879116] [0x00007fb5ca15a700] [error]   [OpenAuto] [SensorService] channel error: AaSdk error code: 10, native code: 1
[2021-05-05 16:25:48.879157] [0x00007fb5ca95b700] [error]   [OpenAuto] [AudioService] channel error: AaSdk error code: 10, native code: 1, channel: SYSTEM_AUDIO
[2021-05-05 16:25:48.879246] [0x00007fb5c9959700] [error]   [OpenAuto] [AudioService] channel error: AaSdk error code: 10, native code: 1, channel: MEDIA_AUDIO
[2021-05-05 16:25:48.879354] [0x00007fb5cb15c700] [error]   [OpenAuto] [AudioInputService] channel error: AaSdk error code: 10, native code: 1
[2021-05-05 16:25:48.879415] [0x00007fb5ca15a700] [error]   [OpenAuto] [AndroidAutoEntity] channel error: AaSdk error code: 10, native code: 1
[2021-05-05 16:25:48.879476] [0x00007fb5c9959700] [error]   [OpenAuto] [BluetoothService] channel error: AaSdk error code: 10, native code: 1
[2021-05-05 16:25:48.879542] [0x00007fb5ca95b700] [error]   [OpenAuto] [SensorService] channel error: AaSdk error code: 10, native code: 1
[2021-05-05 16:25:48.879670] [0x00007fb5ca15a700] [info]    [OpenAuto] [App] quit.
[2021-05-05 16:25:48.879750] [0x00007fb5ca15a700] [info]    [OpenAuto] [AndroidAutoEntity] stop.
[2021-05-05 16:25:48.879776] [0x00007fb5ca15a700] [info]    [OpenAuto] [AudioInputService] stop.
[2021-05-05 16:25:48.879834] [0x00007fb5ca15a700] [info]    [OpenAuto] [AudioService] stop, channel: MEDIA_AUDIO
[2021-05-05 16:25:48.881943] [0x00007fb5ca15a700] [info]    [OpenAuto] [AudioService] stop, channel: SPEECH_AUDIO
[2021-05-05 16:25:48.884146] [0x00007fb5ca15a700] [info]    [OpenAuto] [AudioService] stop, channel: SYSTEM_AUDIO
[2021-05-05 16:25:48.886624] [0x00007fb5ca15a700] [info]    [OpenAuto] [SensorService] stop.
[2021-05-05 16:25:48.886689] [0x00007fb5ca15a700] [info]    [OpenAuto] [VideoService] stop.
[2021-05-05 16:25:48.886766] [0x00007fb5ca15a700] [info]    [OpenAuto] [BluetoothService] stop.
[2021-05-05 16:25:48.886864] [0x00007fb5ca15a700] [info]    [OpenAuto] [InputService] stop.
[2021-05-05 16:25:48.886930] [0x00007fb5ca15a700] [info]    [OpenAuto] [InputDevice] stop.
[2021-05-05 16:25:48.887160] [0x00007fb5ca15a700] [info]    [OpenAuto] [App] Waiting for USB device...
[2021-05-05 16:25:48.887255] [0x00007fb5ca15a700] [info]    [OpenAuto] [App] Waiting for Wireless device...
[2021-05-05 16:25:48.887313] [0x00007fb5ca15a700] [debug]   [OpenAuto] [AndroidAutoEntity] destroy.
^C

compilation error about including backward

After applying fix #23 I've got another compilatrion error

Compiled on Ubuntu 22.04 and also Raspbian 11 bullseye

vagrant@ubuntu2204:~/project/AACS/build6$ make
[  1%] Building CXX object external/backward-cpp/CMakeFiles/backward_object.dir/backward.cpp.o
[  1%] Built target backward_object
[  2%] Building CXX object external/backward-cpp/CMakeFiles/backward.dir/backward.cpp.o
[  2%] Linking CXX static library libbackward.a
[  2%] Built target backward
[  2%] Generating dhparam.pem
[  2%] Built target dhparam
[  3%] Running cpp protocol buffer compiler on ../proto/VideoResolution.proto
[  4%] Running cpp protocol buffer compiler on ../proto/AudioConfig.proto
[  5%] Running cpp protocol buffer compiler on ../proto/AudioType.proto
[  5%] Running cpp protocol buffer compiler on ../proto/BluetoothChannel.proto
[  5%] Running cpp protocol buffer compiler on ../proto/ButtonsEvent.proto
[  6%] Running cpp protocol buffer compiler on ../proto/Channel.proto
[  6%] Running cpp protocol buffer compiler on ../proto/ChannelOpenRequest.proto
[  7%] Running cpp protocol buffer compiler on ../proto/InputChannel.proto
[  7%] Running cpp protocol buffer compiler on ../proto/InputEvent.proto
[  8%] Running cpp protocol buffer compiler on ../proto/MediaChannel.proto
[  8%] Running cpp protocol buffer compiler on ../proto/MediaChannelSetupResponse.proto
[  9%] Running cpp protocol buffer compiler on ../proto/MediaInputChannel.proto
[  9%] Running cpp protocol buffer compiler on ../proto/MediaStreamType.proto
[  9%] Running cpp protocol buffer compiler on ../proto/NavigationChannel.proto
[ 10%] Running cpp protocol buffer compiler on ../proto/PingRequest.proto
[ 10%] Running cpp protocol buffer compiler on ../proto/PingResponse.proto
[ 10%] Running cpp protocol buffer compiler on ../proto/Sensor.proto
[ 11%] Running cpp protocol buffer compiler on ../proto/SensorChannel.proto
[ 12%] Running cpp protocol buffer compiler on ../proto/ServiceDiscoveryRequest.proto
[ 12%] Running cpp protocol buffer compiler on ../proto/ServiceDiscoveryResponse.proto
[ 12%] Running cpp protocol buffer compiler on ../proto/TouchAction.proto
[ 12%] Running cpp protocol buffer compiler on ../proto/TouchConfig.proto
[ 13%] Running cpp protocol buffer compiler on ../proto/TouchEvent.proto
[ 14%] Running cpp protocol buffer compiler on ../proto/TouchLocation.proto
[ 15%] Running cpp protocol buffer compiler on ../proto/VendorExtensionChannel.proto
[ 15%] Running cpp protocol buffer compiler on ../proto/VideoConfig.proto
[ 15%] Running cpp protocol buffer compiler on ../proto/VideoFps.proto
[ 16%] Building CXX object AAServer/CMakeFiles/AAServer.dir/main.cpp.o
[ 16%] Building CXX object AAServer/CMakeFiles/AAServer.dir/__/src/utils.cpp.o
[ 17%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/ServerUtils.cpp.o
[ 17%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/descriptors.cpp.o
[ 18%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/Library.cpp.o
[ 18%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/Function.cpp.o
[ 19%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/MassStorageFunction.cpp.o
[ 19%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/FfsFunction.cpp.o
[ 20%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/Configuration.cpp.o
[ 20%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/Gadget.cpp.o
[ 20%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/Udc.cpp.o
[ 21%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/Message.cpp.o
[ 21%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/ModeSwitcher.cpp.o
[ 22%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/AaCommunicator.cpp.o
/home/vagrant/project/AACS/AAServer/src/AaCommunicator.cpp: In member function ‘void AaCommunicator::handlePingRequest(const void*, size_t)’:
/home/vagrant/project/AACS/AAServer/src/AaCommunicator.cpp:259:31: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]
  259 |   int bufSize = presp.ByteSize();
      |                 ~~~~~~~~~~~~~~^~
In file included from /usr/include/google/protobuf/generated_enum_util.h:36,
                 from /usr/include/google/protobuf/map.h:49,
                 from /usr/include/google/protobuf/generated_message_table_driven.h:34,
                 from /home/vagrant/project/AACS/build6/AAServer/Channel.pb.h:26,
                 from /home/vagrant/project/AACS/AAServer/src/AaCommunicator.cpp:4:
/usr/include/google/protobuf/message_lite.h:408:7: note: declared here
  408 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }
      |       ^~~~~~~~
/home/vagrant/project/AACS/AAServer/src/AaCommunicator.cpp: In member function ‘void AaCommunicator::initializeSslContext()’:
/home/vagrant/project/AACS/AAServer/src/AaCommunicator.cpp:324:32: warning: ‘DH* PEM_read_DHparams(FILE*, DH**, int (*)(char*, int, int, void*), void*)’ is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declaration ]
  324 |     dh_2048 = PEM_read_DHparams(paramfile, NULL, NULL, NULL);
      |               ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/openssl/ssl.h:36,
                 from /home/vagrant/project/AACS/AAServer/src/AaCommunicator.cpp:28:
/usr/include/openssl/pem.h:469:1: note: declared here
  469 | DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DHparams, DH)
      | ^~~~~~~~~~~~~~~~~~~
[ 22%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/SocketClient.cpp.o
[ 23%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/SocketCommunicator.cpp.o
[ 23%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/ManualResetEvent.cpp.o
[ 24%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/ChannelHandler.cpp.o
[ 24%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/DefaultChannelHandler.cpp.o
[ 25%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/VideoChannelHandler.cpp.o
[ 25%] Building CXX object AAServer/CMakeFiles/AAServer.dir/src/InputChannelHandler.cpp.o
/home/vagrant/project/AACS/AAServer/src/InputChannelHandler.cpp: In member function ‘void InputChannelHandler::sendHandshakeRequest()’:
/home/vagrant/project/AACS/AAServer/src/InputChannelHandler.cpp:31:42: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]
   31 |   int bufSize = handshakeRequest.ByteSize();
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~^~
In file included from /usr/include/google/protobuf/generated_enum_util.h:36,
                 from /usr/include/google/protobuf/map.h:49,
                 from /usr/include/google/protobuf/generated_message_table_driven.h:34,
                 from /home/vagrant/project/AACS/build6/AAServer/InputChannel.pb.h:26,
                 from /home/vagrant/project/AACS/AAServer/src/InputChannelHandler.cpp:4:
/usr/include/google/protobuf/message_lite.h:408:7: note: declared here
  408 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }
      |       ^~~~~~~~
[ 26%] Building CXX object AAServer/CMakeFiles/AAServer.dir/MediaStreamType.pb.cc.o
[ 26%] Building CXX object AAServer/CMakeFiles/AAServer.dir/MediaChannel.pb.cc.o
[ 27%] Building CXX object AAServer/CMakeFiles/AAServer.dir/MediaChannelSetupResponse.pb.cc.o
[ 27%] Building CXX object AAServer/CMakeFiles/AAServer.dir/Channel.pb.cc.o
[ 28%] Building CXX object AAServer/CMakeFiles/AAServer.dir/ChannelOpenRequest.pb.cc.o
[ 28%] Building CXX object AAServer/CMakeFiles/AAServer.dir/ServiceDiscoveryRequest.pb.cc.o
[ 29%] Building CXX object AAServer/CMakeFiles/AAServer.dir/ServiceDiscoveryResponse.pb.cc.o
[ 29%] Building CXX object AAServer/CMakeFiles/AAServer.dir/InputChannel.pb.cc.o
[ 30%] Building CXX object AAServer/CMakeFiles/AAServer.dir/TouchConfig.pb.cc.o
[ 30%] Building CXX object AAServer/CMakeFiles/AAServer.dir/SensorChannel.pb.cc.o
[ 31%] Building CXX object AAServer/CMakeFiles/AAServer.dir/Sensor.pb.cc.o
[ 31%] Building CXX object AAServer/CMakeFiles/AAServer.dir/VendorExtensionChannel.pb.cc.o
[ 32%] Building CXX object AAServer/CMakeFiles/AAServer.dir/NavigationChannel.pb.cc.o
[ 32%] Building CXX object AAServer/CMakeFiles/AAServer.dir/MediaInputChannel.pb.cc.o
[ 33%] Building CXX object AAServer/CMakeFiles/AAServer.dir/BluetoothChannel.pb.cc.o
[ 33%] Building CXX object AAServer/CMakeFiles/AAServer.dir/AudioConfig.pb.cc.o
[ 34%] Building CXX object AAServer/CMakeFiles/AAServer.dir/InputEvent.pb.cc.o
[ 34%] Building CXX object AAServer/CMakeFiles/AAServer.dir/TouchEvent.pb.cc.o
[ 35%] Building CXX object AAServer/CMakeFiles/AAServer.dir/ButtonsEvent.pb.cc.o
[ 35%] Building CXX object AAServer/CMakeFiles/AAServer.dir/TouchLocation.pb.cc.o
[ 36%] Building CXX object AAServer/CMakeFiles/AAServer.dir/TouchAction.pb.cc.o
[ 36%] Building CXX object AAServer/CMakeFiles/AAServer.dir/AudioType.pb.cc.o
[ 37%] Building CXX object AAServer/CMakeFiles/AAServer.dir/VideoConfig.pb.cc.o
[ 37%] Building CXX object AAServer/CMakeFiles/AAServer.dir/VideoResolution.pb.cc.o
[ 38%] Building CXX object AAServer/CMakeFiles/AAServer.dir/VideoFps.pb.cc.o
[ 38%] Building CXX object AAServer/CMakeFiles/AAServer.dir/PingRequest.pb.cc.o
[ 39%] Building CXX object AAServer/CMakeFiles/AAServer.dir/PingResponse.pb.cc.o
[ 39%] Linking CXX executable AAServer
[ 39%] Built target AAServer
[ 40%] Generating dhparam.pem
[ 40%] Built target dhparam_aaclient
[ 40%] Running cpp protocol buffer compiler on ../proto/VideoResolution.proto
[ 40%] Running cpp protocol buffer compiler on ../proto/AudioConfig.proto
[ 40%] Running cpp protocol buffer compiler on ../proto/AudioType.proto
[ 41%] Running cpp protocol buffer compiler on ../proto/BluetoothChannel.proto
[ 42%] Running cpp protocol buffer compiler on ../proto/ButtonsEvent.proto
[ 42%] Running cpp protocol buffer compiler on ../proto/Channel.proto
[ 43%] Running cpp protocol buffer compiler on ../proto/ChannelOpenRequest.proto
[ 43%] Running cpp protocol buffer compiler on ../proto/InputChannel.proto
[ 44%] Running cpp protocol buffer compiler on ../proto/InputEvent.proto
[ 44%] Running cpp protocol buffer compiler on ../proto/MediaChannel.proto
[ 45%] Running cpp protocol buffer compiler on ../proto/MediaChannelSetupResponse.proto
[ 45%] Running cpp protocol buffer compiler on ../proto/MediaInputChannel.proto
[ 45%] Running cpp protocol buffer compiler on ../proto/MediaStreamType.proto
[ 46%] Running cpp protocol buffer compiler on ../proto/NavigationChannel.proto
[ 46%] Running cpp protocol buffer compiler on ../proto/PingRequest.proto
[ 47%] Running cpp protocol buffer compiler on ../proto/PingResponse.proto
[ 48%] Running cpp protocol buffer compiler on ../proto/Sensor.proto
[ 48%] Running cpp protocol buffer compiler on ../proto/SensorChannel.proto
[ 48%] Running cpp protocol buffer compiler on ../proto/ServiceDiscoveryRequest.proto
[ 49%] Running cpp protocol buffer compiler on ../proto/ServiceDiscoveryResponse.proto
[ 50%] Running cpp protocol buffer compiler on ../proto/TouchAction.proto
[ 51%] Running cpp protocol buffer compiler on ../proto/TouchConfig.proto
[ 51%] Running cpp protocol buffer compiler on ../proto/TouchEvent.proto
[ 51%] Running cpp protocol buffer compiler on ../proto/TouchLocation.proto
[ 51%] Running cpp protocol buffer compiler on ../proto/VendorExtensionChannel.proto
[ 52%] Running cpp protocol buffer compiler on ../proto/VideoConfig.proto
[ 53%] Running cpp protocol buffer compiler on ../proto/VideoFps.proto
[ 53%] Building CXX object AAClient/CMakeFiles/AAClient.dir/main.cpp.o
In file included from /home/vagrant/project/AACS/AAClient/main.cpp:6:
/home/vagrant/project/AACS/include/utils.h:3:10: fatal error: backward.hpp: No such file or directory
    3 | #include "backward.hpp"
      |          ^~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [AAClient/CMakeFiles/AAClient.dir/build.make:292: AAClient/CMakeFiles/AAClient.dir/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:261: AAClient/CMakeFiles/AAClient.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Minimal demo

Hi!

Thanks a lot for working on this! Your demo is really nice!

I have some questions about this on how to run it:

  1. Is kernel 5.13 just fine without doing anything in https://github.com/tomasz-grobelny/AACS/blob/master/doc/INSTALL.md ? Are there specific kernel configs which must be applied to get this to work (as there a kernel config in the repo)?
  2. Do you need Anbox/OsmAnd/AnyKeyboard to get this to work? Is there a more minimal demo for this? Would be great if this can just be external display.
  3. As long there's OTG support, it is fine?
  4. I don't need a phone with Android Auto running? This is fully standalone right?

I mostly want to try this to see if the hardware (Allwinner A64 quad core 1.1 GHz, 3GB RAM) is capable of doing Android Auto

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.