Yes, its another HDMI audio puzzle
-
Greetings friends,
Scenario:
Pi3 RecalBox up and running.
Keyboard and mouse attached with multiport usb hub
Connected to Yamaha 5.1 via HDMI
Audio is working in Kodi. Audio not working in RecalBox.Background:
Have used the Pi with retrosmc, and retropie builds. No issue with HDMI (on other SD cards obvioulsy) Scoured forums for some ideas; haven't found any solution in 3 days. I am now here lolDone so far:
- edited recalbox.conf - ensured the following is here:
------------ C - Audio ------------
Set the audio device (auto, hdmi, jack)
audio.device=hdmi <==================
Set system volume (0..100)
audio.volume=100 <=============
Enable or disable system sounds in ES (0,1)
audio.bgmusic=1
- edited /boot/config.txt, ensured the following is here:
cat /boot/config.txt
uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1
disable_overscan=1
uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1Sound output. Set to 0 or comment for autodetect, 1 for DVI, 2 to force HDMI.
hdmi_drive=2<βββββββββββββ
Using /etc/modules is deprecated and no longer supported on 4.4 kernel
So manually enable audio
dtparam=audio=on
config_hdmi_boost=0
force hdmi while the tv can take time before sending the signal on the hdmi output
hdmi_force_hotplug=1 <βββββββββ
-
cat /proc/asound/cards
0 [ALSA ]: bcm2835 - bcm2835 ALSA
bcm2835 ALSA- fiddled with /etc/retroarch.cfg (dont know whether 'hw 0,3' is in fact correct here as cannot install 'aplay' to determine what is what...) - question: how can I determine this without aplay?
really just guessing here:
grep audio /etc/retroarch.cfg | grep -v "#"
audio_enable = true
audio_out_rate = 44100
audio_driver = alsa
audio_device = hw:0,3
audio_sync = true- however have noticed that a custom .cfg is in use, so assume this is not being read anyway...
i.e. /recalbox/share/system/configs/retroarch/retroarchcustom.cfg
-
lsmod | grep snd
snd_bcm2835 20511 2
snd_pcm 75698 2 snd_bcm2835
snd_timer 19156 1 snd_pcm
snd 51908 6 snd_bcm2835,snd_pcm,snd_timer-
cat /etc/modules.conf
snd_bcm2835
uinput
usbhid-
amixer
Simple mixer control 'PCM',0
Capabilities: pvolume pvolume-joined pswitch pswitch-joined
Playback channels: Mono
Limits: Playback -10239 - 400
Mono: Playback 400 [100%] [4.00dB] [on]dived into:
dmeg, /var/log/messages and things of interest that the support_script presents, but cannot find any specific error related to why HDMI doesnt work with the build. was thinking of attempting to run the retroarch with --verbose and get some logging somewhere or is that too granular?hugely appreciate any help from some learned people out there - I think RecalBox is superb, but obviously not for me if I cant get audio working
Peace.
-
Thought another update was needed after finding a very interesting thread about passthrough multichannel stuff over hdmi. this poor guy was configuring mythtv, but the setup from pi -> receiver over hdmi is identical and it appears its down to the "apparently unrelated device bcm2835 IEC958/HDMI"; my scenario exactly:
https://www.raspberrypi.org/forums/viewtopic.php?p=1360335
Having then gone back into osmc(retrosmc), I navigated here, which to me appears to be the reason why the pcm stuff is working ; as soon as I load emulation station and a rom, the receiver kicks in to PCM mode and I hear sound:
root@osmc-gee:/usr/share/alsa/pcm# head -20 hdmi.conf
Hardware output from HDMI
pcm.!hdmi {
@args [ CARD DEV AES0 AES1 AES2 AES3 ]
@args.CARD {
type string
default {
@func getenv
vars [
ALSA_IEC958_CARD
ALSA_PCM_CARD
ALSA_CARD
]
default {
@func refer
name defaults.pcm.iec958.card <-------------------------
}
}--
My setup in osmc uses 0,1 as below (aplay -L)plughw:CARD=ALSA,DEV=1
bcm2835 ALSA, bcm2835 IEC958/HDMI
Hardware device with all software conversionsSo, learned gurus out there ---- what can I do to emulate this puzzle on RecalBox? I'd gladly have a play if I was able to mount stuff in / but this appears not possible without potentially breaking something. Not a problem in itself, but I'm out of SD cards and I dont have a backup.
Peace.
-
Tried various things with .conf files above after getting root (/) filesystem mounted as rw, but still unable to get things working.
Used retroarch directly after stopping emulationstation manually, i.e.
retroarch --menu --verbose ; customretroarch definitely being read-in including the following audio settings. have confirmed that audio_device is @ 0,1 and modified the audio_driver with alsa too.retroarch --features compiled with ALSA as expected, nothing else valid to use:
audio_enable = "true"
audio_driver = "alsa"
audio_device = "hw:0,1"
audio_sync = "true"simply getting an "failed to initialize audio" error from retroarch log:
[ERROR] [ALSA]: Failed to initialize...
[ERROR] Failed to initialize audio driver. Will continue without audio.
--
decided to take a good look at osmc config with retro and what its using:
audio_driver = "alsathread"
audio_resampler = "sinc"
audio_device = ""
audio_sync = "true"I emulated this in recalbox, and the errors in retroarch stop with the following in the retroarch startup as in osmc
[INFO] ALSA: Using signed 16-bit format.
[INFO] ALSA: Period size: 384 frames
[INFO] ALSA: Buffer size: 1536 framesso figured I was onto something, however still no sound.
really just clueless now. remember, I launch emulation in osmc (from kodi) and I start up a game... audio just works.
i suppose my next question is: is there something in kodi that launches stuff correctly or emulation station, or is this simply a recalbox 'startup driver problem' that doesnt recognize the audio correctly. can anyone shed light on this for me?
Peace.