[patch] Re: No state is present for card CMI8738

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 21 May 2007, Takashi Iwai wrote:

At Fri, 18 May 2007 16:42:51 +0200 (CEST),
Tomas Pospisek's Mailing Lists wrote:

Since I got no feedback neither here nor on the users list, may I ask why?

* is it that nobody knows the answer to my question?
* or is it because the question is stupid (as in: read the FAQ, the wiki,
   the archive and use google (all of which did not help me btw.))

Because you pasted the whole things below your signature.
I didn't read texts below the signature because they are usually
quoted texts.

Thanks a lot for your reply and sorry for that.

Regarding the alsactl problem.  When alsactl returns 'no state is
present', then it's not necessarily a driver problem but could be
rather a system problem.  At least, you have to figure out what is the
cause. For example, check /proc/asound/cards whether the driver is
really loaded when you call alsactl.

Well, actually I figured out one cause of the problem, namely that alsactl wasn't able to access the configuration file. My dumb, but nevertheless, alsactl could be way clearer about telling the user what's wrong.

I suggest the attached patches to improve the comprehensibility of alsactl's (error-)behaveour.


Description of patches:

* diff_display_error_on_failing_open_in_load_state:
  Tells the user that it was not able to open the config file with the
  precise error message.

* diff_more_explicit_open_w_error_message:
  Include more explicit error message when open config file in write
  mode (this is for the "names" command)

* diff_more_explicit_open_w_error_message2
  same as last patch, this time for the store command


Other little patches:

* diff_missing_space_in_help:
  adds a space in the help text between "restore" and "<card>" and indents
  the rest of the text accordingly to fit

* diff4_display_help_for_names_command:
  shortly explain the "names" command in the help text


*t

--
-----------------------------------------------------------
  Tomas Pospisek
  http://sourcepole.com -  Linux & Open Source Solutions
-----------------------------------------------------------
diff -u state.c state.c
--- state.c	2006-09-29 13:53:26.000000000 +0200
+++ state.c	2007-05-22 22:12:21.000000000 +0200
@@ -1312,7 +1312,10 @@
 			error("snd_config_load error: %s", snd_strerror(err));
 			return err;
 		}
-	}
+	} else {
+	  error("Cannot open %s for reading: %s", file, snd_strerror(err));
+          return err;
+        }
 
 	if (!cardname) {
 		int card, first = 1;
--- alsactl.c.orig	2006-09-29 13:53:26.000000000 +0200
+++ alsactl.c	2007-05-22 22:03:36.000000000 +0200
@@ -41,16 +41,16 @@
 {
 	printf("Usage: alsactl <options> command\n");
 	printf("\nAvailable options:\n");
-	printf("  -h,--help       this help\n");
-	printf("  -f,--file #     configuration file (default " SYS_ASOUNDRC " or " SYS_ASOUNDNAMES ")\n");
-	printf("  -F,--force      try to restore the matching controls as much as possible\n");
-	printf("  -d,--debug      debug mode\n");
-	printf("  -v,--version    print version of this program\n");
+	printf("  -h,--help        this help\n");
+	printf("  -f,--file #      configuration file (default " SYS_ASOUNDRC " or " SYS_ASOUNDNAMES ")\n");
+	printf("  -F,--force       try to restore the matching controls as much as possible\n");
+	printf("  -d,--debug       debug mode\n");
+	printf("  -v,--version     print version of this program\n");
 	printf("\nAvailable commands:\n");
-	printf("  store <card #>  save current driver setup for one or each soundcards\n");
-	printf("                  to configuration file\n");
-	printf("  restore<card #> load current driver setup for one or each soundcards\n");
-	printf("                  from configuration file\n");
+	printf("  store   <card #> save current driver setup for one or each soundcards\n");
+	printf("                   to configuration file\n");
+	printf("  restore <card #> load current driver setup for one or each soundcards\n");
+	printf("                   from configuration file\n");
 }
 
 int main(int argc, char *argv[])
diff -u alsactl.c alsactl.c
--- alsactl.c	2007-05-22 22:03:36.000000000 +0200
+++ alsactl.c	2007-05-22 22:06:43.000000000 +0200
@@ -51,6 +51,8 @@
 	printf("                   to configuration file\n");
 	printf("  restore <card #> load current driver setup for one or each soundcards\n");
 	printf("                   from configuration file\n");
+	printf("  names   <card #> dump information about all the known present (sub-)devices\n");
+	printf("                   into configuration file\n");
 }
 
 int main(int argc, char *argv[])
--- names.c.orig	2006-09-29 13:53:26.000000000 +0200
+++ names.c	2007-05-22 22:15:29.000000000 +0200
@@ -535,7 +535,7 @@
 			err = snd_output_stdio_open(&out, cfgfile, "w+");
 		}
 		if (err < 0) {
-			error("Cannot open %s for writing", cfgfile);
+			error("Cannot open %s for writing: %s", cfgfile, snd_strerror(err));
 			return -errno;
 		}
 		err = snd_config_save(config, out);
diff -u state.c state.c
--- state.c	2007-05-22 22:12:21.000000000 +0200
+++ state.c	2007-05-22 22:19:37.000000000 +0200
@@ -1278,7 +1278,7 @@
 	else
 		err = snd_output_stdio_open(&out, file, "w");
 	if (err < 0) {
-		error("Cannot open %s for writing", file);
+		error("Cannot open %s for writing: %s", file, snd_strerror(err));
 		return -errno;
 	}
 	err = snd_config_save(config, out);
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux