Dualshock 4 not connecting on boot.

  • Hey. to start of i'm a complete beginner with raspberry pi.

    So. i followed the wiki to how to connect the DS4 with DS4DRV and i get it to connect using " dsd4drv --led 00008" but i dont seem to get it to work when i boot it up. i added the script in the local file but i must be doing something wrong as it doesnt work. so if anyone could just like take a screenshot of the local file so i just could replicate it id be over the moon. thanks :)

  • Are you putting the DS4 controller in pairing mode (ps button + share) once you boot and is the LED blinking a light blue? Did you configure the script to run at startup in rc.local?

  • @michaelconsorti

    yes and yes. but i guess i must've done something wrong in rc.local, so i'd be glad if someone could post exactly how it should look.

  • anyone out there that can help ? =)

  • Your rc.local could be different than someone else's. However, this is what is needed to get the d4drv script to run on startup. If while testing the --hidraw option was not working, then remove it from rc.local

    /usr/local/bin/ds4drv --hidraw --led 000008 &
    exit 0

  • the weird thing is that mine is identical except the hidraw... so im kinda lost as to what the problem could be.. :(

  • What version of retropie are you running? And what happens when you try to pair the controller, does it just continue blinking?

  • I have the exact same problem running retropie 4.1 without hidraw.

    Can connect both remotes when starting the script manually but when rebooting in retropie noting is detected.

    Maybe the script isn't starting in rc.local?

  • You can find out if it is running. After startup, you'll need to ssh into your raspberry pi and run the following command. Paste the output here.

    ps ax | grep python3

  • pi@retropie:~ $ ps ax | grep python3
    1024 pts/0 S+ 0:00 grep --color=auto python3
    pi@retropie:~ $

    that is what i get when i type in "ps ax | grep python3"

  • #!/bin/sh -e
    # rc.local
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    # In order to enable or disable this script just change the execution
    # bits.
    # By default this script does nothing.
    /usr/local/bin/ds4drv --led 000008 &
     exit 0

    and thats how my local file looks..

  • Based on the output of the of the command you ran, the script is not running. However, I'm not sure why it isn't running as your rc.local looks correct.

    If you cd to

    The script is there correct?

  • what do you mean cd? :P

  • It's a unix command to change directory.

    ssh back into your retropie and type in

    cd /usr/local/bin


    ls -lrta

  • pi@retropie:/usr/local/bin $ ls -lrta
    total 12
    drwxrwsr-x 10 root staff 4096 Sep 23 02:20 ..
    -rwxr-xr-x 1 root staff 217 Jan 7 15:13 ds4drv
    drwxrwsr-x 2 root staff 4096 Jan 7 15:13 .

  • Everything looks OK there too. Does your rc.local file have '#' symbols before some of the lines. i.e.

    #This script is executed at the end of each multiuser runlevel.

  • yes, the only lines that doesnt have it is

    /usr/local/bin/ds4drv &
    exit 0

  • Anyone got any idea?

  • administrators

    if it's not launching from /etc/rc.localthen you will probably find it is failing in some way. Run it manually from terminal with


    and see if you get any errors.

  • administrators

    @Naroth Format code in code blocks - http://commonmark.org/help/ - otherwise # symbols will be translated to styling. See your previous posts (I edited the one with /etc/rc.local as an example).

Log in to reply

Looks like your connection to RetroPie Forum was lost, please wait while we try to reconnect.