[alsa-devel] trouble using S/PDIF input on CMI8738-MC6: C-Media CMI8738 (model 55)
Greetings,
I hope I have sent this email to the correct list, I apologize if I am in error.
I have a somewhat antiquated motherboard (SOYO SY-K7V DRAGON Plus!) with an on-board soundcard using the cmipci driver. Audio playback through the analog output jacks works, as does audio capture from the analog line-in jack. I really would like to get either of the digital inputs to work for recording instead though (it has both optical and coaxial input *and* output jacks available on an optional breakout connector) however I have so far been unable to do so for either the coaxial or optical inputs even after having tested several different cables and external devices as audio sources. Neither recording nor the "monitor" feature of either digital inputs works. Unfortunately though I have no means by which to test the digital output other than to look into the end of a connected toslink cable and verify it indeed lights up.
Initially I suspected my alsamixer settings were simply wrong, however after extensive testing and searching I have begun to suspect that the driver is simply not properly recognizing the optional (apparently somewhat rare) extra i/o expansion header. When I try to record from the digital input device, arecord outputs the status text, pauses for a few seconds and then spits out an i/o error. Below, in sections divided by the "####" bars I have included what I hope is enough relevant information for someone knowledgeable to help me troubleshoot/fix this issue. If information is missing I will happily provide it given instructions on how to find it.
######################################################################## Here is the arecord output:
$ arecord -v -v -D hw:0,2 -f dat test.wav Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo Hardware PCM card 0 'C-Media CMI8738' device 2 subdevice 0 Its setup is: stream : CAPTURE access : RW_INTERLEAVED format : S16_LE subformat : STD channels : 2 rate : 48000 exact rate : 48000 (48000/1) msbits : 16 buffer_size : 16384 period_size : 4096 period_time : 85333 tstamp_mode : NONE period_step : 1 avail_min : 4096 period_event : 0 start_threshold : 1 stop_threshold : 16384 silence_threshold: 0 silence_size : 0 boundary : 1073741824 appl_ptr : 0 hw_ptr : 0 arecord: pcm_read:1801: read error: Input/output error ######################################################################## In case its relevant, here is the contents of the cmipci registry file before I run arecord:
~$ cat /proc/asound/card0/cmipci C-Media CMI8738 (model 55) at 0xd000, irq 11
00: 02 00 00 00 04: 12 e0 00 00 08: 0c 00 09 00 0c: 00 00 00 08 10: c0 00 00 00 14: 00 00 00 00 18: 00 01 81 0a 1c: ff ff ff ff 20: 10 40 08 00 24: 00 01 00 00 90: 20 09 00 10
And here is its contents while arecord is "hanging" - after I start the arecord command but before it spits out the i/o error then exits:
$ cat /proc/asound/card0/cmipci C-Media CMI8738 (model 55) at 0xd000, irq 11
00: 02 00 02 00 04: 12 e2 00 00 08: 0c 00 09 00 0c: 00 00 02 08 10: c0 00 00 00 14: 00 00 00 00 18: 00 01 01 0a 1c: ff ff ff ff 20: 10 40 08 00 24: 00 01 00 00 90: 20 09 00 10
The second contents are the same as while its successfully recording from the analog input. After the i/o error it reverts to the previous contents, but the output is always a silent file of exactly 44 bytes which I assume to be the minimum size for an empty PCM WAV file. ######################################################################## And, last but not least, here is the output of the alsa-info.sh test script which I hope will contain everything else relevant. Note that While the current kernel is version 3.12 (vanilla) with both the "#if 0" lines in the cmipci.c file changed to "#if 1", the behavior as I have tested it is basically unchanged with the exception of the appearance of some more S/PDIF switches in alsamixer, and also unchanged from the stock wheezy 3.2 kernel.
upload=true&script=true&cardinfo= !!################################ !!ALSA Information Script v 0.4.63 !!################################
!!Script ran on: Tue Aug 12 15:22:29 UTC 2014
!!Linux Distribution !!------------------
Debian GNU/Linux 7 \n \l PRETTY_NAME="Debian GNU/Linux 7 (wheezy)" NAME="Debian GNU/Linux" ID=debian HOME_URL="http://www.debian.org/" SUPPORT_URL="http://www.debian.org/support/" BUG_REPORT_URL="http://bugs.debian.org/"
!!DMI Information !!---------------
Manufacturer: VIA Technologies, Inc. Product Name: VT8366-8233 Product Version: Firmware Version: 6.00 PG
!!Kernel Information !!------------------
Kernel release: 3.12.0dionysus1 Operating System: GNU/Linux Architecture: i686 Processor: unknown SMP Enabled: No
!!ALSA Version !!------------
Driver version: k3.12.0dionysus1 Library version: 1.0.25 Utilities version: 1.0.25
!!Loaded ALSA modules !!-------------------
snd_cmipci
!!Sound Servers on this system !!----------------------------
No sound servers found.
!!Soundcards recognised by ALSA !!-----------------------------
0 [CMI8738 ]: CMI8738-MC6 - C-Media CMI8738 C-Media CMI8738 (model 55) at 0xd000, irq 11
!!PCI Soundcards installed in the system !!--------------------------------------
00:0b.0 Multimedia video controller: Brooktree Corporation Bt848 Video Capture (rev 12) 00:0e.0 Multimedia audio controller: C-Media Electronics Inc CMI8738/CMI8768 PCI Audio (rev 10)
!!Advanced information - PCI Vendor/Device/Subsystem ID's !!-------------------------------------------------------
00:0e.0 0401: 13f6:0111 (rev 10) Subsystem: 10fd:a701
!!Modprobe options (Sound related) !!--------------------------------
snd_pcsp: index=-2 snd_usb_audio: index=-2 snd_atiixp_modem: index=-2 snd_intel8x0m: index=-2 snd_via82xx_modem: index=-2 snd_cmipci: joystick_port=1
!!Loaded sound module options !!---------------------------
!!Module: snd_cmipci enable : Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y fm_port : 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 id : (null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null),(null) index : -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 joystick_port : 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,0,0,0,0 mpu_port : 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,0,0,0,0,0 soft_ac3 : Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y
!!ALSA Device nodes !!-----------------
crw-rw---T 1 root audio 116, 9 Aug 12 07:33 /dev/snd/controlC0 crw-rw---T 1 root audio 116, 8 Aug 12 07:33 /dev/snd/hwC0D0 crw-rw---T 1 root audio 116, 2 Aug 12 07:33 /dev/snd/midiC0D0 crw-rw---T 1 root audio 116, 7 Aug 12 07:50 /dev/snd/pcmC0D0c crw-rw---T 1 root audio 116, 6 Aug 12 07:33 /dev/snd/pcmC0D0p crw-rw---T 1 root audio 116, 5 Aug 12 07:33 /dev/snd/pcmC0D1p crw-rw---T 1 root audio 116, 4 Aug 12 07:47 /dev/snd/pcmC0D2c crw-rw---T 1 root audio 116, 3 Aug 12 07:33 /dev/snd/pcmC0D2p crw-rw---T 1 root audio 116, 1 Aug 12 07:33 /dev/snd/seq crw-rw---T 1 root audio 116, 33 Aug 12 07:33 /dev/snd/timer
/dev/snd/by-path: total 0 drwxr-xr-x 2 root root 60 Aug 12 07:33 . drwxr-xr-x 3 root root 260 Aug 12 07:33 .. lrwxrwxrwx 1 root root 12 Aug 12 07:33 pci-0000:00:0e.0 -> ../controlC0
!!Aplay/Arecord output !!--------------------
APLAY
**** List of PLAYBACK Hardware Devices **** card 0: CMI8738 [C-Media CMI8738], device 0: CMI8738-MC6 [C-Media PCI DAC/ADC] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: CMI8738 [C-Media CMI8738], device 1: CMI8738-MC6 [C-Media PCI 2nd DAC] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: CMI8738 [C-Media CMI8738], device 2: CMI8738-MC6 [C-Media PCI IEC958] Subdevices: 1/1 Subdevice #0: subdevice #0
ARECORD
**** List of CAPTURE Hardware Devices **** card 0: CMI8738 [C-Media CMI8738], device 0: CMI8738-MC6 [C-Media PCI DAC/ADC] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: CMI8738 [C-Media CMI8738], device 2: CMI8738-MC6 [C-Media PCI IEC958] Subdevices: 1/1 Subdevice #0: subdevice #0
!!Amixer output !!-------------
!!-------Mixer controls for card 0 [CMI8738]
Card hw:0 'CMI8738'/'C-Media CMI8738 (model 55) at 0xd000, irq 11' Mixer name : 'CMedia PCI' Components : '' Controls : 45 Simple ctrls : 25 Simple mixer control 'Master',0 Capabilities: pvolume penum Playback channels: Front Left - Front Right Limits: Playback 0 - 31 Mono: Front Left: Playback 31 [100%] Front Right: Playback 31 [100%] Simple mixer control '3D Control - Switch',0 Capabilities: pswitch pswitch-joined penum Playback channels: Mono Mono: Playback [off] Simple mixer control 'PCM',0 Capabilities: pvolume pswitch pswitch-joined cswitch penum Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: Playback 0 - 31 Front Left: Playback 31 [100%] [on] Capture [off] Front Right: Playback 31 [100%] [on] Capture [off] Simple mixer control 'Synth',0 Capabilities: pvolume pswitch pswitch-joined cswitch penum Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: Playback 0 - 31 Front Left: Playback 26 [84%] [on] Capture [off] Front Right: Playback 26 [84%] [on] Capture [off] Simple mixer control 'Line',0 Capabilities: pvolume pswitch cswitch penum Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: Playback 0 - 31 Front Left: Playback 17 [55%] [on] Capture [on] Front Right: Playback 17 [55%] [on] Capture [on] Simple mixer control 'Line-In Mode',0 Capabilities: enum Items: 'Line-In' 'Rear Output' 'Bass Output' Item0: 'Line-In' Simple mixer control 'CD',0 Capabilities: pvolume pswitch cswitch penum Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: Playback 0 - 31 Front Left: Playback 0 [0%] [off] Capture [off] Front Right: Playback 0 [0%] [off] Capture [off] Simple mixer control 'Mic',0 Capabilities: pvolume pvolume-joined cvolume cvolume-joined pswitch pswitch-joined cswitch cswitch-joined penum Playback channels: Mono Capture channels: Mono Limits: Playback 0 - 31 Capture 0 - 7 Mono: Playback 0 [0%] [off] Capture 0 [0%] [off] Simple mixer control 'Mic Boost',0 Capabilities: pswitch pswitch-joined cswitch cswitch-joined penum Playback channels: Mono Capture channels: Mono Mono: Playback [off] Capture [off] Simple mixer control 'Mic-In Mode',0 Capabilities: enum Items: 'Mic-In' 'Center/LFE Output' Item0: 'Mic-In' Simple mixer control 'Phone',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum Playback channels: Mono Limits: Playback 0 - 7 Mono: Playback 0 [0%] [off] Simple mixer control 'IEC958 5V',0 Capabilities: pswitch pswitch-joined penum Playback channels: Mono Mono: Playback [off] Simple mixer control 'IEC958 Copyright',0 Capabilities: pswitch pswitch-joined penum Playback channels: Mono Mono: Playback [off] Simple mixer control 'IEC958 In Monitor',0 Capabilities: pswitch pswitch-joined penum Playback channels: Mono Mono: Playback [off] Simple mixer control 'IEC958 In Phase Inverse',0 Capabilities: pswitch pswitch-joined penum Playback channels: Mono Mono: Playback [off] Simple mixer control 'IEC958 In Record',0 Capabilities: pswitch pswitch-joined penum Playback channels: Mono Mono: Playback [off] Simple mixer control 'IEC958 In Select',0 Capabilities: pswitch pswitch-joined penum Playback channels: Mono Mono: Playback [on] Simple mixer control 'IEC958 In Valid',0 Capabilities: pswitch pswitch-joined penum Playback channels: Mono Mono: Playback [off] Simple mixer control 'IEC958 Loop',0 Capabilities: pswitch pswitch-joined penum Playback channels: Mono Mono: Playback [off] Simple mixer control 'IEC958 Out',0 Capabilities: pswitch pswitch-joined penum Playback channels: Mono Mono: Playback [off] Simple mixer control 'IEC958 Out To DAC',0 Capabilities: pswitch pswitch-joined penum Playback channels: Mono Mono: Playback [off] Simple mixer control 'IEC958 Output',0 Capabilities: pswitch pswitch-joined penum Playback channels: Mono Mono: Playback [off] Simple mixer control 'Beep',0 Capabilities: pvolume pvolume-joined pswitch pswitch-joined penum Playback channels: Mono Limits: Playback 0 - 3 Mono: Playback 1 [33%] [on] Simple mixer control 'Aux',0 Capabilities: pvolume pswitch cswitch penum Playback channels: Front Left - Front Right Capture channels: Front Left - Front Right Limits: Playback 0 - 15 Front Left: Playback 0 [0%] [off] Capture [off] Front Right: Playback 0 [0%] [off] Capture [off] Simple mixer control 'Four Channel Mode',0 Capabilities: pswitch pswitch-joined penum Playback channels: Mono Mono: Playback [off]
!!Alsactl output !!--------------
--startcollapse-- state.CMI8738 { control.1 { iface PCM device 2 name 'Playback Channel Map' value.0 0 value.1 0 value.2 0 value.3 0 value.4 0 value.5 0 comment { access read type INTEGER count 6 range '0 - 36' } } control.2 { iface MIXER name 'Master Playback Volume' value.0 31 value.1 31 comment { access 'read write' type INTEGER count 2 range '0 - 31' } } control.3 { iface MIXER name '3D Control - Switch' value false comment { access 'read write' type BOOLEAN count 1 } } control.4 { iface MIXER name 'PCM Playback Volume' value.0 31 value.1 31 comment { access 'read write' type INTEGER count 2 range '0 - 31' } } control.5 { iface MIXER name 'PCM Playback Switch' value true comment { access 'read write' type BOOLEAN count 1 } } control.6 { iface MIXER name 'PCM Capture Switch' value.0 false value.1 false comment { access 'read write' type BOOLEAN count 2 } } control.7 { iface MIXER name 'Synth Playback Volume' value.0 26 value.1 26 comment { access 'read write' type INTEGER count 2 range '0 - 31' } } control.8 { iface MIXER name 'Synth Playback Switch' value true comment { access 'read write' type BOOLEAN count 1 } } control.9 { iface MIXER name 'Synth Capture Route' value.0 false value.1 false value.2 false value.3 false comment { access 'read write' type BOOLEAN count 4 } } control.10 { iface MIXER name 'CD Playback Volume' value.0 0 value.1 0 comment { access 'read write' type INTEGER count 2 range '0 - 31' } } control.11 { iface MIXER name 'CD Playback Switch' value.0 false value.1 false comment { access 'read write' type BOOLEAN count 2 } } control.12 { iface MIXER name 'CD Capture Route' value.0 false value.1 false value.2 false value.3 false comment { access 'read write' type BOOLEAN count 4 } } control.13 { iface MIXER name 'Line Playback Volume' value.0 17 value.1 17 comment { access 'read write' type INTEGER count 2 range '0 - 31' } } control.14 { iface MIXER name 'Line Playback Switch' value.0 true value.1 true comment { access 'read write' type BOOLEAN count 2 } } control.15 { iface MIXER name 'Line Capture Route' value.0 true value.1 false value.2 false value.3 true comment { access 'read write' type BOOLEAN count 4 } } control.16 { iface MIXER name 'Mic Playback Volume' value 0 comment { access 'read write' type INTEGER count 1 range '0 - 31' } } control.17 { iface MIXER name 'Mic Playback Switch' value false comment { access 'read write' type BOOLEAN count 1 } } control.18 { iface MIXER name 'Mic Capture Switch' value false comment { access 'read write' type BOOLEAN count 1 } } control.19 { iface MIXER name 'Beep Playback Volume' value 1 comment { access 'read write' type INTEGER count 1 range '0 - 3' } } control.20 { iface MIXER name 'Aux Playback Volume' value.0 0 value.1 0 comment { access 'read write' type INTEGER count 2 range '0 - 15' } } control.21 { iface MIXER name 'Aux Playback Switch' value.0 false value.1 false comment { access 'read write' type BOOLEAN count 2 } } control.22 { iface MIXER name 'Aux Capture Switch' value.0 false value.1 false comment { access 'read write' type BOOLEAN count 2 } } control.23 { iface MIXER name 'Mic Boost Playback Switch' value false comment { access 'read write' type BOOLEAN count 1 } } control.24 { iface MIXER name 'Mic Capture Volume' value 0 comment { access 'read write' type INTEGER count 1 range '0 - 7' } } control.25 { iface MIXER name 'Phone Playback Volume' value 0 comment { access 'read write' type INTEGER count 1 range '0 - 7' } } control.26 { iface MIXER name 'Phone Playback Switch' value false comment { access 'read write' type BOOLEAN count 1 } } control.27 { iface MIXER name 'Beep Playback Switch' value true comment { access 'read write' type BOOLEAN count 1 } } control.28 { iface MIXER name 'Mic Boost Capture Switch' value false comment { access 'read write' type BOOLEAN count 1 } } control.29 { iface MIXER name 'Four Channel Mode' value false comment { access 'read write' type BOOLEAN count 1 } } control.30 { iface MIXER name 'Line-In Mode' value Line-In comment { access 'read write' type ENUMERATED count 1 item.0 Line-In item.1 'Rear Output' item.2 'Bass Output' } } control.31 { iface MIXER name 'IEC958 In Record' value false comment { access 'read write' type BOOLEAN count 1 } } control.32 { iface MIXER name 'IEC958 Out' value false comment { access 'read write' type BOOLEAN count 1 } } control.33 { iface MIXER name 'IEC958 Out To DAC' value false comment { access 'read write' type BOOLEAN count 1 } } control.34 { iface MIXER name 'IEC958 Output Switch' value false comment { access 'read write' type BOOLEAN count 1 } } control.35 { iface MIXER name 'IEC958 In Valid' value false comment { access 'read write' type BOOLEAN count 1 } } control.36 { iface MIXER name 'IEC958 Copyright' value false comment { access 'read write' type BOOLEAN count 1 } } control.37 { iface MIXER name 'IEC958 5V' value false comment { access 'read write' type BOOLEAN count 1 } } control.38 { iface MIXER name 'IEC958 Loop' value false comment { access 'read write' type BOOLEAN count 1 } } control.39 { iface MIXER name 'IEC958 In Monitor' value false comment { access 'read write' type BOOLEAN count 1 } } control.40 { iface PCM device 2 name 'IEC958 Playback Default' value '0082000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access 'read write' type IEC958 count 1 } } control.41 { iface PCM device 2 name 'IEC958 Playback Con Mask' value ffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 comment { access read type IEC958 count 1 } } control.42 { iface PCM device 2 name 'IEC958 Playback PCM Stream' value '0082000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' comment { access 'read write inactive' type IEC958 count 1 } } control.43 { iface MIXER name 'IEC958 In Select' value true comment { access 'read write' type BOOLEAN count 1 } } control.44 { iface MIXER name 'IEC958 In Phase Inverse' value false comment { access 'read write' type BOOLEAN count 1 } } control.45 { iface MIXER name 'Mic-In Mode' value Mic-In comment { access 'read write' type ENUMERATED count 1 item.0 Mic-In item.1 'Center/LFE Output' } } } --endcollapse--
!!All Loaded Modules !!------------------
Module fuse nfsd auth_rpcgss oid_registry nfs_acl nfs lockd fscache sunrpc reiserfs it87 hwmon_vid snd_pcm_oss snd_mixer_oss analog ns558 loop tuner_simple tuner_types tuner tda7432 tvaudio snd_cmipci snd_mpu401_uart snd_opl3_lib snd_hwdep snd_pcm snd_page_alloc msp3400 bttv snd_seq_midi snd_seq_midi_event tveeprom btcx_risc videobuf_dma_sg snd_rawmidi videobuf_core nouveau i2c_viapro via_ircc rc_core video mxm_wmi snd_seq snd_timer snd_seq_device v4l2_common wmi snd soundcore ttm videodev drm_kms_helper drm psmouse serio_raw evdev joydev pcspkr processor media i2c_algo_bit i2c_core thermal_sys gameport irda button crc_ccitt ext4 crc16 jbd2 mbcache sd_mod sg sr_mod cdrom crc_t10dif crct10dif_common ata_generic hid_generic usbhid hid pata_via libata uhci_hcd ehci_hcd via_rhine mii scsi_mod usbcore usb_common
!!ALSA/HDA dmesg !!--------------
jon wrote:
Simple mixer control 'IEC958 In Record',0 Mono: Playback [off]
Shouldn't this be on?
Simple mixer control 'IEC958 In Select',0 Mono: Playback [on]
IIRC this selects between two different inputs. Try both settings.
Regards, Clemens
On 08/13/2014 08:14 AM, Clemens Ladisch wrote:
jon wrote:
Simple mixer control 'IEC958 In Record',0 Mono: Playback [off]
Shouldn't this be on?
Yes, it should, and actually it automatically turns itself on automatically when the arecord command is started, and then back off after the i/o error. Note that this is one of the toggles that only appeared in alsamixer after the source code change of the two "#if 0" lines to "#if 1".
Simple mixer control 'IEC958 In Select',0 Mono: Playback [on]
IIRC this selects between two different inputs. Try both settings.
Yes, the documentation I have read suggests it should toggle between the internal CDROM when off and the external digital input when on, however I have tried both settings and there is no apparent change in behavior. I still get an i/o error and a 44 byte file either way.
Regards, Clemens
On 08/13/2014 10:11 AM, Jon wrote:
On 08/13/2014 08:14 AM, Clemens Ladisch wrote:
jon wrote:
Simple mixer control 'IEC958 In Record',0 Mono: Playback [off]
Shouldn't this be on?
Yes, it should, and actually it automatically turns itself on automatically when the arecord command is started, and then back off after the i/o error. Note that this is one of the toggles that only appeared in alsamixer after the source code change of the two "#if 0" lines to "#if 1".
Simple mixer control 'IEC958 In Select',0 Mono: Playback [on]
IIRC this selects between two different inputs. Try both settings.
Yes, the documentation I have read suggests it should toggle between the internal CDROM when off and the external digital input when on, however I have tried both settings and there is no apparent change in behavior. I still get an i/o error and a 44 byte file either way.
Regards, Clemens
Thanks by the way for the reply. I appreciate it. I wish I had more informed data to provide. Its probably also worth noting that before and after enabling the "IEC958 In Record" switch to be visible in alsamixer, I also tried literally dozens of other combinations of on/off states for the SPDIF switches, and other things in alsamixer, to no avail. The outcome is always the same i/o error and resulting 44-byte file of silence.
Is there perhaps any way to output some better diagnostic issue from the driver that might hint at a solution? As I'm perusing the source code right now I see that there are a bunch of "#define"s right near the beginning, some commented as "model 037" and "model 039" after which there are two adjacent to comments "model 055?" (the model I have, but note the question mark) and I'm wondering if this problem could be really just as simple as someone having guessed wrong about the correct value there having not had this particular model on hand to test with?
Thanks, Jon
Jon wrote:
i/o error and resulting 44-byte file of silence.
This indicates that the chip does not see any S/PDIF signal.
Can't you connect some S/PDIF output to an input for testing?
I'm wondering if this problem could be really just as simple as someone having guessed wrong about the correct value there having not had this particular model on hand to test with?
C-Media chips were very common once upon a time, and S/PDIF input always worked just fine for everybody else. There are no GPIOs, so the only possible hardware implementation is to connect the S/PDIF input directly to the chip's input pin(s).
The Windows driver for this board is the standard C-Media driver, so there isn't any additional hardware that needs to be programmed.
I don't know anything that could be done.
Regards, Clemens
On 08/21/2014 03:31 AM, Clemens Ladisch wrote:
Jon wrote:
i/o error and resulting 44-byte file of silence.
This indicates that the chip does not see any S/PDIF signal.
Can't you connect some S/PDIF output to an input for testing?
Well, I have tried connecting its own output to its input (both via optical and coax) but that doesn't change anything. Unfortunately I have no other devices with S/PDIF inputs to test with, though the optical cable lights up when I toggle "S/PDIF Output" to on, and if I attempt to play to the iec958 alsa device then "S/PDIF Out To DAC" and "S/PDIF Out" both also automatically enable themselves in alsamixer and I get no errors, so I suspect the digital *output* is probably working fine. I have other devices with S/PDIF outputs that I have tested connecting to this device's input, however, again, no change.
I'm wondering if this problem could be really just as simple as someone having guessed wrong about the correct value there having not had this particular model on hand to test with?
C-Media chips were very common once upon a time, and S/PDIF input always worked just fine for everybody else. There are no GPIOs, so the only possible hardware implementation is to connect the S/PDIF input directly to the chip's input pin(s).
A quick search for this in google: cmipci input/output error
...shows several other various mail and forum archive listings of people having the same exact problem as me with model 55 of this card in alsa, going at least as far back as 2003.
https://www.mail-archive.com/alsa-user@lists.sourceforge.net/msg06771.html
Going from this one right here I just now discovered that if I directly connect the card's digital output to its own input, start speaker-test in one terminal, then quickly open alsamixer in a another terminal *after* I start recording with arecord in a third terminal and then manually toggle the "IEC958 In Record" (which at that point has turned itself on automatically) to off, and if I am quick enough to beat the i/o error, arecord then records an arbitrary amount of silence instead of erroring out. (I let it go until the file reached 11MB just to test) If I don't do this however, arecord still gives me the i/o error and exits.
Preemptively turning the "IEC958 In Record" to ON before starting the arecord attempt also still gives me an i/o error.
Might this new observation be of any significance?
Thanks, Jon
Jon wrote:
if I start speaker-test, then toggle the "IEC958 In Record" (which at that point has turned itself on automatically) to off, arecord then records an arbitrary amount of silence instead
There is a reason the "In Record" control is disabled; it is used internally by the driver to switch between analog and digital input.
Regards, Clemens
participants (2)
-
Clemens Ladisch
-
jon