Spresenseのデバイス名を固定する

By | 2018年8月4日

Spresensenのメインボードは、USB接続するとPCからはUSBシリアルデバイスに見えます。これは/dev/ttyUSB0とドキュメントでは書かれていますが、実際には他のデバイスへの接続状況により/dev/ttyUSB1や/dev/ttyUSB2になりえます。

このままでは使いにくいので、デバイス名を固定にしました。動作はUbuntu 16.04 LTSで確認しています。

udev rulesによるシンボリック・リンク

さて、固定すると見えを切ったはいいものの、実際には/dev/ttyUSBnの”n”を固定することはできません。代わりにシンボリック・リンクを張ります。

作業は至って簡単。テキストファイルをエディタで作り、以下の内容にします。

# SONY SPRESENSE ( main board )
# The deivce will be linked to /dev/ttySPRESENSE

SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE="0666", SYMLINK+="ttySPRESENSE"

出来上がったらファイルは /etc/udev/rules.d/52-spresense.rules として保存します。

再起動後、SpresenseをPCに接続すると、かならず /dev/ttySPRESENSE としてアクセスできるようになります。上の設定ファイルはついでにファイルモードを666にしていますので、特別な権限なしに誰からでもSpresenseにアクセスできるようになります。

他のCP210xデバイスと同居している時

上の設定ファイルはSilocon LabsのCP210xデバイスをすべて /dev/ttySPRESENSE として利用しようとします。これは当然ですがうまく行きません。そこで、チップの個体ごとに異なるシリアル番号まで指定することで、確実にSpresenseに /dev/ttySpresense を指定できるようになります。

具体的には、 /etc/udev/rules.d/52-spresense.rules を以下のように書き換えます

# If you have more than 1 CP210x devices connected to system, 
# you can not distinguish them correctly by above declaration. 
# In this case, you need to specify the unique serial number of 
# your SPRESENSE device.
# In the following description, we assume your SPRESENSE board is 
# registered as /dev/ttyUSB0

# First of all, comment out the above declaration. 
# Then, run following command in the console. 
# sudo udevadm info -n /dev/ttyUSB0 | grep  SERIAL_SHORT

# Now, you will see the output like this 
# E: ID_SERIAL_SHORT=b869b9acca27e811a67ce54aa9a0087c

# where b869.... is the unique serial number copy your displayed 
# strings and substitute the serial number of the following 
# declaration by your device's one.
# Then, remove "#" of the following line to enable it. 

SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="b869b9acca27e811a67ce54aa9a0087c", MODE="0666", SYMLINK+="ttySPRESENSE"

このファイルの、ATTRS{serial}==以降はCP210xのシリアル番号を示しています。シリアル番号は以下のコマンドを実行して取得してください。

sudo udevadm info -n /dev/ttyUSB0 | grep  SERIAL_SHORT

出力文字列のID_SERIAL_SHORT=以降が16進のシリアル番号になります。そのシリアル番号を上の設定ファイルのシリアル番号(ATTRS{serial}==以降)で置き換えてください。再起動後、Spresenseは/dev/ttySPRESENSEとして現れます。

kermitの設定

以下のようなスクリプトファイルを作ってchmodで実行可能にしておくと、コマンドラインからスクリプトを実行するだけでkermitを呼び出し、さらに設定まで終えることができます。とても便利です。

#!/usr/bin/kermit +
set line /dev/ttySPRESENSE
set speed 115200
set carrier-watch off
set flow-control none

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください