FTDI社のデバイスのアクセスがrootでしかできない問題(Linux)

2015年11月15日。

昨日は、土曜に出勤して上の問題(FT_Open()とかの際の問題)に対処した。このところ、困っていた問題だったが、解決した。既に多くの方が悩んでいた問題(例えば、USB-013のLinux接続でのご質問)であるし、Ububtu日本語フォーラムでも質問が出ていた。前者の例では、最後に質問者が「解決しました」と書いているが、どのように解決したかは書いてない。海外で同じ問題の質問が上がっている。実は、Ubuntu日本語フォーラムでは、解決方法が書いてあったが、読み落としてしまっていて、それを行なっただけである。昨日は、「解決しました」というのが、Linux機のUSBポートに機器を接続するとrootでないとアクセスできない、という一般的な問題だっただろうと思いそれを行い、うまく行かなかった訳である。従って、Ubuntu日本語フォーラムで、途中まで読んで、「同じか?」と早合点してしまったのである。

解答が既に出ているので、あらましだけ記すことにする。

OS: Ubuntu 14.04LTS

FTDI機器: FT232RL

lsusbで表示される関係する情報:

Bus 003 Device 004: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC

この場合の答えは、/etc/udev/rules.dの下に次の行を含むファイル(拡張子はrules)を置くこと。

KERNEL=="004", NAME="bus/usb/003", MODE="0666"

もちろん、0666は0777などでもいいのは言うまでもないであろう。004はワイルドカード*にして他のUSBポートに機器を挿した場合に対応するようにした方がいい(私はそうした)。NAMEの後は=であって、==でない。もちろん、この変更のを反映させる操作も必要である。

ここでは、FTDI機器をアクセスする前にsudo rmmod ftdi_sioを実行しなけれなならないこと(lsmodで確認して、なければ不要)は、済の事項とした。OS等の違いによる、微妙な差異は各自で確認して欲しい。

尚、「Linux機のUSBポートに機器を接続するとrootでないとアクセスできない」の解決法は、上に書いた行のところ、次のようにするもの。

KERNEL=="ttyUSB*", MODE="0666"

もちろん、ttyUSBの後をワイルドカードにしたのは、上に書いたのと同じ理由。同様、微妙な差異は各自で確認して欲しい。