#!/bin/sh # # Copyright (c) 2013 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # # Collect information about the audio system from top to bottom. dump_cards() { for card in ${@} do echo '=== amixer -c' $card scontents '===' amixer -c $card scontents echo '=== amixer -c' $card contents '===' amixer -c $card contents done } echo '=== cras_test_client --dump_server_info ===' cras_test_client --dump_server_info echo '=== cras_test_client --dump_audio_thread ===' cras_test_client --dump_audio_thread echo '=== aplay -l ===' aplay -l echo '=== arecord -l ===' arecord -l output_cards=$(aplay -l | egrep ^card | sed 's/card \([0-9]\+\).*/\1/' | sort -u) dump_cards $output_cards input_cards=$(arecord -l | egrep ^card | sed 's/card \([0-9]\+\).*/\1/' | sort -u) dump_cards $input_cards # HDA codec for codecs on x86. codecs=$(find /proc/asound -mindepth 2 -maxdepth 2 -path '*card*/codec#*') for codec in $codecs do echo '=== codec:' $codec '===' cat $codec done # I2C dump for codecs on arm. # Find lines like "max98088.7-0010" and extract "7 0x0010" from it. if [ -e /sys/kernel/debug/asoc/codecs ]; then sed_expr='s/^\([^.-]\+\)\.\([0-9]\+\)-\([0-9]\+\)$/\2 0x\3/p' sed -n "$sed_expr" /sys/kernel/debug/asoc/codecs | while read i2c_addr do echo '===' i2cdump -f -y $i2c_addr '===' i2cdump -f -y $i2c_addr done fi