弊社USBアダプタをLinuxで使うには(2019版)
-
はじめに
近年、RaspberryPiなど小型のシングルボードコンピュータが普及し、Linux環境でロボットを動作させる機会が増えてきました。弊社ロボット(RCB-4)もUSBアダプタのドライバをLinux上にインストールすることでロボットと通信することができるようになります。
Linuxで弊社USBアダプターをご利用いただく方法を掲載した記事「シリアルUSBアダプターをLinuxで使うには」を以前にご紹介しましたが、情報がかなり古くドライバの関連付けができないので、この記事で改めて紹介いたします。
なお、弊社製品はWindows OS以外での動作保証をしておりませんので、この記事の内容は参考にお読みください。
-
確認時の動作環境
Raspberry Pi 3 Model B
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.4 (stretch)
Release: 9.4
Codename: stretch
FTDIのカーネル自体は、Raspbianに含まれていましたので割愛はしますが、下記ページをご覧ください。
-
認識方法
①USBアダプタを挿す
②dmesgでデバイスの情報を取得する
下記はDUAL USB Adapter HSを挿入したときに表示されるメッセージ例になります。
1 2 3 4 5 6 |
usb 1-1.2: new full-speed USB device number 5 using dwc_otg usb 1-1.2: New USB device found, idVendor=165c, idProduct=0008 usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-1.2: Product: DUAL USB ADAPTER HS usb 1-1.2: Manufacturer: Kondo Kagaku usb 1-1.2: SerialNumber: KOUSBCNV |
USBアダプタが認識されると、
/dev/ttyUSB*
で認識されますが今回はメッセージが表示されていないので、認識はされていません。
③FTDIのカーネルと弊社USBアダプタを関連付ける
まずは、modprobeを使用してFTDIのカーネルftdi-sioをロード(取り込み)します。
1 |
$ modprobe ftdi-sio |
/sys/bus/usb-serial/drivers/ftdi_sio/new_idにベンダIDとプロダクトIDを書き込むことでFTDIのカーネルと関連付けるようになります。
コマンドとしては、
1 |
$ echo vvvv pppp > /sys/bus/usb-serial/drivers/ftdi_sio/new_id |
vvvv:ベンダID
pppp:プロダクトID
書き込むにはroot権限(スーパーユーザー権限)で変更する必要があります。
root権限がない場合、DUAL USB Adapter HSを認識させる場合は下記コマンドになります。
1 2 3 4 |
$ sudo su # modprobe ftdi-sio # echo 165C 0008 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id # exit |
なお、ベンダID、プロダクトIDですが、
ベンダID | プロダクトID | デバイス名 | 製品名 |
165C |
0006 |
ICS USB ADAPTER HS | ICS USB アダプターHS |
165C | 0008 | Dual USB ADAPTER HS | Dual USB アダプター HS |
165C | 0009 | RS485 USB/SERIAL CONVERTER | RS485 USB/シリアル変換アダプター |
うまく認識された場合、dmesgでメッセージを表示させると、
1 |
usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB0 |
ttyUSB0で認識されるようになりました。
-
自動起動
先ほどの状態ですと、再起動をかけた場合コマンドを実行されないので再びコマンドを入力する必要があります。
毎回同じコマンドを打つのは手間なので、自動起動をするように設定します。
自動起動の設定方法は、
/etc/rc.local
にあるファイルにコマンドを記載します。 なお、rc.localはroot権限でしか書き換えることができないので、注意が必要です。 /etc/rc.localを開いていただいて、一番最後に下記を追記します。
1 2 3 4 5 6 7 8 |
..... (/etc/rc.localのもともと書いてある記述) ..... ## KO Driver modprobe ftdi-sio # Dual USB adapter echo 165C 0008 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id |
rc.local内にほかにもいろいろ記載がありますが、起動しなくなるので変更しないようにします。
Dual USB アダプタしか記載はしませんでしたが、RS485 USB/シリアル変換アダプター等もベンダ、プロダクトID部分に変更したり、追記もできます。
再起動を行ってUSBを挿して認識されていれば成功です。
RaspberryPiではFTDIのカーネルがインストールされていました。他のLinuxマシンではUSBのカーネルが入っていない場合があります。
下記FTDIのホームページからカーネル(ドライバ)をダウンロードしてください。
https://www.ftdichip.com/Drivers/D2XX.htm
Linuxのドライバがあるので、CPUに対応したカーネルをインストールしてください。
関連記事
RCB-4 Library for Python ver.1.0.0B
RCB-4 Library Arduino版(V1.1)とPython版(V1.0.0B)の違いについて
KHR-3HV Ver.3.1 リフェバッテリー付きセットの詳細をみる RS485USB/シリアル変換アダプターの詳細をみる Dual USBアダプターHSの詳細をみる KHR-3HV Ver.3 リフェバッテリー付きセットの詳細をみる の詳細をみる KXR-L2 ヒューマノイド型 Ver.2の詳細をみる KXR アドバンスセットA Ver.2の詳細をみる KXR-A5 アーム型 Ver.2の詳細をみる KXR-L4T-R カメ型・ローバー型 Ver.2(アカデミックパック)の詳細をみる の詳細をみる KXR アドバンスセットB Ver.2の詳細をみる KXR アドバンスセットBの詳細をみる KXR-L2 ヒューマノイド型の詳細をみる KMR-M6 Ver.3 リフェバッテリー付きセットの詳細をみる