> > This is what I found after Googling a bit: > > Since you didn't specify a format, arecord defaults to 8 bit format (U8). > > Being unsigned, a negative value for maximum negative amplitude is impossible. Therefore the value is given a bias of 128, > > making 0 the maximum negative amplitude, 255 the maximum positive, and 128 the center point (or silence). > Thanks for the clarification. > So I tried passing signed 8-bit format (S8), and then the arecord died > immediately, as mentioned below. > > $ arecord -f S8 test.wav > Recording WAVE 'test.wav' : Signed 8 bit, Rate 8000 Hz, Mono > arecord: begin_wave:2481: Wave doesn't support S8 format... > > For other format S16_LE, the arecord hangs for a few seconds and > throws an I/O error. > > $ arecord -f S16_LE test.wav > Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono > arecord: pcm_read:2032: read error: Input/output error > > I am not sure why recording works only on the default format of U8. > For other formats, the record either dies immediately or hangs for a > timeout and then throws an I/O error. Any ideas about this behaviour? The flag --dump-hw-params should show the formats arecord supports On your installation. On top of that .wav does not support any big endian formats as well as no signed formats below 9 bit. You could try testing with raw file type instead. The i/o error *might* relate to incorrect device selection. I hope you can pinpoint your issue to something more specific - and provide more information - so people with actual expertise in this driver can help you, I just googled a bit to not leave your questions hovering around unanswered. Maybe take a peek into the guide on how to ask good questions, linked on the kernelnewbies site, to make your questions more concise and worth busy people's time. Best regards, Luke