我有一个真RNG基于 USB 的硬件 RNG,我正在尝试在 Mac OS X 10.9.2 上读取其输出。我只需要单向沟通。
该设备说它显示为“CDC 虚拟串行端口”,实际上我将其视为/dev/tty.usbmodem1411
.
我从来没能做到cat /dev/tty.usbmodem1411
;当我这样做时,我根本没有任何输出。然而,我可以使用它minicom
或picocom
从中读取它。使用picocom
,它甚至可以使用--noinit --noreset
选项,这表明我应该能够连接到cat
该设备。
所以,我的问题/疑问:
- 为什么我不能使用
cat
该设备? - 虽然它可以与
minicom
和一起使用picocom
,但它仅在第一个会话中起作用:如果我关闭这些程序中的任何一个,然后重新打开它们,那么它们会读取大约 300 个字节并永远阻塞。如果我关闭并重新打开再次,他们无法读取任何内容。不过,当我拔下并重新插入 USB 设备时,第一次尝试它就又可以永久读取了。为什么会这样?这与 TrueRNG 文档中的引用有关吗? “通过清除虚拟串行端口上的 DTR 标志,数据流将停止。当设置 DTR 时,数据流将恢复。” - 我想查看十六进制的随机数据。所以我尝试这个命令:
picocom /dev/tty.usbmodem1411 | xxd -p
。然而,输出似乎并不尊重换行符;只是回车。它会移动到下一行,而不回退到行首。我希望它是连续的。
以下是一些诊断:
% stty -a -f /dev/tty.usbmodem1411
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 = 0; werase = ^W;
答案1
显然我需要使用/dev/cu.usbmodem1234
而不是dev/tty.usbmodem1234
.感谢解决方案制造该设备的公司。