Heya,
Firstly thank you for the efforts that devs and others are doing to improve this system. Really appreciate it!
DISCLAIMER: Wall of text incoming! I try to be as precise as I can be so I offer more than likely unnecessary information here but bare with me :)
I’m running following setup:
Raspberry Pi 4 4bg with usb ssd 120gb with full UASP support.
Batocera version is 33. I have done clean install (actually twice now) as the update from 32 to 33 completely borked my system.
I switch usb ssds between Batocera v33 and Libreelec 10.0.1 installations as I don’t like the dual boot offered by pinn etc.
Therefore I connect the pi to my Sony XH95 tv via hdmi0 but I also have hdmi1 connected to my audio system as I need to output lossless audio to my avr (no hdr/truehd/dts ma passthrough possible as my avr only has hdmi 1.4) when running Libreelec (which can easily output video via hdmi0 and audio via hdmi1). I switch usb ssd each one dedicated to Batocera and Libreelec.
I’m using standard raspberry pi power brick sold by the pihut.
Controllers I use are as follows:
- 8BitDo wireless receiver paired with 8BitDo SN30 pro controller
- couple of old DE-9/DB-9 C64 era joysticks. These are connected via JAKADAPTER (Stelladapter compatible) dual usb dongle that is recognized by Batocera after connecting the dongle. These should work in almost every linux distributions.
- PS4 Dual Shock controller connected via RPI blue-tooth
- Wireless keyboard and mouse, legacy stuff from Acer mini pc era, connected via separate 2.4ghz usb dongle
Now to the issues:
Occasional audio drops
I have set my audio in the Batocera’s System Settings like this:
- Audio output: VC4-HDMI-0DIGITAL STEREO (IEC958)
- Audio profile: VC4-HDMI-0DIGITAL STEREO (IEC958) OUTPUT
This seems to start to work almost always after I set these options. None other audio setting combination works.
When just idling in the main home screen listening front-end music sometimes audio just drops and it’s really hard to get audio back. Sometimes when starting multiple roms I get sound from roms or when exiting rom and returning back to game list view or going back to main screen. Audio just starts to work after being mute for awhile. I haven’t noticed a single pattern which could help me to identify the issue.
I have also tried to run Batocera without connecting the second hdmi to my AVR but that has no effect at all. I wonder if Batocera has same kind of feature that Libreelec has (getedid create) which creates nice “overrides” that will always map the correct hdmi output to correct system. IIRC Batocera is build on top of Libreelec or have I misunderstood something terribly wrong.
Audio may come back alive by it self after awhile or not and sometimes after changing the source of incoming signal from my TV ie. changing TV’s input to TV broadcast and then TV’s input back to the hdmi which Batocera/Rpi is occupying.
I have one error message in dmesg which might be related to this issue:
hdmi-audio-codec hdmi-audio-codec.3.auto: ASoC: error at snd_soc_dai_startup on i2s-hifi: -19
This error message appear few times but I have no idea if it’s related or not.
Issues with joysticks and controllers
I use to have everything working just fine but for some reason I can get only my controllers to work one at the time (excluding keyboard/mouse) meaning if I connect 8BitDo controller it works if it’s the only controller connected. If I connect my DE-9 joystick(s) by connecting JAKADAPTER via usb (does not matter if it’s usb 2 or 3 port, every available port has been tested) every controller stops from working. Instantly when I disconnect either one, 8BitDo or JAKADAPTER, the one that’s still connected starts to work normally. This happens also if by default JAKADAPTER is connected with or without the DE-9 sticks and then I connected 8BitDo wireless receiver and pair my 8BitDo SN30 Pro, no inputs are received by ES then either.
Batocera sees my controllers when they are connected but no input is received by ES when trying to configure the controllers. I have configured my controllers when they are connected solo so they work when they are the only controller connected to the system.
evtest sees every connected joystick/controller and logs every action done via those controllers even when every controller is connected at the same time. So therefore ES screws something up.
Keyboard and mouse seem to work always no matter what controller setting I’m currently trying.
More issues with joysticks
I cannot seem to find anyway to setup my DE-9 joysticks so they work with Atari ST, Amiga500 or C64 roms. I would like to set my old schools joysticks to ports 1 and 2 and 8BitDo and DS 4 controllers could occupy ports 3 and 4 or what ever.
Is physical controller mapping per core per port even possible? I cannot stand to use normal “new age” controllers when playing old school computer games as they lack the feel of digital micro switches.
I tried (when my joysticks and controllers were working together for a while) to map ports manually via Controller & Bluetooth Settings view by setting P1’s controller to JAKADAPTER 0 and P2’s controller to JAKADAPTER 1 but I cannot start any of my roms as es_launch_stderr.log
reports that start or some other button bind is missing. Well obviously when those old school joysticks have only 1 button.
I managed to get ports mapped somewhat okay’ishly to libretro/vice x64 core by visiting Retroarch’s settings menu and adjusting input’s for ports 1, 2 and 3. Of course Batocera will override these right after I start another rom so no help there.
Also it seems impossible to configure controllers in ES if controller has only one button and one would like to map that button to B. Button A mapping cannot be skipped so I cannot use my DE-9 joysticks to start any game within ES unless I manually change the button bind via ssh etc.
Could there be some kind of support for advanced users that could prevent Batocera from overriding those Retroarch settings? There are many settings I need to change and I have not found anyway to override the Batocera’s overrides even though there are few guides how that should be possible.
Problems with keyboard keybinds
Keyboard can be configured easily via ES’s controllers configuration. Everything works in ES but when entering let’s say C64 games the previously mapped keyboard hotkey does nothing at all. Even if A, B, X, and Y is mapped to some keys they wont work as Batocera persistently overrides those and I cannot really changes those according to wiki entry (there’s a mention that if those preset keybinds are overridden any usage of controllers are not possible anymore within games).
Why anyone would even map those buttons in ES for keyboards when they does not affect anything else but ES? Seems a bit ridiculous to me but I might be a bit on the stupid side.
Also how can I change the keyboard settings so pressing ESC does not instantly quit Reatroarch? Or how can I change keybinds permanently for load state, save state, save state slot + and -, reset game, pause game etc. that are available within the Retroarch’s settings area?
Also I need to remove unused and unnecessary keyboard keybinds but I cannot do that via RA settings views as they are overridden.
I do understand that Batocera in mainly made for not so advanced users in mind but at the same time disabling more advanced use cases seems really counter intuitive as those options would and should be opt-in features as usual. That way Batocera would not be limited only for “console” gaming but would support old computers also in more profound way. I find it hard to believe that I’m the only one that likes Batocera’s cleanliness and performance (which is awesome especially with ssd) and wants to use multiple controllers with different cores and adjust settings to their liking.
Anyways, if anyone has any ideas how to sort these issues or point me forward to some even obscure solution, for that I would truly really appreciate for your time :)
Where are the “important” system logs located so I could dig in deeper as ES logs reveals nothing as usual.
P.S
I have considered going back to RetroPie but that time is not yet until there is no stone left to turn :)
Edit: Fixed typos and added more clarity.