Here are a few of the most common questions new developers have around the SDL Core project.
Currently the SDL Core repo is built for Ubuntu 20.04 as our default environment.
The most common errors come from dependencies issues. Ensure your system has all the required packages to compile the project. Try running the commands in the dependencies section of the Getting Started guide.
There is no official port at the moment, so individual investigation will need to be done. Even though SDL is designed to work on most Linux systems, modifications might need to be made to the project to get it to work with your setup.
The DISALLOWED
result code is related to the RPC not being authorized in SDL Core's local policy table. Policy permissions for an app are added either in the preloaded policy table or through a policy table update.
The Policies Overview page provides general information about policies - explaining what they are used for, how the policy table gets updated, and how these updates are triggered. Policy Table Fields and App Policies go into more detail about the policy table structure and how to correctly add policy permissions for an application.
If you are not running SDL Core for the first time, SDL Core will use the existing policy table database(policy.sqlite
) which is stored in the build folder under bin/storage/
. To make SDL Core parse the preloaded policy table again you have to delete the existing policy table database. In the bin folder run:
rm storage/policy.sqlite
You can enable/disable certain features by modifying the CMakeLists.txt file. The CMake Build Configuration section contains a list of features which can be included/excluded for a build.
The SmartDeviceLink.ini file located in your build/src/appMain
directory is where runtime options can be configured for your instance of SDL Core. The INI Configuration page has more information about individual runtime options.
The default SDL Core repo actually performs an SDP on loop. Because SDP queries are a resource intensive operation it can cause the audio coming from the phone to become very choppy. This can be fixed by doing the following:
First, navigate to this line that reads:
: TransportAdapterImpl(new BluetoothDeviceScanner(this, true, 0),
Change it to:
: TransportAdapterImpl(new BluetoothDeviceScanner(this, false, 0),
That will cause the SDP queries to not be performed by default. This means you will need to create a way to perform SDP queries using an event trigger. So in the HMI implementation you will need to tie an event (button press or voice command) to sending the following RPC message to the Core service:
return ({ 'jsonrpc': '2.0', 'method': 'BasicCommunication.OnStartDeviceDiscovery' })
Timing is dependent on the OEM or Supplier implementing SDL, and also dependent on factors such as OS, hardware, etc.
View on GitHub.com