macosのcuコマンドで入力が効かないときは/dev/cuを使う
この記事では,UUCPのcu
コマンドで入力が効かず,screen
コマンドなら動作する場合の対処法を説明する.
TL;DR
こうすれば良い.
sudo cu -l /dev/cu.usbserial
-
/dev/cu.usbserial*
のパスは,使用するUSBシリアルケーブルによって異なる.-
StartechのUSB-C to RS232Cならば,
/dev/cu.usbserial-<シリアル番号>
となる. - シリアル番号は,
システム情報.app
でも確認できる.
-
StartechのUSB-C to RS232Cならば,
-
/dev/tty.usbserial
は,モデムとかで使う.
なぜ?
/dev/tty.usbserial
は,モデムやコールアウト/コールインプロセス間で共有する場合に使うものらしい(詳しいことは調べてません).
cu
コマンドは,デバイスへの排他的アクセスが必要なので,専有を前提としている/dev/cu.usbserial
を使用する.
なお,cu
のコマンド引数ではハードウェアフロー制御を設定できず,/etc/uucp
配下にport
コンフィグファイルを作成すれば動作するいう報告は,どうやらCatalinaでは動作しないらしい(原因究明はしてない).
ハードウェアフロー制御はstty
コマンドで設定できるので, sudo stty -f /dev/cu.usbserial -crtscts
とする手はあるが,残念ながら効果がなかった.
ところでシリアル通信のオプションは?
細く指定せずとも,大抵のネットワーク機器は,--speed 9600
か--speed 115200
で動く.
9600 bps, 8 bit, パリティなし, 1 stop bit,XON/XOFFフロー制御なし,にするなら,
cu -s 9600 --parity=none --nostop
どんな設定になってるか確認したいければ,デバッグ有効にするといろいろ教えてくれる.
% sudo cu -l /dev/cu.usbserial -d
cu: fconn_open: Opening port /dev/cu.usbserial(default speed)
cu: fsserial_open: Baud rate is 9600
cu: fconn_set: Changing setting to 0, 0, 2
Connected.
cu: fconn_write: Writing 1 "\r"
FreeBSD/arm (Amnesiac) (ttyu0)
login:
stty
でも見れる.
% sudo stty -af /dev/cu.usbserial
speed 9600 baud; 0 rows; 0 columns;
lflags: -icanon -isig -iexten -echo -echoe -echok -echoke -echonl
-echoctl -echoprt -altwerase -noflsh -tostop -flusho -pendin
-nokerninfo -extproc
iflags: -istrip -icrnl -inlcr -igncr -ixon -ixoff -ixany -imaxbel -iutf8
-ignbrk -brkint -inpck -ignpar -parmrk
oflags: -opost -onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
-dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
stop = ^S; susp = ^Z; time = 1; werase = ^W;
詳しくは--help
かman cu
でどうぞ.
# cu --help
Taylor UUCP 1.07, copyright (C) 1991, 92, 93, 94, 1995, 2002 Ian Lance Taylor
Usage: cu [options] [system or phone-number]
-a,-p,--port port: Use named port
-l,--line line: Use named device (e.g. tty0)
-s,--speed,--baud speed, -#: Use given speed
-c,--phone phone: Phone number to call
-z,--system system: System to call
-e: Set even parity
-o: Set odd parity
--parity={odd,even}: Set parity
-E,--escape char: Set escape character
-h,--halfduplex: Echo locally
--nostop: Turn off XON/XOFF handling
-t,--mapcr: Map carriage return to carriage return/linefeed
-n,--prompt: Prompt for phone number
-d: Set maximum debugging level
-x,--debug debug: Set debugging type
-I,--config file: Set configuration file to use
-v,--version: Print version and exit
--help: Print help and exit
Report bugs to taylor-uucp@gnu.org
screen使えばええやん?
screen
はscreen
として使いたいので・・・
参考
- macos - choosing between /dev/tty.usbserial vs /dev/cu.usbserial - Stack Overflow
- serial port - MacOS: what's the difference between /dev/tty.* and /dev/cu.*? - Stack Overflow
- cu Tips - Qiita
- taylor-uucp/cu.1 at master · quinot/taylor-uucp · GitHub
- 1707501 – /usr/bin/cu cannot write to ttyUSB0 because of hardware flow control