
Ubuntu日本語フォーラム

ログインしていません。
フォーラムに投稿するには時期が早いかもしれませんが、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」です
オフライン
https://bugzilla.kernel.org/show_bug.cgi?id=18422 のような気がします。
オフライン
情報ありがとうございます。
2.6.35以降の問題かと思って、アップグレード後に残しておいたlinux2.6.32-24で通信を試したり「strace cat /dev/ttyUSB0」を試したりしたのですが、「open("/dev/ttyUSB0", O_RDONLY|O_LARGEFILE」で止まってしまいました。
カーネル以外の問題が考えられるのでしょうか?それとも2.6.32-24にもバグが含まれているのでしょうか?
オフライン
えーと、情報が非常にambigousなのでしんどいものがあるのですが、以下あたりがチェックポイントかなと思います。
・kernel.org#18422 との現象の比較はされたでしょうか?
・他のLinux環境での確認は同じハードウェアでしょうか?
・「10.10で問題を確認した」という表現からは、テクニカルな発想では「10.10以前では正常動作していたことが確認されている」と想定されるのですが、「他のものは知らないが、10.10で再現した」という意味でしょうか。
・DesktopCDを使って10.04で試すとどうでしょうか。
オフライン
細かな説明が不足していました。
アップグレード以前は問題なく使用できました。
少々長くなってしまいますが、デスクトップ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 (ここで停止)オフライン
Launchpadにバグ報告があったのでリンクだけ載せておきます。
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/661321
オフライン
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版)をインストールしています。
どなたか解決方法をご存知の方がいらっしゃるのなら、是非解決方法を教えていただけたらと思います。
宜しくお願いします。
オフライン
リンク先に載っているmodprobeは試してみましたか?
自分のPCでは以下を実行することで、とりあえずなんとか使えています。
sudo modprobe -r pl2303 sudo modprobe pl2303
バグレポートを見る限り、スルーされてる感があるのですが、修正されるといいです。
オフライン
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 を設定する方法をご存知ないでしょうか。
オフライン
march33です。
私の勘違いでした。
/dev/ttyUSB0 は I/O も IRQ も個別に使っているはずはありませんね。
当然ですね。済みませんでした。
教えていただいた、モジュールを一度外して再ロードする方法を試して
みます。
オフライン