ありそうでない、GR-SAKURA を linux で繋いで仮想COM(USB)通信時のおぼえがき…

GR-Sakura-Rx63NB
そんなことよりも GR-SAKURA の基板がピンクで無駄にかわいい。それの中央にルネサスの RX63N が乗っている

単にシリアル出力するだけならばプログラム(スケッチ)はこんな程度のを書けば良い。

#include <rxduino.h>

void setup() {
    Serial.begin(38400, SCI_USB0);
    Serial.println("Hello, world.");
}
void loop() {
}

でも、実はUSBで繋ぐだけ、設定しなくてもよい。

USBケーブルで GR-SAKURA と繋ぐだけですぐに SAKURA として認識しつながった。 しかも、シリアルデバイス /dev/ttyACM0 ができている。

$ usb-devices
...(略)...
P:  Vendor=2129 ProdID=0531 Rev=01.00
S:  Manufacturer=TOKUDEN
S:  Product=Gadget Renesas SAKURA
S:  SerialNumber=1.1
C:  #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr=100mA
...(略)...
$ dmesg
...(略)...
[18628.698339] usb 3-2: new full-speed USB device number 6 using ohci_hcd
[18628.854347] usb 3-2: New USB device found, idVendor=2129, idProduct=0531
[18628.854358] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[18628.854365] usb 3-2: Product: Gadget Renesas SAKURA
[18628.854371] usb 3-2: Manufacturer: TOKUDEN
[18628.854375] usb 3-2: SerialNumber: 1.1
[18628.856429] cdc_acm 3-2:1.0: This device cannot do calls on its own. It is not a modem.
[18628.856470] cdc_acm 3-2:1.0: ttyACM0: USB ACM device
$

ちなみに、Manufacturer が Renesas ではなくて、TOKUDEN となっているのは、 GR-SAKURA が 特殊電子回路株式会社 の OEM 生産的なものであることを示しているのであろう。

このデバイスは下記のような権限なので dialout グループの人か root でないと読み書きできない。

$ ls -l /dev/ttyACM*
crw-rw----. 1 root dialout 166, 0  9月 22 23:29 /dev/ttyACM0
$

さらに、dmesg が仰っしゃるとおり、このデバイスはコールできい。モデムでない。 となると、 dialout というグループは気持ち悪い。 加えて ttyACM0 という名前も気に食わない。 そう思う人は以下のような udev スクリプトを作って、/etc/udev/rules.d/51-gr-sakura.rules に放り込んでやればよい。

# Gadget Renesas SAKURA (idVendor=2129, idProduct=0531)
KERNEL=="ttyACM[0-9]*", ATTRS{product}=="Gadget Renesas SAKURA", MODE="0660", GROUP="plugdev", SYMLINK+="ttyUSB-Sakura"

すると plugdev グループの人からアクセスできるようになる。 また、/dev/ttyUSB-Sakura というわかりやすい名前のシンボリックリンクも貼られて気持ちイイ!

$ ls -l /dev/ttyUSB-Sakura /dev/ttyACM*
crw-rw----. 1 root plugdev 166, 0  9月 22 23:39 /dev/ttyACM0
lrwxrwxrwx. 1 root root         7  9月 22 23:39 /dev/ttyUSB-Sakura -> ttyACM0

参考文献♪