Hi,all!
I have a board based on i.MX6dl, with wm8960 chip connected to i2c1 and audmux3. With the uboot-2016.03, kernel-4.1.15 and rootfs, i can play wav files and record the voice from mic, it works well. And the above images are provided by the board vendor.
I built a rootfs with busybox, alsa-lib and alsa-utils, and i use it as the rootfs for the board, and i also rebuild the uboot and kernel with the same cross compile gcc toolchain. when i used aplay to play a wav file, it return an error message as follows:
/ # aplay abba_out.wav
Playing WAVE 'abba_out.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo
aplay: pcm_write:1940: write error: Input/output error
But there was a time i can play the wav file with my own roofs, however i just forget the configuration and it never reappear again.
Is there any advice for that?
Thanks a lot.
Hi,
I am using imx8mp-evk. i am facing the same problem. when image built with yocto it works fine and i can play wav files, but when build my own rootfs it stoped working and it throwswrite error.
Any solution to this problem?
Regards
Hi, I have same problem with debian and ubuntu rootfs on imx8mp. Did you solve this issue? If so, what's problem?
(Solved) In my case(imx-5.10.9-1.0.0 BSP + Ubuntu 20.04 + LXQt)
1. sudo apt remove alsa-base
2. copied /var/lib/alsa/asound.state from yocto rootfs to ubuntu rootfs
The latest progress is as follows
in pcm_lib.c wait_for_avail
tout = schedule_timeout(wait_time);
if (!tout) {
pcm_dbg(substream->pcm, "%s write error (DMA or IRQ trouble?)\n",
is_playback ? "playback" : "capture");
err = -EIO;
break;
}
And once i enabled the pcm_dbg output, the aplay will print "playback write error (DMA or IRQ trouble?)"
It seem like it was caused by DMA or IRQ ?
Hi chao
please look on
for building images use nxp linux sources and documentation from
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
I use the strace tool to analysis the process of aplay.
And i find that after several times of snd_pcm_lib_write1 called successfully, in snd_pcm_lib_write1 function,
avail = snd_pcm_playback_avail(runtime);
avail = 0;
and it will use "err = wait_for_avail(substream, &avail);" to wait for avail, but it will return -5.
the return err leads to "aplay: pcm_write:2051: write error: Input/output error"
Thanks.
Hi igorpadykov
Thanks for your advice.
I've found the web pages before i posed the problem, which you listed. but i dont have any idea about the error.
It is so strange that i only changed the rootfs, and the kernel and the wm8960 driver should be ok, what i did is rebuild them with my gcc toolchain.
1、I use uboot and linux kernel images, which i rebuild, and the rootfs, provided by board vendor, i can excute aplay and arecord operation, it works well.
2、When i use my rebuilt rootfs to replace rootfs in step 1, the system startup successfully. But i can't play a wav file, it return Input/Output error.
When i play a wav file, it is stucked, and after a while, it returns "aplay: pcm_write:2051: write error: Input/output error"
And i checked the alsa-uitls/aplay/aplay.c, it seems that "snd_pcm_writei" return a minus.
The more detailed log is as follows:
/ # aplay -vv abba_out.wav
Playing WAVE 'abba_out.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo
Plug PCM: Hardware PCM card 0 'wm8960-audio' device 0 subdevice 0
Its setup is:
stream : PLAYBACK
access : RW_INTERLEAVED
format : S16_LE
subformat : STD
channels : 2
rate : 22050
exact rate : 22050 (22050/1)
msbits : 16
buffer_size : 13780
period_size : 2756
period_time : 124988
tstamp_mode : NONE
tstamp_type : MONOTONIC
period_step : 1
avail_min : 2756
period_event : 0
start_threshold : 13780
stop_threshold : 13780
silence_threshold: 0
silence_size : 0
boundary : 1806172160
appl_ptr : 0
hw_ptr : 0
############# + | 30%aplay: pcm_write:2051: write error: Input/output error