Android Auto Wifi - opencardev/crankshaft GitHub Wiki
Since the 9th Pre-Alpha version, Crankshaft can receive an Android Auto projection from your phone over WiFi instead of a USB cable.
However, the practicality of using Crankshaft over WiFi was limited to phones that allowed concurrent WiFi and Mobile Data. The Android Auto projection would be broadcast from phone to Crankshaft and the phone's Mobile Data used for supplying internet connectivity to provide mapping, streaming downloads, etc. As some Android phone OEMs choose to limit or block concurrent WiFi and Mobile Data, Android Auto over WiFi was not practical for users of these phones.
In addition, prior to Crankshaft Alpha1, only one set of WiFi credentials was usable at a time. Therefore Crankshaft could not connect to your phone's WiFi hotspot, to use Mobile Data whilst on the move, and connect to your home, work or a public WiFi router when parked to potentially save on expensive Mobile Data fees.
Crankshaft Alpha1 has addressed these issues by enabling two sets of credentials in Client Mode whilst Hotspot Mode now has default credentials to enable easier testing should you wish to continue using Hotspot Mode.
Crankshaft WiFi setup
To set up WiFi in Crankshaft, you need to edit the /boot/crankshaft/crankshaft_env.sh
file, most likely over an SSH connection using a text editor such as nano
.
Note: The /boot/
partition will need to be unlocked from read-only mode via csmt boot unlock
before you can save changes to your /boot/crankshaft/crankshaft_env.sh
file.
WiFi country code
In both Client and Hotspot modes, Crankshaft will need to use the appropriate country code for your region.
Whilst you can set the WiFi country code in the Settings
app on the BT / WiFi
tab, you can also set it while editing the /boot/crankshaft/crankshaft_env.sh
file, such as when adding WiFi credentials as described below, by appending your two-letter (uppercase) country code to this line:
WIFI_COUNTRY=
Forcing an update
Once you have set your WiFi credentials by editing the /boot/crankshaft/crankshaft_env.sh
file (as described below), regeneration of the /boot/crankshaft/wpa_supplicant.conf
file Crankshaft uses for WiFi networking will be required.
To force Crankshaft to regenerate this the /boot/crankshaft/wpa_supplicant.conf
file, edit the following line in your /boot/crankshaft/crankshaft_env.sh
file, from:
WIFI_UPDATE_CONFIG=0
... to:
WIFI_UPDATE_CONFIG=1
Special note:
If you have an existing, functional wpa_supplicant.conf
file you can use it within /boot/crankshaft/
.
If the wpa_supplicant.conf
file is detected it will not be overwritten with credentials from /boot/crankshaft/crankshaft_env.sh
(only params like country are checked without changing the credential section).
Choosing Crankshaft's WiFi mode
Crankshaft WiFi can operate in one of two modes:
- Client: Crankshaft connects to a router (home, work, public) or your phone's hotspot
- Hotspot: Crankshaft becomes a hotspot for your mobile phone to connect to
Client Mode
To use Client Mode you need to enter WiFi credentials in the /boot/crankshaft/crankshaft_env.sh
file.
Default "sample"
settings for WIFI
may already be in place.
Connecting to a WiFi router
To connect to a WiFi router such as a home, work or public router, edit the first pair of credentials:
WIFI_SSID="sample"
WIFI_PSK="sample"
Connecting to your phone's WiFi hotspot
To connect to your phone's WiFi hotspot, edit the second pair of credentials:
WIFI2_SSID="sample"
WIFI2_PSK="sample"
Setting up two Client Mode networks
To set up a choice between two Client Mode WiFi networks, edit both sets of credentials:
WIFI_SSID="sample"
WIFI_PSK="sample"
WIFI2_SSID="sample"
WIFI2_PSK="sample"
Priority
As long as the credentials are unique, Crankshaft will automatically use the stronger network signal if both networks are available.
Alternatively, you can force which Client Mode WiFi network you wish to use in the Settings
app, on the BT / WiFi
tab, under the Wifi Mode
section.
Hotspot Mode
Starting Crankshaft's Hotspot Mode temporarily
- Tap the
Settings
button - Tap the
BT / WiFi
tab - Under
Wifi Mode
, tapRun Hotspot
Crankshaft will immediately attempt to initialize WiFi in Hotspot Mode and if successful, the SSID and Password (PSK) credentials required to connect to Crankshaft (from your phone, tablet, laptop, etc) will be displayed within the Network Information section. These credentials will be the following defaults unless you have changed them by editing the /boot/crankshaft/crankshaft_env.sh
file:
- SSID:
CRANKSHAFT-NG
- Password:
1234567890
- Tap the Save button
Starting Crankshaft in Hotspot Mode permanently
- Tap the
Settings
button - Tap the
BT / WiFi
tab - Under
Wifi Setup
, tickEnable
alongsideStart system in Hotspot Mode
- Tap the Save button
- Tap the Power button
- Tap the Reboot button
Enabling Android Auto over WiFi with Crankshaft
After connecting your phone to the CRANKSAFT-NG
WiFi network, there's one last step required to receive the Android Auto projection on your Crankshaft head unit:
- Launch Android Auto on your phone
- Enable Android Auto developer mode
- Delete all known cars (a once-off requirement) via:
- tap the ☰ hamburger menu
- tap Settings
- tap Connected cars
- tap overflow menu dots
- tap
Forget all cars
- In Android Auto:
- tap the ☰ hamburger menu
- tap Settings
- tap Info
- tap the overflow menu dots
- tap
Start head unit server
- In Crankshaft, push the WiFi button on the top left of the home screen
Crankshaft will attempt to automatically connect to the Android Auto projection on your phone.
If, after a delay, Android Auto takes over the screen on your Crankshaft head unit, you're up and running!
If Crankshaft is unable to detect the Android Auto projection automatically, a dialog will appear with a list of detected IP addresses. Choose the IP address of the device (most likely your phone) running Android Auto and tap Connect
.
After a delay, Android Auto should take over the Crankshaft screen and you're up and running!