Update to iodéOS 6.0 (Android 15) breaks Android Auto (Wireless)

After updating to Version 6.0 I found out that now I’m unable to use Android Auto with my car radio. The Android Auto app itself still works and I can get int its settings, however I cannot connect it to my car radio. My phone is a Fairphone 4.

Android Auto can detect that its connected over Bluetooth to a car radio that it can talk to. However pressing that ones name does nothing. Any attempts to connect fail without any message or warning.

I did some looking with Logcat (using LogFox) and captured this crash:

FATAL EXCEPTION: main
Process: com.google.android.projection.gearhead:car, PID: 13111
java.lang.RuntimeException: Unable to start service com.google.android.apps.auto.wireless.setup.service.impl.WirelessSetupSharedService@33f17bb with Intent { act=android.bluetooth.device.action.ACL_CONNECTED cmp=com.google.android.projection.gearhead/com.google.android.apps.auto.wireless.setup.service.impl.WirelessSetupSharedService (has extras) }: java.lang.SecurityException: Starting FGS with type location callerApp=ProcessRecord{25587d6 13111:com.google.android.projection.gearhead:car/u0a412} targetSDK=35 requires permissions: all of the permissions allOf=true [android.permission.FOREGROUND_SERVICE_LOCATION] any of the permissions allOf=false [android.permission.ACCESS_COARSE_LOCATION, android.permission.ACCESS_FINE_LOCATION]  and the app must be in the eligible state/exemptions to access the foreground only permission
	at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:5246)
	at android.app.ActivityThread.-$$Nest$mhandleServiceArgs(Unknown Source:0)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2546)
	at android.os.Handler.dispatchMessage(Handler.java:109)
	at android.os.Looper.loopOnce(Looper.java:232)
	at android.os.Looper.loop(Looper.java:317)
	at android.app.ActivityThread.main(ActivityThread.java:8787)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:591)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:871)
Caused by: java.lang.SecurityException: Starting FGS with type location callerApp=ProcessRecord{25587d6 13111:com.google.android.projection.gearhead:car/u0a412} targetSDK=35 requires permissions: all of the permissions allOf=true [android.permission.FOREGROUND_SERVICE_LOCATION] any of the permissions allOf=false [android.permission.ACCESS_COARSE_LOCATION, android.permission.ACCESS_FINE_LOCATION]  and the app must be in the eligible state/exemptions to access the foreground only permission
	at android.os.Parcel.createExceptionOrNull(Parcel.java:3231)
	at android.os.Parcel.createException(Parcel.java:3215)
	at android.os.Parcel.readException(Parcel.java:3198)
	at android.os.Parcel.readException(Parcel.java:3140)
	at android.app.IActivityManager$Stub$Proxy.setServiceForeground(IActivityManager.java:7209)
	at android.app.Service.startForeground(Service.java:863)
	at com.google.android.apps.auto.wireless.setup.service.impl.WirelessSetupSharedService.h(SourceFile:93)
	at com.google.android.apps.auto.wireless.setup.service.impl.WirelessSetupSharedService.g(SourceFile:119)
	at com.google.android.apps.auto.wireless.setup.service.impl.WirelessSetupSharedService.onStartCommand(SourceFile:139)
	at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:5228)
	... 9 more

The app has all permissions I can give it via settings.


[…] and the app must be in the eligible state/exemptions to access the foreground only permission

Just a gut feeling but could this be the problem :thinking:
Maybe an Android 15 permission (API) change?


If needed I could provide the longer logcat capture I did as well.

1 Like

Actually. Running over USB is also broken. I’ve tried running Android Auto in Debug Mode, using the head unit emulator on my computer.

That did also work before the update. Now I can see the following in the ADB logs:

1739302479.048 10412 26350 26350 I CAR.SETUP.LITE: Using FirstActivity bypass from intent: Intent { act=android.hardware.usb.action.USB_ACCESSORY_HANDSHAKE flg=0x11000010 cmp=com.google.android.projection.gearhead/com.google.android.apps.auto.carservice.gmscorecompat.CarUsbReceiverTPlus (has extras) }
1739302479.051 10412 26350 26350 W CAR.SETUP.LITE: Accessory is not valid: null
1739302479.051 10412 26319 27966 I GH.ConnBroadcast: Got USB_ACCESSORY_HANDSHAKE event. GETPROTOCOL started at 0ms, STRING_COUNT=0, ACCESSORY_START=true, ACCESSORY_HANDSHAKE_END=893057110ms, handshake delay 893057119ms

Something about the accessory not being valid (being reported as null is a bit strange).

I’ve just updated to iode 6.1 and this isn’t fixed.

I guess I wouldn’t mind if we never had Android Auto, but to have it in 5.8 and then not in 6.0 and onwards is very frustrating.

Sorry I have never used Android Auto, but I am seeing references to upstream Lineage 22.1 (even with “mind the gapps” installed) not working well with it.

Not the answer you are looking for, but I don’t think that the problem is with iodé per se?

colm:
I guess I wouldn’t mind if we never had Android Auto, but to have it in 5.8 and then not in 6.0 and onwards is very frustrating.

Absolutely. Especially for me it’s also frustrating, because I was already planning to upgrade my car radio with something more functional. When 5.8 enabled Android Auto I made the jump and bought myself a Pioneer radio.

Android Auto worked like a treat on it. But now with 6.0+ it’s no more…

Well that and I only now figured out that the Bluetooth controls on my Pioneer model are… Crap. But that’s beside the point.


rik:
[…] but I don’t think that the problem is with iodé per se?

I did find an issue on LineageOS Gitlab Issue board about Android Auto:

So it might really be an upstream issue. I was also wondering if it would make more sense to open an issue on their GitLab:

But I’m not sure which of their many projects it should go into. OTA has some issues, but they just seem to stagnate in there…