[해결]레트로파이에 듀얼쇼크4 드라이버를 자동 실행 하는 과정에서 질문이 있습니다.



  • @Jae-Sang-Lee

    This wiki is how I was able to get my ps4 controller to work with my Raspberry Pi 3. I am using a Bluetooth dongle due to the freezing issues caused by the on-board Bluetooth.
    이 문구 말씀이시군요.
    영어가 짧아서 그낭 지나쳐 버렸네요 ;;
    이 사람은 블루투스 동글을 사용하였다고 하는거같은데 내부 블루투스를 사용하려면
    말씀 주신거 처럼 mini uart을 설정해야한다는 말씀이신가요?


  • Global Moderator

    @ggumt 회사라 눈치가 좀 보이네여 ㅋ

    라즈베리파이 모델 3B , Raspbian Jessie OS에서 GPS 모듈 사용하기 포스트 내용에 보시면, 중간 부분에 mini_uart 활성화를 통해 기존 블루투스 포트를 이동하는 옵션이 있습니다.

    이 부분으로 적용을 하시길 권유 드립니다.

    [참고]



  • @Jae-Sang-Lee 답변 정말 감사합니다 ㅎㅎㅎ 말씀하신 부분 전부 확인해보고 다시 답글 드리도록 하겠습니다


  • Global Moderator

    @ggumt 잠시 휴식 시간을 가지면서 @ggumt 님과 관련된 문제점을 해결한 방안이 있어 공유 합니다.

    $ sudo nano /bin/connect-bluetooth.sh

    #!/bin/bash
    sudo bluetoothctl << EOF
     power on
     connect [MAC Address]
     exit
    EOF
    
    while (sleep 20)
    do
     sudo bluetoothctl << EOF
      power on
      connect [MAC Address]
      exit
     EOF
    done
    

    $ sudo chmod +x /bin/connect-bluetooth.sh

    이후, crontab 을 이용 해 자동 실행 되도록 적용 하시면 되시지 싶습니다.

    [참고]



  • @Jae-Sang-Lee

    rc-local.service 에 넣은 서술한 세션의 내용입니다.

    retropie:/etc/systemd/system# vim rc-local.service

    [Unit]
    Description=/etc/rc.local Compatibility
    After=network.target

    [Service]
    Type=forking
    ExecStart=/etc/rc.local start
    TimeoutSec=0
    RemainAfterExit=yes
    SysVStartPriority=99

    [install]
    WantedBy=multi-user.target

    실제로 어떤 의미로 사용하는건지는 잘 모르겠습니다. 우선은 인터넷에서 올라온 것을 그대로 써넣었는데요

    [install]
    WantedBy=multi-user.target

    이것이 systemctl enable rc-local시 나타나는 안내문에 나타난것과 관계가 있다는것을 알았습니다.
    그래도 세션을 적었음에도 불구하고 문제가 발생합니다.

    root@retropie:/etc/systemd/system# systemctl enable rc-local
    The unit files have no [Install] section. They are not meant to be enabled
    using systemctl.
    Possible reasons for having this kind of units are:

    1. A unit may be statically enabled by being symlinked from another unit’s
      .wants/ or .requires/ directory.
    2. A unit’s purpose may be to act as a helper for some other unit which has
      a requirement dependency on it.
    3. A unit may be started when needed via activation (socket, path, timer,
      D-Bus, udev, scripted systemctl call, …).

    connect-bluetooth.sh 파일을 만들어서 clontab에 적용하여봤는데요 이것도 효과는 없네요 ;;; 그래서 레트로파이 버전을 바꿔 볼까합니다.



  • @Jae-Sang-Lee

    말씀대로 레트로파이의 버전을 바꾸고 config.txt 에서 mini-uart에 대한 내용을 추가해보았습니다.
    여전히 자동으로 실행은 안하네요. 아래는 버전을 바꾸고 처음부터 다시 설치한 과정입니다.

    레트로파이 3.8.1 버전 이미지를 설치, 무선 인터넷 설정을 끝낸 후에

    내장 블루투스 사용을 위해

    sudo vim /boot/config.txt

    마지막 라인에 추가로
    core_freq=250
    enable_uart=1
    dtoveraly=pi3-mini uart-bt

    이런식으로 적어주었습니다. 그 다음

    ds4drv설치에서
    출처 : https://github.com/retropie/retropie-setup/wiki/Setting-up-a-PS4-controller

    #Disables On-Board Bluetooth
    dtoverlay=pi3-disable-bt

    이부분은 내부 bluetooth동작을 억제하는거 같아서 생략하고

    ds4drv를 설치하는 부분

    sudo apt-get install python3
    sudo pip install ds4drv

    wget https://raw.githubusercontent.com/chrippa/ds4drv/master/udev/50-ds4drv.rules
    sudo mv 50-ds4drv.rules /etc/udev/rules.d/
    sudo udevadm control --reload-rules
    sudo udevadm trigger

    이런 과정을 거치면 모든 설치가 끝나고

    ds4drv --led ff0000

    를 입력하면 듀얼쇼크4가 붉은 색으로 페어링이 되는것을 확인 하였습니다.
    그리고 레트로파이에서 키설정 후 동작하는것 까지 확인 하였습니다.

    자동 실행을 하기위해
    crontab를 설정하였습니다.

    crontab -e 명령어를 입력하고

    @reboot /usr/local/bin/ds4drv &

    이런식으로 서술하였습니다.

    그다음에 재시작을하면 분명 자동으로 실행될거라고 생각했는데 자동으로 시작이 안되네요;;;


  • Global Moderator

    @ggumt 마지막 즈음 내용에 보니, ds4drv --led ff0000 커맨드 입력으로 페어링을 성공한 것으로 나오시는데,

    crontab 에서도

    @reboot /usr/local/bin/ds3drv --led ff0000 &
    

    로 등록하신 거죠 ?

    저도 이건 정확히 해 보면서 답을 드려야 하지 싶네여…
    ps4 패드가 없으니 주변에 확인을 좀 해 봐야 겠네요.



  • @Jae-Sang-Lee
    네 그리고 ‘@reboot /usr/local/bin/ds4drv --led ff0000 &’ 오타가 있네요 ㅎㅎ

    뒤에 --led ff0000 옵션은 듀얼쇼크 4의 led를 설정해주는거기 때문에 큰의미는 없습니다.

    의심되는 것이
    ’단순히 자동실행 동작이 안되는것이 아닐까’
    ‘블루투스 모듈에 대한 동작(ds4drv)이 자동실행시 실패해버리는 것이 아닐까’
    'https://github.com/retropie/retropie-setup/wiki/Setting-up-a-PS4-controller에 나와 있는 것처럼 내장 블루투스가 문제인것이 아닐까’
    이 세가지 문제점인데요. 일단 혹시나해서 블루투스 동글을 인터넷으로 주문했습니다.
    그리고 간단하게 led점등하는 프로그램을 만들어서 자동 실행 해보도록하겠습니다.

    레트로파이에 직접 gcc 컴파일을 설치해서 프로그래밍 하는것보다
    다른 곳에서 실행파일을 만들어가지고 넣는게 낫겠죠?



  • @Jae-Sang-Lee @zzeromin

    결국 오늘 도착한 블루투스 동글을 연결해서 성공시켰습니다.

    알고보니깐 내장된 블루투스가 자동실행시 동작하지 않았던 것이 문제였던거같습니다.

    그리고 듀얼쇼크와 연결하였을 때 전력을 많이 들어서 그런지
    내장 블루투스를 사용시 쉘에서 실행하는 동안 신호가 약하다는 경고창이 계속 뜨며
    KOF에서 달리기가 안될 정도로 조작시 느리고 굼뜬 동작을 하는 것을 알았습니다.

    레트로파이에서 듀얼쇼크 4를 사용하는 경우

    sudo nano /boot/config.txt

    #Disables On-Board Bluetooth
    dtoverlay=pi3-disable-bt
    

    위의 설정으로 내장 블루투스를 끄고 외장 블루투스 동글을 연결하여 사용해야 할 것 같습니다.

    나머지 듀얼쇼크 4 드라이버(ds4drv)는
    https://github.com/retropie/retropie-setup/wiki/Setting-up-a-PS4-controller
    의 내용을 참고하고 과정을 따라하면 될거같습니다.

    나무꾼님, zzeromin님 도움 주셔서 정말 감사드립니다.ㅎㅎ
    조언이 아니였으면 해결한다고 몇 주가 더걸렸을 것입니다. ㅜㅜㅜ

    이제 다음목표로는 2인 플레이가 가능하도록 듀얼쇼크4를 하나 더 붙여보고싶네요
    또 PSP 같은 것도 돌릴 수 있도록 오버클럭 하는 법을 적용해 보고싶고요 ㅎㅎ
    라즈베리파이가 그냥 돌려도 따뜻해지는거 같은데 팬을 달아봐야겠습니다.


  • Global Moderator

    @ggumt 아 그런 문제가 있었군요.

    고생 너무 많으셨습니다.


답글을 작성하기 위해 로그인
 

Rasplay Forum 사이트로의 연결이 끊어졌습니다. 다시 연결을 시도하는동안 잠시만 기다려 주십시오.