Nintendo プロコンをUbuntuに繋いでROSで使うまで

みんな大好きなDS4ことPlaystation4コントローラ「DUALSHOCK 4」。

ドライバも解説記事も沢山あって簡単にROSに繋がり、有線でも無線でも使えたことでロボット用コントローラとして市場を席巻していた(私見)便利なやつですが、ついに店頭でもネットでも全然手に入らなくなってしまいました。悲しみ😢

互換品の安いやつでも動くかもしれませんが、PS4に繋ぐならともかくROSに繋ぐのに博打は打ちたくありません。

というわけでその辺に転がっていたNintendo Switch用コントローラ「プロコン」を使ってみることにしました。

スポンサーリンク

dkms-hid-nintendoのインストール

環境はUbuntu18.04です。他の一般的なマウス等がBluetoothで接続できることは確認済みです。

プロコンはそのままではペアリング候補にも挙がってきませんでした。

どうやらドライバが無いようでしたのでdkms-hid-nintendoをインストールすることにします。
もう一種類Ubuntuにプロコンを繋ぐためのソフトウェア的なものを見つけたのですが、こちらの方が実績ありそうでした。

nicman23/dkms-hid-nintendo
dkms-hid-nintendo. Contribute to nicman23/dkms-hid-nintendo development by creating an account on GitHub.

インストール方法はここに書いてある通りでOKでした。
ただ、UEFIセキュアブートがenabledな場合(?)、面倒な要求が来ます。

スクショが無くて恐縮ですが、再起動時の設定を有効化するための8文字以上のパスワードを決める必要があります。適当に”aaaaaaaa”とかでもいいみたいです。

再起動実行後、見慣れない青い画面が出てきます。
「この変更を反映するけどほんまにええんやな?」的な確認のようです。
enroll MOKを選んでコンティニューし、さっきのパスワード入力してください。

間違えたり、このステップを飛ばすと、一旦hid-nintendoをアンインストールしなければなりません。

はじめこの画面の意味がよく分からず、以下のページに助けられました。ありがとうございます。

Ubuntu に NVIDIA のドライバをインストール (Enroll MOK に注意) - Qiita
Tensorflow のために NVIDIA のドライバと CUDA を入れようとしたら、ちょっとハマった話。 Ubuntu 18.10 ドライバのインストールはカンタン: $ sudo ubuntu-drivers aut...

ちなアンインストールは以下のコマンドでできます。

sudo dkms remove nintendo -v 3.1 --all

バージョンは適当に合わせてください。

スポンサーリンク

ペアリングして値を見てみる

早速ペアリングしてみます。

シンクロボタンを押すとペアリング待機状態(手前の4つのLEDがナイトライダー的に光る)になるので、その状態でUbuntuのBluetooth設定からペアリングしましょう。

Nintendo Switch Proコントローラーの主な仕様 | 周辺機器 | Nintendo Switch|任天堂
Nintendo Switch本体でご利用いただける周辺機器の情報をご紹介します。

 

ターミナルで「dmesg」とか打つと、入力デバイスとして認識されていることが分かります。

以下のページにアクセスするとブラウザで入力が見れてお手軽です。

https://greggman.github.io/html5-gamepad-test/

 

自分の環境でやってみたところ、なぜかアナログスティックの上と右方向の反応が芳しくありませんでした。

最大値1.0が出ず、0.85前後でウロチョロします。

接続し直してみたりしても同じ。なんじゃこれ?

原因は分からなかったのでとりあえず上側にもデッドゾーン設ける的な対処で済ませました。

 

一度ペアリングしちゃえばあとは操作したいときに適当なボタン押せば勝手に繋がってくれるので利便性はとても高いです。

ROSのjoyパッケージでもちゃんと動作できました。

 

以上、DS4が入手できずお困りの皆さんはお試しください。

まぁ、サードパーティーのものに比べれば高いので、そっちでちゃんと動くものがあればそれで十分でしょうが……。

テック
スポンサーリンク
スポンサーリンク
もりをフォローする
スポンサーリンク
みゆともり

コメント