お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2010-10-06 21:19:10

vbk
メンバ
From: Lake Hamana in Hamamatsu
登録日: 2009-12-22

Ubuntu10.10でのUSB-RS232C変換ケーブルを用いたシリアル通信について

フォーラムに投稿するには時期が早いかもしれませんが、Ubuntu10.10にて以下の問題を確認したので、同様の症状を確認した方、症状が発生しない方、コメント頂けると嬉しいです。

マイコンボード(Basic Stamp 2)とパソコンをUSB-RS232C変換ケーブルで接続して使っているのですが、10.10へのアップグレードが原因なのか、/dev/ttyUSB0を開こうとしてもそこで止まってしまいます。
マイコンボードにプログラムを転送するソフトは http://bstamp.sourceforge.net/ で配布されている bstamp_run です

一応、openSUSE 11.3 や Windows 7 では変換ケーブルでも問題なく通信でき、パソコンのRS232C端子(/dev/ttyS0)ではUbuntuでも接続できることを確認しています。

変換ケーブルは、lsusbによると「Prolific Technology, Inc. PL2303 Serial Port」です

オフライン

 

#2 2010-10-06 22:00:33

hito
管理者
登録日: 2007-03-18

Re: Ubuntu10.10でのUSB-RS232C変換ケーブルを用いたシリアル通信について

https://bugzilla.kernel.org/show_bug.cgi?id=18422 のような気がします。

オフライン

 

#3 2010-10-06 22:43:10

vbk
メンバ
From: Lake Hamana in Hamamatsu
登録日: 2009-12-22

Re: Ubuntu10.10でのUSB-RS232C変換ケーブルを用いたシリアル通信について

情報ありがとうございます。

2.6.35以降の問題かと思って、アップグレード後に残しておいたlinux2.6.32-24で通信を試したり「strace cat /dev/ttyUSB0」を試したりしたのですが、「open("/dev/ttyUSB0", O_RDONLY|O_LARGEFILE」で止まってしまいました。

カーネル以外の問題が考えられるのでしょうか?それとも2.6.32-24にもバグが含まれているのでしょうか?

オフライン

 

#4 2010-10-06 23:44:56

hito
管理者
登録日: 2007-03-18

Re: Ubuntu10.10でのUSB-RS232C変換ケーブルを用いたシリアル通信について

えーと、情報が非常にambigousなのでしんどいものがあるのですが、以下あたりがチェックポイントかなと思います。

 ・kernel.org#18422 との現象の比較はされたでしょうか?
 ・他のLinux環境での確認は同じハードウェアでしょうか?
 ・「10.10で問題を確認した」という表現からは、テクニカルな発想では「10.10以前では正常動作していたことが確認されている」と想定されるのですが、「他のものは知らないが、10.10で再現した」という意味でしょうか。
 ・DesktopCDを使って10.04で試すとどうでしょうか。

オフライン

 

#5 2010-10-07 19:53:49

vbk
メンバ
From: Lake Hamana in Hamamatsu
登録日: 2009-12-22

Re: Ubuntu10.10でのUSB-RS232C変換ケーブルを用いたシリアル通信について

細かな説明が不足していました。

アップグレード以前は問題なく使用できました。
少々長くなってしまいますが、デスクトップPC(組み立て、マザーボード:Gigabyte製 P35-DS4)とラップトップPC(Toshiba製 dynabook CXE/47LE)で以下のことを行いました。
すべて書き出すと非常に長くなるので、前後5行のみ書きます。

Ubuntu 10.10 on ラップトップPC (USB-RS232C変換ケーブル、おそらく失敗)

コード:

$ sudo strace cat /dev/ttyUSB0
execve("/bin/cat", ["cat", "/dev/ttyUSB0"], [/* 16 vars */]) = 0
brk(0)                                  = 0x9a60000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb788f000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)

:::::

mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7666000
mmap2(NULL, 978944, PROT_READ, MAP_PRIVATE, 3, 0x2a3) = 0xb7577000
close(3)                                = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
open("/dev/ttyUSB0", O_RDONLY|O_LARGEFILE (ここで停止)

Ubuntu 10.04 (Live CD) on ラップトップPC (USB-RS232C変換ケーブル、おそらく成功)

コード:

$ sudo strace cat /dev/ttyUSB0
execve("/bin/cat", ["cat", "/dev/ttyUSB0"], [/* 16 vars */]) = 0
brk(0)                                  = 0x8607000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7772000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)

:::::

close(3)                                = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
open("/dev/ttyUSB0", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFCHR|0660, st_rdev=makedev(188, 0), ...}) = 0
read(3, (ここで停止)

openSUSE 11.3 on ラップトップPC (USB-RS232C変換ケーブル、おそらく成功)

コード:

> sudo sudo strace cat /dev/ttyUSB0
execve("/bin/cat", ["cat", "/dev/ttyUSB0"], [/* 15 vars */]) = 0
brk(0)                                  = 0x8055000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7766000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3

:::::

close(3)                                = 0
fstat64(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 2), ...}) = 0
open("/dev/ttyUSB0", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFCHR|0660, st_rdev=makedev(188, 0), ...}) = 0
read(3, (ここで停止)

Ubuntu 10.10 on デスクトップPC (マザーボードのRS232Cポート、おそらく成功)

コード:

$ sudo strace cat /dev/ttyS0
execve("/bin/cat", ["cat", "/dev/ttyS0"], [/* 14 vars */]) = 0
brk(0)                                  = 0x8cf1000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7850000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)

:::::

close(3)                                = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
open("/dev/ttyS0", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFCHR|0660, st_rdev=makedev(4, 64), ...}) = 0
read(3, (ここで停止)

Ubuntu 10.10 on デスクトップPC (USB-RS232C変換ケーブル、おそらく失敗)

コード:

$ sudo strace cat /dev/ttyUSB0
execve("/bin/cat", ["cat", "/dev/ttyUSB0"], [/* 14 vars */]) = 0
brk(0)                                  = 0x9c7d000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb786b000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)

:::::

mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb764d000
mmap2(NULL, 978944, PROT_READ, MAP_PRIVATE, 3, 0x2a3) = 0xb755e000
close(3)                                = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
open("/dev/ttyUSB0", O_RDONLY|O_LARGEFILE (ここで停止)

オフライン

 

#6 2010-10-19 21:48:16

vbk
メンバ
From: Lake Hamana in Hamamatsu
登録日: 2009-12-22

Re: Ubuntu10.10でのUSB-RS232C変換ケーブルを用いたシリアル通信について

Launchpadにバグ報告があったのでリンクだけ載せておきます。
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/661321

オフライン

 

#7 2010-10-29 00:30:30

march33
新しいメンバ
登録日: 2010-10-10

Re: Ubuntu10.10でのUSB-RS232C変換ケーブルを用いたシリアル通信について

march33と申します。私も10.04から10.10へアップデーとしてからpl2303チップを搭載したserial ExpressCardが
動作しなくなりました。カードの認識はしていますが、lsmodで見てもドライバーをロードしていない見たいです。

[ 6007.210099] usb 6-1: new full speed USB device using ohci_hcd and address 9
[ 6007.270107] hub 6-0:1.0: unable to enumerate USB device on port 1
[ 6010.450270] usb 6-1: new full speed USB device using ohci_hcd and address 10
[ 6010.665840] pl2303 6-1:1.0: pl2303 converter detected
[ 6010.694929] usb 6-1: pl2303 converter now attached to ttyUSB0

マシンは、Dell inspiron 1526 です。現在、ubuntu 10.10(64bit版)をインストールしています。

どなたか解決方法をご存知の方がいらっしゃるのなら、是非解決方法を教えていただけたらと思います。
宜しくお願いします。

オフライン

 

#8 2010-10-29 19:44:36

vbk
メンバ
From: Lake Hamana in Hamamatsu
登録日: 2009-12-22

Re: Ubuntu10.10でのUSB-RS232C変換ケーブルを用いたシリアル通信について

リンク先に載っているmodprobeは試してみましたか?
自分のPCでは以下を実行することで、とりあえずなんとか使えています。

コード:

sudo modprobe -r pl2303
sudo modprobe pl2303

バグレポートを見る限り、スルーされてる感があるのですが、修正されるといいです。

オフライン

 

#9 2010-10-30 12:01:10

march33
新しいメンバ
登録日: 2010-10-10

Re: Ubuntu10.10でのUSB-RS232C変換ケーブルを用いたシリアル通信について

vbkさん、すみませんでした。
lsmod で確認したところ pl2303はロードされていました。

lsmod 表示抜粋
pl2303                 13696  0
snd_timer             23850  2 snd_pcm,snd_seq
snd_seq_device     6912  3 snd_seq_midi,snd_rawmidi,snd_seq
usbserial              39507  1 pl2303
r852                   11348  0

しかし、私の所では動作しておりません。
setserial -a /dev/ttyUSB0 を見ると

/dev/ttyUSB0, Line 0, UART: 16654, Port: 0x0000, IRQ: 0
    Baud_base: 460800, close_delay: 0, divisor: 0
    closing_wait: infinite
    Flags: spd_normal

となっています。ここで気になるのが、Port と IRQ が0になっていることです。
ubuntu 10.04 で正常に動作していた時は、標準I/Oアドレスの 0x3f8 標準IRQ の4だったような気がするのですが。
それで、setserial コマンドで設定しようとしましたが、
/dev/ttyS? に対しては設定できますが、/dev/ttyUSB? に対してはパラメータエラーが出て設定できません。
どなたか、/dev/ttyUSB0 にPort,IRQ を設定する方法をご存知ないでしょうか。

オフライン

 

#10 2010-10-30 23:15:31

march33
新しいメンバ
登録日: 2010-10-10

Re: Ubuntu10.10でのUSB-RS232C変換ケーブルを用いたシリアル通信について

march33です。

私の勘違いでした。
/dev/ttyUSB0 は I/O も IRQ も個別に使っているはずはありませんね。
当然ですね。済みませんでした。

教えていただいた、モジュールを一度外して再ロードする方法を試して
みます。

オフライン

 

Board footer

Powered by FluxBB