弊社USBアダプタをLinuxで使うには(2024版)
-
はじめに
近年、RaspberryPiなど小型のシングルボードコンピュータが普及し、Linux環境でロボットを動作させる機会が増えてきました。弊社ロボット(RCB-4)もUSBアダプタのドライバをLinux上にインストールすることでロボットと通信することができるようになります。
過去に公開した記事『弊社USBアダプタをLinuxで使うには(2019版)』を更新しました。
※Linuxのバージョン、種類によって動作が異なる場合がありますが、弊社では動作保証をしておりません。また、プログラムなどのご質問に関しましては回答致しかねます。この記事の内容は参考にお読みください。
-
確認時の動作環境
Raspberry Pi 5 Model B
Raspberry Pi 4 Model B
Raspberry Pi 3 Model B
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.4 (stretch)
Release: 9.4
Codename: stretch
FTDIのカーネル自体は、Raspbianに含まれていましたので割愛はしますが、下記ページをご覧ください。
-
認識方法
①RaspberryPi本体のUSBポートに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アダプタを関連付ける
以下の通り入力します。各行については下記の解説をご参照ください。
1 2 3 4 |
$ sudo su # modprobe ftdi-sio # echo vvvv pppp > /sys/bus/usb-serial/drivers/ftdi_sio/new_id # exit |
書き込むにはroot権限(スーパーユーザー権限)で変更する必要があります。
root権限がない場合は最初にsudo suを実行し、最後にexitで終了します。
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
DUAL USB Adapter HSを認識させる場合は「echo 165C 0008...」となります
弊社製品のベンダ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/シリアル変換アダプター |
165C | 000A | RS485 USB ADAPTER HS | RS485 USBアダプターHS |
こちらの他にもラジコン向け製品などのIDもあります。詳しくはKO Driver付属の『InstallManual』をご参照ください。
うまく認識された場合、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)の違いについて
RS-485 USBアダプターHSの詳細をみる 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 リフェバッテリー付きセットの詳細をみる