aws / aws/amazon-chime-sdk-android
Audio session fails to start (xtl_conn_rec / err=-1) while video connects successfully
- Dominant language
- Kotlin
- Stars
- 113
- Forks
- 60
- Avg merge
- 40m
- Merged PRs (30d)
- 2
Description
**Environment**
- SDK version: 0.25.4 (also reproduced on 0.25.1)
- Device: Xiaomi Redmi 9A/9C (model M2006C3LI), Android 10
- Chipset: MediaTek MT6765
**Description**
When joining a meeting, the video connection succeeds every time
(wss://signal.m1.ao1.app.chime.aws:443), but the audio connection fails
immediately, every time, on a separate host/port
(*.k.m1.ao1.app.chime.aws:3278, fallback 3478).
**Logs**
E/DefaultAudioClientObserver: failed to init xtl_conn_rec
E/DefaultAudioClientObserver: failed to setup session; err=-1
E/audioclient_jni: FAILED STARTING AUDIO CLIENT SESSION
E/DefaultAudioClientController: Failed to start audio session. Response code: -1
As a result, realtimeLocalMute()/realtimeLocalUnmute() both return false
for the entire call, since the audio session never actually establishes.
**What I've ruled out**
- Not a permissions issue — RECORD_AUDIO and CAMERA are both granted
- Not a network/firewall issue — reproduces identically on two different
networks (mobile data and Wi-Fi)
- Not an SDK version issue — reproduces identically on 0.25.1 and 0.25.4
(latest)
- Not a device-selection issue — audioVideo.chooseAudioDevice() is called
correctly before start(), confirmed via logs (device selection succeeds,
it's the session/transport step that fails)
- The web SDK (amazon-chime-sdk-js) works correctly for the same meeting
from a browser, so this appears isolated to the Android native SDK
**Steps to reproduce**
1. Create a meeting via the Chime CreateMeeting/CreateAttendee APIs
2. Join via the Android SDK (audioVideo.start())
3. Video connects and streams normally
4. Audio session logs "failed to init xtl_conn_rec" / "err=-1" within ~1
second of start(), and never recovers
**Expected behavior**
Audio session should connect successfully, same as it does via the web SDK
for the same meeting.
Contributor guide
Research direction
Start by reproducing the failure on the specified Xiaomi Redmi 9A/9C with Android 10, calling audioVideo.chooseAudioDevice() before audioVideo.start(). Review the audio-session path around the reported xtl_conn_rec and err=-1 logs, comparing the successful video connection with the failed audio transport. Done means the audio session starts reliably and realtimeLocalMute() and realtimeLocalUnmute() no longer return false for the call.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, aws, kotlin
- Domain
- audio-video-rtc, mobile
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 45/100