Please do not post a support request without first reading and following the advice in

[IDEA AND START OF DEVELOPMENT]Battery Check For All Controllers

  • Hey guys, I am trying to make a script which basically tells you how much battery is left of your wireless controller, Because I don't have all controllers I am going to need some help.
    I got this idea off this post:
    if any one does have some screen shots of how sixad log file path: /var/log/sixad
    looks like please post :)

    But instead of getting the battery level from the sixad log file path: /var/log/sixad
    we get it from: /sys/class/power_supply/what_ever_controller_ac:fd:21:d1:7c:24/capacity

    Here is an example script:

    # Specify log file path
    # Create array of controller position names
    ctrlPosition=('First' 'Second' 'Third' 'Fourth')
    # Create array to store battery levels
    batLevels=('dead' 'low' '25%' '50%' '75%' '100%')
    # Create a container to store message text
    # Extract and loop through the most recent lines of the log file which contain the word 'Battery'
    tac $logPath | grep -m 1 -B1000 "Watching" | tac | grep "Battery" | 
    while read -r line ; do
    	# Print out raw info (for debugging)
    	#echo "$line"
    	# Extract PID values from battery print-outs
    	chkPID=$(echo "$line" | grep -oP '(?<=[).*(?=]:)')
    	# Check if PID is still running. If so, get the battery value
    	if ps -p "$chkPID" > /dev/null ; then
    		# Extract battery value (0-5)
    		batIndex=$(echo "$line" | grep -oP '(?<=Battery 0).*(?=])')
    		# Append battery level text to any existing text
    		dialogTxt+=$"${ctrlPosition[ctrlIndex]} controller battery level is at ${batLevels[batIndex]}\n\n"
    		# Increment the controller index, in case there are multiple controller PIDs
    # Check to see if no controllers were detected (ctrlIndex wasn't incremented above)
    if [[ "$ctrlIndex" -eq "0" ]] ; then
    	dialogTxt=$"No wireless controllers detected!"
    # Create message box containing battery info
    dialog --no-mouse --ok-label "OK" --backtitle "Battery Check" --msgbox "$dialogTxt" 12 60 2>&1 > /dev/tty

    I practically copyed and pasted the code that was there and made a few adjustments I didn't do
    to much[changed a few word ;)] as I am not the best with this type of stuff but will try my best!

  • the example does not work, I just put it their as well a 'example' for us to base of :)

  • Any one have any ideas?

  • @retroprogrammer
    Your suggestion does not work in general. The powerlevel-feature via /sys/class is a design in the joypad firmware and can change from company to company :(

    Maybe the hcidump-method introduced by @psyke83 is a more valueable way. If you want you can make a script collection to read out known controllers.

  • @cyperghost yeah, I will try to do that

Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.

Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.