batocera-settings is a commandline tool that can work with regular config files and read/write/change it's content. There are keys and values stored in a file like
Down here is a small excerpt of a config file
# ------------ B - Network ------------ # ## Set system hostname system.hostname=BATOCERA ## Activate wifi (0,1) wifi.enabled=0 ## Wifi SSID (string) #wifi.ssid=new ssid ## Wifi KEY (string) ## after rebooting the batocera.linux, the "new key" is replace by a hidden value "enc:xxxxx" ## you can edit the "enc:xxxxx" value to replace by a clear value, it will be updated again at the following reboot ## Escape your special chars (# ; $) with a backslash : $ => \$ #wifi.key=new key
batocera-setting is utilized by parameters parsed. These parameters can be used in the long and in the short format. It's a relict of RecalBox times thus the expression
python batoceraSetting.py -command load -key user.key is used till today but arguments are now parsed to batocera-settings and it's not recommended to use this old style anymore.
As batocera-settings is more modern and supports read/write/change of value let's see how the command line works:
batocera-settings --command load --key your.key
batocera-settings load your.key
batocera-settings was called you will receive an exit code number. This will help to identify errors - morover for debugging you can use the status command to held usefull output.
|File and Key/Values error|
|Error Code||Error code explaination||Troubleshooting|
|EC 0||No Error, value found||You made it!|
|EC 1||General error, e.g. command line error||Check your command line for correct parameters|
|EC 2||File error, e.g. the config file is not available||Check file path and r/w access to it|
|EC 10||Value error, key found but value is empty||Unusual setup but no error at all|
|EC 11||Value error, key found but it is commented out|| Activate the key entry by
|EC 12||Key not found||Add the key by manual or check your command line for typos|
I present here some short scripts, to show you how to make batocera-settings work in your script. As I'm more confident in shell scripting I give you just some small exampels in shell script.
USE AT YOUR OWN RISK
#!/bin/bash #This is an example file how batocera-settings can be utilized #to read a value out from /userdata/system/batocera.conf value="$(batocera-settings --command load --key power.switch.device)" ret=$? if [[ $ret -eq 0 ]]; then echo "Power Switch detected: '$value'" else echo "No Power Switch detected!" fi
#!/bin/bash #This is an example file how batocera-settings can be utilized #to activate UART in /boot/config.txt batocera-settings /boot/config.txt --command uncomment --key enable_uart ret=$? if [[ $ret -eq 0 ]]; then echo "UART activated, uncommented enable_uart" elif [[ $ret -eq 2 ]]; then echo "File is write protected!" echo "I make boot-partition writeable" mount -o remount, rw /boot echo "Please restart script" else echo "Key: enable_uart not found" echo "Not a Raspberry System?" fi
#!/bin/bash #This is an example file how batocera-settings can be utilized #to set a new key in /userdata/system/batocera.conf value=$(batocera-settings --command write --key core.PS4.emulator --value SONY4EVER ret=$? if [[ $ret -eq 0 ]]; then echo "PS4 core enabled!" elif [[ $ret -eq 12 ]]; then echo "Key not found! - I add it" echo "core.PS4.emulator=" >> /userdata/system/batocera.conf echo "Please restart script!" else echo "Annother error occoured!" fi
#!/usr/bin/python # -*- coding: utf-8 -*- #This is an example file how batocera-settings can be utilized #to read a value out from /userdata/system/batocera.conf with python import subprocess value = (subprocess.check_output(['batocera-settings', 'get', 'power.switch.device'])) if value: print "Power Switch Detected: ", value else: print "No power switch detected!"