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