Advertisement
Guest User

Untitled

a guest
Dec 22nd, 2015
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.14 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. SCRIPT_VERSION=0.4.64
  4. CHANGELOG="http://www.alsa-project.org/alsa-info.sh.changelog"
  5.  
  6. #################################################################################
  7. #Copyright (C) 2007 Free Software Foundation.
  8.  
  9. #This program is free software; you can redistribute it and/or modify
  10. #it under the terms of the GNU General Public License as published by
  11. #the Free Software Foundation; either version 2 of the License, or
  12. #(at your option) any later version.
  13.  
  14. #This program is distributed in the hope that it will be useful,
  15. #but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. #GNU General Public License for more details.
  18.  
  19. #You should have received a copy of the GNU General Public License
  20. #along with this program; if not, write to the Free Software
  21. #Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  22.  
  23. ##################################################################################
  24.  
  25. #The script was written for 2 main reasons:
  26. # 1. Remove the need for the devs/helpers to ask several questions before we can easily help the user.
  27. # 2. Allow newer/inexperienced ALSA users to give us all the info we need to help them.
  28.  
  29. #Set the locale (this may or may not be a good idea.. let me know)
  30. export LC_ALL=C
  31.  
  32. #Change the PATH variable, so we can run lspci (needed for some distros)
  33. PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin
  34. BGTITLE="ALSA-Info v $SCRIPT_VERSION"
  35. PASTEBINKEY="C9cRIO8m/9y8Cs0nVs0FraRx7U0pHsuc"
  36. #Define some simple functions
  37.  
  38. WGET=$(which wget 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
  39.  
  40. pbcheck(){
  41. [[ $UPLOAD = "no" ]] && return
  42.  
  43. if [[ -z $PASTEBIN ]]; then
  44. [[ $(ping -c1 www.alsa-project.org) ]] || KEEP_FILES="yes" UPLOAD="no" PBERROR="yes"
  45. else
  46. [[ $(ping -c1 www.pastebin.ca) ]] || KEEP_FILES="yes" UPLOAD="no" PBERROR="yes"
  47. fi
  48. }
  49.  
  50. update() {
  51. test -z "$WGET" -o ! -x "$WGET" && return
  52.  
  53. SHFILE=`mktemp -t alsa-info.XXXXXXXXXX` || exit 1
  54. wget -O $SHFILE "http://www.alsa-project.org/alsa-info.sh" >/dev/null 2>&1
  55. REMOTE_VERSION=`grep SCRIPT_VERSION $SHFILE |head -n1 |sed 's/.*=//'`
  56. if [ -s "$SHFILE" -a "$REMOTE_VERSION" != "$SCRIPT_VERSION" ]; then
  57. if [[ -n $DIALOG ]]
  58. then
  59. OVERWRITE=
  60. if [ -w $0 ]; then
  61. dialog --yesno "Newer version of ALSA-Info has been found\n\nDo you wish to install it?\nNOTICE: The original file $0 will be overwritten!" 0 0
  62. DIALOG_EXIT_CODE=$?
  63. if [[ $DIALOG_EXIT_CODE = 0 ]]; then
  64. OVERWRITE=yes
  65. fi
  66. fi
  67. if [ -z "$OVERWRITE" ]; then
  68. dialog --yesno "Newer version of ALSA-Info has been found\n\nDo you wish to download it?" 0 0
  69. DIALOG_EXIT_CODE=$?
  70. fi
  71. if [[ $DIALOG_EXIT_CODE = 0 ]]
  72. then
  73. echo "Newer version detected: $REMOTE_VERSION"
  74. echo "To view the ChangeLog, please visit $CHANGELOG"
  75. if [ "$OVERWRITE" = "yes" ]; then
  76. cp $SHFILE $0
  77. echo "ALSA-Info script has been updated to v $REMOTE_VERSION"
  78. echo "Please re-run the script"
  79. rm $SHFILE 2>/dev/null
  80. else
  81. echo "ALSA-Info script has been downloaded as $SHFILE."
  82. echo "Please re-run the script from new location."
  83. fi
  84. exit
  85. else
  86. rm $SHFILE 2>/dev/null
  87. fi
  88. else
  89. echo "Newer version detected: $REMOTE_VERSION"
  90. echo "To view the ChangeLog, please visit $CHANGELOG"
  91. if [ -w $0 ]; then
  92. echo "The original file $0 will be overwritten!"
  93. echo -n "If you do not like to proceed, press Ctrl-C now.." ; read inp
  94. cp $SHFILE $0
  95. echo "ALSA-Info script has been updated. Please re-run it."
  96. rm $SHFILE 2>/dev/null
  97. else
  98. echo "ALSA-Info script has been downloaded $SHFILE."
  99. echo "Please, re-run it from new location."
  100. fi
  101. exit
  102. fi
  103. else
  104. rm $SHFILE 2>/dev/null
  105. fi
  106. }
  107.  
  108. cleanup() {
  109. if [ -n "$TEMPDIR" -a "$KEEP_FILES" != "yes" ]; then
  110. rm -rf "$TEMPDIR" 2>/dev/null
  111. fi
  112. test -n "$KEEP_OUTPUT" || rm -f "$NFILE"
  113. }
  114.  
  115.  
  116. withaplay() {
  117. echo "!!Aplay/Arecord output" >> $FILE
  118. echo "!!--------------------" >> $FILE
  119. echo "" >> $FILE
  120. echo "APLAY" >> $FILE
  121. echo "" >> $FILE
  122. aplay -l >> $FILE 2>&1
  123. echo "" >> $FILE
  124. echo "ARECORD" >> $FILE
  125. echo "" >> $FILE
  126. arecord -l >> $FILE 2>&1
  127. echo "" >> $FILE
  128. }
  129.  
  130. withlsmod() {
  131. echo "!!All Loaded Modules" >> $FILE
  132. echo "!!------------------" >> $FILE
  133. echo "" >> $FILE
  134. lsmod |awk {'print $1'} >> $FILE
  135. echo "" >> $FILE
  136. echo "" >> $FILE
  137. }
  138.  
  139. withamixer() {
  140. echo "!!Amixer output" >> $FILE
  141. echo "!!-------------" >> $FILE
  142. echo "" >> $FILE
  143. for i in `grep "]: " /proc/asound/cards | awk -F ' ' '{ print $1} '` ; do
  144. CARD_NAME=`grep "^ *$i " $TEMPDIR/alsacards.tmp|awk {'print $2'}`
  145. echo "!!-------Mixer controls for card $i $CARD_NAME]" >> $FILE
  146. echo "" >>$FILE
  147. amixer -c$i info>> $FILE 2>&1
  148. amixer -c$i>> $FILE 2>&1
  149. echo "" >> $FILE
  150. done
  151. echo "" >> $FILE
  152. }
  153.  
  154. withalsactl() {
  155. echo "!!Alsactl output" >> $FILE
  156. echo "!!--------------" >> $FILE
  157. echo "" >> $FILE
  158. exe=""
  159. if [ -x /usr/sbin/alsactl ]; then
  160. exe="/usr/sbin/alsactl"
  161. fi
  162. if [ -x /usr/local/sbin/alsactl ]; then
  163. exe="/usr/local/sbin/alsactl"
  164. fi
  165. if [ -z "$exe" ]; then
  166. exe=`whereis alsactl | cut -d ' ' -f 2`
  167. fi
  168. $exe -f $TEMPDIR/alsactl.tmp store
  169. echo "--startcollapse--" >> $FILE
  170. cat $TEMPDIR/alsactl.tmp >> $FILE
  171. echo "--endcollapse--" >> $FILE
  172. echo "" >> $FILE
  173. echo "" >> $FILE
  174. }
  175.  
  176. withdevices() {
  177. echo "!!ALSA Device nodes" >> $FILE
  178. echo "!!-----------------" >> $FILE
  179. echo "" >> $FILE
  180. ls -la /dev/snd/* >> $FILE
  181. echo "" >> $FILE
  182. echo "" >> $FILE
  183. }
  184.  
  185. withconfigs() {
  186. if [[ -e $HOME/.asoundrc ]] || [[ -e /etc/asound.conf ]] || [[ -e $HOME/.asoundrc.asoundconf ]]
  187. then
  188. echo "!!ALSA configuration files" >> $FILE
  189. echo "!!------------------------" >> $FILE
  190. echo "" >> $FILE
  191.  
  192. #Check for ~/.asoundrc
  193. if [[ -e $HOME/.asoundrc ]]
  194. then
  195. echo "!!User specific config file (~/.asoundrc)" >> $FILE
  196. echo "" >> $FILE
  197. cat $HOME/.asoundrc >> $FILE
  198. echo "" >> $FILE
  199. echo "" >> $FILE
  200. fi
  201. #Check for .asoundrc.asoundconf (seems to be Ubuntu specific)
  202. if [[ -e $HOME/.asoundrc.asoundconf ]]
  203. then
  204. echo "!!asoundconf-generated config file" >> $FILE
  205. echo "" >> $FILE
  206. cat $HOME/.asoundrc.asoundconf >> $FILE
  207. echo "" >> $FILE
  208. echo "" >> $FILE
  209. fi
  210. #Check for /etc/asound.conf
  211. if [[ -e /etc/asound.conf ]]
  212. then
  213. echo "!!System wide config file (/etc/asound.conf)" >> $FILE
  214. echo "" >> $FILE
  215. cat /etc/asound.conf >> $FILE
  216. echo "" >> $FILE
  217. echo "" >> $FILE
  218. fi
  219. fi
  220. }
  221.  
  222. withsysfs() {
  223. local i f
  224. local printed=""
  225. for i in /sys/class/sound/*; do
  226. case "$i" in
  227. */hwC?D?)
  228. if [ -f $i/init_pin_configs ]; then
  229. if [ -z "$printed" ]; then
  230. echo "!!Sysfs Files" >> $FILE
  231. echo "!!-----------" >> $FILE
  232. echo "" >> $FILE
  233. fi
  234. for f in init_pin_configs driver_pin_configs user_pin_configs init_verbs hints; do
  235. echo "$i/$f:" >> $FILE
  236. cat $i/$f >> $FILE
  237. echo >> $FILE
  238. done
  239. printed=yes
  240. fi
  241. ;;
  242. esac
  243. done
  244. if [ -n "$printed" ]; then
  245. echo "" >> $FILE
  246. fi
  247. }
  248.  
  249. withdmesg() {
  250. echo "!!ALSA/HDA dmesg" >> $FILE
  251. echo "!!--------------" >> $FILE
  252. echo "" >> $FILE
  253. dmesg | grep -C1 -E 'ALSA|HDA|HDMI|snd[_-]|sound|hda.codec|hda.intel' >> $FILE
  254. echo "" >> $FILE
  255. echo "" >> $FILE
  256. }
  257.  
  258. withall() {
  259. withdevices
  260. withconfigs
  261. withaplay
  262. withamixer
  263. withalsactl
  264. withlsmod
  265. withsysfs
  266. withdmesg
  267. WITHALL="no"
  268. }
  269.  
  270. get_alsa_library_version() {
  271. ALSA_LIB_VERSION=`grep VERSION_STR /usr/include/alsa/version.h 2>/dev/null|awk {'print $3'}|sed 's/"//g'`
  272.  
  273. if [ -z "$ALSA_LIB_VERSION" ]; then
  274. if [ -f /etc/lsb-release ]; then
  275. . /etc/lsb-release
  276. case "$DISTRIB_ID" in
  277. Ubuntu)
  278. if which dpkg > /dev/null ; then
  279. ALSA_LIB_VERSION=`dpkg -l libasound2 | tail -1 | awk '{print $3}' | cut -f 1 -d -`
  280. fi
  281.  
  282. if [ "$ALSA_LIB_VERSION" = "<none>" ]; then
  283. ALSA_LIB_VERSION=""
  284. fi
  285. return
  286. ;;
  287. *)
  288. return
  289. ;;
  290. esac
  291. elif [ -f /etc/debian_version ]; then
  292. if which dpkg > /dev/null ; then
  293. ALSA_LIB_VERSION=`dpkg -l libasound2 | tail -1 | awk '{print $3}' | cut -f 1 -d -`
  294. fi
  295.  
  296. if [ "$ALSA_LIB_VERSION" = "<none>" ]; then
  297. ALSA_LIB_VERSION=""
  298. fi
  299. return
  300. fi
  301. fi
  302. }
  303.  
  304.  
  305. #Run checks to make sure the programs we need are installed.
  306. LSPCI=$(which lspci 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null);
  307. TPUT=$(which tput 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null);
  308. DIALOG=$(which dialog 2>/dev/null | sed 's|^[^/]*||' 2>/dev/null);
  309.  
  310. #Check to see if sysfs is enabled in the kernel. We'll need this later on
  311. SYSFS=$(mount |grep sysfs|awk {'print $3'});
  312.  
  313. #Check modprobe config files for sound related options
  314. SNDOPTIONS=$(modprobe -c|sed -n 's/^options \(snd[-_][^ ]*\)/\1:/p')
  315.  
  316. KEEP_OUTPUT=
  317. NFILE=""
  318.  
  319. PASTEBIN=""
  320. WWWSERVICE="www.alsa-project.org"
  321. WELCOME="yes"
  322. PROCEED="yes"
  323. UPLOAD="ask"
  324. REPEAT=""
  325. while [ -z "$REPEAT" ]; do
  326. REPEAT="no"
  327. case "$1" in
  328. --update|--help|--about)
  329. WELCOME="no"
  330. PROCEED="no"
  331. ;;
  332. --upload)
  333. UPLOAD="yes"
  334. WELCOME="no"
  335. ;;
  336. --no-upload)
  337. UPLOAD="no"
  338. WELCOME="no"
  339. ;;
  340. --pastebin)
  341. PASTEBIN="yes"
  342. WWWSERVICE="pastebin"
  343. ;;
  344. --no-dialog)
  345. DIALOG=""
  346. REPEAT=""
  347. shift
  348. ;;
  349. --stdout)
  350. DIALOG=""
  351. UPLOAD="no"
  352. WELCOME="no"
  353. TOSTDOUT="yes"
  354. ;;
  355. esac
  356. done
  357.  
  358.  
  359. #Script header output.
  360. if [ "$WELCOME" = "yes" ]; then
  361. greeting_message="\
  362.  
  363. This script visits the following commands/files to collect diagnostic
  364. information about your ALSA installation and sound related hardware.
  365.  
  366. dmesg
  367. lspci
  368. lsmod
  369. aplay
  370. amixer
  371. alsactl
  372. /proc/asound/
  373. /sys/class/sound/
  374. ~/.asoundrc (etc.)
  375.  
  376. See '$0 --help' for command line options.
  377. "
  378. if [ -n "$DIALOG" ]; then
  379. dialog --backtitle "$BGTITLE" \
  380. --title "ALSA-Info script v $SCRIPT_VERSION" \
  381. --msgbox "$greeting_message" 20 80
  382. else
  383. echo "ALSA Information Script v $SCRIPT_VERSION"
  384. echo "--------------------------------"
  385. echo "$greeting_message"
  386. fi # dialog
  387. fi # WELCOME
  388.  
  389. #Set the output file
  390. TEMPDIR=`mktemp -t -d alsa-info.XXXXXXXXXX` || exit 1
  391. FILE="$TEMPDIR/alsa-info.txt"
  392. if [ -z "$NFILE" ]; then
  393. NFILE=`mktemp -t alsa-info.txt.XXXXXXXXXX` || exit 1
  394. fi
  395.  
  396. trap cleanup 0
  397.  
  398. if [ "$PROCEED" = "yes" ]; then
  399.  
  400. if [ -z "$LSPCI" ]; then
  401. if [ -d /sys/bus/pci ]; then
  402. echo "This script requires lspci. Please install it, and re-run this script."
  403. exit 0
  404. fi
  405. fi
  406.  
  407. #Fetch the info and store in temp files/variables
  408. DISTRO=`grep -ihs "buntu\|SUSE\|Fedora\|PCLinuxOS\|MEPIS\|Mandriva\|Debian\|Damn\|Sabayon\|Slackware\|KNOPPIX\|Gentoo\|Zenwalk\|Mint\|Kubuntu\|FreeBSD\|Puppy\|Freespire\|Vector\|Dreamlinux\|CentOS\|Arch\|Xandros\|Elive\|SLAX\|Red\|BSD\|KANOTIX\|Nexenta\|Foresight\|GeeXboX\|Frugalware\|64\|SystemRescue\|Novell\|Solaris\|BackTrack\|KateOS\|Pardus" /etc/{issue,*release,*version}`
  409. KERNEL_VERSION=`uname -r`
  410. KERNEL_PROCESSOR=`uname -p`
  411. KERNEL_MACHINE=`uname -m`
  412. KERNEL_OS=`uname -o`
  413. [[ `uname -v | grep SMP` ]] && KERNEL_SMP="Yes" || KERNEL_SMP="No"
  414. ALSA_DRIVER_VERSION=`cat /proc/asound/version |head -n1|awk {'print $7'} |sed 's/\.$//'`
  415. get_alsa_library_version
  416. ALSA_UTILS_VERSION=`amixer -v |awk {'print $3'}`
  417. LAST_CARD=$((`grep "]: " /proc/asound/cards | wc -l` - 1 ))
  418.  
  419. ESDINST=$(which esd 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
  420. PAINST=$(which pulseaudio 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
  421. ARTSINST=$(which artsd 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
  422. JACKINST=$(which jackd 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
  423. ROARINST=$(which roard 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
  424. DMIDECODE=$(which dmidecode 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
  425.  
  426. #Check for DMI data
  427. if [ -d /sys/class/dmi/id ]; then
  428. # No root privileges are required when using sysfs method
  429. DMI_SYSTEM_MANUFACTURER=$(cat /sys/class/dmi/id/sys_vendor 2>/dev/null)
  430. DMI_SYSTEM_PRODUCT_NAME=$(cat /sys/class/dmi/id/product_name 2>/dev/null)
  431. DMI_SYSTEM_PRODUCT_VERSION=$(cat /sys/class/dmi/id/product_version 2>/dev/null)
  432. DMI_SYSTEM_FIRMWARE_VERSION=$(cat /sys/class/dmi/id/bios_version 2>/dev/null)
  433. elif [ -x $DMIDECODE ]; then
  434. DMI_SYSTEM_MANUFACTURER=$($DMIDECODE -s system-manufacturer 2>/dev/null)
  435. DMI_SYSTEM_PRODUCT_NAME=$($DMIDECODE -s system-product-name 2>/dev/null)
  436. DMI_SYSTEM_PRODUCT_VERSION=$($DMIDECODE -s system-version 2>/dev/null)
  437. DMI_SYSTEM_FIRMWARE_VERSION=$($DMIDECODE -s bios-version 2>/dev/null)
  438. fi
  439.  
  440. cat /proc/asound/modules 2>/dev/null|awk {'print $2'}>$TEMPDIR/alsamodules.tmp
  441. cat /proc/asound/cards >$TEMPDIR/alsacards.tmp
  442. if [[ ! -z "$LSPCI" ]]; then
  443. lspci |grep -i "multi\|audio">$TEMPDIR/lspci.tmp
  444. fi
  445.  
  446. #Check for HDA-Intel cards codec#*
  447. cat /proc/asound/card*/codec\#* > $TEMPDIR/alsa-hda-intel.tmp 2> /dev/null
  448.  
  449. #Check for AC97 cards codec
  450. cat /proc/asound/card*/codec97\#0/ac97\#0-0 > $TEMPDIR/alsa-ac97.tmp 2> /dev/null
  451. cat /proc/asound/card*/codec97\#0/ac97\#0-0+regs > $TEMPDIR/alsa-ac97-regs.tmp 2> /dev/null
  452.  
  453. #Check for USB mixer setup
  454. cat /proc/asound/card*/usbmixer > $TEMPDIR/alsa-usbmixer.tmp 2> /dev/null
  455.  
  456. #Fetch the info, and put it in $FILE in a nice readable format.
  457. if [[ -z $PASTEBIN ]]; then
  458. echo "upload=true&script=true&cardinfo=" > $FILE
  459. else
  460. echo "name=$USER&type=33&description=/tmp/alsa-info.txt&expiry=&s=Submit+Post&content=" > $FILE
  461. fi
  462. echo "!!################################" >> $FILE
  463. echo "!!ALSA Information Script v $SCRIPT_VERSION" >> $FILE
  464. echo "!!################################" >> $FILE
  465. echo "" >> $FILE
  466. echo "!!Script ran on: `LANG=C TZ=UTC date`" >> $FILE
  467. echo "" >> $FILE
  468. echo "" >> $FILE
  469. echo "!!Linux Distribution" >> $FILE
  470. echo "!!------------------" >> $FILE
  471. echo "" >> $FILE
  472. echo $DISTRO >> $FILE
  473. echo "" >> $FILE
  474. echo "" >> $FILE
  475. echo "!!DMI Information" >> $FILE
  476. echo "!!---------------" >> $FILE
  477. echo "" >> $FILE
  478. echo "Manufacturer: $DMI_SYSTEM_MANUFACTURER" >> $FILE
  479. echo "Product Name: $DMI_SYSTEM_PRODUCT_NAME" >> $FILE
  480. echo "Product Version: $DMI_SYSTEM_PRODUCT_VERSION" >> $FILE
  481. echo "Firmware Version: $DMI_SYSTEM_FIRMWARE_VERSION" >> $FILE
  482. echo "" >> $FILE
  483. echo "" >> $FILE
  484. echo "!!Kernel Information" >> $FILE
  485. echo "!!------------------" >> $FILE
  486. echo "" >> $FILE
  487. echo "Kernel release: $KERNEL_VERSION" >> $FILE
  488. echo "Operating System: $KERNEL_OS" >> $FILE
  489. echo "Architecture: $KERNEL_MACHINE" >> $FILE
  490. echo "Processor: $KERNEL_PROCESSOR" >> $FILE
  491. echo "SMP Enabled: $KERNEL_SMP" >> $FILE
  492. echo "" >> $FILE
  493. echo "" >> $FILE
  494. echo "!!ALSA Version" >> $FILE
  495. echo "!!------------" >> $FILE
  496. echo "" >> $FILE
  497. echo "Driver version: $ALSA_DRIVER_VERSION" >> $FILE
  498. echo "Library version: $ALSA_LIB_VERSION" >> $FILE
  499. echo "Utilities version: $ALSA_UTILS_VERSION" >> $FILE
  500. echo "" >> $FILE
  501. echo "" >> $FILE
  502. echo "!!Loaded ALSA modules" >> $FILE
  503. echo "!!-------------------" >> $FILE
  504. echo "" >> $FILE
  505. cat $TEMPDIR/alsamodules.tmp >> $FILE
  506. echo "" >> $FILE
  507. echo "" >> $FILE
  508. echo "!!Sound Servers on this system" >> $FILE
  509. echo "!!----------------------------" >> $FILE
  510. echo "" >> $FILE
  511. if [[ -n $PAINST ]];then
  512. [[ `pgrep '^(.*/)?pulseaudio$'` ]] && PARUNNING="Yes" || PARUNNING="No"
  513. echo "Pulseaudio:" >> $FILE
  514. echo " Installed - Yes ($PAINST)" >> $FILE
  515. echo " Running - $PARUNNING" >> $FILE
  516. echo "" >> $FILE
  517. fi
  518. if [[ -n $ESDINST ]];then
  519. [[ `pgrep '^(.*/)?esd$'` ]] && ESDRUNNING="Yes" || ESDRUNNING="No"
  520. echo "ESound Daemon:" >> $FILE
  521. echo " Installed - Yes ($ESDINST)" >> $FILE
  522. echo " Running - $ESDRUNNING" >> $FILE
  523. echo "" >> $FILE
  524. fi
  525. if [[ -n $ARTSINST ]];then
  526. [[ `pgrep '^(.*/)?artsd$'` ]] && ARTSRUNNING="Yes" || ARTSRUNNING="No"
  527. echo "aRts:" >> $FILE
  528. echo " Installed - Yes ($ARTSINST)" >> $FILE
  529. echo " Running - $ARTSRUNNING" >> $FILE
  530. echo "" >> $FILE
  531. fi
  532. if [[ -n $JACKINST ]];then
  533. [[ `pgrep '^(.*/)?jackd$'` ]] && JACKRUNNING="Yes" || JACKRUNNING="No"
  534. echo "Jack:" >> $FILE
  535. echo " Installed - Yes ($JACKINST)" >> $FILE
  536. echo " Running - $JACKRUNNING" >> $FILE
  537. echo "" >> $FILE
  538. fi
  539. if [[ -n $ROARINST ]];then
  540. [[ `pgrep '^(.*/)?roard$'` ]] && ROARRUNNING="Yes" || ROARRUNNING="No"
  541. echo "RoarAudio:" >> $FILE
  542. echo " Installed - Yes ($ROARINST)" >> $FILE
  543. echo " Running - $ROARRUNNING" >> $FILE
  544. echo "" >> $FILE
  545. fi
  546. if [[ -z "$PAINST" && -z "$ESDINST" && -z "$ARTSINST" && -z "$JACKINST" && -z "$ROARINST" ]];then
  547. echo "No sound servers found." >> $FILE
  548. echo "" >> $FILE
  549. fi
  550. echo "" >> $FILE
  551. echo "!!Soundcards recognised by ALSA" >> $FILE
  552. echo "!!-----------------------------" >> $FILE
  553. echo "" >> $FILE
  554. cat $TEMPDIR/alsacards.tmp >> $FILE
  555. echo "" >> $FILE
  556. echo "" >> $FILE
  557.  
  558. if [[ ! -z "$LSPCI" ]]; then
  559. echo "!!PCI Soundcards installed in the system" >> $FILE
  560. echo "!!--------------------------------------" >> $FILE
  561. echo "" >> $FILE
  562. cat $TEMPDIR/lspci.tmp >> $FILE
  563. echo "" >> $FILE
  564. echo "" >> $FILE
  565. echo "!!Advanced information - PCI Vendor/Device/Subsystem ID's" >> $FILE
  566. echo "!!-------------------------------------------------------" >> $FILE
  567. echo "" >> $FILE
  568. lspci -vvn |grep -A1 040[1-3] >> $FILE
  569. echo "" >> $FILE
  570. echo "" >> $FILE
  571. fi
  572.  
  573. if [ "$SNDOPTIONS" ]
  574. then
  575. echo "!!Modprobe options (Sound related)" >> $FILE
  576. echo "!!--------------------------------" >> $FILE
  577. echo "" >> $FILE
  578. modprobe -c|sed -n 's/^options \(snd[-_][^ ]*\)/\1:/p' >> $FILE
  579. echo "" >> $FILE
  580. echo "" >> $FILE
  581. fi
  582.  
  583. if [ -d "$SYSFS" ]
  584. then
  585. echo "!!Loaded sound module options" >> $FILE
  586. echo "!!---------------------------" >> $FILE
  587. echo "" >> $FILE
  588. for mod in `cat /proc/asound/modules|awk {'print $2'}`;do
  589. echo "!!Module: $mod" >> $FILE
  590. for params in `echo $SYSFS/module/$mod/parameters/*`; do
  591. echo -ne "\t";
  592. echo "$params : `cat $params`" | sed 's:.*/::';
  593. done >> $FILE
  594. echo "" >> $FILE
  595. done
  596. echo "" >> $FILE
  597. fi
  598.  
  599. if [ -s "$TEMPDIR/alsa-hda-intel.tmp" ]; then
  600. echo "!!HDA-Intel Codec information" >> $FILE
  601. echo "!!---------------------------" >> $FILE
  602. echo "--startcollapse--" >> $FILE
  603. echo "" >> $FILE
  604. cat $TEMPDIR/alsa-hda-intel.tmp >> $FILE
  605. echo "--endcollapse--" >> $FILE
  606. echo "" >> $FILE
  607. echo "" >> $FILE
  608. fi
  609.  
  610. if [ -s "$TEMPDIR/alsa-ac97.tmp" ]; then
  611. echo "!!AC97 Codec information" >> $FILE
  612. echo "!!----------------------" >> $FILE
  613. echo "--startcollapse--" >> $FILE
  614. echo "" >> $FILE
  615. cat $TEMPDIR/alsa-ac97.tmp >> $FILE
  616. echo "" >> $FILE
  617. cat $TEMPDIR/alsa-ac97-regs.tmp >> $FILE
  618. echo "--endcollapse--" >> $FILE
  619. echo "" >> $FILE
  620. echo "" >> $FILE
  621. fi
  622.  
  623. if [ -s "$TEMPDIR/alsa-usbmixer.tmp" ]; then
  624. echo "!!USB Mixer information" >> $FILE
  625. echo "!!---------------------" >> $FILE
  626. echo "--startcollapse--" >> $FILE
  627. echo "" >> $FILE
  628. cat $TEMPDIR/alsa-usbmixer.tmp >> $FILE
  629. echo "--endcollapse--" >> $FILE
  630. echo "" >> $FILE
  631. echo "" >> $FILE
  632. fi
  633.  
  634. #If no command line options are specified, then run as though --with-all was specified
  635. if [ -z "$1" ]; then
  636. update
  637. pbcheck
  638. fi
  639.  
  640. fi # proceed
  641.  
  642. #loop through command line arguments, until none are left.
  643. if [ -n "$1" ]; then
  644. until [ -z "$1" ]
  645. do
  646. case "$1" in
  647. --pastebin)
  648. update
  649. pbcheck
  650. ;;
  651. --update)
  652. update
  653. exit
  654. ;;
  655. --upload)
  656. UPLOAD="yes"
  657. ;;
  658. --no-upload)
  659. UPLOAD="no"
  660. ;;
  661. --output)
  662. shift
  663. NFILE="$1"
  664. KEEP_OUTPUT="yes"
  665. ;;
  666. --debug)
  667. echo "Debugging enabled. $FILE and $TEMPDIR will not be deleted"
  668. KEEP_FILES="yes"
  669. echo ""
  670. ;;
  671. --with-all)
  672. withall
  673. ;;
  674. --with-aplay)
  675. withaplay
  676. WITHALL="no"
  677. ;;
  678. --with-amixer)
  679. withamixer
  680. WITHALL="no"
  681. ;;
  682. --with-alsactl)
  683. withalsactl
  684. WITHALL="no"
  685. ;;
  686. --with-devices)
  687. withdevices
  688. WITHALL="no"
  689. ;;
  690. --with-dmesg)
  691. withdmesg
  692. WITHALL="no"
  693. ;;
  694. --with-configs)
  695. WITHALL="no"
  696. if [[ -e $HOME/.asoundrc ]] || [[ -e /etc/asound.conf ]]
  697. then
  698. echo "!!ALSA configuration files" >> $FILE
  699. echo "!!------------------------" >> $FILE
  700. echo "" >> $FILE
  701.  
  702. #Check for ~/.asoundrc
  703. if [[ -e $HOME/.asoundrc ]]
  704. then
  705. echo "!!User specific config file ($HOME/.asoundrc)" >> $FILE
  706. echo "" >> $FILE
  707. cat $HOME/.asoundrc >> $FILE
  708. echo "" >> $FILE
  709. echo "" >> $FILE
  710. fi
  711.  
  712. #Check for /etc/asound.conf
  713. if [[ -e /etc/asound.conf ]]
  714. then
  715. echo "!!System wide config file (/etc/asound.conf)" >> $FILE
  716. echo "" >> $FILE
  717. cat /etc/asound.conf >> $FILE
  718. echo "" >> $FILE
  719. echo "" >> $FILE
  720. fi
  721. fi
  722. ;;
  723. --stdout)
  724. UPLOAD="no"
  725. if [ -z "$WITHALL" ]; then
  726. withall
  727. fi
  728. cat $FILE
  729. rm $FILE
  730. ;;
  731. --about)
  732. echo "Written/Tested by the following users of #alsa on irc.freenode.net:"
  733. echo ""
  734. echo " wishie - Script author and developer / Testing"
  735. echo " crimsun - Various script ideas / Testing"
  736. echo " gnubien - Various script ideas / Testing"
  737. echo " GrueMaster - HDA Intel specific items / Testing"
  738. echo " olegfink - Script update function"
  739. echo " TheMuso - display to stdout functionality"
  740. exit 0
  741. ;;
  742. *)
  743. echo "alsa-info.sh version $SCRIPT_VERSION"
  744. echo ""
  745. echo "Available options:"
  746. echo " --with-aplay (includes the output of aplay -l)"
  747. echo " --with-amixer (includes the output of amixer)"
  748. echo " --with-alsactl (includes the output of alsactl)"
  749. echo " --with-configs (includes the output of ~/.asoundrc and"
  750. echo " /etc/asound.conf if they exist)"
  751. echo " --with-devices (shows the device nodes in /dev/snd/)"
  752. echo " --with-dmesg (shows the ALSA/HDA kernel messages)"
  753. echo ""
  754. echo " --output FILE (specify the file to output for no-upload mode)"
  755. echo " --update (check server for script updates)"
  756. echo " --upload (upload contents to remote server)"
  757. echo " --no-upload (do not upload contents to remote server)"
  758. echo " --pastebin (use http://pastebin.ca) as remote server"
  759. echo " instead www.alsa-project.org"
  760. echo " --stdout (print alsa information to standard output"
  761. echo " instead of a file)"
  762. echo " --about (show some information about the script)"
  763. echo " --debug (will run the script as normal, but will not"
  764. echo " delete $FILE)"
  765. exit 0
  766. ;;
  767. esac
  768. shift 1
  769. done
  770. fi
  771.  
  772. if [ "$PROCEED" = "no" ]; then
  773. exit 1
  774. fi
  775.  
  776. if [ -z "$WITHALL" ]; then
  777. withall
  778. fi
  779.  
  780. if [ "$UPLOAD" = "ask" ]; then
  781. if [ -n "$DIALOG" ]; then
  782. dialog --backtitle "$BGTITLE" --title "Information collected" --yes-label " UPLOAD / SHARE " --no-label " SAVE LOCALLY " --defaultno --yesno "\n\nAutomatically upload ALSA information to $WWWSERVICE?" 10 80
  783. DIALOG_EXIT_CODE=$?
  784. if [ $DIALOG_EXIT_CODE != 0 ]; then
  785. UPLOAD="no"
  786. else
  787. UPLOAD="yes"
  788. fi
  789. else
  790. echo -n "Automatically upload ALSA information to $WWWSERVICE? [y/N] : "
  791. read -e CONFIRM
  792. if [ "$CONFIRM" != "y" ]; then
  793. UPLOAD="no"
  794. else
  795. UPLOAD="yes"
  796. fi
  797. fi
  798.  
  799. fi
  800.  
  801. if [ "$UPLOAD" = "no" ]; then
  802.  
  803. if [ -z "$TOSTDOUT" ]; then
  804. mv -f $FILE $NFILE || exit 1
  805. KEEP_OUTPUT="yes"
  806. fi
  807.  
  808. if [[ -n $DIALOG ]]
  809. then
  810. if [[ -n $PBERROR ]]; then
  811. dialog --backtitle "$BGTITLE" --title "Information collected" --msgbox "An error occurred while contacting the $WWWSERVICE.\n Your information was NOT automatically uploaded.\n\nYour ALSA information is in $NFILE" 10 100
  812. else
  813. dialog --backtitle "$BGTITLE" --title "Information collected" --msgbox "\n\nYour ALSA information is in $NFILE" 10 60
  814. fi
  815. else
  816. echo
  817.  
  818. if [[ -n $PBERROR ]]; then
  819. echo "An error occurred while contacting the $WWWSERVICE."
  820. echo "Your information was NOT automatically uploaded."
  821. echo ""
  822. echo "Your ALSA information is in $NFILE"
  823. echo ""
  824. else
  825. if [ -z "$TOSTDOUT" ]; then
  826. echo ""
  827. echo "Your ALSA information is in $NFILE"
  828. echo ""
  829. fi
  830. fi
  831. fi
  832.  
  833. exit
  834.  
  835. fi # UPLOAD
  836.  
  837. #Test that wget is installed, and supports --post-file. Upload $FILE if it does, and prompt user to upload file if it doesnt.
  838. if [[ -n "${WGET}" ]] && [[ -x "${WGET}" ]] && [[ `wget --help |grep post-file` ]]
  839. then
  840.  
  841. if [[ -n $DIALOG ]]
  842. then
  843.  
  844. if [[ -z $PASTEBIN ]]; then
  845. wget -O - --tries=5 --timeout=60 --post-file=$FILE "http://www.alsa-project.org/cardinfo-db/" &>$TEMPDIR/wget.tmp || echo "Upload failed; exit"
  846. { for i in 10 20 30 40 50 60 70 80 90; do
  847. echo $i
  848. sleep 0.2
  849. done
  850. echo; } |dialog --backtitle "$BGTITLE" --guage "Uploading information to www.alsa-project.org ..." 6 70 0
  851. else
  852. wget -O - --tries=5 --timeout=60 --post-file=$FILE "http://pastebin.ca/quiet-paste.php?api=$PASTEBINKEY&encrypt=t&encryptpw=blahblah" &>$TEMPDIR/wget.tmp || echo "Upload failed; exit"
  853. { for i in 10 20 30 40 50 60 70 80 90; do
  854. echo $i
  855. sleep 0.2
  856. done
  857. echo; } |dialog --backtitle "$BGTITLE" --guage "Uploading information to www.pastebin.ca ..." 6 70 0
  858. fi
  859.  
  860. dialog --backtitle "$BGTITLE" --title "Information uploaded" --yesno "Would you like to see the uploaded information?" 5 100
  861. DIALOG_EXIT_CODE=$?
  862. if [ $DIALOG_EXIT_CODE = 0 ]; then
  863. grep -v "alsa-info.txt" $FILE >$TEMPDIR/uploaded.txt
  864. dialog --backtitle "$BGTITLE" --textbox $TEMPDIR/uploaded.txt 0 0
  865. fi
  866.  
  867. clear
  868.  
  869. # no dialog
  870. else
  871.  
  872. if [[ -z $PASTEBIN ]]; then
  873. echo -n "Uploading information to www.alsa-project.org ... "
  874. wget -O - --tries=5 --timeout=60 --post-file=$FILE http://www.alsa-project.org/cardinfo-db/ &>$TEMPDIR/wget.tmp &
  875. else
  876. echo -n "Uploading information to www.pastebin.ca ... "
  877. wget -O - --tries=5 --timeout=60 --post-file=$FILE http://pastebin.ca/quiet-paste.php?api=$PASTEBINKEY &>$TEMPDIR/wget.tmp &
  878. fi
  879.  
  880. #Progess spinner for wget transfer.
  881. i=1
  882. sp="/-\|"
  883. echo -n ' '
  884. while pgrep wget &>/dev/null
  885. do
  886. echo -en "\b${sp:i++%${#sp}:1}"
  887. done
  888.  
  889. echo -e "\b Done!"
  890. echo ""
  891.  
  892. fi #dialog
  893.  
  894. #See if tput is available, and use it if it is.
  895. if [ -n "$TPUT" ]; then
  896. if [[ -z $PASTEBIN ]]; then
  897. FINAL_URL=`tput setaf 1; grep "SUCCESS:" $TEMPDIR/wget.tmp | cut -d ' ' -f 2 ; tput sgr0`
  898. else
  899. FINAL_URL=`tput setaf 1; grep "SUCCESS:" $TEMPDIR/wget.tmp | sed -n 's/.*\:\([0-9]\+\).*/http:\/\/pastebin.ca\/\1/p';tput sgr0`
  900. fi
  901. else
  902. if [[ -z $PASTEBIN ]]; then
  903. FINAL_URL=`grep "SUCCESS:" $TEMPDIR/wget.tmp | cut -d ' ' -f 2`
  904. else
  905. FINAL_URL=`grep "SUCCESS:" $TEMPDIR/wget.tmp | sed -n 's/.*\:\([0-9]\+\).*/http:\/\/pastebin.ca\/\1/p'`
  906. fi
  907. fi
  908.  
  909. # Output the URL of the uploaded file.
  910. echo "Your ALSA information is located at $FINAL_URL"
  911. echo "Please inform the person helping you."
  912. echo ""
  913.  
  914. # We couldnt find a suitable wget, so tell the user to upload manually.
  915. else
  916. mv -f $FILE $NFILE || exit 1
  917. KEEP_OUTPUT="yes"
  918. if [[ -z $DIALOG ]]
  919. then
  920. if [[ -z $PASTEBIN ]]; then
  921. echo ""
  922. echo "Could not automatically upload output to http://www.alsa-project.org"
  923. echo "Possible reasons are:"
  924. echo " 1. Couldnt find 'wget' in your PATH"
  925. echo " 2. Your version of wget is less than 1.8.2"
  926. echo ""
  927. echo "Please manually upload $NFILE to http://www.alsa-project.org/cardinfo-db/ and submit your post."
  928. echo ""
  929. else
  930. echo ""
  931. echo "Could not automatically upload output to http://www.pastebin.ca"
  932. echo "Possible reasons are:"
  933. echo " 1. Couldnt find 'wget' in your PATH"
  934. echo " 2. Your version of wget is less than 1.8.2"
  935. echo ""
  936. echo "Please manually upload $NFILE to http://www.pastebin.ca/upload.php and submit your post."
  937. echo ""
  938. fi
  939. else
  940. if [[ -z $PASTEBIN ]]; then
  941. dialog --backtitle "$BGTITLE" --msgbox "Could not automatically upload output to http://www.alsa-project.org.\nPossible reasons are:\n\n 1. Couldn't find 'wget' in your PATH\n 2. Your version of wget is less than 1.8.2\n\nPlease manually upload $NFILE to http://www.alsa-project,org/cardinfo-db/ and submit your post." 25 100
  942. else
  943. dialog --backtitle "$BGTITLE" --msgbox "Could not automatically upload output to http://www.pastebin.ca.\nPossible reasons are:\n\n 1. Couldn't find 'wget' in your PATH\n 2. Your version of wget is less than 1.8.2\n\nPlease manually upload $NFILE to http://www.pastebin.ca/upload.php and submit your post." 25 100
  944. fi
  945. fi
  946. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement