* ICE1724 - File descriptor in bad state when capturing @ 2008-03-09 22:56 Pavel Hofman 2008-03-10 11:08 ` Takashi Iwai 0 siblings, 1 reply; 8+ messages in thread From: Pavel Hofman @ 2008-03-09 22:56 UTC (permalink / raw) To: alsa-devel Hi, I have most of the ESI Juli driver working, but I have hit a problem with the capture stream. I had to modify some ice1724.c code to allow redefining clock-related functions in the actual card file (Juli has a different clocking scheme), but all the DMA code is left intact, as well as the methods defining the capture stream. The ice1724 vu-meters detect input ADC data, I can hear correct sound when setting the internal mixer to H/W-In. Yet, when trying to record, I get arecord -v -D hw:0,0,0 -r 44100 -f S32_LE -c2 .... RIFF$WAVEfmt ... data arecord: pcm_read:1346: read error: File descriptor in bad state At the same time, my second Envy24-based card Prodigy192 (uses the original methods in ice1724.c) works OK, arecord gives no errors. Swapping the cards using the model parameter (to swap the /dev/snd/pcmCXDXc device file) makes no difference. Thank you for any hints of where I should focus my attention to. I am not attaching the patches, as they are rather complicated. If you find that important, I will send the preliminary version. Pavel Hofman. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: ICE1724 - File descriptor in bad state when capturing 2008-03-09 22:56 ICE1724 - File descriptor in bad state when capturing Pavel Hofman @ 2008-03-10 11:08 ` Takashi Iwai 2008-03-10 21:39 ` Pavel Hofman 0 siblings, 1 reply; 8+ messages in thread From: Takashi Iwai @ 2008-03-10 11:08 UTC (permalink / raw) To: Pavel Hofman; +Cc: alsa-devel At Sun, 09 Mar 2008 23:56:01 +0100, Pavel Hofman wrote: > > Hi, > > I have most of the ESI Juli driver working, but I have hit a problem > with the capture stream. I had to modify some ice1724.c code to allow > redefining clock-related functions in the actual card file (Juli has a > different clocking scheme), but all the DMA code is left intact, as well > as the methods defining the capture stream. > > The ice1724 vu-meters detect input ADC data, I can hear correct sound > when setting the internal mixer to H/W-In. Yet, when trying to record, I get > > arecord -v -D hw:0,0,0 -r 44100 -f S32_LE -c2 > > .... > RIFF$WAVEfmt ... data arecord: pcm_read:1346: read error: File > descriptor in bad state It's -EBADFD and indicates that the PCM state isn't the expected one, in this case, SNDRV_PCM_STATE_PREPARED or RUNNING. The error comes from snd_pcm_capture_ioctl1() in core/pcm_native.c. Not sure what is broken, but this should be the starting point. Takashi ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: ICE1724 - File descriptor in bad state when capturing 2008-03-10 11:08 ` Takashi Iwai @ 2008-03-10 21:39 ` Pavel Hofman 2008-03-11 7:35 ` Clemens Ladisch 0 siblings, 1 reply; 8+ messages in thread From: Pavel Hofman @ 2008-03-10 21:39 UTC (permalink / raw) To: Takashi Iwai; +Cc: ALSA development Takashi Iwai wrote: > At Sun, 09 Mar 2008 23:56:01 +0100, > Pavel Hofman wrote: >> Hi, >> >> I have most of the ESI Juli driver working, but I have hit a problem >> with the capture stream. I had to modify some ice1724.c code to allow >> redefining clock-related functions in the actual card file (Juli has a >> different clocking scheme), but all the DMA code is left intact, as well >> as the methods defining the capture stream. >> >> The ice1724 vu-meters detect input ADC data, I can hear correct sound >> when setting the internal mixer to H/W-In. Yet, when trying to record, I get >> >> arecord -v -D hw:0,0,0 -r 44100 -f S32_LE -c2 >> >> .... >> RIFF$WAVEfmt ... data arecord: pcm_read:1346: read error: File >> descriptor in bad state > > It's -EBADFD and indicates that the PCM state isn't the expected one, > in this case, SNDRV_PCM_STATE_PREPARED or RUNNING. > The error comes from snd_pcm_capture_ioctl1() in core/pcm_native.c. > Not sure what is broken, but this should be the starting point. > > > Takashi Takashi, Thanks for the hint. I have found the following: For the working capture (spdif input in my case), the function snd_pcm_lib_read1 gets called first with SNDRV_PCM_STATE_PREPARED, and consequently repeatedly with SNDRV_PCM_STATE_RUNNING. strace arecord : ... write(1, "data\0\0\0\200", 8data) = 8 ioctl(4, 0x800c4151, 0xbfbf5310) = 0 write(1, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 16384) = 16384 ioctl(4, 0x800c4151, 0xbfbf5310) = 0 write(1, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 16384) = 16384 ... Whereas for the broken analog input, the sequence is 1. snd_pcm_lib_read1 with SNDRV_PCM_STATE_PREPARED - returns 0 2. snd_pcm_lib_read1 with SNDRV_PCM_STATE_SETUP - returns -EBADFD strace arecord: write(1, "data\0\0\0\200", 8data) = 8 ioctl(4, 0x800c4151, 0xbfa6cff0) = 0 poll([{fd=4, events=POLLIN|POLLERR|POLLNVAL, revents=POLLIN|POLLERR}], 1, 1000) = 1 ioctl(4, 0x800c4151, 0xbfa6cff0) = -1 EBADFD (File descriptor in bad state) write(2, "arecord: pcm_read:1346: ", 24arecord: pcm_read:1346: ) = 24 The broken input falls to polling - is it somehow blocked? Thanks a lot for further hints. Pavel. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: ICE1724 - File descriptor in bad state when capturing 2008-03-10 21:39 ` Pavel Hofman @ 2008-03-11 7:35 ` Clemens Ladisch 2008-03-11 13:25 ` Pavel Hofman [not found] ` <47D63D6A.10503@insite.cz> 0 siblings, 2 replies; 8+ messages in thread From: Clemens Ladisch @ 2008-03-11 7:35 UTC (permalink / raw) To: Pavel Hofman; +Cc: Takashi Iwai, ALSA development Pavel Hofman wrote: > Whereas for the broken analog input, the sequence is > > 1. snd_pcm_lib_read1 with SNDRV_PCM_STATE_PREPARED - returns 0 > 2. snd_pcm_lib_read1 with SNDRV_PCM_STATE_SETUP - returns -EBADFD I'd guess that your trigger callback fails somehow, bit this is hard to determine without the source code. Regards, Clemens ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: ICE1724 - File descriptor in bad state when capturing 2008-03-11 7:35 ` Clemens Ladisch @ 2008-03-11 13:25 ` Pavel Hofman [not found] ` <47D63D6A.10503@insite.cz> 1 sibling, 0 replies; 8+ messages in thread From: Pavel Hofman @ 2008-03-11 13:25 UTC (permalink / raw) To: Clemens Ladisch; +Cc: Takashi Iwai, ALSA development [-- Attachment #1: Type: text/plain, Size: 704 bytes --] Clemens Ladisch wrote: > Pavel Hofman wrote: >> Whereas for the broken analog input, the sequence is >> >> 1. snd_pcm_lib_read1 with SNDRV_PCM_STATE_PREPARED - returns 0 >> 2. snd_pcm_lib_read1 with SNDRV_PCM_STATE_SETUP - returns -EBADFD > > I'd guess that your trigger callback fails somehow, bit this is > hard to determine without the source code. Thanks, I will do more testing in the evening. Just in case, I am including the relevant files. I moved all rate-relevant stuff to card-specific routines, redefined in juli.c. The trigger code was not changed at all. Perhaps those new snd_pcm_hardware structs in juli.c (I do not know the exact meaning of the _bytes_ ones)? Thanks a lot. Pavel. [-- Attachment #2: juli.zip --] [-- Type: application/zip, Size: 26833 bytes --] [-- Attachment #3: Type: text/plain, Size: 160 bytes --] _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <47D63D6A.10503@insite.cz>]
* Re: ICE1724 - File descriptor in bad state when capturing [not found] ` <47D63D6A.10503@insite.cz> @ 2008-03-11 15:11 ` Clemens Ladisch 2008-03-11 15:21 ` Pavel Hofman 2008-03-11 19:46 ` Pavel Hofman 0 siblings, 2 replies; 8+ messages in thread From: Clemens Ladisch @ 2008-03-11 15:11 UTC (permalink / raw) To: Pavel Hofman; +Cc: Takashi Iwai, ALSA development Pavel Hofman wrote: > Clemens Ladisch wrote: > > Pavel Hofman wrote: > > > Whereas for the broken analog input, the sequence is > > > > > > 1. snd_pcm_lib_read1 with SNDRV_PCM_STATE_PREPARED - returns 0 > > > 2. snd_pcm_lib_read1 with SNDRV_PCM_STATE_SETUP - returns -EBADFD > > > > I'd guess that your trigger callback fails somehow, bit this is > > hard to determine without the source code. > > Thanks, I will do more testing in the evening. Just in case, I am > including the relevant files. I moved all rate-relevant stuff to > card-specific routines, redefined in juli.c. The trigger code was not > changed at all. > > Perhaps those new snd_pcm_hardware structs in juli.c (I do not know the > exact meaning of the _bytes_ ones)? These values are in bytes (and not in frames). It's possible that the AK4114 code stops the stream because it thinks that the input sample rate has changed. Try uncommenting the printk in i2c/other/ak4114.c. Regards, Clemens ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: ICE1724 - File descriptor in bad state when capturing 2008-03-11 15:11 ` Clemens Ladisch @ 2008-03-11 15:21 ` Pavel Hofman 2008-03-11 19:46 ` Pavel Hofman 1 sibling, 0 replies; 8+ messages in thread From: Pavel Hofman @ 2008-03-11 15:21 UTC (permalink / raw) To: Clemens Ladisch; +Cc: ALSA Developers Clemens Ladisch napsal(a): > Pavel Hofman wrote: >> Clemens Ladisch wrote: >>> Pavel Hofman wrote: >>>> Whereas for the broken analog input, the sequence is >>>> >>>> 1. snd_pcm_lib_read1 with SNDRV_PCM_STATE_PREPARED - returns 0 >>>> 2. snd_pcm_lib_read1 with SNDRV_PCM_STATE_SETUP - returns -EBADFD >>> I'd guess that your trigger callback fails somehow, bit this is >>> hard to determine without the source code. >> Thanks, I will do more testing in the evening. Just in case, I am >> including the relevant files. I moved all rate-relevant stuff to >> card-specific routines, redefined in juli.c. The trigger code was not >> changed at all. >> >> Perhaps those new snd_pcm_hardware structs in juli.c (I do not know the >> exact meaning of the _bytes_ ones)? > > These values are in bytes (and not in frames). > > It's possible that the AK4114 code stops the stream because it thinks > that the input sample rate has changed. Try uncommenting the printk > in i2c/other/ak4114.c. Thanks, I will try that. I can even check with the whole AK4114 creation code commented out. Would the SPDIF receiver code stop the analog capture stream too? The digital capture stream works fine. Thanks, Pavel. > > > Regards, > Clemens > _______________________________________________ > Alsa-devel mailing list > Alsa-devel@alsa-project.org > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel -- ----------------- inSITE, s.r.o. Kafkova 16, 160 00 Praha 6 Rubesova 29, 326 00 Plzen Tel., fax: +420 - 37 - 74 493 58 GSM: +420 - 603 - 163 973 Email: pavel.hofman@insite.cz www.educity.cz, www.insite.cz www.meetings.cz, www.hrzive.cz www.comben.cz, www.hr-online.cz ------------------------------- Navstivte www.educity.cz, server s nejvetsi nabidkou profesniho vzdelavani na ceskem internetu. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: ICE1724 - File descriptor in bad state when capturing 2008-03-11 15:11 ` Clemens Ladisch 2008-03-11 15:21 ` Pavel Hofman @ 2008-03-11 19:46 ` Pavel Hofman 1 sibling, 0 replies; 8+ messages in thread From: Pavel Hofman @ 2008-03-11 19:46 UTC (permalink / raw) To: Clemens Ladisch; +Cc: ALSA development Clemens Ladisch wrote: > Pavel Hofman wrote: >> Clemens Ladisch wrote: >>> Pavel Hofman wrote: >>>> Whereas for the broken analog input, the sequence is >>>> >>>> 1. snd_pcm_lib_read1 with SNDRV_PCM_STATE_PREPARED - returns 0 >>>> 2. snd_pcm_lib_read1 with SNDRV_PCM_STATE_SETUP - returns -EBADFD >>> I'd guess that your trigger callback fails somehow, bit this is >>> hard to determine without the source code. >> Thanks, I will do more testing in the evening. Just in case, I am >> including the relevant files. I moved all rate-relevant stuff to >> card-specific routines, redefined in juli.c. The trigger code was not >> changed at all. >> >> Perhaps those new snd_pcm_hardware structs in juli.c (I do not know the >> exact meaning of the _bytes_ ones)? > > These values are in bytes (and not in frames). > > It's possible that the AK4114 code stops the stream because it thinks > that the input sample rate has changed. Try uncommenting the printk > in i2c/other/ak4114.c. > Clemens, you are ingenious! AK4114 was wrongly hooked to the analogue "ice->pcm_pro" stream instead of the digital "ice->pcm" stream. It works now fine, thanks a lot. Pavel. ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2008-03-11 19:46 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-03-09 22:56 ICE1724 - File descriptor in bad state when capturing Pavel Hofman
2008-03-10 11:08 ` Takashi Iwai
2008-03-10 21:39 ` Pavel Hofman
2008-03-11 7:35 ` Clemens Ladisch
2008-03-11 13:25 ` Pavel Hofman
[not found] ` <47D63D6A.10503@insite.cz>
2008-03-11 15:11 ` Clemens Ladisch
2008-03-11 15:21 ` Pavel Hofman
2008-03-11 19:46 ` Pavel Hofman
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.