Subject: port-hp700/35239: audiorecord(1) with harmony(4) on hp700 doesn't seem to work
To: None <port-hp700-maintainer@netbsd.org, gnats-admin@netbsd.org,>
From: None <dhgutteridge@sympatico.ca>
List: netbsd-bugs
Date: 12/12/2006 04:55:00
>Number:         35239
>Category:       port-hp700
>Synopsis:       audiorecord(1) with harmony(4) on hp700 doesn't seem to work
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    port-hp700-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Dec 12 04:55:00 +0000 2006
>Originator:     David H. Gutteridge
>Release:        current/4-BETA
>Organization:
>Environment:
NetBSD arcusiv.nonus-porta.net 4.99.4 NetBSD 4.99.4 (GENERIC) #0: Wed Nov 29 11:10:54 UTC 2006  root@arcusiv.nonus-porta.net:/usr/src/sys/arch/hp700/compile/GENERIC hp700

>Description:
If I try using audiorecord(1) on my B180L, it doesn't seem to work.  The
audio functionality in general does work, e.g. I can play mp3s with
mpg123, I can send line-in input and it plays back through the speaker
when the monitor value is set accordingly, I can change output volume with
mixerctl(1), etc.

But if I try to record anything, I always get the error:
audiorecord: failed to set audio info: Invalid argument

This isn't what happens on other machines when there isn't even any
line-in capabilities (e.g on my iBook SE), where I get the error:

audiorecord: read failed: Operation not permitted

(In the latter case, the file specified was opened and a requisite
header for the audio output format written, whereas on hp700, the
resultant file is completely empty.)

Here is a script of some things I ran.

[disciple@arcusiv:disciple]# audioctl -a


name=Advanced audio 

version=0.3;244

config=harmony0

encodings=mulaw:8,alaw:8,slinear_be:16,slinear_le:16*,ulinear_be:16*,ulinear_le:16*

properties=full_duplex

full_duplex=0

fullduplex=0

blocksize=4096

hiwat=16

lowat=1

monitor_gain=0

mode=

play.rate=8000

play.channels=1

play.precision=8

play.encoding=mulaw

play.gain=127

play.balance=32

play.port=0x0

play.avail_ports=0x0

play.seek=0

play.samples=0

play.eof=0

play.pause=0

play.error=0

play.waiting=0

play.open=0

play.active=0

play.buffer_size=65536

record.rate=8000

record.channels=1

record.precision=8

record.encoding=mulaw

record.gain=127

record.balance=32

record.port=0x0

record.avail_ports=0x3

record.seek=0

record.samples=0

record.eof=0

record.pause=0

record.error=0

record.waiting=0

record.open=0

record.active=0

record.buffer_size=65536

record.errors=0

[disciple@arcusiv:disciple]# mixerctl -v -a


inputs.input=240,240 volume

inputs.overrange=off  [ off on ]

outputs.output=244,244 volume

outputs.gain=off  [ off on ]

monitor.monitor=0,0 volume

record.source=line  [ mic line ]

monitor.output=speaker  [ line speaker headphones ]

disciple@arcusiv:disciple]# audiorecord foo.wav
audiorecord: failed to set audio info: Invalid argument

disciple@arcusiv:disciple]# audiorecord -p line foo.au
audiorecord: failed to set audio info: Invalid argument

I tried using ktrace too, here is the output.

[disciple@arcusiv:disciple]$ kdump ktrace.out                                                  
 13092      1 ktrace   EMUL  "netbsd"
 13092      1 ktrace   RET   ktrace 0
 13092      1 ktrace   CALL  execve(0x70002348,0x70001038,0x70001044)
 13092      1 ktrace   NAMI  "/bin/audiorecord"
 13092      1 ktrace   RET   execve -1 errno 2 No such file or directory
 13092      1 ktrace   CALL  execve(0x70002348,0x70001038,0x70001044)
 13092      1 ktrace   NAMI  "/sbin/audiorecord"
 13092      1 ktrace   RET   execve -1 errno 2 No such file or directory
 13092      1 ktrace   CALL  execve(0x70002348,0x70001038,0x70001044)
 13092      1 ktrace   NAMI  "/usr/bin/audiorecord"
 13092      1 ktrace   NAMI  "/usr/libexec/ld.elf_so"
 13092      1 audiorecord EMUL  "netbsd"
 13092      1 audiorecord RET   execve JUSTRETURN
 13092      1 audiorecord CALL  mmap(0,0x8000,3,0x1002,0xffffffff,0,0,0)
 13092      1 audiorecord RET   mmap 805580800/0x30043000
 13092      1 audiorecord CALL  open(0x3002f918,0,0x3002f918)
 13092      1 audiorecord NAMI  "/etc/ld.so.conf"
 13092      1 audiorecord RET   open -1 errno 2 No such file or directory
 13092      1 audiorecord CALL  open(0x70002608,0,0)
 13092      1 audiorecord NAMI  "/usr/lib/libc.so.12"
 13092      1 audiorecord RET   open 3
 13092      1 audiorecord CALL  __fstat30(3,0x70002a88)
 13092      1 audiorecord RET   __fstat30 0
 13092      1 audiorecord CALL  mmap(0,0x1000,1,1,3,0,0,0)
 13092      1 audiorecord RET   mmap 806354944/0x30100000
 13092      1 audiorecord CALL  munmap(0x30100000,0x1000)
 13092      1 audiorecord RET   munmap 0
 13092      1 audiorecord CALL  mmap(0,0x123000,5,2,3,0,0,0)
 13092      1 audiorecord RET   mmap 806354944/0x30100000
 13092      1 audiorecord CALL  mmap(0x30208000,0xb000,7,0x12,3,0,0,0xf8000)
 13092      1 audiorecord RET   mmap 807436288/0x30208000
 13092      1 audiorecord CALL  mmap(0x30213000,0x10000,7,0x1012,0xffffffff,0,0,0)
 13092      1 audiorecord RET   mmap 807481344/0x30213000
 13092      1 audiorecord CALL  mprotect(0x301f9000,0xf000,0)
 13092      1 audiorecord RET   mprotect 0
 13092      1 audiorecord CALL  close(3)
 13092      1 audiorecord RET   close 0
 13092      1 audiorecord CALL  __sysctl(0x7000238c,2,0x30212894,0x70002388,0,0)
 13092      1 audiorecord RET   __sysctl 0
 13092      1 audiorecord CALL  open(0x700010d0,0x601,0x1b6)
 13092      1 audiorecord NAMI  "foo.wav"
 13092      1 audiorecord RET   open 3
 13092      1 audiorecord CALL  open(0x13d50,0,7)
 13092      1 audiorecord NAMI  "/dev/sound"
 13092      1 audiorecord RET   open 4
 13092      1 audiorecord CALL  ioctl(4,AUDIO_GETINFO,0x24cc0)
 13092      1 audiorecord GIO   fd 4 read 136 bytes
       "\0\0\^_@\0\0\0\^A\0\0\0\b\0\0\0\^A\0\0\0\^?\0\0\0\0\0\0\0\0\0\0\0\0\0\^A\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\^A\0\0\0\b\0\0\0\^A\0\0\0\^?\0\0\0\0\0\0\0\
        \0\0\0\0\^C\0\^A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\^A\0\0\0\0\0\0\0\^P\0\0\0\0\^P\
        \0\0\0\f\0\0\0\0\0\0\0\^B"
 13092      1 audiorecord RET   ioctl 0
 13092      1 audiorecord CALL  __sysctl(0x700024d0,2,0x700024cc,0x700024c8,0,0)
 13092      1 audiorecord RET   __sysctl 0
 13092      1 audiorecord CALL  readlink(0x301eea30,0x700023d4,0x3f)
 13092      1 audiorecord NAMI  "/etc/malloc.conf"
 13092      1 audiorecord RET   readlink -1 errno 2 No such file or directory
 13092      1 audiorecord CALL  mmap(0,0x1000,3,0x1002,0xffffffff,0,0,0)
 13092      1 audiorecord RET   mmap 805613568/0x3004b000
 13092      1 audiorecord CALL  break(0x24d5c)
 13092      1 audiorecord RET   break 0
 13092      1 audiorecord CALL  break(0x25d5c)
 13092      1 audiorecord RET   break 0
 13092      1 audiorecord CALL  break(0x26000)
 13092      1 audiorecord RET   break 0
 13092      1 audiorecord CALL  break(0x36000)
 13092      1 audiorecord RET   break 0
 13092      1 audiorecord CALL  ioctl(4,AUDIO_SETINFO,0x24bf0)
 13092      1 audiorecord GIO   fd 4 wrote 136 bytes
       "\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
        \M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
        \M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\0\0\^_@\0\0\0\^A\0\0\0\b\0\0\
        \0\^A\0\0\0\^?\0\0\0\0\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
        \M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^? \M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\
        \M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\M^?\0\0\0\^B"
 13092      1 audiorecord RET   ioctl -1 errno 22 Invalid argument
 13092      1 audiorecord CALL  write(2,0x700029f8,0xd)
 13092      1 audiorecord GIO   fd 2 wrote 13 bytes
       "audiorecord: "
 13092      1 audiorecord RET   write 13/0xd
 13092      1 audiorecord CALL  write(2,0x700029b8,0x18)
 13092      1 audiorecord GIO   fd 2 wrote 24 bytes
       "failed to set audio info"
 13092      1 audiorecord RET   write 24/0x18
 13092      1 audiorecord CALL  write(2,0x301ee910,2)
 13092      1 audiorecord GIO   fd 2 wrote 2 bytes
       ": "
 13092      1 audiorecord RET   write 2
 13092      1 audiorecord CALL  issetugid
 13092      1 audiorecord RET   issetugid 0
 13092      1 audiorecord CALL  issetugid
 13092      1 audiorecord RET   issetugid 0
 13092      1 audiorecord CALL  break(0x37000)
 13092      1 audiorecord RET   break 0
 13092      1 audiorecord CALL  open(0x70002dd0,0,0x3e4)
 13092      1 audiorecord NAMI  "/usr/share/nls/nls.alias.db"
 13092      1 audiorecord RET   open -1 errno 2 No such file or directory
 13092      1 audiorecord CALL  open(0x301edd6c,0,0x3e4)
 13092      1 audiorecord NAMI  "/usr/share/nls/nls.alias"
 13092      1 audiorecord RET   open 5
 13092      1 audiorecord CALL  fcntl(5,2,1)
 13092      1 audiorecord RET   fcntl 0
 13092      1 audiorecord CALL  __fstat30(5,0x70003248)
 13092      1 audiorecord RET   __fstat30 0
 13092      1 audiorecord CALL  mmap(0,0x5f0,1,2,5,0,0,0)
 13092      1 audiorecord RET   mmap 808452096/0x30300000
 13092      1 audiorecord CALL  close(5)
 13092      1 audiorecord RET   close 0
 13092      1 audiorecord CALL  break(0x38000)
 13092      1 audiorecord RET   break 0
 13092      1 audiorecord CALL  munmap(0x30300000,0x5f0)
 13092      1 audiorecord RET   munmap 0
 13092      1 audiorecord CALL  open(0x700028c8,0,1)
 13092      1 audiorecord NAMI  "/usr/share/nls/C/libc.cat"
 13092      1 audiorecord RET   open 5
 13092      1 audiorecord CALL  __fstat30(5,0x70002d48)
 13092      1 audiorecord RET   __fstat30 0
 13092      1 audiorecord CALL  mmap(0,0x10be,1,1,5,0,0,0)
 13092      1 audiorecord RET   mmap 808452096/0x30300000
 13092      1 audiorecord CALL  close(5)
 13092      1 audiorecord RET   close 0
 13092      1 audiorecord CALL  munmap(0x30300000,0x10be)
 13092      1 audiorecord RET   munmap 0
 13092      1 audiorecord CALL  write(2,0x700029f8,0x11)
 13092      1 audiorecord GIO   fd 2 wrote 17 bytes
       "Invalid argument
       "
 13092      1 audiorecord RET   write 17/0x11
 13092      1 audiorecord CALL  exit(1)


>How-To-Repeat:
Try using audiorecord(1).
>Fix: